diff --git a/Android.mk b/Android.mk
index 243ef66..90b205f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -22,26 +22,34 @@
 # (for example, projected). See b/30064991
 ifeq (,$(TARGET_BUILD_APPS))
   LOCAL_PACKAGE_NAME := CarSettings
+  LOCAL_OVERRIDES_PACKAGES := Settings
   LOCAL_PRIVATE_PLATFORM_APIS := true
 
   LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
   LOCAL_USE_AAPT2 := true
 
-  LOCAL_JAVA_LIBRARIES += android.car
+  LOCAL_JAVA_LIBRARIES := \
+      android.car \
+      telephony-common
 
   LOCAL_STATIC_ANDROID_LIBRARIES := \
       androidx.car_car \
-      androidx.preference_preference \
-      androidx.legacy_legacy-preference-v14 \
+      androidx.lifecycle_lifecycle-common-java8 \
       androidx.lifecycle_lifecycle-extensions \
-      car-list \
+      androidx.preference_preference \
+      androidx-constraintlayout_constraintlayout \
+      car-apps-common \
       car-settings-lib \
-      setup-wizard-lib-gingerbread-compat \
+      car-setup-wizard-lib-utils \
       SettingsLib
 
-  LOCAL_RESOURCE_DIR := \
-      $(LOCAL_PATH)/res
+  # Including the resources for the static android libraries allows this app to pick up their static overlays.
+  LOCAL_RESOURCE_DIR += \
+      $(LOCAL_PATH)/res \
+      $(LOCAL_PATH)/../libs/car-apps-common/res \
+      $(LOCAL_PATH)/../libs/car-settings-lib/res \
+      $(LOCAL_PATH)/../../../../frameworks/base/packages/SettingsLib/res
 
   LOCAL_CERTIFICATE := platform
 
@@ -53,19 +61,78 @@
 
   LOCAL_DEX_PREOPT := false
 
-  LOCAL_STATIC_JAVA_LIBRARIES += jsr305
+  LOCAL_STATIC_JAVA_LIBRARIES := \
+      android.car.userlib \
+      androidx-constraintlayout_constraintlayout-solver \
+      jsr305
+
+  LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.car.settings
 
   LOCAL_DX_FLAGS := --multi-dex
 
-  ifdef DISABLE_AOSP_PHONE_SETTING
-    ifeq ($(DISABLE_AOSP_PHONE_SETTING),true)
-      # This will hide AOSP phone setting.
-      LOCAL_OVERRIDES_PACKAGES := Settings
-    endif
-  endif
   include $(BUILD_PACKAGE)
 endif
 
+###################################################################################
+# Duplicate of CarSettings which includes testing only resources for Robolectric #
+###################################################################################
+include $(CLEAR_VARS)
+
+# To avoid build errors, build empty package for non-platform builds
+# (for example, projected). See b/30064991
+ifeq (,$(TARGET_BUILD_APPS))
+  LOCAL_PACKAGE_NAME := CarSettingsForTesting
+  LOCAL_OVERRIDES_PACKAGES := Settings
+  LOCAL_PRIVATE_PLATFORM_APIS := true
+
+  LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+  LOCAL_USE_AAPT2 := true
+
+  LOCAL_JAVA_LIBRARIES := \
+      android.car \
+      telephony-common
+
+  LOCAL_STATIC_ANDROID_LIBRARIES := \
+      androidx.car_car \
+      androidx.lifecycle_lifecycle-common-java8 \
+      androidx.lifecycle_lifecycle-extensions \
+      androidx.preference_preference \
+      androidx-constraintlayout_constraintlayout \
+      car-apps-common \
+      car-settings-lib \
+      car-setup-wizard-lib-utils \
+      SettingsLib
+
+  # Testing only resources must be applied first so they take precedence.
+  LOCAL_RESOURCE_DIR := \
+      $(LOCAL_PATH)/tests/robotests/res \
+      $(LOCAL_PATH)/res \
+      $(LOCAL_PATH)/../libs/car-apps-common/res \
+      $(LOCAL_PATH)/../libs/car-settings-lib/res \
+      $(LOCAL_PATH)/../../../../frameworks/base/packages/SettingsLib/res
+
+  LOCAL_CERTIFICATE := platform
+
+  LOCAL_MODULE_TAGS := optional
+
+  LOCAL_PROGUARD_ENABLED := disabled
+
+  LOCAL_PRIVILEGED_MODULE := true
+
+  LOCAL_DEX_PREOPT := false
+
+  LOCAL_STATIC_JAVA_LIBRARIES := \
+      android.car.userlib \
+      androidx-constraintlayout_constraintlayout-solver \
+      jsr305
+
+  LOCAL_DX_FLAGS := --multi-dex
+
+  include $(BUILD_PACKAGE)
+endif
+###################################################################################
+
 # Use the following include to make our test apk.
 ifeq (,$(ONE_SHOT_MAKEFILE))
 include $(call first-makefiles-under, $(LOCAL_PATH))
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a92c87b..6d0416d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -17,20 +17,23 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.car.settings"
-    android:sharedUserId="android.uid.system"
-    android:versionCode="1"
-    android:versionName="1.0">
+          package="com.android.car.settings"
+          coreApp="true"
+          android:sharedUserId="android.uid.system"
+          android:versionCode="1"
+          android:versionName="1.0">
 
     <uses-sdk
         android:minSdkVersion="24"
         android:targetSdkVersion="24"/>
 
+    <uses-permission android:name="android.car.permission.CAR_ENROLL_TRUST"/>
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     <uses-permission android:name="android.permission.BACKUP"/>
     <uses-permission android:name="android.permission.BLUETOOTH"/>
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
+    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/>
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
     <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"/>
     <uses-permission android:name="android.permission.DELETE_CACHE_FILES"/>
@@ -49,18 +52,25 @@
     <uses-permission android:name="android.permission.REBOOT"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/>
     <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"/>
     <uses-permission android:name="android.permission.SET_TIME"/>
     <uses-permission android:name="android.permission.SET_TIME_ZONE"/>
     <uses-permission android:name="android.permission.START_FOREGROUND"/>
+    <uses-permission android:name="android.permission.STATUS_BAR_SERVICE"/>
     <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/>
     <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
 
+    <permission android:name="com.android.car.settings.SET_INITIAL_LOCK"
+        android:protectionLevel="signature|setup"/>
+
     <application
         android:icon="@drawable/ic_launcher_settings"
         android:theme="@style/CarSettingTheme"
         android:label="@string/settings_label"
+        android:requiredForAllUsers="true"
+        android:directBootAware="true"
         android:supportsRtl="true">
 
         <activity
@@ -69,54 +79,335 @@
             android:launchMode="singleTask"
             android:windowSoftInputMode="adjustPan"
             android:exported="true">
-            <!-- Set priority high enough to trump the phone setting app -->
-            <!-- TODO: once phone setting is removed from car system image, set priority to 1 -->
-            <intent-filter android:priority="10">
-                <action android:name="android.intent.action.MAIN" />
+            <!-- Keep the order of intents same as .common.FragmentResolver -->
+            <intent-filter android:priority="1">
                 <action android:name="android.settings.SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.NIGHT_DISPLAY_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.DISPLAY_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.SOUND_SETTINGS" />
+                <action android:name="android.settings.panel.action.VOLUME" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.panel.action.INTERNET_CONNECTIVITY" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.net.wifi.PICK_WIFI_NETWORK" />
+                <action android:name="android.settings.WIFI_SETTINGS" />
+                <action android:name="android.settings.WIRELESS_SETTINGS" />
+                <action android:name="android.settings.panel.action.WIFI" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.WIFI_IP_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.DATA_USAGE_SETTINGS" />
+                <action android:name="android.settings.MOBILE_DATA_USAGE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.DATA_ROAMING_SETTINGS" />
+                <action android:name="android.settings.NETWORK_OPERATOR_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.BLUETOOTH_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.LOCATION_SCANNING_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.APPLICATION_SETTINGS" />
+                <action android:name="android.settings.MANAGE_APPLICATIONS_SETTINGS" />
+                <action android:name="android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.APPLICATION_DETAILS_SETTINGS" />
+                <action android:name="android.settings.NOTIFICATION_SETTINGS" />
+                <action android:name="android.settings.CHANNEL_NOTIFICATION_SETTINGS" />
+                <action android:name="android.settings.APP_NOTIFICATION_SETTINGS" />
+                <data android:scheme="package" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.action.MANAGE_WRITE_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.USAGE_ACCESS_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.DATE_SETTINGS" />
+                <action android:name="android.intent.action.QUICK_CLOCK" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.USER_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.ADD_ACCOUNT_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.SYNC_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.INTERNAL_STORAGE_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.LOCALE_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.REQUEST_SET_AUTOFILL_SERVICE" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="package" />
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.INPUT_METHOD_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+
+            <intent-filter android:priority="100">
+                <action android:name="android.settings.DEVICE_INFO_SETTINGS" />
+                <action android:name="android.settings.DEVICE_NAME" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <!-- Alias for launcher activity only, as this belongs to each profile. -->
+        <activity-alias android:name="Settings"
+                        android:label="@string/settings_label"
+                        android:launchMode="singleTask"
+                        android:targetActivity=".common.CarSettingActivity">
+            <intent-filter android:priority="1">
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             <meta-data android:name="distractionOptimized" android:value="true"/>
-        </activity>
+        </activity-alias>
 
         <activity android:name=".bluetooth.BluetoothPairingDialog"
                   android:excludeFromRecents="true"
                   android:windowSoftInputMode="stateVisible|adjustResize"
+                  android:taskAffinity="car.settings.bluetooth"
+                  android:launchMode="singleTask"
                   android:theme="@*android:style/Theme.DeviceDefault.Settings.Dialog.NoActionBar">
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity android:name=".bluetooth.BluetoothDevicePickerActivity"
+                  android:label="@string/bluetooth_device_picker"
+                  android:configChanges="orientation|keyboardHidden|screenSize"
+                  android:clearTaskOnLaunch="true">
+            <intent-filter>
+                <action android:name="android.bluetooth.devicepicker.action.LAUNCH" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".bluetooth.BluetoothRequestPermissionActivity"
+                  android:theme="@style/ActionDialogTheme"
+                  android:excludeFromRecents="true"
+                  android:clearTaskOnLaunch="true"
+                  android:launchMode="singleInstance">
+            <intent-filter>
+                <action android:name="android.bluetooth.adapter.action.REQUEST_DISCOVERABLE" />
+                <action android:name="android.bluetooth.adapter.action.REQUEST_ENABLE" />
+                <action android:name="android.bluetooth.adapter.action.REQUEST_DISABLE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
         </activity>
 
         <activity android:name=".accounts.AddAccountActivity"
                   android:theme="@android:style/Theme.Translucent.NoTitleBar"
-                  android:configChanges="orientation|keyboardHidden|screenSize">
+                  android:configChanges="orientation|keyboardHidden|screenSize"/>
+
+        <activity android:name=".applications.managedomainurls.ManageDomainUrlsActivity"
+                  android:configChanges="orientation|keyboardHidden|screenSize"
+                  android:windowSoftInputMode="adjustResize"
+                  android:exported="true">
             <intent-filter>
-                <action android:name="android.car.settings.ADD_ACCOUNT_SETTINGS" />
+                <action android:name="android.settings.MANAGE_DOMAIN_URLS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity android:name=".applications.assist.ManageAssistActivity"
+                  android:configChanges="orientation|keyboardHidden|screenSize"
+                  android:windowSoftInputMode="adjustResize"
+                  android:exported="true">
+            <intent-filter>
+                <action android:name="android.settings.VOICE_INPUT_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
         <activity android:name=".security.SettingsScreenLockActivity"
                   android:configChanges="orientation|keyboardHidden|screenSize"
                   android:windowSoftInputMode="adjustResize">
+            <intent-filter>
+                <action android:name="android.car.settings.SCREEN_LOCK_ACTIVITY" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
 
-        <activity android:name=".security.SetupWizardScreenLockActivity"
-                  android:theme="@style/Theme.Car.Shared.SetupWizard.NoActionBar"
+        <activity android:name=".security.CheckLockActivity"
                   android:configChanges="orientation|keyboardHidden|screenSize"
                   android:windowSoftInputMode="adjustResize">
             <intent-filter>
-                <action android:name="android.car.settings.SETUP_WIZARD_SCREEN_LOCK_ACTIVITY" />
+                <action android:name="android.app.action.CONFIRM_DEVICE_CREDENTIAL" />
+                <action android:name="android.app.action.CONFIRM_FRP_CREDENTIAL" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
+        <activity android:name=".security.AddTrustedDeviceActivity"
+                  android:configChanges="orientation|keyboardHidden|screenSize"
+                  android:windowSoftInputMode="adjustResize">
+        </activity>
+
+        <activity android:name=".system.ThirdPartyLicensesActivity"
+                  android:label="@string/settings_license_activity_title"
+                  android:configChanges="orientation|keyboardHidden|screenSize"
+                  android:windowSoftInputMode="adjustResize">
+            <intent-filter>
+                <action android:name="android.settings.THIRD_PARTY_LICENSE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity
+            android:name=".system.RegulatoryInfoDisplayActivity"
+            android:label="@string/regulatory_labels"
+            android:enabled="@bool/config_show_regulatory_info">
+            <intent-filter>
+                <action android:name="android.settings.SHOW_REGULATORY_INFO" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".location.LocationSettingsActivity"
+                  android:configChanges="orientation|keyboardHidden|screenSize"
+                  android:windowSoftInputMode="adjustResize"
+                  android:exported="true">
+            <intent-filter>
+                <action android:name="android.settings.LOCATION_SOURCE_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity android:name=".datausage.DataWarningAndLimitActivity"
+                  android:configChanges="orientation|keyboardHidden|screenSize"
+                  android:windowSoftInputMode="adjustResize"
+                  android:exported="true">
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
+        <activity
+            android:name=".wifi.WifiRequestToggleActivity"
+            android:theme="@style/ActionDialogTheme"
+            android:excludeFromRecents="true"
+            android:clearTaskOnLaunch="true"
+            android:launchMode="singleInstance">
+            <intent-filter>
+                <action android:name="android.net.wifi.action.REQUEST_ENABLE" />
+                <action android:name="android.net.wifi.action.REQUEST_DISABLE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <!-- This logic is copied from phone.-->
+        <!-- Ensures there's lightweight fallback activity when no other MAIN/HOME activity is present.-->
+        <activity android:name=".FallbackHome"
+                  android:excludeFromRecents="true"
+                  android:label=""
+                  android:screenOrientation="nosensor"
+                  android:theme="@style/FallbackHome">
+            <intent-filter android:priority="-900">
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.HOME" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+
         <service android:name=".bluetooth.BluetoothPairingService" />
 
+        <service android:name=".setupservice.InitialLockSetupService"
+                 android:exported="true"
+                 android:permission="com.android.car.settings.SET_INITIAL_LOCK"/>
+
         <receiver android:name=".bluetooth.BluetoothPairingRequest">
             <intent-filter>
                 <action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
             </intent-filter>
         </receiver>
 
+        <!-- FileProvider to share a generated license html file.
+             Note that "com.android.settings.files" is set here as its authorities because a Uri
+             permission grant should be allowed to share a file with an external browser but it is
+             allowed only for Settings' authorities in ActivityManagerService.  -->
+        <provider android:name="androidx.core.content.FileProvider"
+                  android:authorities="com.android.settings.files"
+                  android:grantUriPermissions="true"
+                  android:exported="false">
+            <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
+                       android:resource="@xml/file_paths" />
+        </provider>
+
     </application>
 </manifest>
diff --git a/res/anim/fade_in_top.xml b/res/anim/fade_in_top.xml
deleted file mode 100644
index b573f21..0000000
--- a/res/anim/fade_in_top.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <alpha
-        android:fromAlpha="0.2"
-        android:toAlpha="1"
-        android:duration="@android:integer/config_mediumAnimTime" />
-    <translate
-        android:fromYDelta="-100%p"
-        android:toYDelta="0"
-        android:interpolator="@android:interpolator/linear_out_slow_in"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
diff --git a/res/anim/fade_out_top.xml b/res/anim/fade_out_top.xml
deleted file mode 100644
index e04518e..0000000
--- a/res/anim/fade_out_top.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <alpha
-        android:fromAlpha="1.0"
-        android:toAlpha="0.2"
-        android:duration="@android:integer/config_mediumAnimTime" />
-    <translate
-        android:fromYDelta="0"
-        android:toYDelta="-100%p"
-        android:interpolator="@android:interpolator/linear_out_slow_in"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
diff --git a/res/anim/trans_fade_in.xml b/res/anim/trans_fade_in.xml
index 86ea64c..518586a 100644
--- a/res/anim/trans_fade_in.xml
+++ b/res/anim/trans_fade_in.xml
@@ -1,24 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 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.
+-->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android">
-
     <alpha
+        android:duration="@android:integer/config_mediumAnimTime"
         android:fromAlpha="0.2"
-        android:toAlpha="1"
-        android:duration="@android:integer/config_mediumAnimTime" />
+        android:toAlpha="1"/>
 </set>
diff --git a/res/anim/trans_fade_out.xml b/res/anim/trans_fade_out.xml
index aaa22d5..d53aae0 100644
--- a/res/anim/trans_fade_out.xml
+++ b/res/anim/trans_fade_out.xml
@@ -1,24 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 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.
+-->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android">
-
     <alpha
+        android:duration="@android:integer/config_mediumAnimTime"
         android:fromAlpha="1.0"
-        android:toAlpha="0.2"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
+        android:toAlpha="0.2"/>
+</set>
diff --git a/res/anim/trans_right_in.xml b/res/anim/trans_right_in.xml
deleted file mode 100644
index 1a93266..0000000
--- a/res/anim/trans_right_in.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <translate
-        android:fromXDelta="100%p"
-        android:toXDelta="0"
-        android:interpolator="@android:interpolator/linear_out_slow_in"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
diff --git a/res/anim/trans_right_out.xml b/res/anim/trans_right_out.xml
deleted file mode 100644
index 9e1bc6e..0000000
--- a/res/anim/trans_right_out.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android">
-    <translate
-        android:fromXDelta="0"
-        android:toXDelta="100%p"
-        android:interpolator="@android:interpolator/linear_out_slow_in"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
diff --git a/res/animator/trans_left_in.xml b/res/animator/trans_left_in.xml
index 2903660..ee3a124 100644
--- a/res/animator/trans_left_in.xml
+++ b/res/animator/trans_left_in.xml
@@ -1,32 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 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.
+-->
+
 <set xmlns:android="http://schemas.android.com/apk/res/android">
     <objectAnimator
+        android:duration="@android:integer/config_mediumAnimTime"
         android:interpolator="@android:interpolator/decelerate_quint"
+        android:propertyName="translationX"
         android:valueFrom="-100dp"
         android:valueTo="0dp"
-        android:valueType="floatType"
-        android:propertyName="translationX"
-        android:duration="@android:integer/config_mediumAnimTime" />
+        android:valueType="floatType"/>
     <objectAnimator
+        android:duration="@android:integer/config_mediumAnimTime"
         android:interpolator="@android:interpolator/decelerate_quint"
+        android:propertyName="alpha"
         android:valueFrom="0.0"
         android:valueTo="1.0"
-        android:valueType="floatType"
-        android:propertyName="alpha"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
+        android:valueType="floatType"/>
+</set>
diff --git a/res/animator/trans_left_out.xml b/res/animator/trans_left_out.xml
index eca6489..e5eaf2f 100644
--- a/res/animator/trans_left_out.xml
+++ b/res/animator/trans_left_out.xml
@@ -1,32 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 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.
+-->
+
 <set xmlns:android="http://schemas.android.com/apk/res/android">
     <objectAnimator
+        android:duration="@android:integer/config_mediumAnimTime"
         android:interpolator="@android:interpolator/decelerate_quint"
+        android:propertyName="translationX"
         android:valueFrom="0dp"
         android:valueTo="-100dp"
-        android:valueType="floatType"
-        android:propertyName="translationX"
-        android:duration="@android:integer/config_mediumAnimTime" />
+        android:valueType="floatType"/>
     <objectAnimator
+        android:duration="@android:integer/config_mediumAnimTime"
         android:interpolator="@android:interpolator/decelerate_quint"
+        android:propertyName="alpha"
         android:valueFrom="1.0"
         android:valueTo="0.0"
-        android:valueType="floatType"
-        android:propertyName="alpha"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
+        android:valueType="floatType"/>
+</set>
diff --git a/res/animator/trans_right_in.xml b/res/animator/trans_right_in.xml
index bd4e588..c9c339b 100644
--- a/res/animator/trans_right_in.xml
+++ b/res/animator/trans_right_in.xml
@@ -1,34 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-/*
-** Copyright 2017, 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.
-*/
+    Copyright 2017 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.
 -->
+
 <set xmlns:android="http://schemas.android.com/apk/res/android">
     <objectAnimator
+        android:duration="@android:integer/config_mediumAnimTime"
         android:interpolator="@android:interpolator/decelerate_quint"
+        android:propertyName="translationX"
         android:valueFrom="100dp"
         android:valueTo="0dp"
-        android:valueType="floatType"
-        android:propertyName="translationX"
-        android:duration="@android:integer/config_mediumAnimTime" />
+        android:valueType="floatType"/>
     <objectAnimator
+        android:duration="@android:integer/config_mediumAnimTime"
         android:interpolator="@android:interpolator/decelerate_quint"
+        android:propertyName="alpha"
         android:valueFrom="0.0"
         android:valueTo="1.0"
-        android:valueType="floatType"
-        android:propertyName="alpha"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
+        android:valueType="floatType"/>
+</set>
diff --git a/res/animator/trans_right_out.xml b/res/animator/trans_right_out.xml
index 803e1e4..df7e75b 100644
--- a/res/animator/trans_right_out.xml
+++ b/res/animator/trans_right_out.xml
@@ -1,34 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-/*
-** Copyright 2017, 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.
-*/
+    Copyright 2017 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.
 -->
+
 <set xmlns:android="http://schemas.android.com/apk/res/android">
     <objectAnimator
+        android:duration="@android:integer/config_mediumAnimTime"
         android:interpolator="@android:interpolator/decelerate_quint"
+        android:propertyName="translationX"
         android:valueFrom="0dp"
         android:valueTo="100dp"
-        android:valueType="floatType"
-        android:propertyName="translationX"
-        android:duration="@android:integer/config_mediumAnimTime" />
+        android:valueType="floatType"/>
     <objectAnimator
+        android:duration="@android:integer/config_mediumAnimTime"
         android:interpolator="@android:interpolator/decelerate_quint"
+        android:propertyName="alpha"
         android:valueFrom="1.0"
         android:valueTo="0.0"
-        android:valueType="floatType"
-        android:propertyName="alpha"
-        android:duration="@android:integer/config_mediumAnimTime" />
-</set>
\ No newline at end of file
+        android:valueType="floatType"/>
+</set>
diff --git a/res/color/action_bar_btn.xml b/res/color/action_bar_btn.xml
deleted file mode 100644
index a6446d8..0000000
--- a/res/color/action_bar_btn.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_accent" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_accent" />
-</selector>
\ No newline at end of file
diff --git a/res/color/lock_pattern_regular.xml b/res/color/lock_pattern_regular.xml
deleted file mode 100644
index 67e4fba..0000000
--- a/res/color/lock_pattern_regular.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_body1" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_body1" />
-</selector>
\ No newline at end of file
diff --git a/res/color/lock_pattern_regular_dark.xml b/res/color/lock_pattern_regular_dark.xml
deleted file mode 100644
index d3ba4ed..0000000
--- a/res/color/lock_pattern_regular_dark.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_body1_dark" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_body1_dark" />
-</selector>
\ No newline at end of file
diff --git a/res/color/lock_pattern_regular_light.xml b/res/color/lock_pattern_regular_light.xml
deleted file mode 100644
index 5b47d6b..0000000
--- a/res/color/lock_pattern_regular_light.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_body1_light" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_body1_light" />
-</selector>
\ No newline at end of file
diff --git a/res/color/lock_pattern_success.xml b/res/color/lock_pattern_success.xml
deleted file mode 100644
index bee9145..0000000
--- a/res/color/lock_pattern_success.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_blue_500" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_blue_500" />
-</selector>
\ No newline at end of file
diff --git a/res/color/lock_pattern_success_dark.xml b/res/color/lock_pattern_success_dark.xml
deleted file mode 100644
index 33ad70e..0000000
--- a/res/color/lock_pattern_success_dark.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_teal_700" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_teal_700" />
-</selector>
\ No newline at end of file
diff --git a/res/color/lock_pattern_success_light.xml b/res/color/lock_pattern_success_light.xml
deleted file mode 100644
index eb834c4..0000000
--- a/res/color/lock_pattern_success_light.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_teal_200" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_teal_200" />
-</selector>
\ No newline at end of file
diff --git a/res/color/text_body_1.xml b/res/color/text_body_1.xml
deleted file mode 100644
index e7b5f40..0000000
--- a/res/color/text_body_1.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_body1" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_body1" />
-</selector>
\ No newline at end of file
diff --git a/res/color/text_body_2.xml b/res/color/text_body_2.xml
deleted file mode 100644
index 543d2ce..0000000
--- a/res/color/text_body_2.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="true"
-          android:color="@color/car_body2" />
-    <item android:state_enabled="false"
-          android:alpha="0.5"
-          android:color="@color/car_body2" />
-</selector>
\ No newline at end of file
diff --git a/res/color/toggle_bg.xml b/res/color/toggle_bg.xml
index f48f216..8b5e8d6 100644
--- a/res/color/toggle_bg.xml
+++ b/res/color/toggle_bg.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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
+         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,
@@ -16,9 +16,8 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:state_enabled="false"
-      android:color="@color/toggle_bg_disabled"/>
-  <item android:state_enabled="true"
-      android:color="@color/car_accent"/>
-  <item android:color="@color/car_accent"/>
-</selector>
\ No newline at end of file
+    <item
+        android:color="?attr/quickSettingsEnabledColor"
+        android:state_enabled="true"/>
+    <item android:color="?attr/quickSettingsDisabledColor"/>
+</selector>
diff --git a/res/color/toggle_icon_tint.xml b/res/color/toggle_icon_tint.xml
index 41388ba..a977107 100644
--- a/res/color/toggle_icon_tint.xml
+++ b/res/color/toggle_icon_tint.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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
+         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,
@@ -16,9 +16,8 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:state_enabled="false"
-      android:color="@color/toggle_icon_disabled"/>
-  <item android:state_enabled="true"
-      android:color="@color/car_card"/>
-  <item android:color="@color/car_card"/>
-</selector>
\ No newline at end of file
+    <item
+        android:color="?attr/quickSettingsIconEnabledColor"
+        android:state_enabled="true"/>
+    <item android:color="?attr/quickSettingsIconDisabledColor"/>
+</selector>
diff --git a/res/drawable/brightness_seekbar_track.xml b/res/drawable/brightness_seekbar_track.xml
new file mode 100644
index 0000000..7cacf25
--- /dev/null
+++ b/res/drawable/brightness_seekbar_track.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2017 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.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Use android provided id, as seekbar is expecting that -->
+    <item android:id="@android:id/background">
+        <shape android:shape="line">
+            <corners android:radius="@dimen/brightness_seekbar_track_corner"/>
+            <stroke android:width="@dimen/brightness_seekbar_track_height"/>
+        </shape>
+    </item>
+    <item android:id="@android:id/progress">
+        <clip>
+            <shape android:shape="line">
+                <stroke android:width="@dimen/brightness_seekbar_track_height"/>
+            </shape>
+        </clip>
+    </item>
+</layer-list>
diff --git a/res/drawable/button_ripple_bg.xml b/res/drawable/button_ripple_bg.xml
index 5727754..a32ea39 100644
--- a/res/drawable/button_ripple_bg.xml
+++ b/res/drawable/button_ripple_bg.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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
+         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,
@@ -15,9 +15,10 @@
     limitations under the License.
 -->
 
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-        android:color="@color/car_card_ripple_background"
-        android:radius="@dimen/toggle_ripple">
-    <item android:id="@android:id/mask"
-          android:drawable="@drawable/rectangle_ripple_mask" />
+<ripple
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?android:attr/colorControlHighlight">
+    <item
+        android:id="@android:id/mask"
+        android:drawable="@drawable/rectangle_ripple_mask"/>
 </ripple>
diff --git a/res/drawable/car_add_circle_round.xml b/res/drawable/car_add_circle_round.xml
deleted file mode 100644
index 74fd8a4..0000000
--- a/res/drawable/car_add_circle_round.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 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.
--->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item>
-        <shape android:shape="oval">
-            <solid
-                android:color="@color/car_user_switcher_add_user_background_color"/>
-            <size
-                android:width="@dimen/car_user_switcher_image_avatar_size"
-                android:height="@dimen/car_user_switcher_image_avatar_size"/>
-        </shape>
-    </item>
-    <item
-        android:drawable="@drawable/car_ic_add"
-        android:gravity="center"/>
-</layer-list>
\ No newline at end of file
diff --git a/res/drawable/car_ic_add.xml b/res/drawable/car_ic_add.xml
deleted file mode 100644
index 9216efc..0000000
--- a/res/drawable/car_ic_add.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-    Copyright (C) 2018 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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="@dimen/car_touch_target_size"
-    android:height="@dimen/car_touch_target_size"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0">
-  <path
-      android:fillColor="@color/car_user_switcher_add_user_add_sign_color"
-      android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
-</vector>
\ No newline at end of file
diff --git a/res/drawable/car_ic_navigation.xml b/res/drawable/car_ic_navigation.xml
new file mode 100644
index 0000000..0a6fa2e
--- /dev/null
+++ b/res/drawable/car_ic_navigation.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 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
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:viewportWidth="44.0"
+        android:viewportHeight="44.0"
+        android:width="@dimen/icon_size"
+        android:height="@dimen/icon_size">
+    <path
+        android:pathData="M39.8016667 20.6983333L23.3016667 4.19833333C22.5866667 3.48333333 21.4316667 3.48333333 20.7166667 4.19833333L4.21666667 20.6983333C3.50166667 21.4133333 3.50166667 22.5683333 4.21666667 23.2833333L20.7166667 39.7833333C21.4316667 40.4983333 22.5866667 40.4983333 23.3016667 39.7833333L39.8016667 23.2833333C40.5166667 22.5866667 40.5166667 21.4316667 39.8016667 20.6983333ZM25.6666667 26.5833333L25.6666667 22L18.3333333 22L18.3333333 27.5L14.6666667 27.5L14.6666667 20.1666667C14.6666667 19.1583333 15.4916667 18.3333333 16.5 18.3333333L25.6666667 18.3333333L25.6666667 13.75L32.0833333 20.1666667L25.6666667 26.5833333Z"
+        android:fillColor="?attr/iconColor" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/car_user_avatar_bg_circle.xml b/res/drawable/car_user_avatar_bg_circle.xml
deleted file mode 100644
index 55840f0..0000000
--- a/res/drawable/car_user_avatar_bg_circle.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 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.
--->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="oval">
-
-  <stroke
-      android:color="@color/car_user_switcher_current_user_color"
-      android:width="@dimen/car_user_switcher_current_user_circle_stroke_width"/>
-
-  <size
-      android:width="@dimen/car_user_switcher_current_user_circle_width"
-      android:height="@dimen/car_user_switcher_current_user_circle_width"/>
-
-</shape>
\ No newline at end of file
diff --git a/res/drawable/circle_bg.xml b/res/drawable/circle_bg.xml
index 5fc37ad..7b56ee0 100644
--- a/res/drawable/circle_bg.xml
+++ b/res/drawable/circle_bg.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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
+         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,
@@ -18,11 +18,9 @@
 <shape
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="oval">
-
-  <solid
-      android:color="@color/toggle_bg"/>
-
-  <size
-      android:width="@dimen/car_touch_target_size"
-      android:height="@dimen/car_touch_target_size"/>
-</shape>
\ No newline at end of file
+    <solid
+        android:color="@color/toggle_bg"/>
+    <size
+        android:width="@dimen/touch_target_size"
+        android:height="@dimen/touch_target_size"/>
+</shape>
diff --git a/res/drawable/circle_ripple_bg.xml b/res/drawable/circle_ripple_bg.xml
index c9c4cf8..85a9adc 100644
--- a/res/drawable/circle_ripple_bg.xml
+++ b/res/drawable/circle_ripple_bg.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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
+         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,
@@ -15,7 +15,8 @@
     limitations under the License.
 -->
 
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-        android:color="@color/car_card_ripple_background"
-        android:radius="@dimen/toggle_ripple">
+<ripple
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?android:attr/colorControlHighlight"
+    android:radius="@dimen/circle_ripple_bg_radius">
 </ripple>
diff --git a/res/drawable/color_progress_bar.xml b/res/drawable/color_progress_bar.xml
new file mode 100644
index 0000000..10a2891
--- /dev/null
+++ b/res/drawable/color_progress_bar.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background"
+          android:gravity="center_vertical|fill_horizontal">
+        <shape android:shape="rectangle"
+               android:tint="@color/config_progress_background_tint">
+            <solid android:color="@color/white_disabled_material"/>
+        </shape>
+    </item>
+    <item android:id="@android:id/progress"
+          android:gravity="center_vertical|fill_horizontal">
+        <scale android:scaleWidth="100%">
+            <shape android:shape="rectangle"
+                   android:tint="?android:attr/colorControlActivated">
+                <solid android:color="@android:color/white"/>
+            </shape>
+        </scale>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/res/drawable/divider.xml b/res/drawable/divider.xml
new file mode 100644
index 0000000..e6ed481
--- /dev/null
+++ b/res/drawable/divider.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<inset
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:insetLeft="@dimen/divider_inset_left"
+    android:insetRight="@dimen/divider_inset_right">
+    <shape>
+        <size android:height="@dimen/divider_height"/>
+        <solid android:color="?attr/dividerColor"/>
+    </shape>
+</inset>
diff --git a/res/drawable/ic_account.xml b/res/drawable/ic_account.xml
index 8dba222..f7a666d 100644
--- a/res/drawable/ic_account.xml
+++ b/res/drawable/ic_account.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2L5,3c-1.11,0 -2,0.9 -2,2zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
 </vector>
diff --git a/res/drawable/ic_add.xml b/res/drawable/ic_add.xml
index 1282ade..458f8bf 100644
--- a/res/drawable/ic_add.xml
+++ b/res/drawable/ic_add.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint" >
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FF000000"
+        android:fillColor="?attr/iconColor"
         android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
 </vector>
diff --git a/res/drawable/ic_arrow_back.xml b/res/drawable/ic_arrow_back.xml
index 1314fef..f23c621 100644
--- a/res/drawable/ic_arrow_back.xml
+++ b/res/drawable/ic_arrow_back.xml
@@ -1,30 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
 
 <!-- This Icon is used in as the back icon on ActionBar. ActionBar hard code the icon layout and
   ~  does not provide a way to customize it. Here to center the icon in action bar, we make up
   ~  the margin by add the extra space in the icon itself -->
 <vector
-    android:height="@dimen/car_primary_icon_size"
-    android:width="@dimen/car_primary_icon_size"
-    android:tint="@color/car_accent"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
     android:viewportHeight="24.0"
-    android:viewportWidth="24.0"
-    xmlns:android="http://schemas.android.com/apk/res/android">
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FF000000"
+        android:fillColor="?attr/iconColor"
         android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
 </vector>
diff --git a/res/drawable/ic_arrow_drop_down.xml b/res/drawable/ic_arrow_drop_down.xml
index 487b2ff..854660a 100644
--- a/res/drawable/ic_arrow_drop_down.xml
+++ b/res/drawable/ic_arrow_drop_down.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="@dimen/car_primary_icon_size"
-        android:width="@dimen/car_primary_icon_size"
-        android:tint="@color/car_tint"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:pathData="M7,10l5,5 5,-5z"
-        android:fillColor="#000000"/>
+        android:fillColor="?attr/iconColor"
+        android:pathData="M7,10l5,5 5,-5z"/>
 </vector>
diff --git a/res/drawable/ic_arrow_forward.xml b/res/drawable/ic_arrow_forward.xml
index 42fcbca..2b6b63c 100644
--- a/res/drawable/ic_arrow_forward.xml
+++ b/res/drawable/ic_arrow_forward.xml
@@ -1,27 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24"
-        android:viewportHeight="24">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24"
+    android:viewportWidth="24">
+    <path android:pathData="M0 0h24v24H0z"/>
     <path
-        android:pathData="M0 0h24v24H0z" />
-    <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z" />
+        android:fillColor="?attr/iconColor"
+        android:pathData="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"/>
 </vector>
diff --git a/res/drawable/ic_arrow_forward_on_disc.xml b/res/drawable/ic_arrow_forward_on_disc.xml
deleted file mode 100644
index 6cff5e5..0000000
--- a/res/drawable/ic_arrow_forward_on_disc.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<layer-list xmlns:android = "http://schemas.android.com/apk/res/android">
-    <item>
-        <shape android:shape="oval">
-            <solid android:color="@color/google_blue_600" />
-            <size
-                android:width="@dimen/pin_pad_icon_size"
-                android:height="@dimen/pin_pad_icon_size" />
-        </shape>
-    </item>
-    <item android:drawable="@drawable/ic_arrow_forward" />
-</layer-list>
-
diff --git a/res/drawable/ic_audio_navi.xml b/res/drawable/ic_audio_navi.xml
index f2b1517..4919d18 100644
--- a/res/drawable/ic_audio_navi.xml
+++ b/res/drawable/ic_audio_navi.xml
@@ -1,25 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint" >
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <!-- Use solid fillColor for mask. Icon tint color will be applied after icon is loaded. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M18.92,5.01C18.72,4.42 18.16,4 17.5,4h-11c-0.66,0 -1.21,0.42 -1.42,1.01L3,11v8c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h12v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-8l-2.08,-5.99zM6.5,15c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,12 6.5,12s1.5,0.67 1.5,1.5S7.33,15 6.5,15zM17.5,15c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM5,10l1.5,-4.5h11L19,10L5,10z"/>
diff --git a/res/drawable/ic_backspace.xml b/res/drawable/ic_backspace.xml
index fb0bb24..d2ea585 100644
--- a/res/drawable/ic_backspace.xml
+++ b/res/drawable/ic_backspace.xml
@@ -1,25 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FF000000"
+        android:fillColor="?attr/iconColor"
         android:pathData="M22,3H7C6.31,3 5.77,3.35 5.41,3.88l-5.04,7.57c-0.22,0.34 -0.22,0.77 0,1.11l5.04,7.56C5.77,20.64 6.31,21 7,21h15c1.1,0 2,-0.9 2,-2V5C24,3.9 23.1,3 22,3zM18.3,16.3L18.3,16.3c-0.39,0.39 -1.02,0.39 -1.41,0L14,13.41l-2.89,2.89c-0.39,0.39 -1.02,0.39 -1.41,0h0c-0.39,-0.39 -0.39,-1.02 0,-1.41L12.59,12L9.7,9.11c-0.39,-0.39 -0.39,-1.02 0,-1.41l0,0c0.39,-0.39 1.02,-0.39 1.41,0L14,10.59l2.89,-2.89c0.39,-0.39 1.02,-0.39 1.41,0v0c0.39,0.39 0.39,1.02 0,1.41L15.41,12l2.89,2.89C18.68,15.27 18.68,15.91 18.3,16.3z"/>
 </vector>
diff --git a/res/drawable/ic_brightness_knob.xml b/res/drawable/ic_brightness_knob.xml
index 603a6f4..db2331a 100644
--- a/res/drawable/ic_brightness_knob.xml
+++ b/res/drawable/ic_brightness_knob.xml
@@ -1,26 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:pathData="M20,8.69L20,4h-4.69L12,0.69 8.69,4L4,4v4.69L0.69,12 4,15.31L4,20h4.69L12,23.31 15.31,20L20,20v-4.69L23.31,12 20,8.69zM12,18c-3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6 6,2.69 6,6 -2.69,6 -6,6zM12,8c-2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4 -1.79,-4 -4,-4z"
-        android:fillColor="@color/car_accent"/>
+        android:fillColor="?attr/quickSettingsEnabledColor"
+        android:pathData="M20,8.69L20,4h-4.69L12,0.69 8.69,4L4,4v4.69L0.69,12 4,15.31L4,20h4.69L12,23.31 15.31,20L20,20v-4.69L23.31,12 20,8.69zM12,18c-3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6 6,2.69 6,6 -2.69,6 -6,6zM12,8c-2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4 -1.79,-4 -4,-4z"/>
 </vector>
diff --git a/res/drawable/ic_brightness_knob_stretched.xml b/res/drawable/ic_brightness_knob_stretched.xml
index f93a744..3e1b53a 100644
--- a/res/drawable/ic_brightness_knob_stretched.xml
+++ b/res/drawable/ic_brightness_knob_stretched.xml
@@ -1,31 +1,28 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+    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.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
     <item>
         <shape>
             <size
-                android:height="@dimen/brightness_knob_size"
-                android:width="@dimen/brightness_knob_size" />
-
-            <solid android:color="@android:color/transparent" />
+                android:width="@dimen/brightness_knob_size"
+                android:height="@dimen/brightness_knob_size"/>
+            <solid android:color="@android:color/transparent"/>
         </shape>
     </item>
     <item android:drawable="@drawable/ic_brightness_knob"/>
-
 </layer-list>
diff --git a/res/drawable/ic_bt_imaging.xml b/res/drawable/ic_bt_imaging.xml
deleted file mode 100644
index c65a7c2..0000000
--- a/res/drawable/ic_bt_imaging.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-     Copyright (C) 2017 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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
-    android:tint="@color/car_tint">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M19,8L5,8c-1.66,0 -3,1.34 -3,3v6h4v4h12v-4h4v-6c0,-1.66 -1.34,-3
-            -3,-3zM16,19L8,19v-5h8v5zM19,12c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1
-            -1,1zM18,3L6,3v4h12L18,3z"/>
-</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_bt_laptop.xml b/res/drawable/ic_bt_laptop.xml
deleted file mode 100644
index a9c70ff..0000000
--- a/res/drawable/ic_bt_laptop.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-     Copyright (C) 2017 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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0"
-    android:tint="@color/car_tint">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M20,18c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2H4c-1.1,0
-            -2,0.9 -2,2v10c0,1.1 0.9,2 2,2H0v2h24v-2h-4zM4,6h16v10H4V6z"/>
-</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_cellular_data.xml b/res/drawable/ic_cellular_data.xml
index 5a0437c..9b0b27f 100644
--- a/res/drawable/ic_cellular_data.xml
+++ b/res/drawable/ic_cellular_data.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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.
@@ -13,14 +14,16 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24.0dp"
-    android:height="24.0dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
+        android:fillColor="?attr/iconColor"
         android:pathData="M12.0,12.0m-9.5,0.0a9.5,9.5 0.0,1.0 1.0,19.0 0.0a9.5,9.5 0.0,1.0 1.0,-19.0 0.0
         M10.6,5.4c-0.2,-0.2 -0.5,-0.2 -0.6,0.0L7.6,9.1l2.0,0.0l0.0,3.8L11.0,12.900001L11.0,9.1l2.0,0.0L10.6,5.4z
-        M13.3,18.6c0.2,0.2 0.5,0.2 0.6,0.0l2.4,-3.7l-2.0,0.0l0.0,-3.8l-1.4,0.0l0.0,3.8l-2.0,0.0L13.3,18.6z"
-        android:fillColor="#ffffff"/>
+        M13.3,18.6c0.2,0.2 0.5,0.2 0.6,0.0l2.4,-3.7l-2.0,0.0l0.0,-3.8l-1.4,0.0l0.0,3.8l-2.0,0.0L13.3,18.6z"/>
 </vector>
diff --git a/res/drawable/ic_check.xml b/res/drawable/ic_check.xml
index fce0802..9838470 100644
--- a/res/drawable/ic_check.xml
+++ b/res/drawable/ic_check.xml
@@ -1,27 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24"
-        android:viewportHeight="24">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24"
+    android:viewportWidth="24">
     <path
-        android:pathData="M0 0h24v24H0z" />
+        android:pathData="M0 0h24v24H0z"/>
     <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" />
+        android:fillColor="?attr/iconColor"
+        android:pathData="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/>
 </vector>
diff --git a/res/drawable/ic_check_box.xml b/res/drawable/ic_check_box.xml
new file mode 100644
index 0000000..5a7515c
--- /dev/null
+++ b/res/drawable/ic_check_box.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:drawable="@drawable/ic_check_box_unchecked"
+        android:state_checked="false"/>
+    <item
+        android:drawable="@drawable/ic_check_box_checked"
+        android:state_checked="true"/>
+    <item android:drawable="@drawable/ic_check_box_unchecked"/>
+</selector>
diff --git a/res/drawable/ic_check_box_checked.xml b/res/drawable/ic_check_box_checked.xml
index 25a55d4..479163d 100644
--- a/res/drawable/ic_check_box_checked.xml
+++ b/res/drawable/ic_check_box_checked.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="@dimen/car_primary_icon_size"
-        android:height="@dimen/car_primary_icon_size"
-        android:tint="@color/car_accent"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"
-        android:fillColor="#000000"/>
+        android:fillColor="?attr/iconColor"
+        android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
 </vector>
diff --git a/res/drawable/ic_check_box_unchecked.xml b/res/drawable/ic_check_box_unchecked.xml
index a88452f..70dbcd1 100644
--- a/res/drawable/ic_check_box_unchecked.xml
+++ b/res/drawable/ic_check_box_unchecked.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="@dimen/car_primary_icon_size"
-        android:height="@dimen/car_primary_icon_size"
-        android:tint="@color/car_tint"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:pathData="M19,5v14H5V5h14m0,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"
-        android:fillColor="#000000"/>
+        android:fillColor="?attr/iconColor"
+        android:pathData="M19,5v14H5V5h14m0,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
 </vector>
diff --git a/res/drawable/ic_check_on_disc.xml b/res/drawable/ic_check_on_disc.xml
deleted file mode 100644
index 687e199..0000000
--- a/res/drawable/ic_check_on_disc.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<layer-list xmlns:android = "http://schemas.android.com/apk/res/android">
-    <item>
-        <shape android:shape="oval">
-            <solid android:color="@color/google_blue_600" />
-            <size
-                android:width="@dimen/pin_pad_icon_size"
-                android:height="@dimen/pin_pad_icon_size" />
-        </shape>
-    </item>
-    <item android:drawable="@drawable/ic_check" />
-
-</layer-list>
-
diff --git a/res/drawable/ic_chevron_right.xml b/res/drawable/ic_chevron_right.xml
index a2e3745..ea9a763 100644
--- a/res/drawable/ic_chevron_right.xml
+++ b/res/drawable/ic_chevron_right.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FF000000"
+        android:fillColor="?attr/iconColor"
         android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z"/>
 </vector>
diff --git a/res/drawable/ic_close.xml b/res/drawable/ic_close.xml
index 377a889..07c42ef 100644
--- a/res/drawable/ic_close.xml
+++ b/res/drawable/ic_close.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:height="@dimen/car_primary_icon_size"
-        android:width="@dimen/car_primary_icon_size"
-        android:tint="@color/car_tint"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"
-        android:fillColor="#000000"/>
+        android:fillColor="?attr/iconColor"
+        android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
 </vector>
diff --git a/res/drawable/ic_delete.xml b/res/drawable/ic_delete.xml
index 84552c1..1f358ca 100644
--- a/res/drawable/ic_delete.xml
+++ b/res/drawable/ic_delete.xml
@@ -1,25 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
+    Copyright 2019 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="@color/car_tint"
-        android:pathData="M12 38c0 2.21 1.79 4 4 4h16c2.21 0 4,-1.79 4,-4V14H12v24zM38 8h-7l-2,-2H19l-2 2h-7v4h28V8z"/>
-</vector>
\ No newline at end of file
+        android:fillColor="?attr/iconColor"
+        android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
+</vector>
diff --git a/res/drawable/ic_done.xml b/res/drawable/ic_done.xml
deleted file mode 100644
index 3637853..0000000
--- a/res/drawable/ic_done.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M9,16.2l-3.5,-3.5a0.984,0.984 0,0 0,-1.4 0,0.984 0.984,0 0,0 0,1.4l4.19,4.19c0.39,0.39 1.02,0.39 1.41,0L20.3,7.7a0.984,0.984 0,0 0,0 -1.4,0.984 0.984,0 0,0 -1.4,0L9,16.2z"/>
-</vector>
diff --git a/res/drawable/ic_edit.xml b/res/drawable/ic_edit.xml
new file mode 100644
index 0000000..8e3332e
--- /dev/null
+++ b/res/drawable/ic_edit.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M20.41,4.94l-1.35,-1.35c-0.78,-0.78 -2.05,-0.78 -2.83,0l0,0L3,16.82V21h4.18L20.41,7.77C21.2,6.99 21.2,5.72 20.41,4.94zM6.41,19.06L5,19v-1.36l9.82,-9.82l1.41,1.41L6.41,19.06z"/>
+</vector>
diff --git a/res/drawable/ic_folder.xml b/res/drawable/ic_folder.xml
new file mode 100644
index 0000000..aed22cf
--- /dev/null
+++ b/res/drawable/ic_folder.xml
@@ -0,0 +1,24 @@
+<!--
+    Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@dimen/icon_size"
+        android:height="@dimen/icon_size"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M20,6h-8l-2,-2H4C2.9,4 2.01,4.9 2.01,6L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8C22,6.9 21.1,6 20,6zM20,18H4V8h16V18z"/>
+</vector>
diff --git a/res/drawable/ic_guest_user.xml b/res/drawable/ic_guest_user.xml
deleted file mode 100644
index 1e684b3..0000000
--- a/res/drawable/ic_guest_user.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
-    <path
-        android:fillColor="#FFFFFFFF"
-        android:pathData="M12,5.9c1.16,0 2.1,0.94 2.1,2.1s-0.94,2.1 -2.1,2.1S9.9,9.16 9.9,8s0.94,-2.1 2.1,-2.1m0,9c2.97,0 6.1,1.46 6.1,2.1v1.1L5.9,18.1L5.9,17c0,-0.64 3.13,-2.1 6.1,-2.1M12,4C9.79,4 8,5.79 8,8s1.79,4 4,4 4,-1.79 4,-4 -1.79,-4 -4,-4zM12,13c-2.67,0 -8,1.34 -8,4v3h16v-3c0,-2.66 -5.33,-4 -8,-4z"/>
-</vector>
diff --git a/res/drawable/ic_headset.xml b/res/drawable/ic_headset.xml
new file mode 100644
index 0000000..0de143e
--- /dev/null
+++ b/res/drawable/ic_headset.xml
@@ -0,0 +1,24 @@
+<!--
+    Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@dimen/icon_size"
+        android:height="@dimen/icon_size"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M19,15v3c0,0.55 -0.45,1 -1,1h-1v-4H19M7,15v4H6c-0.55,0 -1,-0.45 -1,-1v-3H7M12,2c-4.97,0 -9,4.03 -9,9v7c0,1.66 1.34,3 3,3h3v-8H5v-2c0,-3.87 3.13,-7 7,-7s7,3.13 7,7v2h-4v8h3c1.66,0 3,-1.34 3,-3v-7C21,6.03 16.97,2 12,2L12,2z"/>
+</vector>
diff --git a/res/drawable/ic_keyboard_arrow_down.xml b/res/drawable/ic_keyboard_arrow_down.xml
new file mode 100644
index 0000000..45eda10
--- /dev/null
+++ b/res/drawable/ic_keyboard_arrow_down.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M7.41,7.84L12,12.42l4.59,-4.58L18,9.25l-6,6 -6,-6z"/>
+</vector>
diff --git a/res/drawable/ic_keyboard_arrow_up.xml b/res/drawable/ic_keyboard_arrow_up.xml
new file mode 100644
index 0000000..4437437
--- /dev/null
+++ b/res/drawable/ic_keyboard_arrow_up.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M7.41,15.41L12,10.83l4.59,4.58L18,14l-6,-6 -6,6z"/>
+</vector>
diff --git a/res/drawable/ic_language.xml b/res/drawable/ic_language.xml
index 43cdb7e..eddea9a 100644
--- a/res/drawable/ic_language.xml
+++ b/res/drawable/ic_language.xml
@@ -1,25 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="@dimen/car_primary_icon_size"
-        android:height="@dimen/car_primary_icon_size"
-        android:viewportHeight="48.0"
-        android:viewportWidth="48.0">
+    Copyright 2018 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="48.0"
+    android:viewportWidth="48.0">
     <path
-        android:fillColor="@color/car_tint"
+        android:fillColor="?attr/iconColor"
         android:pathData="M23.99,4C12.94,4 4,12.95 4,24s8.94,20 19.99,20C35.04,44 44,35.05 44,24S35.04,4 23.99,4zM37.84,16h-5.9c-0.65,-2.5 -1.56,-4.9 -2.76,-7.12 3.68,1.26 6.74,3.81 8.66,7.12zM24,8.07c1.67,2.4 2.97,5.07 3.82,7.93h-7.64c0.85,-2.86 2.15,-5.53 3.82,-7.93zM8.52,28C8.19,26.72 8,25.38 8,24s0.19,-2.72 0.52,-4h6.75c-0.16,1.31 -0.27,2.64 -0.27,4 0,1.36 0.11,2.69 0.28,4L8.52,28zM10.15,32h5.9c0.65,2.5 1.56,4.9 2.76,7.13 -3.68,-1.26 -6.74,-3.82 -8.66,-7.13zM16.05,16h-5.9c1.92,-3.31 4.98,-5.87 8.66,-7.13 -1.2,2.23 -2.11,4.63 -2.76,7.13zM24,39.93c-1.66,-2.4 -2.96,-5.07 -3.82,-7.93h7.64c-0.86,2.86 -2.16,5.53 -3.82,7.93zM28.68,28h-9.36c-0.19,-1.31 -0.32,-2.64 -0.32,-4 0,-1.36 0.13,-2.69 0.32,-4h9.36c0.19,1.31 0.32,2.64 0.32,4 0,1.36 -0.13,2.69 -0.32,4zM29.19,39.12c1.2,-2.23 2.11,-4.62 2.76,-7.12h5.9c-1.93,3.31 -4.99,5.86 -8.66,7.12zM32.72,28c0.16,-1.31 0.28,-2.64 0.28,-4 0,-1.36 -0.11,-2.69 -0.28,-4h6.75c0.33,1.28 0.53,2.62 0.53,4s-0.19,2.72 -0.53,4h-6.75z"/>
 </vector>
diff --git a/res/drawable/ic_lock.xml b/res/drawable/ic_lock.xml
index 5cdfe79..4caeaf1 100644
--- a/res/drawable/ic_lock.xml
+++ b/res/drawable/ic_lock.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 Google Inc.
+    Copyright 2018 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
+         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,
@@ -14,6 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="48dp" android:height="48dp" android:viewportWidth="48.0" android:viewportHeight="48.0">
-    <path android:pathData="M36,16h-2v-4c0,-5.52 -4.48,-10 -10,-10S14,6.48 14,12v4h-2c-2.21,0 -4,1.79 -4,4v20c0,2.21 1.79,4 4,4h24c2.21,0 4,-1.79 4,-4L40,20c0,-2.21 -1.79,-4 -4,-4zM24,34c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4 4,1.79 4,4 -1.79,4 -4,4zM30.2,16L17.8,16v-4c0,-3.42 2.78,-6.2 6.2,-6.2 3.42,0 6.2,2.78 6.2,6.2v4z" android:fillColor="@color/google_blue_600"/>
-</vector>
\ No newline at end of file
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="48.0"
+    android:viewportWidth="48.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M36,16h-2v-4c0,-5.52 -4.48,-10 -10,-10S14,6.48 14,12v4h-2c-2.21,0 -4,1.79 -4,4v20c0,2.21 1.79,4 4,4h24c2.21,0 4,-1.79 4,-4L40,20c0,-2.21 -1.79,-4 -4,-4zM24,34c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4 4,1.79 4,4 -1.79,4 -4,4zM30.2,16L17.8,16v-4c0,-3.42 2.78,-6.2 6.2,-6.2 3.42,0 6.2,2.78 6.2,6.2v4z"/>
+</vector>
diff --git a/res/drawable/ic_media_stream.xml b/res/drawable/ic_media_stream.xml
new file mode 100644
index 0000000..c07d1e0
--- /dev/null
+++ b/res/drawable/ic_media_stream.xml
@@ -0,0 +1,24 @@
+<!--
+    Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@dimen/icon_size"
+        android:height="@dimen/icon_size"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M12,3l0.01,10.55c-0.59,-0.34 -1.27,-0.55 -2,-0.55C7.79,13 6,14.79 6,17c0,2.21 1.79,4 4.01,4S14,19.21 14,17V7h4V3H12zM10.01,19c-1.1,0 -2,-0.9 -2,-2c0,-1.1 0.9,-2 2,-2s2,0.9 2,2C12.01,18.1 11.11,19 10.01,19z"/>
+</vector>
diff --git a/res/drawable/ic_remove_circle.xml b/res/drawable/ic_remove_circle.xml
new file mode 100644
index 0000000..16ce5d3
--- /dev/null
+++ b/res/drawable/ic_remove_circle.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="48"
+    android:viewportWidth="48">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M24,4C12.95,4,4,12.95,4,24
+                         s8.95,20,20,20,20-8.95,20-20
+                         S35.05,4,24,4zm10,22H14v-4h20v4z"/>
+</vector>
diff --git a/res/drawable/ic_restore.xml b/res/drawable/ic_restore.xml
new file mode 100644
index 0000000..0c457f5
--- /dev/null
+++ b/res/drawable/ic_restore.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M13.5 7.75v4.5l3.37 2c.34 .2 .46 .65 .25 .99 s-.64 .45 -.98 .24 L12
+13V7.75c0-.41 .34 -.75 .75 -.75s.75 .34 .75 .75 zM13.05 3C8.11 3 4.1 7.02 4.1
+11.95c0 .02 .01 .03 .01 .05H2.05c-.47 0-.71 .57 -.37 .9 l2.95 2.94c.21 .21 .54
+.21 .75 0l2.95-2.94c.33-.33 .1 -.9-.37-.9H5.99c0-.02 .01 -.03 .01 -.05C6 8.06
+9.16 4.9 13.05 4.9S20.1 8.11 20.1 12s-3.16 7.1-7.05 7.1c-1.58
+0-3.08-.51-4.32-1.48a.94 .94 0 0 0-1.32 .16 l-.01 .01 a.94 .94 0 0 0 .16
+1.32l.01 .01 A8.77 8.77 0 0 0 13.05 21c4.94 0 8.95-4.07 8.95-9s-4.02-9-8.95-9z"/>
+</vector>
diff --git a/res/drawable/ic_seekbar_thumb.xml b/res/drawable/ic_seekbar_thumb.xml
deleted file mode 100644
index 2810356..0000000
--- a/res/drawable/ic_seekbar_thumb.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="oval">
-    <solid android:color="@color/car_accent" />
-    <size
-        android:width="30dp"
-        android:height="30dp" />
-    <stroke
-        android:width="1dp"
-        android:color="@color/car_accent" />
-</shape>
diff --git a/res/drawable/ic_seekbar_track.xml b/res/drawable/ic_seekbar_track.xml
deleted file mode 100644
index 8c5acff..0000000
--- a/res/drawable/ic_seekbar_track.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Use android provided id, as seekbar is expecting that -->
-    <item android:id="@android:id/background">
-        <shape android:shape="line">
-            <corners
-                android:radius="@dimen/seekbar_track_corner"/>
-            <stroke
-                android:width="@dimen/seekbar_track_height"
-                android:color="@color/seekbar_track" />
-        </shape>
-    </item>
-    <item android:id="@android:id/progress">
-        <clip>
-            <shape android:shape="line">
-                <stroke
-                    android:width="@dimen/seekbar_track_height"
-                    android:color="@color/car_accent" />
-            </shape>
-        </clip>
-    </item>
-</layer-list>
\ No newline at end of file
diff --git a/res/drawable/ic_settings_about.xml b/res/drawable/ic_settings_about.xml
index 57631a5..75647d0 100644
--- a/res/drawable/ic_settings_about.xml
+++ b/res/drawable/ic_settings_about.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,13 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M11.0,17.0l2.0,0.0l0.0,-6.0l-2.0,0.0l0.0,6.0zm1.0,-15.0C6.48,2.0 2.0,6.48 2.0,12.0s4.48,10.0 10.0,10.0 10.0,-4.48 10.0,-10.0S17.52,2.0 12.0,2.0zm0.0,18.0c-4.41,0.0 -8.0,-3.59 -8.0,-8.0s3.59,-8.0 8.0,-8.0 8.0,3.59 8.0,8.0 -3.59,8.0 -8.0,8.0zM11.0,9.0l2.0,0.0L13.0,7.0l-2.0,0.0l0.0,2.0z"/>
 </vector>
diff --git a/res/drawable/ic_settings_applications.xml b/res/drawable/ic_settings_applications.xml
index f9c306b..b970c3d 100644
--- a/res/drawable/ic_settings_applications.xml
+++ b/res/drawable/ic_settings_applications.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,13 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M5.0,16.0c0.0,3.87 3.13,7.0 7.0,7.0s7.0,-3.13 7.0,-7.0l0.0,-4.0L5.0,12.0l0.0,4.0zM16.12,4.37l2.1,-2.1 -0.82,-0.83 -2.3,2.31C14.16,3.28 13.12,3.0 12.0,3.0s-2.1,0.28 -3.0,0.75L6.6,1.44l-0.8,0.83 2.1,2.1C6.14,5.64 5.0,7.68 5.0,10.0l0.0,1.0l14.0,0.0l0.0,-1.0c0.0,-2.32 -1.14,-4.36 -2.88,-5.63zM9.0,9.0c-0.55,0.0 -1.0,-0.45 -1.0,-1.0s0.45,-1.0 1.0,-1.0 1.0,0.45 1.0,1.0 -0.45,1.0 -1.0,1.0zm6.0,0.0c-0.55,0.0 -1.0,-0.45 -1.0,-1.0s0.45,-1.0 1.0,-1.0 1.0,0.45 1.0,1.0 -0.45,1.0 -1.0,1.0z"/>
 </vector>
diff --git a/res/drawable/ic_settings_auto_wifi.xml b/res/drawable/ic_settings_auto_wifi.xml
new file mode 100644
index 0000000..5eddaf1
--- /dev/null
+++ b/res/drawable/ic_settings_auto_wifi.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@dimen/icon_size"
+        android:height="@dimen/icon_size"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M18 10l3 0 -10 -9 -10 9 3 0 0 8 7.1 0c0 -0.3 -0.1 -0.7 -0.1 -1 0 -3.9 3.1 -7 7 -7z"
+        android:fillColor="?attr/iconColor"/>
+    <path
+        android:pathData="M18 14l0 1.6 2.1 -2.1 -2.1 -2.2 0 1.6c-2.3 0 -4.2 1.9 -4.2 4.3 0 0.8 0.2 1.6 0.7 2.3l0.8 -0.8C15.1 18.3 14.9 17.8 14.9 17.2 14.8 15.4 16.2 14 18 14"
+        android:strokeWidth="0.5"
+        android:fillColor="?attr/iconColor"
+        android:strokeMiterLimit="10" />
+    <path
+        android:pathData="M20.8 15.7c0.2 0.4 0.4 0.9 0.4 1.5 0 1.8 -1.4 3.2 -3.2 3.2l0 -1.6 -2.1 2.1 2.1 2.1 0 -1.6c2.3 0 4.2 -1.9 4.2 -4.2 0 -0.8 -0.2 -1.6 -0.7 -2.3l-0.7 0.8z"
+        android:strokeWidth="0.5"
+        android:fillColor="?attr/iconColor"
+        android:strokeMiterLimit="10" />
+</vector>
diff --git a/res/drawable/ic_settings_bluetooth.xml b/res/drawable/ic_settings_bluetooth.xml
index 6b8623d..52127a8 100644
--- a/res/drawable/ic_settings_bluetooth.xml
+++ b/res/drawable/ic_settings_bluetooth.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,13 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0"
-        android:tint="@color/car_tint">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="48.0"
+    android:viewportWidth="48.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M35.41,15.41L24.0,4.0l-2.0,0.0l0.0,15.17L12.83,10.0 10.0,12.83 21.17,24.0 10.0,35.17 12.83,38.0 22.0,28.83L22.0,44.0l2.0,0.0l11.41,-11.41L26.83,24.0l8.58,-8.59zM26.0,11.66l3.76,3.76L26.0,19.17l0.0,-7.51zm3.76,20.93L26.0,36.34l0.0,-7.52l3.76,3.77z"/>
 </vector>
diff --git a/res/drawable/ic_settings_bluetooth_connected.xml b/res/drawable/ic_settings_bluetooth_connected.xml
index 43f29f4..537d239 100644
--- a/res/drawable/ic_settings_bluetooth_connected.xml
+++ b/res/drawable/ic_settings_bluetooth_connected.xml
@@ -1,25 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="20dp"
-        android:height="20dp"
-        android:viewportWidth="20.0"
-        android:viewportHeight="20.0">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="20.0"
+    android:viewportWidth="20.0">
     <path
-        android:pathData="M5.833,10L4.167,8.333L2.5,10l1.667,1.667L5.833,10zM14.758,6.425L10,1.667H9.167v6.325L5.342,4.167L4.167,5.342L8.825,10l-4.658,4.658l1.175,1.175l3.825,-3.825v6.325H10l4.758,-4.758L11.175,10C11.175,10 14.758,6.425 14.758,6.425zM10.833,4.858L12.4,6.425l-1.567,1.567V4.858zM12.4,13.575l-1.567,1.567v-3.133C10.833,12.008 12.4,13.575 12.4,13.575zM15.833,8.333L14.167,10l1.667,1.667L17.5,10L15.833,8.333z"
-        android:fillColor="#FFFFFF"/>
-</vector>
\ No newline at end of file
+        android:fillColor="?attr/iconColor"
+        android:pathData="M5.833,10L4.167,8.333L2.5,10l1.667,1.667L5.833,10zM14.758,6.425L10,1.667H9.167v6.325L5.342,4.167L4.167,5.342L8.825,10l-4.658,4.658l1.175,1.175l3.825,-3.825v6.325H10l4.758,-4.758L11.175,10C11.175,10 14.758,6.425 14.758,6.425zM10.833,4.858L12.4,6.425l-1.567,1.567V4.858zM12.4,13.575l-1.567,1.567v-3.133C10.833,12.008 12.4,13.575 12.4,13.575zM15.833,8.333L14.167,10l1.667,1.667L17.5,10L15.833,8.333z"/>
+</vector>
diff --git a/res/drawable/ic_settings_bluetooth_disabled.xml b/res/drawable/ic_settings_bluetooth_disabled.xml
index 0fbe506..4e4d150 100644
--- a/res/drawable/ic_settings_bluetooth_disabled.xml
+++ b/res/drawable/ic_settings_bluetooth_disabled.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M13,5.83l1.88,1.88 -1.6,1.6 1.41,1.41 3.02,-3.02L12,2h-1v5.03l2,2v-3.2zM5.41,4L4,5.41 10.59,12 5,17.59 6.41,19 11,14.41V22h1l4.29,-4.29 2.3,2.29L20,18.59 5.41,4zM13,18.17v-3.76l1.88,1.88L13,18.17z"/>
 </vector>
diff --git a/res/drawable/ic_settings_cellular.xml b/res/drawable/ic_settings_cellular.xml
new file mode 100644
index 0000000..18b28ff
--- /dev/null
+++ b/res/drawable/ic_settings_cellular.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M2,22h20V2z"/>
+</vector>
diff --git a/res/drawable/ic_settings_data_usage.xml b/res/drawable/ic_settings_data_usage.xml
new file mode 100644
index 0000000..54a9f50
--- /dev/null
+++ b/res/drawable/ic_settings_data_usage.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M13,2.05v3.03c3.39,0.49 6,3.39 6,6.92 0,0.9 -0.18,1.75 -0.48,2.54l2.6,1.53c0.56,-1.24 0.88,-2.62 0.88,-4.07 0,-5.18 -3.95,-9.45 -9,-9.95zM12,19c-3.87,0 -7,-3.13 -7,-7 0,-3.53 2.61,-6.43 6,-6.92V2.05c-5.06,0.5 -9,4.76 -9,9.95 0,5.52 4.47,10 9.99,10 3.31,0 6.24,-1.61 8.06,-4.09l-2.6,-1.53C16.17,17.98 14.21,19 12,19z"/>
+</vector>
diff --git a/res/drawable/ic_settings_date_time.xml b/res/drawable/ic_settings_date_time.xml
index 2202f8d..1cef06a 100644
--- a/res/drawable/ic_settings_date_time.xml
+++ b/res/drawable/ic_settings_date_time.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,16 +14,17 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M11.99,2.0C6.47,2.0 2.0,6.48 2.0,12.0s4.47,10.0 9.99,10.0C17.52,22.0 22.0,17.52 22.0,12.0S17.52,2.0 11.99,2.0zM12.0,20.0c-4.42,0.0 -8.0,-3.58 -8.0,-8.0s3.58,-8.0 8.0,-8.0 8.0,3.58 8.0,8.0 -3.58,8.0 -8.0,8.0z"/>
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M12.5,7.0L11.0,7.0l0.0,6.0l5.25,3.1 0.75,-1.23 -4.5,-2.67z"/>
 </vector>
diff --git a/res/drawable/ic_settings_development.xml b/res/drawable/ic_settings_development.xml
new file mode 100644
index 0000000..6bf4307
--- /dev/null
+++ b/res/drawable/ic_settings_development.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="256.0"
+    android:viewportWidth="256.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="m66.641,197.718c-7.73,-7.73 -7.974,-8.747 -7.974,-33.186 0,-26.1 -1.346,-29.646 -12,-31.605 -9.22,-1.696 -8.063,-11.352 1.884,-15.729l8.783,-3.864 1.333,-26.241c1.262,-24.834 1.744,-26.593 8.986,-32.813 9.335,-8.017 21.681,-7.817 21.681,0.351 0,3.149 -2.974,6.723 -7.333,8.812 -7.171,3.437 -7.333,4.03 -7.333,26.776 0,16.737 -1.164,24.923 -4.151,29.188 -3.757,5.364 -3.757,6.489 0,11.853 3.037,4.336 4.151,12.604 4.151,30.805v24.879l8.145,2.839c6.138,2.14 7.945,4.241 7.333,8.528 -1.331,9.333 -13.894,9.016 -23.504,-0.593zM167.111,203.556c-4.355,-4.355 -1.269,-11.211 6.222,-13.823l8,-2.789v-24.879c0,-18.201 1.114,-26.469 4.151,-30.805 3.757,-5.364 3.757,-6.489 0,-11.853 -2.987,-4.264 -4.151,-12.451 -4.151,-29.188 0,-22.746 -0.162,-23.339 -7.333,-26.776 -4.359,-2.089 -7.333,-5.663 -7.333,-8.812 0,-8.168 12.346,-8.369 21.681,-0.351 7.242,6.22 7.724,7.979 8.986,32.813l1.333,26.241 8.783,3.864c9.947,4.377 11.104,14.033 1.884,15.729 -10.654,1.959 -12,5.505 -12,31.605 0,24.31 -0.279,25.491 -7.795,33.007 -7.235,7.235 -18.253,10.191 -22.427,6.017z"/>
+</vector>
diff --git a/res/drawable/ic_settings_display.xml b/res/drawable/ic_settings_display.xml
index f5f766e..670b286 100644
--- a/res/drawable/ic_settings_display.xml
+++ b/res/drawable/ic_settings_display.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,13 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M20.0,15.31L23.31,12.0 20.0,8.69L20.0,4.0l-4.69,0.0L12.0,0.69 8.69,4.0L4.0,4.0l0.0,4.69L0.69,12.0 4.0,15.31L4.0,20.0l4.69,0.0L12.0,23.31 15.31,20.0L20.0,20.0l0.0,-4.69zM12.0,18.0L12.0,6.0c3.31,0.0 6.0,2.69 6.0,6.0s-2.69,6.0 -6.0,6.0z"/>
 </vector>
diff --git a/res/drawable/ic_settings_gear.xml b/res/drawable/ic_settings_gear.xml
index 1a7db1e..3ef1034 100644
--- a/res/drawable/ic_settings_gear.xml
+++ b/res/drawable/ic_settings_gear.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,12 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+
 <vector
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:height="24dp"
-    android:width="24dp"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
     android:viewportHeight="48.0"
-    android:viewportWidth="48.0"
-    android:tint="@color/car_tint" >
-    <path android:fillColor="#000000" android:pathData="M38.86,25.95c0.08,-0.64 0.14,-1.29 0.14,-1.95s-0.06,-1.31 -0.14,-1.95l4.23,-3.31c0.38,-0.3 0.49,-0.84 0.24,-1.28l-4,-6.93c-0.25,-0.43 -0.77,-0.61 -1.22,-0.43l-4.98,2.01c-1.03,-0.79 -2.16,-1.46 -3.38,-1.97L29,4.84c-0.09,-0.47 -0.5,-0.84 -1,-0.84h-8c-0.5,0 -0.91,0.37 -0.99,0.84l-0.75,5.3c-1.22,0.51 -2.35,1.17 -3.38,1.97L9.9,10.1c-0.45,-0.17 -0.97,0 -1.22,0.43l-4,6.93c-0.25,0.43 -0.14,0.97 0.24,1.28l4.22,3.31C9.06,22.69 9,23.34 9,24s0.06,1.31 0.14,1.95l-4.22,3.31c-0.38,0.3 -0.49,0.84 -0.24,1.28l4,6.93c0.25,0.43 0.77,0.61 1.22,0.43l4.98,-2.01c1.03,0.79 2.16,1.46 3.38,1.97l0.75,5.3c0.08,0.47 0.49,0.84 0.99,0.84h8c0.5,0 0.91,-0.37 0.99,-0.84l0.75,-5.3c1.22,-0.51 2.35,-1.17 3.38,-1.97l4.98,2.01c0.45,0.17 0.97,0 1.22,-0.43l4,-6.93c0.25,-0.43 0.14,-0.97 -0.24,-1.28l-4.22,-3.31zM24,31c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,7 -3.13,7 -7,7z"/>
+    android:viewportWidth="48.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M38.86,25.95c0.08,-0.64 0.14,-1.29 0.14,-1.95s-0.06,-1.31 -0.14,-1.95l4.23,-3.31c0.38,-0.3 0.49,-0.84 0.24,-1.28l-4,-6.93c-0.25,-0.43 -0.77,-0.61 -1.22,-0.43l-4.98,2.01c-1.03,-0.79 -2.16,-1.46 -3.38,-1.97L29,4.84c-0.09,-0.47 -0.5,-0.84 -1,-0.84h-8c-0.5,0 -0.91,0.37 -0.99,0.84l-0.75,5.3c-1.22,0.51 -2.35,1.17 -3.38,1.97L9.9,10.1c-0.45,-0.17 -0.97,0 -1.22,0.43l-4,6.93c-0.25,0.43 -0.14,0.97 0.24,1.28l4.22,3.31C9.06,22.69 9,23.34 9,24s0.06,1.31 0.14,1.95l-4.22,3.31c-0.38,0.3 -0.49,0.84 -0.24,1.28l4,6.93c0.25,0.43 0.77,0.61 1.22,0.43l4.98,-2.01c1.03,0.79 2.16,1.46 3.38,1.97l0.75,5.3c0.08,0.47 0.49,0.84 0.99,0.84h8c0.5,0 0.91,-0.37 0.99,-0.84l0.75,-5.3c1.22,-0.51 2.35,-1.17 3.38,-1.97l4.98,2.01c0.45,0.17 0.97,0 1.22,-0.43l4,-6.93c0.25,-0.43 0.14,-0.97 -0.24,-1.28l-4.22,-3.31zM24,31c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,7 -3.13,7 -7,7z"/>
 </vector>
diff --git a/res/drawable/ic_settings_location.xml b/res/drawable/ic_settings_location.xml
new file mode 100644
index 0000000..83bbf87
--- /dev/null
+++ b/res/drawable/ic_settings_location.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5z"/>
+</vector>
diff --git a/res/drawable/ic_settings_night_display.xml b/res/drawable/ic_settings_night_display.xml
index f1137fe..6b4d4b4 100644
--- a/res/drawable/ic_settings_night_display.xml
+++ b/res/drawable/ic_settings_night_display.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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
+         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,
@@ -15,9 +15,13 @@
     limitations under the License.
 -->
 
-<vector android:height="24dp" android:viewportHeight="44.0"
-    android:viewportWidth="44.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
-    <path android:fillColor="#212121" android:fillType="nonZero"
-        android:pathData="M26.5,40.33C28.42,40.33 30.26,40.04 32,39.49C24.56,37.16 19.17,30.21 19.17,22C19.17,13.79 24.56,6.84 32,4.51C30.26,3.96 28.42,3.67 26.5,3.67C16.38,3.67 8.17,11.88 8.17,22C8.17,32.12 16.38,40.33 26.5,40.33Z"
-        android:strokeColor="#00000000" android:strokeWidth="1"/>
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="44.0"
+    android:viewportWidth="44.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M26.5,40.33C28.42,40.33 30.26,40.04 32,39.49C24.56,37.16 19.17,30.21 19.17,22C19.17,13.79 24.56,6.84 32,4.51C30.26,3.96 28.42,3.67 26.5,3.67C16.38,3.67 8.17,11.88 8.17,22C8.17,32.12 16.38,40.33 26.5,40.33Z"/>
 </vector>
diff --git a/res/drawable/ic_settings_sound.xml b/res/drawable/ic_settings_sound.xml
index ca9a84d..2b8becb 100644
--- a/res/drawable/ic_settings_sound.xml
+++ b/res/drawable/ic_settings_sound.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,13 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M3.0,9.0l0.0,6.0l4.0,0.0l5.0,5.0L12.0,4.0L7.0,9.0L3.0,9.0zm13.5,3.0c0.0,-1.77 -1.02,-3.29 -2.5,-4.03l0.0,8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM14.0,3.23l0.0,2.06c2.8,0.86 5.0,3.54 5.0,6.71s-2.11,5.85 -5.0,6.71l0.0,2.06c4.01,-0.91 7.0,-4.49 7.0,-8.77s-2.99,-7.86 -7.0,-8.77z"/>
 </vector>
diff --git a/res/drawable/ic_settings_units.xml b/res/drawable/ic_settings_units.xml
new file mode 100644
index 0000000..22142c8
--- /dev/null
+++ b/res/drawable/ic_settings_units.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M17.66,17.66l-1.06,1.06l-0.71-0.71l1.06-1.06l-1.94-1.94l-1.06,1.06l-0.71-0.71l1.06-1.06l-1.94-1.94l-1.06,1.06    l-0.71-0.71l1.06-1.06L9.7,9.7l-1.06,1.06l-0.71-0.71l1.06-1.06L7.05,7.05L5.99,8.11L5.28,7.4l1.06-1.06L4,4v14c0,1.1,0.9,2,2,2    h14L17.66,17.66z M7,17v-5.76L12.76,17H7z"/>
+</vector>
diff --git a/res/drawable/ic_settings_wifi.xml b/res/drawable/ic_settings_wifi.xml
index eed2eff..c6324c7 100644
--- a/res/drawable/ic_settings_wifi.xml
+++ b/res/drawable/ic_settings_wifi.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,13 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="18.0"
-        android:viewportHeight="18.0"
-        android:tint="@color/car_tint">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="18.0"
+    android:viewportWidth="18.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M9.01,15.99l8.8,-10.96C17.47,4.77 14.08,2.0 9.0,2.0S0.53,4.7 0.19,5.03l8.8,10.96l0.02,0.0z"/>
 </vector>
diff --git a/res/drawable/ic_settings_wifi_disabled.xml b/res/drawable/ic_settings_wifi_disabled.xml
index 1b2ac4e..b4bd202 100644
--- a/res/drawable/ic_settings_wifi_disabled.xml
+++ b/res/drawable/ic_settings_wifi_disabled.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24.0dp"
-        android:height="24.0dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M23.64,7c-0.45,-0.34 -4.93,-4 -11.64,-4 -1.5,0 -2.89,0.19 -4.15,0.48L18.18,13.8 23.64,7zM17.04,15.22L3.27,1.44 2,2.72l2.05,2.06C1.91,5.76 0.59,6.82 0.36,7l11.63,14.49 0.01,0.01 0.01,-0.01 3.9,-4.86 3.32,3.32 1.27,-1.27 -3.46,-3.46z"/>
 </vector>
diff --git a/res/drawable/ic_storage.xml b/res/drawable/ic_storage.xml
new file mode 100644
index 0000000..e02e7f0
--- /dev/null
+++ b/res/drawable/ic_storage.xml
@@ -0,0 +1,24 @@
+<!--
+    Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@dimen/icon_size"
+        android:height="@dimen/icon_size"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M3,20h18v-4H3V20zM5,17h2v2H5V17zM3,4v4h18V4H3zM7,7H5V5h2V7zM3,14h18v-4H3V14zM5,11h2v2H5V11z"/>
+</vector>
diff --git a/res/drawable/ic_storage_apps.xml b/res/drawable/ic_storage_apps.xml
new file mode 100644
index 0000000..5d080c8
--- /dev/null
+++ b/res/drawable/ic_storage_apps.xml
@@ -0,0 +1,24 @@
+<!--
+    Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@dimen/icon_size"
+        android:height="@dimen/icon_size"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M6,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM6,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM6,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM16,6c0,1.1 0.9,2 2,2s2,-0.9 2,-2 -0.9,-2 -2,-2 -2,0.9 -2,2zM12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,14c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,20c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2z"/>
+</vector>
diff --git a/res/drawable/ic_sync.png b/res/drawable/ic_sync.png
new file mode 100644
index 0000000..f5e19bd
--- /dev/null
+++ b/res/drawable/ic_sync.png
Binary files differ
diff --git a/res/drawable/ic_sync_anim.xml b/res/drawable/ic_sync_anim.xml
new file mode 100644
index 0000000..b5f5433
--- /dev/null
+++ b/res/drawable/ic_sync_anim.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:drawable="@drawable/ic_sync"
+                 android:pivotX="50%"
+                 android:pivotY="50%"/>
diff --git a/res/drawable/ic_sync_problem.xml b/res/drawable/ic_sync_problem.xml
new file mode 100644
index 0000000..4e0c72b
--- /dev/null
+++ b/res/drawable/ic_sync_problem.xml
@@ -0,0 +1,25 @@
+<!--
+    Copyright 2018 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="32dp"
+        android:height="32dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M3,12c0,2.21 0.91,4.2 2.36,5.64L3,20h6v-6l-2.24,2.24C5.68,15.15 5,13.66 5,12c0,-2.61 1.67,-4.83 4,-5.65L9,4.26C5.55,5.15 3,8.27 3,12zM11,17h2v-2h-2v2zM21,4h-6v6l2.24,-2.24C18.32,8.85 19,10.34 19,12c0,2.61 -1.67,4.83 -4,5.65v2.09c3.45,-0.89 6,-4.01 6,-7.74 0,-2.21 -0.91,-4.2 -2.36,-5.64L21,4zM11,13h2L13,7h-2v6z"/>
+</vector>
diff --git a/res/drawable/ic_system_update.xml b/res/drawable/ic_system_update.xml
index ead6ff0..69ccc06 100644
--- a/res/drawable/ic_system_update.xml
+++ b/res/drawable/ic_system_update.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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.
@@ -13,13 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:pathData="M17,1.01L7,1c-1.1,0 -2,0.9 -2,2v18c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L19,3c0,-1.1 -0.9,-1.99 -2,-1.99zM17,19L7,19L7,5h10v14zM16,13h-3L13,8h-2v5L8,13l4,4 4,-4z"
-        android:fillColor="#FFFFFFFF"/>
+        android:fillColor="?attr/iconColor"
+        android:pathData="M17,1.01L7,1c-1.1,0 -2,0.9 -2,2v18c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L19,3c0,-1.1 -0.9,-1.99 -2,-1.99zM17,19L7,19L7,5h10v14zM16,13h-3L13,8h-2v5L8,13l4,4 4,-4z"/>
 </vector>
diff --git a/res/drawable/ic_translate.xml b/res/drawable/ic_translate.xml
new file mode 100644
index 0000000..6e22fc5
--- /dev/null
+++ b/res/drawable/ic_translate.xml
@@ -0,0 +1,26 @@
+<!--
+    Copyright 2018 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/iconColor"
+        android:pathData="M12.87,15.07l-2.54,-2.51 0.03,-0.03c1.74,-1.94 2.98,-4.17 3.71,-6.53L17,6L17,4h-7L10,2L8,2v2L1,4v1.99h11.17C11.5,7.92 10.44,9.75 9,11.35 8.07,10.32 7.3,9.19 6.69,8h-2c0.73,1.63 1.73,3.17 2.98,4.56l-5.09,5.02L4,19l5,-5 3.11,3.11 0.76,-2.04zM18.5,10h-2L12,22h2l1.12,-3h4.75L21,22h2l-4.5,-12zM15.88,17l1.62,-4.33L19.12,17h-3.24z"/>
+</vector>
diff --git a/res/drawable/ic_user.xml b/res/drawable/ic_user.xml
index bfce534..3906c00 100644
--- a/res/drawable/ic_user.xml
+++ b/res/drawable/ic_user.xml
@@ -1,26 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:tint="@color/car_tint">
+    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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/icon_size"
+    android:height="@dimen/icon_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
     <path
-        android:fillColor="#FFFFFFFF"
+        android:fillColor="?attr/iconColor"
         android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
 </vector>
diff --git a/res/drawable/ic_user_add.xml b/res/drawable/ic_user_add.xml
new file mode 100644
index 0000000..213b343
--- /dev/null
+++ b/res/drawable/ic_user_add.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="@dimen/touch_target_size"
+    android:height="@dimen/touch_target_size"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="?attr/userSwitcherAddIconColor"
+        android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
+</vector>
diff --git a/res/drawable/ic_wifi_signal_0.xml b/res/drawable/ic_wifi_signal_0.xml
index 9f37b04..363edbb 100644
--- a/res/drawable/ic_wifi_signal_0.xml
+++ b/res/drawable/ic_wifi_signal_0.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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
+         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,
@@ -14,13 +14,15 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-  android:width="26dp"
-  android:height="24dp"
-  android:viewportWidth="26"
-  android:viewportHeight="24">
-  <path
-    android:fillAlpha="0.3"
-    android:fillColor="?attr/WifiSignalColor"
-    android:pathData="M13.0,22.0L25.6,6.5C25.1,6.1 20.3,2.1 13.0,2.1S0.9,6.1 0.4,6.5L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0z"/>
-</vector>
\ No newline at end of file
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="26dp"
+    android:height="24dp"
+    android:viewportHeight="24"
+    android:viewportWidth="26">
+    <path
+        android:fillAlpha="0.3"
+        android:fillColor="?attr/wifiSignalColor"
+        android:pathData="M13.0,22.0L25.6,6.5C25.1,6.1 20.3,2.1 13.0,2.1S0.9,6.1 0.4,6.5L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0z"/>
+</vector>
diff --git a/res/drawable/ic_wifi_signal_1.xml b/res/drawable/ic_wifi_signal_1.xml
index 4b9139e..0c31c22 100644
--- a/res/drawable/ic_wifi_signal_1.xml
+++ b/res/drawable/ic_wifi_signal_1.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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
+         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,
@@ -14,16 +14,18 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="26dp"
     android:height="24dp"
-    android:viewportWidth="26"
-    android:viewportHeight="24">
+    android:viewportHeight="24"
+    android:viewportWidth="26">
     <path
         android:fillAlpha="0.3"
-        android:fillColor="?attr/WifiSignalColor"
+        android:fillColor="?attr/wifiSignalColor"
         android:pathData="M13.1,22.0L25.6,6.5C25.1,6.1 20.3,2.1 13.0,2.1S0.9,6.1 0.5,6.5L13.1,22.0L13.1,22.0L13.1,22.0L13.1,22.0L13.1,22.0z"/>
     <path
-        android:fillColor="?attr/WifiSignalColor"
+        android:fillColor="?attr/wifiSignalColor"
         android:pathData="M13.1,22.0l5.5,-6.8c-0.2,-0.2 -2.3,-1.9 -5.5,-1.9s-5.3,1.8 -5.5,1.9L13.1,22.0L13.1,22.0L13.1,22.0L13.1,22.0L13.1,22.0z"/>
 </vector>
diff --git a/res/drawable/ic_wifi_signal_2.xml b/res/drawable/ic_wifi_signal_2.xml
index 66e1d7c..f8466d9 100644
--- a/res/drawable/ic_wifi_signal_2.xml
+++ b/res/drawable/ic_wifi_signal_2.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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
+         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,
@@ -14,16 +14,18 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="26dp"
     android:height="24dp"
-    android:viewportWidth="26"
-    android:viewportHeight="24">
+    android:viewportHeight="24"
+    android:viewportWidth="26">
     <path
         android:fillAlpha="0.3"
-        android:fillColor="?attr/WifiSignalColor"
+        android:fillColor="?attr/wifiSignalColor"
         android:pathData="M13.0,22.0L25.6,6.5C25.1,6.1 20.3,2.1 13.0,2.1S0.9,6.1 0.4,6.5L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0z"/>
     <path
-        android:fillColor="?attr/WifiSignalColor"
+        android:fillColor="?attr/wifiSignalColor"
         android:pathData="M13.0,22.0l7.6,-9.4C20.3,12.4 17.4,10.0 13.0,10.0s-7.3,2.4 -7.6,2.7L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0z"/>
 </vector>
diff --git a/res/drawable/ic_wifi_signal_3.xml b/res/drawable/ic_wifi_signal_3.xml
index f37fa59..2f0d8a4 100644
--- a/res/drawable/ic_wifi_signal_3.xml
+++ b/res/drawable/ic_wifi_signal_3.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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
+         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,
@@ -14,16 +14,18 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="26dp"
     android:height="24dp"
-    android:viewportWidth="26"
-    android:viewportHeight="24">
+    android:viewportHeight="24"
+    android:viewportWidth="26">
     <path
         android:fillAlpha="0.3"
-        android:fillColor="?attr/WifiSignalColor"
+        android:fillColor="?attr/wifiSignalColor"
         android:pathData="M13.0,22.0L25.6,6.5C25.1,6.1 20.3,2.1 13.0,2.1S0.9,6.1 0.4,6.5L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0z"/>
     <path
-        android:fillColor="?attr/WifiSignalColor"
+        android:fillColor="?attr/wifiSignalColor"
         android:pathData="M13.0,22.0l9.2,-11.4c-0.4,-0.3 -3.9,-3.2 -9.2,-3.2s-8.9,3.0 -9.2,3.2L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0z"/>
 </vector>
diff --git a/res/drawable/ic_wifi_signal_4.xml b/res/drawable/ic_wifi_signal_4.xml
index 1cc86b6..50d8e04 100644
--- a/res/drawable/ic_wifi_signal_4.xml
+++ b/res/drawable/ic_wifi_signal_4.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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
+         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,
@@ -14,12 +14,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="26dp"
     android:height="24dp"
-    android:viewportWidth="26"
-    android:viewportHeight="24">
+    android:viewportHeight="24"
+    android:viewportWidth="26">
     <path
-        android:fillColor="?attr/WifiSignalColor"
+        android:fillColor="?attr/wifiSignalColor"
         android:pathData="M13.0,22.0L25.6,6.5C25.1,6.1 20.3,2.1 13.0,2.1S0.9,6.1 0.4,6.5L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0L13.0,22.0z"/>
 </vector>
diff --git a/res/drawable/ic_wifi_signal_lock.xml b/res/drawable/ic_wifi_signal_lock.xml
index cf420d4..a5ea3fe 100644
--- a/res/drawable/ic_wifi_signal_lock.xml
+++ b/res/drawable/ic_wifi_signal_lock.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2017 The Android Open Source Project
+    Copyright 2017 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
+         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,
@@ -14,16 +14,18 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
-    android:viewportWidth="72"
-    android:viewportHeight="72">
+    android:viewportHeight="72"
+    android:viewportWidth="72">
     <group
         android:translateX="52.0"
         android:translateY="42.0">
         <path
-            android:fillColor="?attr/WifiSignalColor"
+            android:fillColor="?attr/wifiSignalColor"
             android:pathData="M18.0,8.0l-1.0,0.0L17.0,6.0c0.0,-2.76 -2.24,-5.0 -5.0,-5.0S7.0,3.24 7.0,6.0l0.0,2.0L6.0,8.0c-1.1,0.0 -2.0,0.9 -2.0,2.0l0.0,10.0c0.0,1.0 0.9,2.0 2.0,2.0l12.0,0.0c1.1,0.0 2.0,-0.9 2.0,-2.0L20.0,10.0c0.0,-1.1 -0.9,-2.0 -2.0,-2.0zm-6.0,9.0c-1.1,0.0 -2.0,-0.9 -2.0,-2.0s0.9,-2.0 2.0,-2.0 2.0,0.9 2.0,2.0 -0.9,2.0 -2.0,2.0zm3.1,-9.0L8.9,8.0L8.9,6.0c0.0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0.0 3.1,1.39 3.1,3.1l0.0,2.0z"/>
     </group>
-</vector>
\ No newline at end of file
+</vector>
diff --git a/res/drawable/ic_wifi_tethering.xml b/res/drawable/ic_wifi_tethering.xml
new file mode 100644
index 0000000..402a69b
--- /dev/null
+++ b/res/drawable/ic_wifi_tethering.xml
@@ -0,0 +1,24 @@
+<!--
+    Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@dimen/icon_size"
+        android:height="@dimen/icon_size"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M12,11c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,13a6,6 0,0 0,-6.75 -5.95c-2.62,0.32 -4.78,2.41 -5.18,5.02 -0.32,2.14 0.49,4.11 1.92,5.39 0.48,0.43 1.24,0.33 1.56,-0.23 0.24,-0.42 0.14,-0.94 -0.22,-1.26a3.99,3.99 0,0 1,-1.22 -3.94,3.954 3.954,0 0,1 2.9,-2.91A4.007,4.007 0,0 1,16 13c0,1.18 -0.51,2.23 -1.33,2.96 -0.36,0.33 -0.47,0.85 -0.23,1.27 0.31,0.54 1.04,0.69 1.5,0.28A5.97,5.97 0,0 0,18 13zM10.83,3.07c-4.62,0.52 -8.35,4.33 -8.78,8.96a9.966,9.966 0,0 0,4.02 9.01c0.48,0.35 1.16,0.2 1.46,-0.31 0.25,-0.43 0.14,-0.99 -0.26,-1.29 -2.28,-1.69 -3.65,-4.55 -3.16,-7.7 0.54,-3.5 3.46,-6.29 6.98,-6.68C15.91,4.51 20,8.28 20,13c0,2.65 -1.29,4.98 -3.27,6.44 -0.4,0.3 -0.51,0.85 -0.26,1.29 0.3,0.52 0.98,0.66 1.46,0.31A9.96,9.96 0,0 0,22 13c0,-5.91 -5.13,-10.62 -11.17,-9.93z"
+        android:fillColor="?attr/iconColor"/>
+</vector>
diff --git a/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml b/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml
index 6491f8f..c9ef48f 100644
--- a/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml
+++ b/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml
@@ -1,28 +1,30 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!--
+    Copyright 2017 The Android Open Source Project
 
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
-          http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+    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.
 -->
 
 <!-- Variant of progress_indeterminate_horizontal_material in frameworks/base/core/res, which
      draws the whole height of the progress bar instead having blank space above and below the
      bar. -->
-<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:drawable="@drawable/vector_drawable_progress_indeterminate_horizontal_trimmed" >
+<animated-vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/vector_drawable_progress_indeterminate_horizontal_trimmed">
     <target
         android:name="rect2_grp"
-        android:animation="@*android:anim/progress_indeterminate_horizontal_rect2" />
+        android:animation="@*android:anim/progress_indeterminate_horizontal_rect2"/>
     <target
         android:name="rect1_grp"
-        android:animation="@*android:anim/progress_indeterminate_horizontal_rect1" />
+        android:animation="@*android:anim/progress_indeterminate_horizontal_rect1"/>
 </animated-vector>
diff --git a/res/drawable/rectangle_ripple_mask.xml b/res/drawable/rectangle_ripple_mask.xml
index 69eaf8b..6eb2a75 100644
--- a/res/drawable/rectangle_ripple_mask.xml
+++ b/res/drawable/rectangle_ripple_mask.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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
+         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,
@@ -15,8 +15,9 @@
     limitations under the License.
 -->
 
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
-  <corners android:radius="@dimen/car_radius_1" />
-  <solid android:color="@android:color/white" />
-</shape>
\ No newline at end of file
+    <corners android:radius="@dimen/button_ripple_radius"/>
+    <solid android:color="@android:color/white"/>
+</shape>
diff --git a/res/drawable/regulatory_info.png b/res/drawable/regulatory_info.png
new file mode 100644
index 0000000..65de26c
--- /dev/null
+++ b/res/drawable/regulatory_info.png
Binary files differ
diff --git a/res/drawable/spinner_background.xml b/res/drawable/spinner_background.xml
deleted file mode 100644
index 8fac0f9..0000000
--- a/res/drawable/spinner_background.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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
-  -->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <item>
-        <layer-list>
-            <item android:gravity="right" android:drawable="@drawable/ic_arrow_drop_down" />
-        </layer-list>
-    </item>
-
-</selector>
\ No newline at end of file
diff --git a/res/drawable/suw_button_ripple_bg.xml b/res/drawable/suw_button_ripple_bg.xml
deleted file mode 100644
index bc49f56..0000000
--- a/res/drawable/suw_button_ripple_bg.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 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.
--->
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-        android:color="@color/car_card_ripple_background">
-</ripple>
diff --git a/res/drawable/user_add_circle.xml b/res/drawable/user_add_circle.xml
new file mode 100644
index 0000000..0fd0ebc
--- /dev/null
+++ b/res/drawable/user_add_circle.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="oval">
+            <solid android:color="?attr/userSwitcherAddIconBackgroundColor"/>
+            <size
+                android:width="@dimen/user_switcher_image_avatar_size"
+                android:height="@dimen/user_switcher_image_avatar_size"/>
+        </shape>
+    </item>
+    <item
+        android:drawable="@drawable/ic_user_add"
+        android:gravity="center"/>
+</layer-list>
diff --git a/res/drawable/user_avatar_bg_circle.xml b/res/drawable/user_avatar_bg_circle.xml
new file mode 100644
index 0000000..52a81cc
--- /dev/null
+++ b/res/drawable/user_avatar_bg_circle.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <stroke
+        android:width="@dimen/user_switcher_current_user_circle_stroke_width"
+        android:color="?attr/userSwitcherCurrentUserColor"/>
+    <size
+        android:width="@dimen/user_switcher_current_user_circle_width"
+        android:height="@dimen/user_switcher_current_user_circle_width"/>
+</shape>
diff --git a/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml b/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml
index 2d65ad3..b14a04a 100644
--- a/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml
+++ b/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml
@@ -1,53 +1,55 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!--
+    Copyright 2017 The Android Open Source Project
 
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
-          http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+    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.
 -->
 
 <!-- Variant of vector_drawable_progress_indeterminate_horizontal in frameworks/base/core/res, which
      draws the whole height of the progress bar instead having blank space above and below the
      bar. -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:height="10dp"
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="360dp"
+    android:height="10dp"
     android:viewportHeight="10"
-    android:viewportWidth="360" >
+    android:viewportWidth="360">
     <group
         android:name="progress_group"
         android:translateX="180"
-        android:translateY="5" >
+        android:translateY="5">
         <path
             android:name="background_track"
-            android:pathData="M -180.0,-5.0 l 360.0,0 l 0,10.0 l -360.0,0 Z"
+            android:fillAlpha="?android:attr/disabledAlpha"
             android:fillColor="?android:attr/colorControlActivated"
-            android:fillAlpha="?android:attr/disabledAlpha"/>
+            android:pathData="M -180.0,-5.0 l 360.0,0 l 0,10.0 l -360.0,0 Z"/>
         <group
             android:name="rect2_grp"
-            android:translateX="-197.60001"
-            android:scaleX="0.1" >
+            android:scaleX="0.1"
+            android:translateX="-197.60001">
             <path
                 android:name="rect2"
-                android:pathData="M -144.0,-5.0 l 288.0,0 l 0,10.0 l -288.0,0 Z"
-                android:fillColor="?android:attr/colorControlActivated" />
+                android:fillColor="?android:attr/colorControlActivated"
+                android:pathData="M -144.0,-5.0 l 288.0,0 l 0,10.0 l -288.0,0 Z"/>
         </group>
         <group
             android:name="rect1_grp"
-            android:translateX="-522.59998"
-            android:scaleX="0.1" >
+            android:scaleX="0.1"
+            android:translateX="-522.59998">
             <path
                 android:name="rect1"
-                android:pathData="M -144.0,-5.0 l 288.0,0 l 0,10.0 l -288.0,0 Z"
-                android:fillColor="?android:attr/colorControlActivated" />
+                android:fillColor="?android:attr/colorControlActivated"
+                android:pathData="M -144.0,-5.0 l 288.0,0 l 0,10.0 l -288.0,0 Z"/>
         </group>
     </group>
 </vector>
diff --git a/res/drawable/wifi_signal.xml b/res/drawable/wifi_signal.xml
index 884aefc..80aef79 100644
--- a/res/drawable/wifi_signal.xml
+++ b/res/drawable/wifi_signal.xml
@@ -1,41 +1,64 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!--
+    Copyright 2017 The Android Open Source Project
 
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
-          http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+    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.
 -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:settings="http://schemas.android.com/apk/res/com.android.car.settings">
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res/com.android.car.settings">
     <item settings:state_encrypted="true">
         <layer-list>
             <item>
                 <level-list>
-                    <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1" />
-                    <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2" />
-                    <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3" />
-                    <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_4" />
+                    <item
+                        android:drawable="@drawable/ic_wifi_signal_0"
+                        android:maxLevel="0"/>
+                    <item
+                        android:drawable="@drawable/ic_wifi_signal_1"
+                        android:maxLevel="1"/>
+                    <item
+                        android:drawable="@drawable/ic_wifi_signal_2"
+                        android:maxLevel="2"/>
+                    <item
+                        android:drawable="@drawable/ic_wifi_signal_3"
+                        android:maxLevel="3"/>
+                    <item
+                        android:drawable="@drawable/ic_wifi_signal_4"
+                        android:maxLevel="4"/>
                 </level-list>
             </item>
-            <item android:drawable="@drawable/ic_wifi_signal_lock" />
+            <item android:drawable="@drawable/ic_wifi_signal_lock"/>
         </layer-list>
     </item>
     <item settings:state_encrypted="false">
         <level-list>
-            <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1" />
-            <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2" />
-            <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3" />
-            <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_4" />
+            <item
+                android:drawable="@drawable/ic_wifi_signal_0"
+                android:maxLevel="0"/>
+            <item
+                android:drawable="@drawable/ic_wifi_signal_1"
+                android:maxLevel="1"/>
+            <item
+                android:drawable="@drawable/ic_wifi_signal_2"
+                android:maxLevel="2"/>
+            <item
+                android:drawable="@drawable/ic_wifi_signal_3"
+                android:maxLevel="3"/>
+            <item
+                android:drawable="@drawable/ic_wifi_signal_4"
+                android:maxLevel="4"/>
         </level-list>
     </item>
 </selector>
-
diff --git a/res/layout/action_bar.xml b/res/layout/action_bar.xml
index a06c991..f3d3d91 100644
--- a/res/layout/action_bar.xml
+++ b/res/layout/action_bar.xml
@@ -1,45 +1,60 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<RelativeLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/car_app_bar_height"
-        android:gravity="end|center_vertical" >
+    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.
+-->
+
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
     <FrameLayout
         android:id="@+id/action_bar_icon_container"
-        android:layout_width="@dimen/car_margin"
-        android:layout_height="@dimen/car_app_bar_height"
-        android:layout_alignParentStart="true"
-        android:background="@drawable/button_ripple_bg">
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:background="@drawable/button_ripple_bg"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/start_margin"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
         <ImageView
             android:id="@+id/back_button"
-            style="@style/ListIcon.ActionBar"/>
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
+            android:layout_gravity="center"
+            android:scaleType="fitCenter"
+            android:src="@drawable/ic_arrow_back"/>
     </FrameLayout>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/start_margin"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_begin="@*android:dimen/action_bar_margin_start"/>
+
     <TextView
         android:id="@+id/title"
-        android:layout_width="match_parent"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/car_margin"
-        android:layout_marginTop="@dimen/optical_center_offset"
-        android:textAppearance="@style/TextAppearance.Car.Title2"
-        android:layout_gravity="center_vertical"
-        android:layout_centerVertical="true"
-        android:layout_alignParentStart="true"
+        android:ellipsize="end"
         android:maxLines="1"
-        android:ellipsize="end"/>
-</RelativeLayout>
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/start_margin"
+        app:layout_constraintTop_toTopOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/action_bar_quick_settings.xml b/res/layout/action_bar_quick_settings.xml
index 40de003..193b199 100644
--- a/res/layout/action_bar_quick_settings.xml
+++ b/res/layout/action_bar_quick_settings.xml
@@ -1,106 +1,90 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 The Android Open Source Project
 
-<RelativeLayout
+    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.
+-->
+
+<androidx.constraintlayout.widget.ConstraintLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/car_app_bar_height"
-    android:layout_gravity="top">
+    android:layout_height="match_parent">
 
     <FrameLayout
         android:id="@+id/action_bar_icon_container"
-        android:layout_width="@dimen/car_margin"
-        android:layout_height="match_parent"
-        android:layout_alignParentStart="true"
-        android:background="@drawable/button_ripple_bg">
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:background="@drawable/button_ripple_bg"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/start_margin"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
         <ImageView
             android:id="@+id/exit_button"
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
             android:layout_gravity="center"
-            android:src="@drawable/ic_close"
-            style="@style/ListIcon.ActionBar"/>
+            android:scaleType="fitCenter"
+            android:src="@drawable/ic_close"/>
     </FrameLayout>
 
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/start_margin"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_begin="@*android:dimen/action_bar_margin_start"/>
+
     <TextView
         android:id="@+id/title"
         android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_marginEnd="@dimen/car_keyline_1"
-        android:layout_toEndOf="@id/action_bar_icon_container"
-        android:gravity="center_vertical"
-        android:textAppearance="@style/TextAppearance.Car.Title2"/>
+        android:layout_height="wrap_content"
+        android:ellipsize="end"
+        android:maxLines="1"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/start_margin"
+        app:layout_constraintTop_toTopOf="parent"/>
 
-    <LinearLayout
-        android:id="@+id/button_container"
+    <Button
+        android:id="@+id/user_switcher_btn"
+        style="@*android:style/ActionBarButton"
         android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_alignParentEnd="true"
-        android:layout_marginEnd="@dimen/car_keyline_1"
-        android:orientation="horizontal">
+        android:layout_height="0dp"
+        android:drawableStart="@drawable/ic_user"
+        android:drawableTint="?android:attr/textColorPrimary"
+        android:textColor="?android:attr/textColorPrimary"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/full_settings_btn"
+        app:layout_constraintHorizontal_bias="1.0"
+        app:layout_constraintHorizontal_chainStyle="packed"
+        app:layout_constraintStart_toEndOf="@+id/title"
+        app:layout_constraintTop_toTopOf="parent"/>
 
-        <LinearLayout
-            android:id="@+id/user_switcher_btn"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:layout_gravity="center_vertical"
-            android:layout_marginEnd="@dimen/car_padding_4"
-            android:background="@drawable/button_ripple_bg"
-            style="@style/Widget.Car.Settings.ActionBar.Button.Borderless.Colored"
-            android:orientation="horizontal">
-            <ImageView
-                android:id="@+id/user_icon"
-                android:src="@drawable/ic_user"
-                android:background="@null"
-                android:layout_width="@dimen/car_primary_icon_size"
-                android:layout_height="@dimen/car_primary_icon_size"
-                android:layout_centerVertical="true"
-                android:gravity="center_vertical"
-                android:scaleType="fitCenter" />
-            <TextView
-                android:id="@+id/user_switcher_text"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_vertical"
-                android:background="@null"
-                android:textAppearance="@style/TextAppearance.Car.Label1"
-                android:layout_marginStart="@dimen/car_padding_2"
-                android:layout_marginEnd="@dimen/car_padding_2"/>
-        </LinearLayout>
-        <LinearLayout
-            android:id="@+id/full_setting_btn"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:layout_gravity="center_vertical"
-            android:layout_marginEnd="@dimen/car_padding_4"
-            android:background="@drawable/button_ripple_bg"
-            style="@style/Widget.Car.Settings.ActionBar.Button.Borderless.Colored"
-            android:orientation="horizontal">
-            <ImageView
-                android:src="@drawable/ic_settings_gear"
-                android:background="@null"
-                style="@style/ListIcon"/>
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_vertical"
-                android:text="@string/more_settings_label"
-                android:textAppearance="@style/TextAppearance.Car.Label1"
-                android:background="@null"
-                android:layout_marginStart="@dimen/car_padding_2"
-                android:layout_marginEnd="@dimen/car_padding_2"/>
-        </LinearLayout>
-    </LinearLayout>
-</RelativeLayout>
+    <Button
+        android:id="@+id/full_settings_btn"
+        style="@*android:style/ActionBarButton"
+        android:layout_width="wrap_content"
+        android:layout_height="0dp"
+        android:layout_marginHorizontal="@*android:dimen/action_bar_button_margin"
+        android:drawableStart="@drawable/ic_settings_gear"
+        android:text="@string/more_settings_label"
+        android:drawableTint="?android:attr/textColorPrimary"
+        android:textColor="?android:attr/textColorPrimary"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/user_switcher_btn"
+        app:layout_constraintTop_toTopOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/action_bar_with_button.xml b/res/layout/action_bar_with_button.xml
index 1227d9c..96864be 100644
--- a/res/layout/action_bar_with_button.xml
+++ b/res/layout/action_bar_with_button.xml
@@ -1,77 +1,84 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<RelativeLayout
+    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.
+-->
+
+<androidx.constraintlayout.widget.ConstraintLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/car_app_bar_height">
+    android:layout_height="match_parent">
 
     <FrameLayout
         android:id="@+id/action_bar_icon_container"
-        android:layout_width="@dimen/car_margin"
-        android:layout_height="match_parent"
-        android:layout_alignParentStart="true"
-        android:background="@drawable/button_ripple_bg">
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:background="@drawable/button_ripple_bg"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/start_margin"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
         <ImageView
             android:id="@+id/back_button"
-            style="@style/ListIcon.ActionBar"/>
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
+            android:layout_gravity="center"
+            android:scaleType="fitCenter"
+            android:src="@drawable/ic_arrow_back"/>
     </FrameLayout>
 
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/start_margin"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_begin="@*android:dimen/action_bar_margin_start"/>
+
     <TextView
         android:id="@+id/title"
         android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_marginEnd="@dimen/car_keyline_1"
-        android:layout_toEndOf="@id/action_bar_icon_container"
-        android:gravity="center_vertical"
-        android:textAppearance="@style/TextAppearance.Car.Title2"/>
-
-    <LinearLayout
-        android:id="@+id/button_container"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_alignParentEnd="true"
-        android:layout_marginEnd="@dimen/car_keyline_1"
-        android:orientation="horizontal">
-
-        <Button
-            android:id="@+id/action_button2"
-            android:visibility="gone"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            style="?android:attr/borderlessButtonStyle"
-            android:layout_marginEnd="@dimen/car_padding_3"/>
-
-        <Button
-            android:id="@+id/action_button1"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            style="?android:attr/borderlessButtonStyle"
-            android:layout_marginEnd="@dimen/action_bar_end_widget_margin_end" />
-    </LinearLayout>
-
-    <ProgressBar
-        android:id="@+id/progress_bar"
-        style="@style/Widget.Car.ProgressBar.Horizontal"
-        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
+        android:ellipsize="end"
+        android:maxLines="1"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/start_margin"
+        app:layout_constraintTop_toTopOf="parent"/>
+
+    <Button
+        android:id="@+id/action_button2"
+        style="@*android:style/ActionBarButton"
+        android:layout_width="wrap_content"
+        android:layout_height="0dp"
         android:visibility="gone"
-        android:indeterminate="true"/>
-</RelativeLayout>
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/action_button1"
+        app:layout_constraintHorizontal_bias="1.0"
+        app:layout_constraintHorizontal_chainStyle="packed"
+        app:layout_constraintStart_toEndOf="@+id/title"
+        app:layout_constraintTop_toTopOf="parent"/>
+
+    <Button
+        android:id="@+id/action_button1"
+        style="@*android:style/ActionBarButton"
+        android:layout_width="wrap_content"
+        android:layout_height="0dp"
+        android:layout_marginHorizontal="@*android:dimen/action_bar_button_margin"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/action_button2"
+        app:layout_constraintTop_toTopOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/action_bar_with_toggle.xml b/res/layout/action_bar_with_toggle.xml
index ec03e99..d18a20e 100644
--- a/res/layout/action_bar_with_toggle.xml
+++ b/res/layout/action_bar_with_toggle.xml
@@ -1,55 +1,75 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!--
+    Copyright 2017 The Android Open Source Project
 
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
-          http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+    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.
 -->
 
-<RelativeLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/car_app_bar_height"
-        android:gravity="center_vertical" >
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <FrameLayout
         android:id="@+id/action_bar_icon_container"
-        android:layout_width="@dimen/car_margin"
-        android:layout_height="@dimen/car_app_bar_height"
-        android:layout_alignParentStart="true"
-        android:background="@drawable/button_ripple_bg">
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:background="@drawable/button_ripple_bg"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@+id/start_margin"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
         <ImageView
             android:id="@+id/back_button"
-            style="@style/ListIcon.ActionBar"/>
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
+            android:layout_gravity="center"
+            android:scaleType="fitCenter"
+            android:src="@drawable/ic_arrow_back"/>
     </FrameLayout>
 
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/start_margin"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_begin="@*android:dimen/action_bar_margin_start"/>
+
     <TextView
         android:id="@+id/title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textAppearance="@style/TextAppearance.Car.Title2"
-        android:layout_marginTop="@dimen/optical_center_offset"
-        android:layout_gravity="center_vertical"
-        android:layout_centerVertical="true"
-        android:layout_alignParentStart="true"
-        android:layout_marginStart="@dimen/car_margin"
+        android:ellipsize="end"
         android:maxLines="1"
-        android:ellipsize="end"/>
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/start_margin"
+        app:layout_constraintTop_toTopOf="parent"/>
 
-    <Switch
-        android:id="@+id/toggle_switch"
-        android:background="@null"
-        style="@style/ListSwitch"
-        android:layout_centerVertical="true"
-        android:layout_alignParentEnd="true"
-        android:layout_marginEnd="@dimen/action_bar_end_widget_margin_end" />
-
-</RelativeLayout>
+    <FrameLayout
+        android:layout_width="@*android:dimen/action_bar_margin_end"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+        <Switch
+            android:id="@+id/toggle_switch"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_gravity="center"
+            android:paddingStart="@*android:dimen/action_bar_toggle_internal_padding"
+            android:paddingEnd="@*android:dimen/action_bar_toggle_internal_padding"
+            android:background="@null"/>
+    </FrameLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/add_wifi.xml b/res/layout/add_wifi.xml
deleted file mode 100644
index 0786fd2..0000000
--- a/res/layout/add_wifi.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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" >
-    <ViewSwitcher
-        android:id="@+id/wifi_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-        <TextView
-            android:id="@+id/wifi_name_display"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            style="@style/TextAppearance.Car.Body1.SingleLine" />
-        <com.google.android.material.textfield.TextInputLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:theme="@style/Theme.AppCompat.Light">
-            <EditText
-                android:id="@+id/wifi_name_input"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:focusableInTouchMode="true"
-                style="@style/TextAppearance.Car.Body1"
-                android:hint="@string/wifi_ssid_hint" />
-        </com.google.android.material.textfield.TextInputLayout>
-    </ViewSwitcher>
-    <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/wifi_password_wrapper"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="@style/Theme.AppCompat.Light">
-        <EditText
-            android:id="@+id/wifi_password"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:focusableInTouchMode="true"
-            style="@style/TextAppearance.Car.Body1"
-            android:inputType="textPassword"
-            android:hint="@string/wifi_password" />
-    </com.google.android.material.textfield.TextInputLayout>
-    <Button
-        android:id="@+id/wifi_connect"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/wifi_setup_connect" />
-</LinearLayout>
diff --git a/res/layout/app_compat_activity.xml b/res/layout/app_compat_activity.xml
deleted file mode 100644
index d186653..0000000
--- a/res/layout/app_compat_activity.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-    <androidx.appcompat.widget.Toolbar
-        android:id="@+id/toolbar"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/car_app_bar_height"
-        app:contentInsetStart="0dp"
-        style="@style/ActionBarStyle.Car" />
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/car_list_divider_height"
-        android:background="@color/car_list_divider"/>
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-        <FrameLayout
-            android:id="@+id/fragment_container"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
-        <!-- set the text clickable to true so that it blocks touch event -->
-        <TextView
-            android:id="@+id/restricted_message"
-            android:gravity="center"
-            android:background="@color/car_grey_1000"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:text="@string/restricted_while_driving"
-            android:clickable="true"
-            android:visibility="gone"
-            android:textAppearance="@style/TextAppearance.Car.Body1.Light" />
-    </FrameLayout>
-</LinearLayout>
diff --git a/res/layout/bluetooth_list.xml b/res/layout/bluetooth_list.xml
deleted file mode 100644
index 07073a5..0000000
--- a/res/layout/bluetooth_list.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical" >
-    <ProgressBar
-        android:id="@+id/bt_search_progress"
-        android:visibility="gone"
-        style="@style/TrimmedHorizontalProgressBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:indeterminate="true" />
-    <ViewSwitcher
-        android:id="@+id/view_switcher"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
-            android:id="@+id/swiperefresh"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
-            <androidx.car.widget.PagedListView
-                android:id="@+id/list"
-                style="@style/SettingList"
-                app:showPagedListViewDivider="false"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent" />
-        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
-        <TextView
-            android:id="@+id/bt_message"
-            android:layout_gravity="center"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/bluetooth_disabled"
-            style="@style/TextAppearance.Car.Body1" />
-    </ViewSwitcher>
-</LinearLayout>
diff --git a/res/layout/bluetooth_pin_confirm.xml b/res/layout/bluetooth_pin_confirm.xml
index 4a9a2be..6d510d0 100644
--- a/res/layout/bluetooth_pin_confirm.xml
+++ b/res/layout/bluetooth_pin_confirm.xml
@@ -1,91 +1,95 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-/*
-** Copyright 2017, 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.
-*/
+    Copyright 2017 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_height="match_parent"
-    android:layout_width="match_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <LinearLayout
-        android:layout_marginStart="@dimen/car_keyline_1"
-        android:layout_marginEnd="@dimen/car_keyline_1"
-        android:layout_height="match_parent"
         android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginEnd="@dimen/bluetooth_pin_dialog_margin_end"
+        android:layout_marginStart="@dimen/bluetooth_pin_dialog_margin_start"
         android:orientation="vertical">
 
         <RelativeLayout
-            android:layout_height="@dimen/car_double_line_list_item_height"
-            android:layout_width="match_parent" >
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/bluetooth_pin_dialog_section_height">
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="vertical"
+                android:layout_alignParentStart="true"
                 android:layout_centerVertical="true"
                 android:gravity="center_vertical"
-                android:layout_alignParentStart="true">
+                android:orientation="vertical">
                 <TextView
                     android:id="@+id/pairing_caption"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
+                    android:ellipsize="end"
+                    android:maxLines="1"
                     android:text="@string/bluetooth_pairing_key_msg"
-                    android:visibility="gone"
-                    style="@style/TextAppearance.Car.Body2.SingleLine" />
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:visibility="gone"/>
                 <TextView
                     android:id="@+id/pairing_subhead"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:visibility="gone"
-                    style="@style/TextAppearance.Car.Body1.SingleLine"
-                    android:layout_marginTop="@dimen/car_padding_1" />
+                    android:layout_marginTop="@dimen/bluetooth_pin_dialog_subtext_margin_top"
+                    android:ellipsize="marquee"
+                    android:maxLines="1"
+                    android:textAppearance="?android:attr/textAppearanceLarge"
+                    android:visibility="gone"/>
             </LinearLayout>
         </RelativeLayout>
 
         <TextView
             android:id="@+id/pairing_code_message"
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/car_single_line_list_item_height"
+            android:layout_height="@dimen/bluetooth_pin_dialog_section_height"
             android:gravity="center_vertical"
             android:text="@string/bluetooth_enter_passkey_msg"
-            style="@style/TextAppearance.Car.Body2"
-            android:visibility="gone" />
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:visibility="gone"/>
 
         <RelativeLayout
             android:id="@+id/phonebook_sharing_message_confirm_pin_container"
-            android:layout_height="@dimen/car_double_line_list_item_height"
-            android:layout_width="match_parent" >
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/bluetooth_pin_dialog_section_height">
             <CheckBox
                 android:id="@+id/phonebook_sharing_message_confirm_pin"
-                android:layout_width="@dimen/car_primary_icon_size"
-                android:layout_height="@dimen/car_primary_icon_size"
-                android:button="@drawable/ic_check_box"
+                android:layout_width="@dimen/icon_size"
+                android:layout_height="@dimen/icon_size"
                 android:layout_alignParentStart="true"
-                android:layout_centerVertical="true" />
+                android:layout_centerVertical="true"
+                android:button="@drawable/ic_check_box"/>
             <TextView
                 android:id="@+id/phonebook_sharing_message_confirm_pin_text"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_alignParentStart="true"
                 android:layout_centerVertical="true"
-                android:layout_marginStart="@dimen/car_keyline_3"
-                android:layout_marginEnd="@dimen/car_keyline_3"
-                style="@style/TextAppearance.Car.Body2.SingleLine"
-                android:gravity="center_vertical"/>
+                android:layout_marginEnd="@dimen/bluetooth_pin_dialog_text_margin_end"
+                android:layout_marginStart="@dimen/bluetooth_pin_dialog_text_margin_start"
+                android:ellipsize="end"
+                android:gravity="center_vertical"
+                android:maxLines="1"
+                android:textAppearance="?android:attr/textAppearanceMedium"/>
         </RelativeLayout>
 
     </LinearLayout>
diff --git a/res/layout/bluetooth_pin_entry.xml b/res/layout/bluetooth_pin_entry.xml
index 1e6bc03..343386f 100644
--- a/res/layout/bluetooth_pin_entry.xml
+++ b/res/layout/bluetooth_pin_entry.xml
@@ -1,107 +1,112 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-/*
-** Copyright 2017, 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.
-*/
+    Copyright 2017 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_height="match_parent"
-    android:layout_width="match_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <LinearLayout
-        android:layout_height="match_parent"
         android:layout_width="match_parent"
-        android:layout_marginStart="@dimen/car_keyline_1"
-        android:layout_marginEnd="@dimen/car_keyline_1"
+        android:layout_height="match_parent"
+        android:layout_marginEnd="@dimen/bluetooth_pin_dialog_margin_end"
+        android:layout_marginStart="@dimen/bluetooth_pin_dialog_margin_start"
         android:orientation="vertical">
 
         <TextView
             android:id="@+id/message_below_pin"
             android:layout_width="wrap_content"
-            android:layout_height="@dimen/car_single_line_list_item_height"
+            android:layout_height="@dimen/bluetooth_pin_dialog_section_height"
             android:gravity="center_vertical"
-            style="@style/TextAppearance.Car.Body2"/>
+            android:textAppearance="?android:attr/textAppearanceMedium"/>
 
         <FrameLayout
-            android:layout_height="@dimen/car_double_line_list_item_height"
-            android:layout_width="match_parent" >
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/bluetooth_pin_dialog_section_height">
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:layout_gravity="center_vertical">
+                android:layout_gravity="center_vertical"
+                android:orientation="vertical">
                 <EditText
                     android:id="@+id/text"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    style="@style/TextAppearance.Car.Body1"
                     android:inputType="textPassword"
-                    android:maxLines="1" />
+                    android:maxLines="1"
+                    android:textAppearance="?android:attr/textAppearanceLarge"/>
                 <TextView
                     android:id="@+id/pin_values_hint"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/car_padding_2"
+                    android:layout_marginTop="@dimen/bluetooth_pin_dialog_subtext_margin_top"
+                    android:ellipsize="end"
+                    android:maxLines="1"
                     android:text="@string/bluetooth_pin_values_hint"
-                    style="@style/TextAppearance.Car.Body2.SingleLine" />
+                    android:textAppearance="?android:attr/textAppearanceMedium"/>
             </LinearLayout>
         </FrameLayout>
 
         <RelativeLayout
-            android:layout_height="@dimen/car_double_line_list_item_height"
-            android:layout_width="match_parent" >
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/bluetooth_pin_dialog_section_height">
             <CheckBox
                 android:id="@+id/alphanumeric_pin"
-                android:layout_width="@dimen/car_primary_icon_size"
-                android:layout_height="@dimen/car_primary_icon_size"
-                android:button="@drawable/ic_check_box"
+                android:layout_width="@dimen/icon_size"
+                android:layout_height="@dimen/icon_size"
                 android:layout_alignParentStart="true"
-                android:layout_centerVertical="true" />
+                android:layout_centerVertical="true"
+                android:button="@drawable/ic_check_box"/>
             <TextView
-                android:text="@string/bluetooth_enable_alphanumeric_pin"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_alignParentStart="true"
                 android:layout_centerVertical="true"
-                android:layout_marginStart="@dimen/car_keyline_3"
-                android:layout_marginEnd="@dimen/car_keyline_3"
-                style="@style/TextAppearance.Car.Body2.SingleLine"
-                android:gravity="center_vertical"/>
+                android:layout_marginEnd="@dimen/bluetooth_pin_dialog_text_margin_end"
+                android:layout_marginStart="@dimen/bluetooth_pin_dialog_text_margin_start"
+                android:ellipsize="end"
+                android:gravity="center_vertical"
+                android:maxLines="1"
+                android:text="@string/bluetooth_enable_alphanumeric_pin"
+                android:textAppearance="?android:attr/textAppearanceMedium"/>
         </RelativeLayout>
 
         <RelativeLayout
-            android:layout_height="@dimen/car_double_line_list_item_height"
-            android:layout_width="match_parent" >
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/bluetooth_pin_dialog_section_height">
             <CheckBox
                 android:id="@+id/phonebook_sharing_message_entry_pin"
-                android:layout_width="@dimen/car_primary_icon_size"
-                android:layout_height="@dimen/car_primary_icon_size"
-                android:button="@drawable/ic_check_box"
+                android:layout_width="@dimen/icon_size"
+                android:layout_height="@dimen/icon_size"
                 android:layout_alignParentStart="true"
-                android:layout_centerVertical="true" />
+                android:layout_centerVertical="true"
+                android:button="@drawable/ic_check_box"/>
             <TextView
-                android:text="@string/bluetooth_pairing_shares_phonebook"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_alignParentStart="true"
                 android:layout_centerVertical="true"
-                android:layout_marginStart="@dimen/car_keyline_3"
-                android:layout_marginEnd="@dimen/car_keyline_3"
-                style="@style/TextAppearance.Car.Body2.SingleLine"
-                android:gravity="center_vertical"/>
+                android:layout_marginEnd="@dimen/bluetooth_pin_dialog_text_margin_end"
+                android:layout_marginStart="@dimen/bluetooth_pin_dialog_text_margin_start"
+                android:ellipsize="end"
+                android:gravity="center_vertical"
+                android:maxLines="1"
+                android:text="@string/bluetooth_pairing_shares_phonebook"
+                android:textAppearance="?android:attr/textAppearanceMedium"/>
         </RelativeLayout>
     </LinearLayout>
 
diff --git a/res/layout/brightness_tile.xml b/res/layout/brightness_tile.xml
index 80e2480..1cf7a5f 100644
--- a/res/layout/brightness_tile.xml
+++ b/res/layout/brightness_tile.xml
@@ -1,26 +1,28 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2018 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
-  -->
+    Copyright 2018 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.
+-->
 
 <SeekBar
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/seekbar"
-    android:layout_marginBottom="@dimen/car_padding_4"
-    android:progressDrawable="@drawable/ic_seekbar_track"
-    android:thumb="@drawable/ic_brightness_knob_stretched"
-    android:splitTrack="true"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/car_single_line_list_item_height"/>
+    android:layout_height="@dimen/brightness_seekbar_height"
+    android:layout_marginBottom="@dimen/brightness_seekbar_margin_bottom"
+    android:progressBackgroundTint="?attr/quickSettingsDisabledColor"
+    android:progressDrawable="@drawable/brightness_seekbar_track"
+    android:progressTint="?attr/quickSettingsEnabledColor"
+    android:splitTrack="true"
+    android:thumb="@drawable/ic_brightness_knob_stretched"/>
diff --git a/res/layout/car_setting_activity.xml b/res/layout/car_setting_activity.xml
new file mode 100644
index 0000000..127c62f
--- /dev/null
+++ b/res/layout/car_setting_activity.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2017 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">
+    <FrameLayout
+        android:id="@+id/action_bar"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/action_bar_height"/>
+    <ProgressBar
+        android:id="@+id/progress_bar"
+        style="@style/TrimmedHorizontalProgressBar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:indeterminate="true"
+        android:visibility="gone"/>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/divider_height"
+        android:background="?attr/dividerColor"/>
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <FrameLayout
+            android:id="@+id/fragment_container"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+        <!-- set the text clickable to true so that it blocks touch event -->
+        <TextView
+            android:id="@+id/restricted_message"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="?android:attr/colorPrimary"
+            android:clickable="true"
+            android:gravity="center"
+            android:text="@string/restricted_while_driving"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:visibility="gone"/>
+    </FrameLayout>
+</LinearLayout>
diff --git a/res/layout/car_user_switcher.xml b/res/layout/car_user_switcher.xml
deleted file mode 100644
index 26c9329..0000000
--- a/res/layout/car_user_switcher.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2018 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"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@color/car_user_switcher_background_color"
-        android:orientation="vertical">
-
-
-    <com.android.car.settings.users.UserGridRecyclerView
-        android:id="@+id/user_grid"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_marginTop="@dimen/car_user_switcher_margin_top"
-        app:verticallyCenterListContent="true"
-        app:showPagedListViewDivider="false"
-        app:gutter="both"
-        app:itemSpacing="@dimen/car_user_switcher_vertical_spacing_between_users"/>
-
-</LinearLayout>
diff --git a/res/layout/car_user_switcher_pod.xml b/res/layout/car_user_switcher_pod.xml
deleted file mode 100644
index f7503d8..0000000
--- a/res/layout/car_user_switcher_pod.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-     Copyright (C) 2018 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:clipChildren="false"
-    android:alpha="0"
-    android:layout_height="wrap_content"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:gravity="center">
-
-    <FrameLayout
-        android:id="@+id/current_user_frame"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
-
-        <ImageView android:id="@+id/user_avatar"
-            android:layout_width="@dimen/car_user_switcher_image_avatar_size"
-            android:layout_height="@dimen/car_user_switcher_image_avatar_size"
-            android:background="@drawable/car_button_ripple_background_inverse"
-            android:layout_gravity="center"/>
-    </FrameLayout>
-
-    <TextView android:id="@+id/user_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="@dimen/car_user_switcher_vertical_spacing_between_name_and_avatar"
-        android:textSize="@dimen/car_user_switcher_name_text_size"
-        android:textColor="@color/car_user_switcher_name_text_color"
-        android:ellipsize="end"
-        android:singleLine="true"
-        android:gravity="center"/>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/choose_lock_password.xml b/res/layout/choose_lock_password.xml
index 82ef2d8..1dd716a 100644
--- a/res/layout/choose_lock_password.xml
+++ b/res/layout/choose_lock_password.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 The Android Open Source Project
 
-    Licensed under the Apache License, Version 2.0 (the "License")
+    Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
 
-        http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
@@ -17,10 +17,9 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:layout_marginHorizontal="@dimen/car_margin"
+    android:layout_marginHorizontal="@*android:dimen/action_bar_margin"
     android:orientation="horizontal">
 
     <FrameLayout
@@ -28,25 +27,18 @@
         android:layout_height="match_parent"
         android:layout_weight="@integer/content_weight">
 
-        <com.google.android.material.textfield.TextInputLayout
+        <EditText
+            android:id="@+id/password_entry"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical"
-            android:paddingHorizontal="@dimen/car_padding_2"
-            app:hintTextAppearance="@style/TextAppearance.Car.Hint">
-
-            <com.google.android.material.textfield.TextInputEditText
-                android:id="@+id/password_entry"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:focusableInTouchMode="true"
-                android:hint="@string/security_lock_password"
-                android:imeOptions="actionDone|flagNoExtractUi"
-                android:inputType="textPassword"
-                android:maxLines="1"
-                android:textAppearance="@style/TextAppearance.Car.Body2"/>
-
-        </com.google.android.material.textfield.TextInputLayout>
+            android:focusableInTouchMode="true"
+            android:hint="@string/security_lock_password"
+            android:imeOptions="actionDone|flagNoExtractUi"
+            android:inputType="textPassword"
+            android:maxLines="1"
+            android:paddingHorizontal="@dimen/pin_password_entry_padding_horizontal"
+            android:textAppearance="?android:attr/textAppearanceMedium"/>
 
     </FrameLayout>
 
@@ -58,33 +50,26 @@
         android:orientation="vertical">
 
         <ImageView
-            android:src="@drawable/ic_lock"
-            android:layout_height="@dimen/car_primary_icon_size"
-            android:layout_width="@dimen/car_primary_icon_size"/>
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
+            android:src="@drawable/ic_lock"/>
 
         <TextView
             android:id="@+id/title_text"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/choose_title_text_margin_bottom"
             android:gravity="center"
-            android:layout_marginBottom="@dimen/car_padding_2"
-            android:textAppearance="@style/TextAppearance.Car.Body1"
-            android:text="@string/lockscreen_choose_your_password"/>
+            android:text="@string/lockscreen_choose_your_password"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
 
         <TextView
             android:id="@+id/hint_text"
-            android:text="@string/choose_lock_password_hints"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:gravity="center"
-            android:textAppearance="@style/TextAppearance.Car.Body2" />
+            android:text="@string/choose_lock_password_hints"
+            android:textAppearance="?android:attr/textAppearanceMedium"/>
 
-        <Button
-            android:id="@+id/screen_lock_options"
-            style="@style/Widget.Car.Button.Borderless.Colored"
-            android:layout_width="wrap_content"
-            android:layout_marginTop="@dimen/car_padding_2"
-            android:text="@string/screen_lock_options"
-            android:visibility="gone"/>
     </LinearLayout>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/layout/choose_lock_pattern.xml b/res/layout/choose_lock_pattern.xml
index 76d4d02..fc9bfbc 100644
--- a/res/layout/choose_lock_pattern.xml
+++ b/res/layout/choose_lock_pattern.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 The Android Open Source Project
 
-    Licensed under the Apache License, Version 2.0 (the "License")
+    Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
 
-        http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
@@ -19,21 +19,21 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:layout_marginHorizontal="@dimen/car_margin"
+    android:layout_marginHorizontal="@*android:dimen/action_bar_margin"
     android:orientation="horizontal"
-    android:paddingTop="@dimen/car_app_bar_height"
-    android:paddingBottom="@dimen/car_app_bar_height">
+    android:paddingBottom="@dimen/action_bar_height"
+    android:paddingTop="@dimen/action_bar_height">
 
     <!-- Start side: lock pattern -->
     <FrameLayout
         android:layout_width="0dp"
         android:layout_height="match_parent"
-        android:layout_weight="@integer/content_weight"
-        android:layout_gravity="center_vertical">
+        android:layout_gravity="center_vertical"
+        android:layout_weight="@integer/content_weight">
 
         <com.android.internal.widget.LockPatternView
-            style="@style/LockPatternStyle"
             android:id="@+id/lockPattern"
+            style="@style/LockPattern"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center"/>
@@ -48,32 +48,25 @@
         android:orientation="vertical">
 
         <ImageView
-            android:src="@drawable/ic_lock"
-            android:layout_height="@dimen/car_primary_icon_size"
-            android:layout_width="@dimen/car_primary_icon_size"/>
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
+            android:src="@drawable/ic_lock"/>
 
         <TextView
             android:id="@+id/title_text"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/choose_title_text_margin_bottom"
             android:gravity="center"
-            android:layout_marginBottom="@dimen/car_padding_2"
-            android:textAppearance="@style/TextAppearance.Car.Body1"
-            android:text="@string/lockscreen_choose_your_pattern"/>
+            android:text="@string/lockscreen_choose_your_pattern"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
 
         <TextView
             android:id="@+id/description_text"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:gravity="center"
-            android:textAppearance="@style/TextAppearance.Car.Body2"/>
+            android:textAppearance="?android:attr/textAppearanceMedium"/>
 
-        <Button
-            android:id="@+id/screen_lock_options"
-            style="@style/Widget.Car.Button.Borderless.Colored"
-            android:layout_width="wrap_content"
-            android:layout_marginTop="@dimen/car_padding_2"
-            android:text="@string/screen_lock_options"
-            android:visibility="gone"/>
     </LinearLayout>
 </LinearLayout>
diff --git a/res/layout/choose_lock_pin.xml b/res/layout/choose_lock_pin.xml
index 7980665..aa74736 100644
--- a/res/layout/choose_lock_pin.xml
+++ b/res/layout/choose_lock_pin.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 The Android Open Source Project
 
-    Licensed under the Apache License, Version 2.0 (the "License")
+    Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
 
-        http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
@@ -19,14 +19,14 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:layout_marginHorizontal="@dimen/car_margin"
+    android:layout_marginHorizontal="@*android:dimen/action_bar_margin"
     android:orientation="horizontal">
 
     <!-- Start side: lock pattern -->
     <FrameLayout
-        android:layout_weight="@integer/content_weight"
         android:layout_width="0dp"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:layout_weight="@integer/content_weight">
 
         <com.android.car.settings.security.PinPadView
             android:id="@+id/pin_pad"
@@ -38,54 +38,47 @@
 
     <!-- End side: pin entry field and messages -->
     <LinearLayout
-        android:layout_height="wrap_content"
         android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
         android:layout_weight="@integer/illustration_weight"
         android:gravity="center"
-        android:orientation="vertical"
-        android:layout_gravity="center_vertical">
+        android:orientation="vertical">
 
         <ImageView
-            android:src="@drawable/ic_lock"
-            android:layout_height="@dimen/car_primary_icon_size"
-            android:layout_width="@dimen/car_primary_icon_size"/>
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
+            android:src="@drawable/ic_lock"/>
 
         <TextView
             android:id="@+id/title_text"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/choose_pin_title_text_margin_bottom"
             android:gravity="center"
-            android:layout_marginBottom="@dimen/car_padding_5"
-            android:textAppearance="@style/TextAppearance.Car.Body1"
-            android:text="@string/lockscreen_choose_your_pin"/>
+            android:text="@string/lockscreen_choose_your_pin"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
 
         <EditText
             android:id="@+id/password_entry"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:paddingHorizontal="@dimen/car_padding_2"
-            android:gravity="center"
-            android:textAppearance="@style/TextAppearance.Car.Body1"
-            android:maxLines="1"
-            android:inputType="textPassword"
             android:cursorVisible="false"
-            android:focusable="false"/>
+            android:focusable="false"
+            android:gravity="center"
+            android:inputType="textPassword"
+            android:maxLines="1"
+            android:paddingHorizontal="@dimen/pin_password_entry_padding_horizontal"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
 
         <!--  hint text -->
         <TextView
             android:id="@+id/hint_text"
-            android:text="@string/choose_lock_pin_hints"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:gravity="center"
-            android:textAppearance="@style/TextAppearance.Car.Body2" />
+            android:text="@string/choose_lock_pin_hints"
+            android:textAppearance="?android:attr/textAppearanceMedium"/>
 
-        <Button
-            android:id="@+id/screen_lock_options"
-            style="@style/Widget.Car.Button.Borderless.Colored"
-            android:layout_width="wrap_content"
-            android:layout_marginTop="@dimen/car_padding_2"
-            android:text="@string/screen_lock_options"
-            android:visibility="gone"/>
     </LinearLayout>
 </LinearLayout>
diff --git a/res/layout/confirm_lock_password.xml b/res/layout/confirm_lock_password.xml
new file mode 100644
index 0000000..437fa4d
--- /dev/null
+++ b/res/layout/confirm_lock_password.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <EditText
+        android:id="@+id/password_entry"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="@*android:dimen/action_bar_margin"
+        android:gravity="center"
+        android:inputType="textPassword"
+        android:maxLines="1"
+        android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:text="@string/lock_settings_enter_password"
+        android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+    <TextView
+        android:id="@+id/message"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:freezesText="true"
+        android:gravity="center"
+        android:textAppearance="?android:attr/textAppearanceMedium"/>
+</LinearLayout>
diff --git a/res/layout/confirm_lock_password_fragment.xml b/res/layout/confirm_lock_password_fragment.xml
deleted file mode 100644
index 7895cad..0000000
--- a/res/layout/confirm_lock_password_fragment.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License")
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/container"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:gravity="center">
-
-    <EditText
-        android:id="@+id/password_entry"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginHorizontal="@dimen/car_margin"
-        android:gravity="center"
-        android:textAppearance="@style/TextAppearance.Car.Body1"
-        android:maxLines="1"
-        android:inputType="textPassword"/>
-
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center"
-        android:textAppearance="@style/TextAppearance.Car.Body1"
-        android:text="@string/lock_settings_enter_password"/>
-
-    <TextView
-        android:id="@+id/message"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:gravity="center"
-        android:textAppearance="@style/TextAppearance.Car.Body2"
-        android:freezesText="true"/>
-</LinearLayout>
diff --git a/res/layout/confirm_lock_pattern.xml b/res/layout/confirm_lock_pattern.xml
new file mode 100644
index 0000000..eac1720
--- /dev/null
+++ b/res/layout/confirm_lock_pattern.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/confirm_lock_message_vertical_spacing"
+        android:text="@string/lock_settings_enter_pattern"
+        android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+    <TextView
+        android:id="@+id/message"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/confirm_lock_message_vertical_spacing"
+        android:gravity="center"
+        android:textAppearance="?android:attr/textAppearanceMedium"/>
+
+    <com.android.internal.widget.LockPatternView
+        android:id="@+id/lockPattern"
+        style="@style/LockPattern"
+        android:layout_width="@dimen/confirm_pattern_dimension"
+        android:layout_height="@dimen/confirm_pattern_dimension"/>
+</LinearLayout>
diff --git a/res/layout/confirm_lock_pattern_fragment.xml b/res/layout/confirm_lock_pattern_fragment.xml
deleted file mode 100644
index 01c45e3..0000000
--- a/res/layout/confirm_lock_pattern_fragment.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License")
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/container"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:gravity="center">
-
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginBottom="@dimen/car_padding_2"
-        android:textAppearance="@style/TextAppearance.Car.Title2"
-        android:text="@string/lock_settings_enter_pattern"/>
-
-    <TextView
-        android:id="@+id/message"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginBottom="@dimen/car_padding_2"
-        android:gravity="center"
-        android:textAppearance="@style/TextAppearance.Car.Body2"/>
-
-    <com.android.internal.widget.LockPatternView
-        style="@style/LockPatternStyle"
-        android:id="@+id/lockPattern"
-        android:layout_width="@dimen/confirm_pattern_dimension"
-        android:layout_height="@dimen/confirm_pattern_dimension"/>
-</LinearLayout>
diff --git a/res/layout/confirm_lock_pin.xml b/res/layout/confirm_lock_pin.xml
new file mode 100644
index 0000000..bb7cec4
--- /dev/null
+++ b/res/layout/confirm_lock_pin.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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:layout_marginHorizontal="@*android:dimen/action_bar_margin"
+    android:orientation="horizontal">
+
+    <!-- Start side: lock PIN -->
+    <FrameLayout
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:layout_weight="@integer/content_weight"
+        android:gravity="center">
+
+        <com.android.car.settings.security.PinPadView
+            android:id="@+id/pin_pad"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:columnCount="3"/>
+    </FrameLayout>
+
+    <!-- End side: pin entry field and messages -->
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:layout_weight="@integer/illustration_weight"
+        android:orientation="vertical">
+
+        <EditText
+            android:id="@+id/password_entry"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginHorizontal="@dimen/pin_password_entry_padding_horizontal"
+            android:cursorVisible="false"
+            android:focusable="false"
+            android:gravity="center"
+            android:inputType="textPassword"
+            android:maxLines="1"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/confirm_lock_message_vertical_spacing"
+            android:gravity="center"
+            android:text="@string/lock_settings_enter_pin"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+        <TextView
+            android:id="@+id/message"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:textAppearance="?android:attr/textAppearanceMedium"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/confirm_lock_pin_fragment.xml b/res/layout/confirm_lock_pin_fragment.xml
deleted file mode 100644
index accb52a..0000000
--- a/res/layout/confirm_lock_pin_fragment.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 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="horizontal">
-
-    <!-- Start side: lock PIN -->
-    <FrameLayout
-        android:layout_weight="1"
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:gravity="center">
-
-        <com.android.car.settings.security.PinPadView
-            android:id="@+id/pin_pad"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:columnCount="3"/>
-    </FrameLayout>
-
-    <!-- End side: pin entry field and messages -->
-    <LinearLayout
-        android:layout_height="wrap_content"
-        android:layout_width="0dp"
-        android:layout_weight="1"
-        android:orientation="vertical"
-        android:layout_gravity="center_vertical">
-
-        <EditText
-            android:id="@+id/password_entry"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginHorizontal="@dimen/car_padding_5"
-            android:gravity="center"
-            android:textAppearance="@style/TextAppearance.Car.Body1"
-            android:maxLines="1"
-            android:inputType="textPassword"
-            android:cursorVisible="false"
-            android:focusable="false"/>
-
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:gravity="center"
-            android:layout_marginBottom="@dimen/car_padding_2"
-            android:textAppearance="@style/TextAppearance.Car.Body1"
-            android:text="@string/lock_settings_enter_pin"/>
-
-        <TextView
-            android:id="@+id/message"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:gravity="center"
-            android:textAppearance="@style/TextAppearance.Car.Body2" />
-    </LinearLayout>
-</LinearLayout>
diff --git a/res/layout/data_usage_summary_preference.xml b/res/layout/data_usage_summary_preference.xml
new file mode 100644
index 0000000..b3c7c4b
--- /dev/null
+++ b/res/layout/data_usage_summary_preference.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_vertical"
+    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/data_usage_summary_preference_padding_bottom"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart">
+    <TextView
+        android:id="@android:id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/usage_indicator_preference_title_margin_bottom"
+        android:layout_marginTop="@dimen/usage_indicator_preference_title_margin_top"
+        android:ellipsize="end"
+        android:singleLine="true"
+        android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+    <ProgressBar
+        android:id="@android:id/progress"
+        style="?android:attr/progressBarStyleHorizontal"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="@dimen/usage_indicator_preference_progressbar_height"
+        android:progressDrawable="@drawable/color_progress_bar"/>
+
+    <LinearLayout
+        android:id="@+id/progress_bar_labels"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/usage_indicator_preference_label_margin_bottom"
+        android:layout_marginTop="@dimen/usage_indicator_preference_label_margin_top"
+        android:orientation="horizontal">
+        <TextView android:id="@android:id/text1"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:textAppearance="?android:attr/textAppearanceSmall"/>
+
+        <Space
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"/>
+
+        <TextView android:id="@android:id/text2"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:textAppearance="?android:attr/textAppearanceSmall"/>
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/data_limit_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceSmall"/>
+    <TextView
+        android:id="@+id/remaining_billing_cycle_time_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceSmall"/>
+    <TextView
+        android:id="@+id/carrier_info_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceSmall"/>
+    <Button
+        android:id="@+id/manage_subscription_button"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/data_usage_summary_preference_button_height"
+        android:layout_marginTop="@dimen/data_usage_summary_preference_button_margin_top"
+        android:minWidth="@dimen/data_usage_summary_preference_button_min_width"
+        android:text="@string/launch_manage_plan_text"/>
+</LinearLayout>
diff --git a/res/layout/date_picker.xml b/res/layout/date_picker.xml
index ebcc35c..23c37f2 100644
--- a/res/layout/date_picker.xml
+++ b/res/layout/date_picker.xml
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 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.
+-->
 
 <DatePicker
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/date_picker"
-    android:scaleX="1.6"
-    android:scaleY="1.6"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:datePickerMode="spinner"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content" />
+    android:scaleX="1.6"
+    android:scaleY="1.6"/>
diff --git a/res/layout/delete_preference_widget.xml b/res/layout/delete_preference_widget.xml
new file mode 100644
index 0000000..7c2690e
--- /dev/null
+++ b/res/layout/delete_preference_widget.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:src="@drawable/ic_delete"/>
diff --git a/res/layout/details_preference_widget.xml b/res/layout/details_preference_widget.xml
new file mode 100644
index 0000000..4f9fc41
--- /dev/null
+++ b/res/layout/details_preference_widget.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:src="@drawable/ic_settings_gear"/>
diff --git a/res/layout/dropdown_preference_widget.xml b/res/layout/dropdown_preference_widget.xml
new file mode 100644
index 0000000..f6eb1a2
--- /dev/null
+++ b/res/layout/dropdown_preference_widget.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:src="@drawable/ic_arrow_drop_down"/>
diff --git a/res/layout/edit_icon_preference_widget.xml b/res/layout/edit_icon_preference_widget.xml
new file mode 100644
index 0000000..3797630
--- /dev/null
+++ b/res/layout/edit_icon_preference_widget.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:src="@drawable/ic_edit"/>
diff --git a/res/layout/edit_username_fragment.xml b/res/layout/edit_username_fragment.xml
index a9fe7be..2980e6a 100644
--- a/res/layout/edit_username_fragment.xml
+++ b/res/layout/edit_username_fragment.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 Google Inc.
+    Copyright 2018 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
+         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,
@@ -17,30 +17,20 @@
 
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:paddingStart="@dimen/car_margin"
-    android:paddingEnd="@dimen/car_margin">
+    android:paddingEnd="@dimen/edit_username_padding_end"
+    android:paddingStart="@dimen/edit_username_padding_start"
+    android:paddingTop="@dimen/edit_username_text_padding_top">
 
-    <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/user_name"
+    <EditText
+        android:id="@+id/user_name_text_edit"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:focusableInTouchMode="true"
         android:hint="@string/user_name_label"
-        android:paddingEnd="@dimen/car_keyline_1"
-        android:paddingStart="@dimen/car_keyline_1"
-        android:paddingTop="@dimen/car_padding_3"
-        app:hintTextAppearance="@style/TextAppearance.Car.Hint">
-
-        <com.google.android.material.textfield.TextInputEditText
-            android:id="@+id/user_name_text_edit"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:focusableInTouchMode="true"
-            android:imeOptions="actionDone|flagNoExtractUi"
-            android:inputType="text"
-            android:maxLines="1"
-            android:textAppearance="@style/TextAppearance.Car.Body1"/>
-    </com.google.android.material.textfield.TextInputLayout>
+        android:imeOptions="actionDone|flagNoExtractUi"
+        android:inputType="text"
+        android:maxLines="1"
+        android:textAppearance="?android:attr/textAppearanceLarge"/>
 </FrameLayout>
diff --git a/res/layout/fallback_home_finishing_boot.xml b/res/layout/fallback_home_finishing_boot.xml
new file mode 100644
index 0000000..9331ea0
--- /dev/null
+++ b/res/layout/fallback_home_finishing_boot.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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"
+    android:background="#80000000"
+    android:forceHasOverlappingRendering="false">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_marginEnd="16dp"
+        android:layout_marginStart="16dp"
+        android:orientation="vertical">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@*android:string/android_start_title"
+            android:textColor="?android:attr/textColorPrimary"
+            android:textSize="20sp"/>
+
+        <ProgressBar
+            style="@android:style/Widget.DeviceDefault.ProgressBar.Horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="12.75dp"
+            android:colorControlActivated="?android:attr/textColorPrimary"
+            android:indeterminate="true"/>
+
+    </LinearLayout>
+</FrameLayout>
diff --git a/res/layout/homepage.xml b/res/layout/homepage.xml
deleted file mode 100644
index 68fc7c2..0000000
--- a/res/layout/homepage.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-
-<androidx.recyclerview.widget.RecyclerView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/recycler_view"
-        android:scrollbars="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
\ No newline at end of file
diff --git a/res/layout/icon_widget_line_item.xml b/res/layout/icon_widget_line_item.xml
deleted file mode 100644
index 6b2888f..0000000
--- a/res/layout/icon_widget_line_item.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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.
--->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    style="@style/LineItem" >
-    <ImageView
-        android:id="@+id/icon"
-        android:layout_marginStart="@dimen/car_keyline_1"
-        android:layout_alignParentStart="true"
-        style="@style/ListIcon"/>
-    <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:layout_alignParentStart="true"
-        android:layout_centerVertical="true"
-        android:layout_marginStart="@dimen/car_keyline_3"
-        android:layout_marginEnd="@dimen/car_keyline_3" >
-        <TextView
-            android:id="@+id/title"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            style="@style/TextAppearance.Car.Body1.SingleLine" />
-        <TextView
-            android:id="@+id/desc"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            style="@style/TextAppearance.Car.Body2.SingleLine"
-            android:visibility="gone" />
-    </LinearLayout>
-    <ImageButton
-        android:id="@+id/action"
-        style="@style/ListIcon"
-        android:layout_marginEnd="@dimen/car_keyline_1"
-        android:layout_alignParentEnd="true"
-        android:layout_centerVertical="true"
-        android:src="@drawable/ic_settings_gear"
-        android:background="@null"
-        android:visibility="gone" />
-    <View
-        android:id="@+id/line_item_divider"
-        android:layout_alignParentBottom="true"
-        android:background="@color/car_list_divider"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/car_list_divider_height" />
-</RelativeLayout>
diff --git a/res/layout/list_fragment.xml b/res/layout/list_fragment.xml
deleted file mode 100644
index 4b78932..0000000
--- a/res/layout/list_fragment.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2017 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.
--->
-
-<androidx.car.widget.PagedListView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:id="@+id/list"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    app:showPagedListViewDivider="true"
-    app:alignDividerStartTo="@id/container"
-    style="@style/SettingList" />
-
diff --git a/res/layout/logical_preference_group.xml b/res/layout/logical_preference_group.xml
new file mode 100644
index 0000000..6845054
--- /dev/null
+++ b/res/layout/logical_preference_group.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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="wrap_content"
+    android:layout_height="wrap_content"/>
diff --git a/res/layout/make_admin_preference_widget.xml b/res/layout/make_admin_preference_widget.xml
new file mode 100644
index 0000000..981b235
--- /dev/null
+++ b/res/layout/make_admin_preference_widget.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:maxEms="@integer/button_max_ems"
+    android:text="@string/grant_admin_permissions_button_text"
+    android:textAppearance="@style/PreferenceButtonTextAppearance"/>
diff --git a/res/layout/master_switch_widget.xml b/res/layout/master_switch_widget.xml
new file mode 100644
index 0000000..1b6bfff
--- /dev/null
+++ b/res/layout/master_switch_widget.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<Switch
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/master_switch"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:clickable="false"
+    android:focusable="false"/>
diff --git a/res/layout/pin_pad_view.xml b/res/layout/pin_pad_view.xml
index 5952ac4..ffe6162 100644
--- a/res/layout/pin_pad_view.xml
+++ b/res/layout/pin_pad_view.xml
@@ -1,17 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
+<!--
+    Copyright 2018 The Android Open Source Project
 
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
-  http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+    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.
 -->
 
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
@@ -19,69 +20,103 @@
     <Button
         android:id="@+id/key1"
         style="@style/PinPadKey"
-        android:text="@string/one"
-        android:tag="1"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="1"
+        android:text="@string/one"/>
     <Button
         android:id="@+id/key2"
         style="@style/PinPadKey"
-        android:text="@string/two"
-        android:tag="2"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="2"
+        android:text="@string/two"/>
     <Button
         android:id="@+id/key3"
         style="@style/PinPadKey"
-        android:text="@string/three"
-        android:tag="3"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="3"
+        android:text="@string/three"/>
 
     <!-- Row 2 -->
     <Button
         android:id="@+id/key4"
         style="@style/PinPadKey"
-        android:text="@string/four"
-        android:tag="4"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="4"
+        android:text="@string/four"/>
     <Button
         android:id="@+id/key5"
         style="@style/PinPadKey"
-        android:text="@string/five"
-        android:tag="5"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="5"
+        android:text="@string/five"/>
     <Button
         android:id="@+id/key6"
         style="@style/PinPadKey"
-        android:text="@string/six"
-        android:tag="6"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="6"
+        android:text="@string/six"/>
 
     <!-- Row 3 -->
     <Button
         android:id="@+id/key7"
         style="@style/PinPadKey"
-        android:text="@string/seven"
-        android:tag="7"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="7"
+        android:text="@string/seven"/>
     <Button
         android:id="@+id/key8"
         style="@style/PinPadKey"
-        android:text="@string/eight"
-        android:tag="8"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="8"
+        android:text="@string/eight"/>
     <Button
         android:id="@+id/key9"
         style="@style/PinPadKey"
-        android:text="@string/nine"
-        android:tag="9"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="9"
+        android:text="@string/nine"/>
 
     <!-- Row 4 -->
     <ImageButton
         android:id="@+id/key_backspace"
         style="@style/PinPadKey"
-        android:src="@drawable/ic_backspace"
-        android:tint="@color/car_body3"
-        android:contentDescription="@string/backspace_key"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:contentDescription="@string/backspace_key"
+        android:src="@drawable/ic_backspace"/>
     <Button
         android:id="@+id/key0"
         style="@style/PinPadKey"
-        android:text="@string/zero"
-        android:tag="0"/>
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:tag="0"
+        android:text="@string/zero"/>
     <ImageButton
         android:id="@+id/key_enter"
         style="@style/PinPadKey"
-        android:src="@drawable/ic_done"
-        android:tint="@color/car_body3"
-        android:contentDescription="@string/enter_key"/>
-</merge>
\ No newline at end of file
+        android:layout_width="@dimen/pin_pad_key_width"
+        android:layout_height="@dimen/pin_pad_key_height"
+        android:layout_margin="@dimen/pin_pad_key_margin"
+        android:contentDescription="@string/enter_key"
+        android:src="@drawable/ic_check"/>
+</merge>
diff --git a/res/layout/preference_dialog_edittext.xml b/res/layout/preference_dialog_edittext.xml
new file mode 100644
index 0000000..6fcd61f
--- /dev/null
+++ b/res/layout/preference_dialog_edittext.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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:layout_marginBottom="@dimen/alert_dialog_margin_bottom"
+    android:layout_marginTop="@dimen/alert_dialog_margin_top"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@android:id/message"
+        style="?android:attr/textAppearanceSmall"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/alert_dialog_title_margin_bottom"
+        android:layout_marginEnd="@dimen/alert_dialog_title_margin_end"
+        android:layout_marginStart="@dimen/alert_dialog_title_margin_start"
+        android:textColor="?android:attr/textColorSecondary"
+        android:visibility="gone"/>
+
+    <EditText
+        android:id="@android:id/edit"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/alert_dialog_edit_text_margin_end"
+        android:layout_marginStart="@dimen/alert_dialog_edit_text_margin_start"/>
+
+</LinearLayout>
diff --git a/res/layout/preference_dialog_password_edittext.xml b/res/layout/preference_dialog_password_edittext.xml
new file mode 100644
index 0000000..bcfd422
--- /dev/null
+++ b/res/layout/preference_dialog_password_edittext.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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:layout_marginBottom="@dimen/alert_dialog_margin_bottom"
+    android:layout_marginTop="@dimen/alert_dialog_margin_top"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@android:id/message"
+        style="?android:attr/textAppearanceSmall"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/alert_dialog_title_margin_bottom"
+        android:layout_marginEnd="@dimen/alert_dialog_title_margin_end"
+        android:layout_marginStart="@dimen/alert_dialog_title_margin_start"
+        android:textColor="?android:attr/textColorSecondary"
+        android:visibility="gone"/>
+
+    <EditText
+        android:id="@android:id/edit"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/alert_dialog_edit_text_margin_end"
+        android:layout_marginStart="@dimen/alert_dialog_edit_text_margin_start"/>
+
+    <CheckBox
+        android:id="@+id/checkbox"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/alert_dialog_password_checkbox_margin_end"
+        android:layout_marginStart="@dimen/alert_dialog_password_checkbox_margin_start"
+        android:layout_marginTop="@dimen/alert_dialog_password_checkbox_margin_top"
+        android:text="@string/show_password"/>
+
+</LinearLayout>
diff --git a/res/layout/progress_bar_preference.xml b/res/layout/progress_bar_preference.xml
new file mode 100644
index 0000000..c224c01
--- /dev/null
+++ b/res/layout/progress_bar_preference.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:background="?android:attr/selectableItemBackground"
+              android:gravity="center_vertical"
+              android:minHeight="?android:attr/listPreferredItemHeightSmall"
+              android:orientation="horizontal"
+              android:paddingBottom="@dimen/progress_bar_preference_padding_bottom"
+              android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+              android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+              android:paddingTop="@dimen/progress_bar_preference_padding_top">
+    <androidx.preference.internal.PreferenceImageView
+        android:id="@android:id/icon"
+        android:layout_width="@dimen/icon_size"
+        android:layout_height="@dimen/icon_size"
+        android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+            <TextView
+                android:id="@android:id/title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:singleLine="true"
+                android:textAlignment="viewStart"
+                android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+            <Space
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"/>
+
+            <TextView
+                android:id="@android:id/summary"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:maxLines="1"
+                android:textAlignment="viewEnd"
+                android:textAppearance="?android:attr/textAppearanceSmall"/>
+        </LinearLayout>
+
+        <ProgressBar
+            android:id="@android:id/progress"
+            style="?android:attr/progressBarStyleHorizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/progress_bar_preference_progressbar_margin_top"/>
+
+        <LinearLayout
+            android:id="@+id/progress_bar_labels"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/progress_bar_preference_label_margin_top"
+            android:orientation="horizontal">
+            <TextView android:id="@android:id/text1"
+                      android:layout_width="wrap_content"
+                      android:layout_height="wrap_content"
+                      android:textAppearance="?android:attr/textAppearanceSmall"/>
+
+            <Space
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"/>
+
+            <TextView android:id="@android:id/text2"
+                      android:layout_width="wrap_content"
+                      android:layout_height="wrap_content"
+                      android:textAppearance="?android:attr/textAppearanceSmall"/>
+        </LinearLayout>
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/quick_settings.xml b/res/layout/quick_settings.xml
index e6d14c1..2e4c110 100644
--- a/res/layout/quick_settings.xml
+++ b/res/layout/quick_settings.xml
@@ -1,25 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 The Android Open Source Project
 
-<androidx.car.widget.PagedListView
+    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.
+-->
+
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:id="@+id/list"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    app:showPagedListViewDivider="false"
-    style="@style/SettingList" />
\ No newline at end of file
+    android:layout_height="match_parent">
+
+    <com.android.car.apps.common.widget.PagedRecyclerView
+        android:id="@+id/list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_above="@+id/build_info"/>
+
+    <TextView
+        android:id="@+id/build_info"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:gravity="center"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:visibility="gone"/>
+
+</RelativeLayout>
diff --git a/res/layout/regulatory_info.xml b/res/layout/regulatory_info.xml
new file mode 100644
index 0000000..b4526c5
--- /dev/null
+++ b/res/layout/regulatory_info.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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">
+  <ImageView
+      android:id="@+id/regulatory_info"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:adjustViewBounds="true"
+      android:contentDescription="@string/regulatory_labels"
+      android:scaleType="centerCrop"
+      android:src="@drawable/regulatory_info"/>
+</ScrollView>
diff --git a/res/layout/seekbar_preference.xml b/res/layout/seekbar_preference.xml
new file mode 100644
index 0000000..247e84e
--- /dev/null
+++ b/res/layout/seekbar_preference.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_vertical"
+    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+    android:orientation="horizontal"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart">
+
+    <androidx.preference.internal.PreferenceImageView
+        android:id="@android:id/icon"
+        android:layout_width="@*android:dimen/car_primary_icon_size"
+        android:layout_height="@*android:dimen/car_primary_icon_size"
+        android:layout_marginBottom="@*android:dimen/car_padding_2"
+        android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"
+        android:layout_marginTop="@*android:dimen/car_padding_2"/>
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@*android:dimen/car_padding_2"
+        android:layout_marginTop="@*android:dimen/car_padding_2"
+        android:layout_weight="1">
+
+        <TextView
+            android:id="@android:id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:ellipsize="end"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceListItem"/>
+
+        <TextView
+            android:id="@android:id/summary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignStart="@android:id/title"
+            android:layout_below="@android:id/title"
+            android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+            android:textColor="?android:attr/textColorSecondary"/>
+
+        <!-- Using UnPressableLinearLayout as a workaround to disable the pressed state propagation
+        to the children of this container layout. Otherwise, the animated pressed state will also
+        play for the thumb in the AbsSeekBar in addition to the preference's ripple background.
+        The background of the SeekBar is also set to null to disable the ripple background -->
+        <androidx.preference.UnPressableLinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_alignStart="@android:id/title"
+            android:layout_below="@android:id/summary"
+            android:clipChildren="false"
+            android:clipToPadding="false">
+            <SeekBar
+                android:id="@+id/seekbar"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:background="@null"
+                android:clickable="false"
+                android:focusable="false"/>
+
+            <TextView
+                android:id="@+id/seekbar_value"
+                android:layout_width="@*android:dimen/car_keyline_3"
+                android:layout_height="wrap_content"
+                android:fadingEdge="horizontal"
+                android:gravity="end|center_vertical"
+                android:scrollbars="none"
+                android:textAppearance="?android:attr/textAppearanceListItemSecondary"/>
+        </androidx.preference.UnPressableLinearLayout>
+
+    </RelativeLayout>
+
+</LinearLayout>
diff --git a/res/layout/settings_fragment.xml b/res/layout/settings_fragment.xml
new file mode 100644
index 0000000..e4628de
--- /dev/null
+++ b/res/layout/settings_fragment.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="NewApi">
+
+    <FrameLayout
+        android:id="@android:id/list_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <com.android.car.apps.common.widget.PagedRecyclerView
+            android:id="@+id/recycler_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
+    </FrameLayout>
+    <TextView
+        android:id="@android:id/empty"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:visibility="gone"/>
+
+</FrameLayout>
diff --git a/res/layout/spinner.xml b/res/layout/spinner.xml
deleted file mode 100644
index 1178f82..0000000
--- a/res/layout/spinner.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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"
-          android:id="@+id/spinnerTarget"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:textAppearance="@style/TextAppearance.Car.Body1.SingleLine"
-/>
diff --git a/res/layout/spinner_drop_down.xml b/res/layout/spinner_drop_down.xml
deleted file mode 100644
index 4f401a8..0000000
--- a/res/layout/spinner_drop_down.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 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"
-          android:id="@+id/spinnerTarget"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:paddingTop="@dimen/tile_top_bottom_padding"
-          android:paddingBottom="@dimen/tile_top_bottom_padding"
-          android:paddingStart="@dimen/car_keyline_1"
-          android:textAppearance="@style/TextAppearance.Car.Body1.SingleLine"
-/>
diff --git a/res/layout/suggestion_preference.xml b/res/layout/suggestion_preference.xml
new file mode 100644
index 0000000..c834522
--- /dev/null
+++ b/res/layout/suggestion_preference.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginBottom="@dimen/suggestions_top_bottom_margin"
+    android:layout_marginTop="@dimen/suggestions_top_bottom_margin"
+    android:background="@android:color/transparent">
+    <androidx.cardview.widget.CardView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:foreground="?android:attr/selectableItemBackground"
+        app:cardCornerRadius="@dimen/suggestions_corner_radius">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="?attr/suggestionsPrimaryColor"
+                android:paddingBottom="@dimen/suggestions_text_padding_bottom"
+                android:paddingEnd="@dimen/suggestions_padding_end"
+                android:paddingStart="@dimen/suggestions_padding_start"
+                android:paddingTop="@dimen/suggestions_text_padding_top">
+                <TextView
+                    android:id="@android:id/title"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:ellipsize="end"
+                    android:maxLines="1"
+                    android:textAppearance="?android:attr/textAppearanceLarge"
+                    android:hyphenationFrequency="none"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"/>
+                <TextView
+                    android:id="@android:id/summary"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/suggestions_subtext_margin_top"
+                    android:ellipsize="end"
+                    android:maxLines="1"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:hyphenationFrequency="none"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@android:id/title"/>
+                <ImageView
+                    android:id="@android:id/icon"
+                    android:layout_width="@dimen/icon_size"
+                    android:layout_height="@dimen/icon_size"
+                    app:layout_constraintBottom_toBottomOf="parent"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintTop_toTopOf="parent"/>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/suggestions_action_bar_height"
+                android:background="?attr/suggestionsSecondaryColor"
+                android:paddingEnd="@dimen/suggestions_padding_end"
+                android:paddingStart="@dimen/suggestions_padding_start">
+                <Button
+                    android:id="@+id/dismiss_button"
+                    style="?android:attr/borderlessButtonStyle"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_vertical"
+                    android:text="@string/suggestion_dismiss_button"
+                    android:textColor="?android:attr/textColorPrimary"/>
+            </FrameLayout>
+        </LinearLayout>
+    </androidx.cardview.widget.CardView>
+</FrameLayout>
diff --git a/res/layout/summary_preference_widget.xml b/res/layout/summary_preference_widget.xml
new file mode 100644
index 0000000..a69094c
--- /dev/null
+++ b/res/layout/summary_preference_widget.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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"
+    android:id="@+id/widget_summary"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_vertical|end"
+    android:textAlignment="viewEnd"
+    android:textAppearance="?android:attr/textAppearanceSmall"
+    android:textColor="?android:attr/textColorSecondary"/>
diff --git a/res/layout/suw_action_bar_with_button.xml b/res/layout/suw_action_bar_with_button.xml
deleted file mode 100644
index fc5ba27..0000000
--- a/res/layout/suw_action_bar_with_button.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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
-  -->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/car_app_bar_height">
-
-    <FrameLayout
-        android:id="@+id/action_bar_icon_container"
-        android:layout_width="@dimen/car_margin"
-        android:layout_height="match_parent"
-        android:layout_alignParentStart="true">
-
-        <ImageView
-            android:id="@+id/back_button"
-            android:background="@drawable/suw_button_ripple_bg"
-            style="@style/ListIcon.ActionBar"/>
-    </FrameLayout>
-
-    <TextView
-        android:id="@+id/title"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_marginEnd="@dimen/car_keyline_1"
-        android:layout_toEndOf="@id/action_bar_icon_container"
-        android:gravity="center_vertical"
-        android:textAppearance="@style/TextAppearance.Car.Title2"/>
-
-    <Button
-        android:id="@+id/action_button2"
-        style="?android:attr/borderlessButtonStyle"
-        android:visibility="gone"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/car_button_height"
-        android:layout_toStartOf="@id/action_button1"
-        android:layout_centerVertical="true"
-        android:ellipsize="end"
-        android:maxLines="1"/>
-
-    <Button
-        android:id="@+id/action_button1"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/car_button_height"
-        android:layout_alignParentEnd="true"
-        android:layout_centerVertical="true"
-        android:layout_marginStart="@dimen/car_padding_4"
-        android:ellipsize="end"
-        android:maxLines="1"/>
-
-    <ProgressBar
-        android:id="@+id/progress_bar"
-        style="@style/Widget.Car.ProgressBar.Horizontal"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:visibility="gone"
-        android:indeterminate="true"/>
-</RelativeLayout>
diff --git a/res/layout/suw_activity.xml b/res/layout/suw_activity.xml
deleted file mode 100644
index 78d688c..0000000
--- a/res/layout/suw_activity.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2018 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"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-    <androidx.appcompat.widget.Toolbar
-        android:id="@+id/toolbar"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/car_app_bar_height"
-        app:contentInsetStart="0dp"
-        style="@style/ActionBarStyle.Car" />
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:id="@+id/fragment_container"/>
-</LinearLayout>
diff --git a/res/layout/tile.xml b/res/layout/tile.xml
index b24c34f..28d71da 100644
--- a/res/layout/tile.xml
+++ b/res/layout/tile.xml
@@ -1,36 +1,36 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2018 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:padding="@dimen/toggle_padding"
-    android:layout_marginStart="@dimen/car_padding_2"
-    android:layout_marginEnd="@dimen/car_padding_2"
-    android:layout_marginBottom="@dimen/car_padding_5"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:layout_marginBottom="@dimen/tile_margin_bottom"
+    android:layout_marginEnd="@dimen/tile_margin_end"
+    android:layout_marginStart="@dimen/tile_margin_start"
     android:gravity="center_horizontal"
-    android:orientation="vertical">
+    android:orientation="vertical"
+    android:padding="@dimen/tile_padding">
     <FrameLayout
         android:id="@+id/icon_container"
-        android:layout_width="@dimen/car_touch_target_size"
-        android:layout_height="@dimen/car_touch_target_size"
+        android:layout_width="@dimen/touch_target_size"
+        android:layout_height="@dimen/touch_target_size"
+        android:layout_marginBottom="@dimen/tile_icon_margin_bottom"
         android:background="@drawable/circle_ripple_bg"
-        android:layout_marginBottom="@dimen/car_padding_4"
         android:gravity="center">
         <View
             android:id="@+id/icon_background"
@@ -39,31 +39,15 @@
             android:background="@drawable/circle_bg"/>
         <ImageView
             android:id="@+id/tile_icon"
-            android:layout_width="@dimen/car_primary_icon_size"
-            android:layout_height="@dimen/car_primary_icon_size"
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
             android:layout_gravity="center"
+            android:scaleType="fitCenter"
             android:src="@drawable/ic_settings_wifi"
-            android:tint="@color/toggle_icon_tint"
-            style="@style/ListIcon" />
+            android:tint="@color/toggle_icon_tint"/>
     </FrameLayout>
-    <LinearLayout
-        android:id="@+id/text_container"
-        android:layout_height="wrap_content"
+    <TextView
+        android:id="@+id/tile_text"
         android:layout_width="wrap_content"
-        android:orientation="horizontal">
-        <TextView
-            android:id="@+id/tile_text"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:gravity="center"
-            android:textAppearance="@style/TextAppearance.Car.Label1"/>
-        <ImageView
-            android:id="@+id/deep_dive_icon"
-            android:layout_width="@dimen/car_primary_icon_size"
-            android:layout_height="@dimen/car_primary_icon_size"
-            android:src="@drawable/ic_arrow_drop_down"
-            android:tint="@color/car_label1"
-            android:layout_marginStart="@dimen/car_padding_1"
-            android:visibility="gone"/>
-    </LinearLayout>
-</LinearLayout>
\ No newline at end of file
+        android:layout_height="wrap_content"/>
+</LinearLayout>
diff --git a/res/layout/time_picker.xml b/res/layout/time_picker.xml
index 9666a9f..404467c 100644
--- a/res/layout/time_picker.xml
+++ b/res/layout/time_picker.xml
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 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.
+-->
 
 <TimePicker
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/time_picker"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
     android:scaleX="1.6"
     android:scaleY="1.6"
-    android:layout_gravity="center"
-    android:timePickerMode="spinner"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"/>
+    android:timePickerMode="spinner"/>
diff --git a/res/layout/two_action_preference.xml b/res/layout/two_action_preference.xml
new file mode 100644
index 0000000..06c09cb
--- /dev/null
+++ b/res/layout/two_action_preference.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@android:color/transparent"
+    android:gravity="center_vertical"
+    android:minHeight="?android:attr/listPreferredItemHeightSmall">
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:background="?android:attr/selectableItemBackground"
+        android:clipToPadding="false"
+        android:gravity="start|center_vertical"
+        android:paddingBottom="@dimen/preference_padding_bottom"
+        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+        android:paddingTop="@dimen/preference_padding_top">
+        <androidx.preference.internal.PreferenceImageView
+            android:id="@android:id/icon"
+            android:layout_width="@dimen/icon_size"
+            android:layout_height="@dimen/icon_size"
+            android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"/>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:orientation="vertical">
+            <TextView
+                android:id="@android:id/title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:hyphenationFrequency="none"
+                android:singleLine="true"
+                android:textAppearance="?android:attr/textAppearanceLarge"/>
+            <TextView
+                android:id="@android:id/summary"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:hyphenationFrequency="none"
+                android:textAppearance="?android:attr/textAppearanceSmall"/>
+        </LinearLayout>
+    </LinearLayout>
+    <LinearLayout
+        android:id="@+id/action_widget_container"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent">
+        <View
+            android:layout_width="@dimen/two_action_preference_divider_width"
+            android:layout_height="match_parent"
+            android:layout_marginBottom="@dimen/preference_padding_bottom"
+            android:layout_marginTop="@dimen/preference_padding_top"
+            android:background="?attr/dividerColor"/>
+        <!-- Preference should place its actual preference widget here. -->
+        <FrameLayout
+            android:id="@android:id/widget_frame"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:background="?android:attr/selectableItemBackground"
+            android:minWidth="?android:attr/listPreferredItemHeightSmall"
+            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+            android:paddingStart="?android:attr/listPreferredItemPaddingStart"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/usage_bytes_threshold_picker.xml b/res/layout/usage_bytes_threshold_picker.xml
new file mode 100644
index 0000000..a8cf70f
--- /dev/null
+++ b/res/layout/usage_bytes_threshold_picker.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent">
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline_top"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        app:layout_constraintGuide_begin="@dimen/usage_pickers_margin_vertical"/>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline_start"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_begin="@dimen/usage_bytes_picker_margin_horizontal"/>
+
+    <FrameLayout
+        android:id="@+id/bytes_threshold_container"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/usage_pickers_text_margin_end"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        app:layout_constraintBottom_toTopOf="@+id/guideline_bottom"
+        app:layout_constraintEnd_toStartOf="@+id/bytes_units"
+        app:layout_constraintHorizontal_chainStyle="packed"
+        app:layout_constraintStart_toStartOf="@+id/guideline_start"
+        app:layout_constraintTop_toBottomOf="@+id/guideline_top">
+        <EditText
+            android:id="@+id/bytes_threshold"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:ems="@integer/data_usage_bytes_threshold_ems"
+            android:inputType="numberDecimal"
+            android:minWidth="@dimen/usage_bytes_picker_edit_text_min_width"
+            android:textAppearance="?android:attr/textAppearanceLarge"/>
+    </FrameLayout>
+
+    <FrameLayout
+        android:id="@+id/up_arrow_container"
+        android:layout_width="@dimen/touch_target_size"
+        android:layout_height="@dimen/touch_target_size"
+        android:background="?android:attr/selectableItemBackground"
+        app:layout_constraintEnd_toEndOf="@+id/bytes_units"
+        app:layout_constraintStart_toStartOf="@+id/bytes_units"
+        app:layout_constraintTop_toBottomOf="@+id/guideline_top">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:src="@drawable/ic_keyboard_arrow_up"/>
+    </FrameLayout>
+
+    <NumberPicker
+        android:id="@+id/bytes_units"
+        android:layout_width="@dimen/touch_target_size"
+        android:layout_height="match_parent"
+        app:layout_constraintBottom_toTopOf="@+id/down_arrow_container"
+        app:layout_constraintEnd_toEndOf="@+id/guideline_end"
+        app:layout_constraintStart_toEndOf="@+id/bytes_threshold_container"
+        app:layout_constraintTop_toBottomOf="@+id/up_arrow_container"/>
+
+    <FrameLayout
+        android:id="@+id/down_arrow_container"
+        android:layout_width="@dimen/touch_target_size"
+        android:layout_height="@dimen/touch_target_size"
+        android:background="?android:attr/selectableItemBackground"
+        app:layout_constraintBottom_toTopOf="@+id/guideline_bottom"
+        app:layout_constraintEnd_toEndOf="@+id/bytes_units"
+        app:layout_constraintStart_toStartOf="@+id/bytes_units">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:src="@drawable/ic_keyboard_arrow_down"/>
+    </FrameLayout>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline_end"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_end="@dimen/usage_bytes_picker_margin_horizontal"/>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline_bottom"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        app:layout_constraintGuide_end="@dimen/usage_pickers_margin_vertical"/>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/usage_cycle_reset_day_of_month_picker.xml b/res/layout/usage_cycle_reset_day_of_month_picker.xml
new file mode 100644
index 0000000..93d18e0
--- /dev/null
+++ b/res/layout/usage_cycle_reset_day_of_month_picker.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent">
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline_top"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        app:layout_constraintGuide_begin="@dimen/usage_pickers_margin_vertical"/>
+
+    <TextView
+        android:id="@+id/subtitle_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/usage_pickers_text_margin_end"
+        android:text="@string/cycle_reset_day_of_month_picker_subtitle"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        app:layout_constraintBottom_toTopOf="@+id/guideline_bottom"
+        app:layout_constraintEnd_toStartOf="@+id/cycle_reset_day_of_month"
+        app:layout_constraintHorizontal_chainStyle="packed"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/guideline_top"/>
+
+    <FrameLayout
+        android:id="@+id/up_arrow_container"
+        android:layout_width="@dimen/touch_target_size"
+        android:layout_height="@dimen/touch_target_size"
+        android:background="?android:attr/selectableItemBackground"
+        app:layout_constraintEnd_toEndOf="@+id/cycle_reset_day_of_month"
+        app:layout_constraintStart_toStartOf="@+id/cycle_reset_day_of_month"
+        app:layout_constraintTop_toBottomOf="@+id/guideline_top">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:src="@drawable/ic_keyboard_arrow_up"/>
+    </FrameLayout>
+
+    <NumberPicker
+        android:id="@+id/cycle_reset_day_of_month"
+        android:layout_width="@dimen/touch_target_size"
+        android:layout_height="match_parent"
+        app:layout_constraintBottom_toTopOf="@+id/down_arrow_container"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/subtitle_text"
+        app:layout_constraintTop_toBottomOf="@+id/up_arrow_container"/>
+
+    <FrameLayout
+        android:id="@+id/down_arrow_container"
+        android:layout_width="@dimen/touch_target_size"
+        android:layout_height="@dimen/touch_target_size"
+        android:background="?android:attr/selectableItemBackground"
+        app:layout_constraintBottom_toTopOf="@+id/guideline_bottom"
+        app:layout_constraintEnd_toEndOf="@+id/cycle_reset_day_of_month"
+        app:layout_constraintStart_toStartOf="@+id/cycle_reset_day_of_month">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:src="@drawable/ic_keyboard_arrow_down"/>
+    </FrameLayout>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline_bottom"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        app:layout_constraintGuide_end="@dimen/usage_pickers_margin_vertical"/>
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/usage_indicator_preference.xml b/res/layout/usage_indicator_preference.xml
new file mode 100644
index 0000000..b6ad180
--- /dev/null
+++ b/res/layout/usage_indicator_preference.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="center_vertical"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:orientation="vertical"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart">
+    <TextView
+        android:id="@android:id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/usage_indicator_preference_title_margin_top"
+        android:layout_marginBottom="@dimen/usage_indicator_preference_title_margin_bottom"
+        android:ellipsize="end"
+        android:singleLine="true"
+        android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+    <ProgressBar
+        android:id="@android:id/progress"
+        style="?android:attr/progressBarStyleHorizontal"
+        android:layout_width="match_parent"
+        android:minHeight="@dimen/usage_indicator_preference_progressbar_height"
+        android:layout_height="wrap_content"
+        android:progressDrawable="@drawable/color_progress_bar"/>
+
+    <LinearLayout
+        android:id="@+id/progress_bar_labels"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/usage_indicator_preference_label_margin_top"
+        android:layout_marginBottom="@dimen/usage_indicator_preference_label_margin_bottom"
+        android:orientation="horizontal">
+        <TextView android:id="@android:id/text1"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:textAppearance="?android:attr/textAppearanceSmall"/>
+
+        <Space
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"/>
+
+        <TextView android:id="@android:id/text2"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:textAppearance="?android:attr/textAppearanceSmall"/>
+    </LinearLayout>
+
+    <TextView
+        android:id="@android:id/summary"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/usage_indicator_preference_summary_margin_bottom"
+        android:textAppearance="?android:attr/textAppearanceSmall"/>
+</LinearLayout>
diff --git a/res/layout/user_details_fragment.xml b/res/layout/user_details_fragment.xml
deleted file mode 100644
index db883d3..0000000
--- a/res/layout/user_details_fragment.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 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.
--->
-
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingStart="@dimen/car_margin"
-    android:paddingEnd="@dimen/car_margin">
-    <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/user_name"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:hint="@string/user_name_label"
-        android:paddingEnd="@dimen/car_keyline_1"
-        android:paddingStart="@dimen/car_keyline_1"
-        android:paddingTop="@dimen/car_padding_3"
-        app:hintTextAppearance="@style/TextAppearance.Car.Hint">
-        <com.google.android.material.textfield.TextInputEditText
-            android:id="@+id/user_name_text_edit"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:focusableInTouchMode="true"
-            android:imeOptions="actionDone|flagNoExtractUi"
-            android:inputType="text"
-            android:maxLines="1"
-            android:textAppearance="@style/TextAppearance.Car.Body1"/>
-    </com.google.android.material.textfield.TextInputLayout>
-
-    <Button
-        android:id="@+id/ok_button"
-        android:visibility="gone"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/car_button_height"
-        android:layout_gravity="center_vertical"
-        android:text="@android:string/ok"
-        android:maxLines="1"
-        android:ellipsize="end"
-        style="@style/Widget.Car.Button.Borderless.Colored"
-        android:minWidth="@dimen/car_button_min_width"
-        android:textColor="@color/action_bar_btn"
-        android:layout_toStartOf="@id/cancel_button"
-        android:layout_below="@id/user_name"/>
-
-    <Button
-        android:id="@+id/cancel_button"
-        android:visibility="gone"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/car_button_height"
-        android:layout_gravity="center_vertical"
-        android:text="@string/cancel"
-        android:maxLines="1"
-        android:ellipsize="end"
-        style="@style/Widget.Car.Button.Borderless.Colored"
-        android:minWidth="@dimen/car_button_min_width"
-        android:textColor="@color/action_bar_btn"
-        android:layout_alignEnd="@id/user_name"
-        android:layout_below="@id/user_name"/>
-</RelativeLayout>
diff --git a/res/layout/user_switcher.xml b/res/layout/user_switcher.xml
new file mode 100644
index 0000000..ad2d456
--- /dev/null
+++ b/res/layout/user_switcher.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.car.settings.users.UserGridRecyclerView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/user_grid"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_vertical"
+    android:background="?attr/userSwitcherBackground"/>
diff --git a/res/layout/user_switcher_pod.xml b/res/layout/user_switcher_pod.xml
new file mode 100644
index 0000000..086d8fb
--- /dev/null
+++ b/res/layout/user_switcher_pod.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:alpha="0"
+    android:clipChildren="false"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:id="@+id/current_user_frame"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+        <ImageView
+            android:id="@+id/user_avatar"
+            android:layout_width="@dimen/user_switcher_image_avatar_size"
+            android:layout_height="@dimen/user_switcher_image_avatar_size"
+            android:layout_gravity="center"
+            android:background="?android:attr/selectableItemBackgroundBorderless"/>
+    </FrameLayout>
+
+    <TextView
+        android:id="@+id/user_name"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/user_switcher_vertical_spacing_between_name_and_avatar"
+        android:ellipsize="end"
+        android:gravity="center"
+        android:singleLine="true"
+        android:textAppearance="?attr/userSwitcherNameTextAppearance"/>
+
+</LinearLayout>
diff --git a/res/layout/wifi_list.xml b/res/layout/wifi_list.xml
deleted file mode 100644
index 1bb82df..0000000
--- a/res/layout/wifi_list.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 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"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical" >
-    <ProgressBar
-        android:id="@+id/wifi_search_progress"
-        android:visibility="gone"
-        style="@style/TrimmedHorizontalProgressBar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:indeterminate="true" />
-    <ViewSwitcher
-        android:id="@+id/view_switcher"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-        <androidx.car.widget.PagedListView
-            android:id="@+id/list"
-            style="@style/SettingList"
-            app:showPagedListViewDivider="false"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent" />
-        <TextView
-            android:id="@+id/message"
-            android:layout_gravity="center"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            style="@style/TextAppearance.Car.Body1"/>
-    </ViewSwitcher>
-</LinearLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 6ec3a98..19ad542 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dowwe skerm, raakskerm, battery"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"dowwe skerm, nag, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nagmodus"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Netwerk en internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Selnetwerk"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiele data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Kry toegang tot data deur selnetwerk"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Skakel mobiele data af?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Datagebruik"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Datawaarskuwing en -limiet"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Programdatagebruiksiklus"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Stel datawaarskuwing"</string>
+    <string name="data_warning" msgid="116776633806885370">"Datawaarskuwing"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Stel datalimiet"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datalimiet"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Beperk datagebruik"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Jou voertuig se hoofeenheid sal mobiele data afskakel wanneer dit die limiet wat jy gestel het, bereik het.\n\nOorweeg dit om \'n konserwatiewe limiet te stel omdat die datagebruik deur die hoofeenheid gemeet word terwyl jou diensverskaffer die gebruik dalk anders bereken."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Stel draadlose toegangspunte op en bestuur hulle"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Skakel tans Wi-Fi aan …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Skakel tans Wi-Fi af …"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Laai tans Wi‑Fi-lys"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi is gedeaktiveer"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Kon netwerk nie vergeet nie"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Kon nie aan netwerk koppel nie"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Voeg netwerk by"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi is gedeaktiveer"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Koppel"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Wagwoord"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Wys wagwoord"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Netwerknaam"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Voer die SSID in"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sekuriteit"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Seinsterkte"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Seinsterkte"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Koppelspoed"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekwensie"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-adres"</string>
+    <string name="show_password" msgid="2074628020371139240">"Wys wagwoord"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Voer netwerknaam in"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Voer wagwoord in"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Swak"</item>
-    <item msgid="2032262610626057081">"Redelik"</item>
-    <item msgid="3859756017461098953">"Goed"</item>
-    <item msgid="1521103743353335724">"Uitstekend"</item>
+    <item msgid="7683058295076342057">"Swak"</item>
+    <item msgid="1639222824821660744">"Redelik"</item>
+    <item msgid="1838705897358163300">"Goed"</item>
+    <item msgid="6067166649320533751">"Uitstekend"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Skakel Bluetooth aan"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth is gedeaktiveer"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Netwerkbesonderhede"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-adres"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-adres"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnetmasker"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-adresse"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Deurgang"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi-voorkeure"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Skakel Wi-Fi outomaties aan"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi aan by gestoorde hoëgehaltenetwerke, soos tuisnetwerk"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Onbeskikbaar omdat ligging af is. Skakel "<annotation id="link">"ligging"</annotation>" aan."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Skakel Wi‑Fi-opsporing aan?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Skakel aan"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi-opsporing is aangeskakel"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Skakel outomaties oor na mobiele data"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Gebruik mobiele data wanneer Wi-Fi geen internettoegang het nie. Datagebruikheffings kan geld."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Kom meer te wete"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Beheer verbindings, stel toestelnaam en opspoorbaarheid"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Rekenaar"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Kopstuk"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Foon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Prenttoestel"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Oorfoon"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Randinvoertoestel"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Saamgebinde toestelle"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Beskikbare toestelle"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Geen saamgebinde toestelle nie"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Geen beskikbare toestelle nie"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Saamgebinde toestel"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Naam"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Gebruik vir"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Verander Bluetooth-toestel se naam"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Naamlose toestel"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Saamgebinde toestelle"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Bind nuwe toestel saam"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth sal aangeskakel word om saam te bind"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Ontkoppel toestel?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Jou voertuig sal van <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ontkoppel word."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Voertuig se Bluetooth-adres: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Toestel se Bluetooth-adres: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Voertuignaam"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Hernoem hierdie voertuig"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Hernoem toestel"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Hernoem"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Beskikbare toestelle"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiele"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-saambindversoek"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Bind saam en koppel"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-saambindkode"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN bevat letters of simbole"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Voer die saambindkode in en druk dan Return of Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Gewoonlik 0000 of 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Saambindversoek"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tik om met <xliff:g id="DEVICE_NAME">%1$s</xliff:g> saam te bind."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Tale"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Tale en invoer"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Sleutelbord"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Bestuur sleutelborde"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Teks-na-spraak-uitset"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Voorkeurenjin"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Huidige enjin"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Spraaktempo"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Toonhoogte"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Stel terug"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Klank"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Luivolume"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigasievolume"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Stel volume vir musiek en video\'s"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Wekker"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Foonluitoon"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Verstekkennisgewingklank"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Verstekwekkerklank"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Programme en kennisgewings"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Wys alle programme"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Verstekprogramme"</string>
     <string name="applications_settings" msgid="794261395191035632">"Programinligting"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Dwing stop"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Dwing stop?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"As jy \'n program dwing om te stop, kan dit wangedra."</string>
     <string name="disable_text" msgid="4358165448648990820">"Deaktiveer"</string>
     <string name="enable_text" msgid="1794971777861881238">"Aktiveer"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Deïnstalleer"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"As jy hierdie program deaktiveer, sal Android en ander programme dalk nie meer soos bedoel werk nie."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktiveer program"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Toestemmings"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Weergawe: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Geen toestemmings is verleen nie"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Geen toestemmings is versoek nie"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datagebruik"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Programdatagebruik"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Dwing stop"</string>
     <string name="computing_size" msgid="5791407621793083965">"Bereken tans …"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> bykomende toestemmings</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> bykomende toestemming</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Bystand en steminvoer"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Bystandprogram"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Gebruik teks op die skerm"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Gee die bystandprogram toegang tot die skerminhoud as teks"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Gebruik skermkiekie"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Gee die bystandprogram toegang tot \'n prent van die skerm"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Outovuldiens"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Geen"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Is gekies"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Die assistent sal inligting oor programme wat tans op jou stelsel gebruik word, kan lees, insluitend inligting wat op jou skerm sigbaar is of toeganklik is binne die programme."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Maak seker dat jy hierdie program vertrou&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Outovul&gt;%1$s&lt;/xliff:g&gt; gebruik wat op jou skerm is om te bepaal wat outomaties ingevul kan word."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Voeg diens by"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Ligging"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Onlangse liggingversoeke"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Geen onlangse liggingversoeke nie"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Programvlaktoestemmings"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Skandering"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Liggingdienste"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi-opsporing"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Laat programme en dienste toe om enige tyd na Wi-Fi-netwerke te soek, selfs wanneer Wi-Fi af is. Dit kan byvoorbeeld gebruik word om ligginggegronde kenmerke en dienste te verbeter."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-opsporing"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Laat programme en dienste toe om enige tyd na toestelle in die omtrek te soek, selfs wanneer Bluetooth af is. Dit kan byvoorbeeld gebruik word om ligginggegronde kenmerke en dienste te verbeter."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Stelsel"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Stelselopdaterings"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Stelselopdaterings"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-weergawe"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-sekuriteitregstellingvlak"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Basisband-weergawe"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernweergawe"</string>
     <string name="build_number" msgid="3997326631001009102">"Bounommer"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adres"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nie beskikbaar nie"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Kopiereg"</string>
     <string name="license_title" msgid="936705938435249965">"Lisensie"</string>
     <string name="terms_title" msgid="5201471373602628765">"Bepalings en voorwaardes"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Stelsel se WebView-lisensie"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Webaansig-stelsellisensies"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Muurpapiere"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Verskaffers van satellietbeelde:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Derdepartylisensies"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Kon nie die lisensies laai nie."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Laai tans …"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Jy het nou <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> stappe oor voordat jy \'n ontwikkelaar is.</item>
+      <item quantity="one">Jy het nou <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> stap oor voordat jy \'n ontwikkelaar is.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Jy is nou \'n ontwikkelaar!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Dis nie nodig nie – jy is reeds \'n ontwikkelaar."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Ontwikkelaaropsies"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Terugstellingopsies"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Terugstelling van netwerk, programme of toestel"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Stel netwerk terug"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Dit sal alle netwerkinstellings terugstel, insluitend:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobiele data"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Vee alle voertuig-e-SIM\'e uit"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Dit sal nie jou diensplan kanselleer nie."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Kan nie e-SIM\'e terugstel nie"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Kies netwerk"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Stel instellings terug"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Stel terug?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Stel alle netwerkinstellings terug? Jy kan nie hierdie handeling ontdoen nie!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Stel instellings terug"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Netwerkinstellings is teruggestel"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Stel programvoorkeure terug"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Dit sal al die voorkeure terugstel vir:\n\n"<li>"Gedeaktiveerde programme"</li>\n<li>"Gedeaktiveerdeprogram-kennisgewings"</li>\n<li>"Verstekprogramme vir handelinge"</li>\n<li>"Agtergronddatabeperkings vir programme"</li>\n<li>"Enige toestemmingbeperkings"</li>\n\n"Jy sal geen programdata verloor nie."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Stel programme terug"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Programvoorkeure is teruggestel"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Vee alle data uit (fabriekterugstelling)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Dit sal alle data van jou voertuig se beheerpaneel uitvee, insluitend:\n\n"<li>"Jou Google-rekening"</li>\n<li>"Stelsel- en programdata en -instellings"</li>\n<li>"Afgelaaide programme"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Jy is tans aangemeld by die volgende rekeninge:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Daar is ander gebruikers op hierdie voertuig teenwoordig."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Stel voertuig terug"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Stel terug?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vee al jou persoonlike inligting en afgelaaide programme uit? Jy kan nie hierdie handeling ontdoen nie!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Vee alles uit"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Vee tans uit"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Wag asseblief …"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum en tyd"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Stel datum en tyd"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Stel datum, tyd, tydsones en formate"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Rangskik volgens tydsone"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Tyd"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Voeg gebruiker by"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Voeg rekening by"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Vee gebruiker uit"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nuwe gebruiker"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gas"</string>
     <string name="user_admin" msgid="1535484812908584809">"Admin"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Aangemeld as admin"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle admin-toestemmings"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Maak administrateur"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Die gebruiker sal gebruikers kan uitvee, insluitend ander administrateurs, en \'n fabriekterugstelling op die stelsel kan uitvoer."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Hierdie handeling is nie omkeerbaar nie."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, maak administrateur"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Skep nuwe gebruikers"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Maak foonoproepe"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Stuur SMS\'e met motor se mobiele data"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Installeer nuwe programme"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Deïnstalleer programme"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Voeg gebruiker by"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nuwe gebruiker"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Voeg nuwe gebruiker by?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Wanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul spasie opstel."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Enige gebruiker kan programme vir al die ander gebruikers opdateer."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Gebruikerlimiet is bereik"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Jy kan tot <xliff:g id="COUNT">%d</xliff:g> gebruikers skep.</item>
+      <item quantity="one">Net een gebruiker kan geskep word.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Kon nie \'n nuwe gebruiker skep nie"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vee hierdie gebruiker uit?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alle programme en data sal uitgevee word."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Kon nie gebruiker uitvee nie."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Maak toe"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Herprobeer"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Vee laaste gebruiker uit?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"\'n Nuwe admin-gebruiker sal geskep word as die enigste oorblywende gebruiker vir hierdie motor uitgevee word."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alle data, instellings en programme wat met hierdie gebruiker geassosieer word, sal uitgevee word. Jy sal die stelsel weer moet opstel."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Kies nuwe admin"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Jy het minstens een admin nodig. As jy hierdie een wil uitvee, moet jy eers \'n plaasvervanger kies."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Kies admin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gas"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gas"</string>
     <string name="user_switch" msgid="6544839750534690781">"Wissel"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Jy (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Naam"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nie opgestel nie"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Wysig gebruikernaam"</string>
     <string name="users_list_title" msgid="770764290290240909">"Gebruikers"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Toestemmings gegee aan %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Rekeninge"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Gebruiker"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Voeg rekening by"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Geen rekeninge is bygevoeg nie"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Rekeninge van <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sinkroniseer data outomaties"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Laat programme data outomaties herlaai"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Skakel dataoutosinkroniseer aan?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Enige veranderinge wat jy aan jou rekeninge op die web aanbring, sal outomaties na jou toestel toe gekopieer word.\n\nSommige rekeninge kan ook outomaties enige veranderinge wat jy op die foon maak, na die web toe kopieer. \'n Google-rekening werk só."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Skakel dataoutosinkroniseer af?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Dit sal data bespaar, maar jy sal elke rekening self moet sinkroniseer om onlangse inligting in te samel. En jy sal nie kennisgewings ontvang wanneer opdaterings plaasvind nie."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Rekeninginligting"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Voeg rekening by"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Voeg \'n rekening by"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Verwyder rekening"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Verwyder rekening?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"As hierdie rekening verwyder word, sal al sy boodskappe, kontakte en ander data op die toestel uitgevee word!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Jou administrateur laat nie hierdie verandering toe nie"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Verwyder dié gebruiker?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Alle programme en data sal uitgevee word."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Kon nie gebruiker verwyder nie."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Probeer weer?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Maak toe"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Herprobeer"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Voeg nuwe gebruiker by?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Wanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul spasie opstel."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Enige gebruiker kan programme vir al die ander gebruikers opdateer."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Kon nie rekening verwyder nie."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Rekeningsinkronisering"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinkronisering is aan vir <xliff:g id="ID_1">%1$d</xliff:g> van <xliff:g id="ID_2">%2$d</xliff:g> items"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinkronisering is aan vir alle items"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinkronisering is af vir alle items"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinkronisering is AF"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sinkroniseerfout"</string>
+    <string name="last_synced" msgid="4745124489150101529">"<xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g> laas gesinkroniseer"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sinkroniseer tans …"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tik om nou te sinkroniseer<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinkroniseer nou"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Kanselleer sinkronisering"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sinkronisering ondervind tans probleme. Dit sal binnekort terug wees."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sekuriteit"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skermslot"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Geen"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Wagwoord"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Kies \'n slottipe"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Skermslotopsies"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Slotopsies"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Voer jou patroon in"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Bevestig"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Teken oor"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Stel \'n skermslot"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Kies jou PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Kies jou patroon"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Kies jou wagwoord"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Kies jou wagwoord"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Huidige skermslot"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Stel \'n patroon vir sekuriteit"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Vee uit"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Jou IT-administrateur blokkeer algemene wagwoorde. Probeer \'n ander wagwoord."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Stygende, dalende of herhalende groep syfers word nie toegelaat nie."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Skermslotopsies"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> dae gelede"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Voeg vertroude toestel by"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Vertroude toestelle"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> toestelle</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> toestel</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Jou <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> sal hierdie motor ontsluit wanneer dit gekoppel is. As iemand jou <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> vat, kan hulle dalk toegang tot hierdie toestel verkry"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bevestig"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Verwyder vertroude toestel"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Klaar"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Gebruik die metgeselprogram om \'n vertroude toestel op te stel. Sodra dit opgestel is, sal jy jou gebruikerprofiel kan ontsluit wanneer jou foon deur die voertuig bespeur word"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Laai die metgeselprogram af op jou foon"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Kies <xliff:g id="CAR_NAME">%1$s</xliff:g> op jou foon om die toestelle saam te bind"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock kan nie die sekuriteitkenmerke van hierdie toestel bespeur nie. Om jou motor te help beskerm, sal vertroude toestel net jou motor ontsluit kan hou as jy dit reeds ontsluit het. Jou vertroude toestel kan jou motor ontsluit hou wanneer dit naby is, selfs al hou iemand anders dit vas."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Voeg <xliff:g id="DEVICE_NAME">%1$s</xliff:g> as \'n vertroude toestel by"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> is suksesvol as \'n vertroude toestel bygevoeg"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-inskrywing het misluk"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"As jy \'n vertroude toestel byvoeg, sal daar van jou vereis word om volgende \'n stawingsmetode op te stel. As jy nie jou vertroude toestel by jou het nie, sal stawing vereis word om by jou profiel in te gaan."</string>
     <string name="forget" msgid="3971143908183848527">"Vergeet"</string>
+    <string name="connect" msgid="5861699594602380150">"Koppel"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Ontkoppel"</string>
     <string name="delete_button" msgid="5840500432614610850">"Vee uit"</string>
     <string name="remove_button" msgid="6664656962868194178">"Verwyder"</string>
     <string name="cancel" msgid="750286395700355455">"Kanselleer"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Verlaat demonstrasiemodus"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Dit sal die demonstrasierekening uitvee en \'n fabriekterugstelling op die stelsel uitvoer. Alle gebruikerdata sal verloor word."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Verlaat demonstrasie"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"voltooi opstelling"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"nie nou nie"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"WYS AF"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Kenmerk is nie beskikbaar terwyl jy bestuur nie."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Kan nie gebruiker byvoeg terwyl jy bestuur nie."</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index f856f43..2b45d8f 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ደብዛዛ ማያ ገጽ፣ ማያንካ፣ ባትሪ"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ደብዛዛ ማያ ገጽ፣ ሌሌት፣ ቅልም"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"የሌሊት ሁነታ"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"አውታረ መረብ እና በይነመረብ"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"የተንቀሳቃሽ ስልክ አውታረ መረብ"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"የተንቀሳቃሽ ስልክ አውታረ መረብን በመጠቀም ውሂብን ይድረሱበት"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"የተንቀሳቃሽ ስልክ ውሂብ ይጥፋ?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"የውሂብ አጠቃቀም"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"የውሂብ ማስጠንቀቂያ እና ገደብ"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"የመተግበሪያ ውሂብ አጠቃቀም ዑደት"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"የውሂብ ማስጠንቀቂያ አዘጋጅ"</string>
+    <string name="data_warning" msgid="116776633806885370">"የውሂብ ማስጠንቀቂያ"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"የውሂብ ገደብ ያዘጋጁ"</string>
+    <string name="data_limit" msgid="227338836292511425">"የውሂብ ገደብ"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"የውሂብ አጠቃቀም መወሰን"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"የእርስዎ ተሽከርካሪ ዋናው አሃድ አንዴ ያዘጋጁት ገደብ ላይ ሲደርስ የተንቀሳቃሽ ስልክ ውሂቡን ያጠፋዋል።\n\nየውሂብ አጠቃቀም የሚለካው በዋናው አሃድ፣ እና የአገልግሎት አቅራቢዎ አጠቃቀም በተለየ መልኩ ሊቆጥር የሚችል እንደመሆኑ መጠን ቆጠብ ያለ ገደብ ማዘጋጀቱን ያስቡበት።"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"የገመድ አልባ መገናኛ ነጥቦችን ያቀናብሩ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fiን በማብራት ላይ…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi በማጥፋት ላይ…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"የWi‑Fi ዝርዝር በመጫን ላይ"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi ተሰናክሏል"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"አውታረ መረብን መርሳት አልተሳካም"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ከአውታረ መረቡ ጋር መገናኘት አልተሳካም"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"አውታረ መረብ አክል"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi ተሰናክሏል"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"አገናኝ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"የይለፍ ቃል"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"የይለፍ ቃል አሳይ"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"የአውታረ መረብ ስም"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID ያስገቡ"</string>
     <string name="wifi_security" msgid="158358046038876532">"ደኅንነት"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"የሲግናል ጥንካሬ"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"የሲግናል ጥንካሬ"</string>
     <string name="wifi_status" msgid="5688013206066543952">"ሁኔታ"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"የአገናኝ ፍጥነት"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"ድግግሞሽ"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"የአይፒ አድራሻ"</string>
+    <string name="show_password" msgid="2074628020371139240">"የይለፍ ቃል አሳይ"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"የአውታረ መረብ ስም ያስገቡ"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"የይለፍ ቃል ያስገቡ"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"የመዳረሻ_ነጥብ_መለያ_ቁልፍ"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ደካማ"</item>
-    <item msgid="2032262610626057081">"ደህና"</item>
-    <item msgid="3859756017461098953">"ጥሩ"</item>
-    <item msgid="1521103743353335724">"እጅግ በጣም ጥሩ"</item>
+    <item msgid="7683058295076342057">"ደካማ"</item>
+    <item msgid="1639222824821660744">"ደህና"</item>
+    <item msgid="1838705897358163300">"ጥሩ"</item>
+    <item msgid="6067166649320533751">"እጅግ በጣም ጥሩ"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ብሉቱዝ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ብሉቱዝን አብራ"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ብሉቱዝ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ብሉቱዝ ተሰናክሏል"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d ሜቢ/ሴ"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 ጊኸ"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ጊኸ"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"የአውታረ መረብ ዝርዝሮች"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"የማክ አድራሻ"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"የአይፒ አድራሻ"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"የንዑስ አውታር ጭንብል"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"ዲኤንኤስ"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"የIPv6 አድራሻዎች"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"መውጫ"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"የWi‑Fi ምርጫዎች"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fiን በራስ-ሰር አብራ"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"የቤትዎን የመሳሰሉ የተቀመጡ ባለ ከፍተኛ ጥራት አውታረ መረቦች አጠገብ Wi‑Fi ተመልሶ ይበራል"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"መገኛ አካባቢ ስለጠፋ ሊገኝ አይችልም። "<annotation id="link">"መገኛ አካባቢን"</annotation>" አብራ።"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"የWi‑Fi ቅኝትን ይብራ?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"አብራ"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi ቅኝት በርቷል"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"በራስ-ሰር ወደ የተንቀሳቃሽ ስልክ ውሂብ ቀይር"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"የWi-Fi በይነመረብ መዳረሻ በማይኖርበት ጊዜ የተንቀሳቃሽ ስልክ ውሂብ ይጠቀሙ። የውሂብ ክፍያዎች ሊከፈልባቸው ይችላል።"</string>
+    <string name="learn_more" msgid="8214605928933358604">"የበለጠ ለመረዳት"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ብሉቱዝ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"ግንኙነቶችን ያቀናብሩ፣ የመሣሪያ ስም እና ተገኝነትን ያቀናብሩ"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"ኮምፒውተር"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ማዳመጫ"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ስልክ"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ምስል መስራት"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"የጆሮ ማዳመጫ"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"የግቤት መለዋወጫ"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ብሉቱዝ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"የተጣመሩ መሣሪያዎች"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"የሚገኙ መሣሪያዎች"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"ምንም የተጣመሩ መሣሪያዎች የሉም"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"ምንም የሚገኙ መሣሪያዎች የሉም"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"የተጣመረ መሣሪያ"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"ስም"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"ተጠቀም ለ"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"የብሉቱዝ መሣሪያውን ስም ይቀይሩ"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"ያልተሰየመ መሳሪያ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"የተጣመሩ መሣሪያዎች"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"አዲስ መሣሪያ ያጣምሩ"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"ብሉቱዝ ለማጣመር ይበራል"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"የመሣሪያ ግንኙነት ይቋረጥ?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"ተሽከርካሪዎ ከ<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ጋር ያለው ግንኙነት ይቋረጣል።"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"የተሽከርካሪ ብሉቱዝ አድራሻ፦ <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"የመሣሪያ የብሉቱዝ አድራሻ፦ <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"የተሽከርካሪ ስም"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ይህን ተሽከርካሪ ዳግም ሰይም"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"መሣሪያን ዳግም ሰይም"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"ዳግም ሰይም"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"የሚገኙ መሣሪያዎች"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"መገለጫዎች"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"የብሉቱዝ ማጣመር ጥያቄ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"አጣምር እና ተገናኝ"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ብሉቱዝ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"የብሉቱዝ ማጣመሪያ ኮድ"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ፒን ፊደሎችን ወይም ምልክቶችን ይይዛል"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"የማጣመር ኮድ ይተይቡና ከዚያም Return ወይም Enter የሚለውን ይጫኑ"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"አብዛኛውን ጊዜ 0000 ወይም 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"የማጣመር ጥየቃ"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"ከ«<xliff:g id="DEVICE_NAME">%1$s</xliff:g>» ጋር ለማጣመር ነካ ያድርጉ።"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ቋንቋዎች"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ቋንቋዎች እና ግቤት"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"የቁልፍ ሰሌዳ"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"የቁልፍ ሰሌዳዎችን አቀናብር"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"የጽሑፍ-ወደ-ንግግር ቅንብሮች"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"የተመረጠው ፕሮግራም"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"አሁን ያለ ፕሮግራም"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"የንግግር ፍጥነት"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"የድምጽ ውፍረት"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"ዳግም አስጀምር"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ድምጽ"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"የጥሪ የድምጽ መጠን"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"የአሰሳ ድምጽ መጠን"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"ማህደረ መረጃ"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"ለሙዚቃ እና ቪዲዮዎች የድምፅ መጠን ያቀናብሩ"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"ማንቂያ"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"የስልክ ጥሪ ቅላጼ"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"ነባሪ የማሳወቂያ ድምጽ"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"ነባሪ የማንቂያ ድምጽ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"መተግበሪያዎች እና ማሳወቂያዎች"</string>
+    <string name="all_applications" msgid="7798210477486822168">"ሁሉንም መተግበሪያዎች አሳይ"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ነባሪ መተግበሪያዎች"</string>
     <string name="applications_settings" msgid="794261395191035632">"የመተግበሪያ መረጃ"</string>
+    <string name="force_stop" msgid="2153183697014720520">"በኃይል አቁም"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"በኃይል አቁም?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"መተግበሪያን በጉልበት እንዲቆም ካደረጉት ከአደብ ውጪ ሊሆን ይችላል።"</string>
     <string name="disable_text" msgid="4358165448648990820">"አሰናክል"</string>
     <string name="enable_text" msgid="1794971777861881238">"አንቃ"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"አራግፍ"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ይህን መተግበሪያ ካሰናከሉት ከዚህ በኋላ Android እና ሌሎች መተግበሪያዎች እንደተፈለገው ላይሠሩ ይችላሉ።"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"መተግበሪያን አሰናክል"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ፈቃዶች"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ስሪት፦ %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ምንም ፈቃዶች አልተሰጡም"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ምንም ፈቃዶች አልተጠየቁም"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"የውሂብ አጠቃቀም"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"የመተግበሪያ ውሂብ አጠቃቀም"</string>
-    <string name="force_stop" msgid="2153183697014720520">"በኃይል አቁም"</string>
     <string name="computing_size" msgid="5791407621793083965">"በማስላት ላይ…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ተጨማሪ ፈቃዶች</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ተጨማሪ ፈቃዶች</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"እገዛ እና የድምጽ ግቤት"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"የእገዛ መተግበሪያ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ከማያ ገጽ ላይ ጽሑፍ ተጠቀም"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"ረዳት መተግበሪያው የማያ ገጹን ይዘቶች እንደ ጽሑፍ እንዲደርሳባቸው ይፍቀዱ"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ቅጽበታዊ ገጽ እይታ ይጠቀሙ"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"ረዳት መተግበሪያው የማያ ገጹን ምስል እንዲደርስበት ይፍቀዱ"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"የራስ-ሙላ አገልግሎት"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ምንም"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"ተመርጧል"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"ረዳቱ በእርስዎ ስርዓት ላይ በአገልግሎት ላይ ስለሚውሉ መተግበሪያዎች መረጃን ማንበብ ይችላል፣ ይህም በእርስዎ ማያ ገጽ ላይ የሚታይ ወይም በመተግበሪያዎች ውስጥ የሚደረስበት መረጃን ይጨምራል።"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ይህን መተግበሪያ የሚያምኑት መሆንዎን ያረጋግጡ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google ራስ-ሙላ&gt;%1$s&lt;/xliff:g&gt; ምን በራስ መሞላት እንደሚችል ለማወቅ በማያ ገጽዎ ላይ ያለውን ነገር ይጠቀማል።"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"አገልግሎት አክል"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"አካባቢ"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"የቅርብ ጊዜ የአካባቢ ጥያቄዎች"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ምንም የቅርብ ጊዜ የአካባቢ ጥያቄዎች የሉም"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"የመተግበሪያ ደረጃ ፈቃዶች"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"በመቃኘት ላይ"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"የአካባቢ አገልግሎቶች"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi ቅኝት"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Wi-Fi ጠፍቶ ቢሆንም እንኳ በማንኛውም ጊዜ የWi-Fi አውታረ መረቦችን እንዲቃኙ ይፍቀዱ። ይህ ለምሳሌ በአካባቢ ላይ የተመሠረቱ ባሕሪያትን እና አገልግሎቶችን ለማሻሻል ጥቅም ላይ ሊውል ይችላል።"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"የብሉቱዝ ቅኝት"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ብሉቱዝ ጠፍቶ ቢሆንም እንኳ በማንኛውም ጊዜ መተግበሪያዎች እና አገልግሎቶች በአቅራቢያ ያሉ መሣሪያዎችን እንዲቃኙ ይፍቀዱ። ይህ ለምሳሌ በአካባቢ ላይ የተመሠረቱ ባሕሪያትን እና አገልግሎቶችን ለማሻሻል ጥቅም ላይ ሊውል ይችላል።"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"ሥርዓት"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"የሥርዓት ዝማኔዎች"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"የሥርዓት ዝማኔዎች"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ሥሪት"</string>
     <string name="security_patch" msgid="4794276590178386903">"የAndroid ደህነንት መጠገኛ ደረጃ"</string>
     <string name="model_info" msgid="4966408071657934452">"ሞዴል"</string>
     <string name="baseband_version" msgid="2370088062235041897">"የቤዝባንድ ሥሪት"</string>
     <string name="kernel_version" msgid="7327212934187011508">"የአውራ ከዋኝ ሥሪት"</string>
     <string name="build_number" msgid="3997326631001009102">"የግንብ ቁጥር"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"የብሉቱዝ አድራሻ"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"አይገኝም"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"ሁኔታ"</string>
     <string name="device_status" msgid="267298179806290920">"ሁኔታ"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"የቅጂ መብት"</string>
     <string name="license_title" msgid="936705938435249965">"ፈቃድ"</string>
     <string name="terms_title" msgid="5201471373602628765">"ደንቦች እና ሁኔታዎች"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"የስርዓት ድር እይታ ፈቃድ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"የሥርዓት WebView ፈቃዶች"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"ልጣፎች"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"የሳተላይት ምስሎች አቅራቢዎች፦\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"የሶስተኛ ወገን ፈቃዶች"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"ፈቃዶቹን መጫን ላይ ችግር አለ።"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"በመጫን ላይ…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">አሁን ገንቢ ለመሆን <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ደረጃዎች ይቀርዎታል።</item>
+      <item quantity="other">አሁን ገንቢ ለመሆን <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ደረጃዎች ይቀረዎታል።</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"አሁን ገንቢ ሆነዋል!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"አያስፈልግም፣ አስቀድሞ ገንቢ ሆነዋል።"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"የገንቢ አማራጮች"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"የዳግም ማስጀመሪያ አማራጮች"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"አውታረ መረብ፣ መተግበሪያዎች ወይም የመሣሪያ ዳግም ቅንብር"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"አውታረ መረብ ዳግም ያቀናብሩ"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"ይህ የሚከተሉትን ጨምሮ ሁሉንም የአውታረ መረብ ቅንብሮች ዳግም ያስጀምራቸዋል፦"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"የሞባይል ውሂብ"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ብሉቱዝ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"ሁሉንም የመኪና eSIMs ደምስስ"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ይሄ የእርስዎን የአገልግሎት ዕቅድ አይሰርዘውም።"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIMsን ማቀናበር አይቻልም"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"አውታረ መረብ ይምረጡ"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ቅንብሮችን ዳግም አስጀምር"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"ዳግም ይጀምር?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"ሁሉም አውታረ መረብ ቅንብሮች ዳግም ይጀምሩ? ይህን እርምጃ መቀልበስ አይችሉም!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ቅንብሮችን ዳግም አስጀምር"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"የአውታረ መረብ ቅንብሮች ዳግም ጀምረዋል።"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"የመተግበሪያዎች ምርጫዎችን ዳግም አቀናብር"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ይሄ ሁሉንም የእነኚህ ምርጫዎችን ዳግም ያስጀምራቸዋል፦\n\n"<li>"የተሰናከሉ መተግበሪያዎች"</li>\n<li>"የተሰናከሉ መተግበሪያ ማሳወቂያዎች"</li>\n<li>"ለእርምጃዎች ነባሪ መተግበሪያዎች"</li>\n<li>"ለመተግበሪያዎች የጀርባ ውሂብ ገደቦች"</li>\n<li>"ማንኛቸውም የፍቃድ ገደቦች"</li>\n\n"ምንም የመተግበሪያ ውሂብ አይጠፋብዎትም።"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"መተግበሪያዎችን ዳግም አስጀምር"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"የመተግበሪያ ምርጫዎች ዳግም ተቀናብረዋል"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"ሁሉንም ውሂብ ደምስስ (የፋብሪካ ዳግም ማስጀመር)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ይህ የሚከተሉትን ጨምሮ ሁሉንም ውሂብ ከተሽከርካሪዎ መረጃ ስርዓት ይደመስሰዋል፦\n\n"<li>"የእርስዎ የGoogle መለያ"</li>\n<li>"የስርዓት እና የመተግበሪያ ውሂብ እና ቅንብሮች"</li>\n<li>"የወረዱ መተግበሪያዎች"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"እርስዎ በአሁን ጊዜ የሚከተለው መለያዎች ውስጥ ገብተዋል፦"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"በዚህ ተሽከርካሪ ላይ ሌሎች ተጠቃሚዎች አሉ።"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"ተሽከርካሪን ዳግም አስጀምር"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ዳግም ይጀምር?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ሁሉም የእርስዎ የግል መረጃ እና የወረዱ መተግበሪያዎች ይሰረዙ? ይህን እርምጃ መቀልበስ አይችሉም!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ሁሉንም አጥፋ"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"በመደምሰስ ላይ"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"እባክዎ ይጠብቁ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ቀን እና ሰዓት"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"ቀን እና ሰዓት ያቀናብሩ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ቀን፣ ሰዓት፣ የሰዓት ሰቅ እና ቅርጸቶችን ያቀናብሩ"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"በሰዓት ሰቅ ደርድር"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"ቀን"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"ሰዓት"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ተጠቃሚን አክል"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"መለያ አክል"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"ተጠቃሚን ሰርዝ"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"አዲስ ተጠቃሚ"</string>
-    <string name="user_guest" msgid="3465399481257448601">"እንግዳ"</string>
     <string name="user_admin" msgid="1535484812908584809">"አስተዳዳሪ"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"እንደ አስተዳዳሪ በመለያ ይግቡ"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ሁሉም የአስተዳዳሪ ፈቃዶች"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"አስተዳዳሪ አድርግ"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ተጠቃሚው ሌሎች አስተዳዳሪዎችን ጨምሮ ተጠቃሚዎችን መሰረዝ፣ እና ሥርዓቱን ወደ የፋብሪካ ዳግም ማስጀመር ይችላል።"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ይህ እርምጃ ሊቀለበስ የሚችል አይደለም።"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"አዎ፣ አስተዳዳሪ አድርግ"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"አዳዲስ ተጠቃሚዎችን ይፍጠሩ"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"የስልክ ጥሪዎችን ያድርጉ"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"በመኪና የሞባይል ውሂብ በኩል መልዕክት መላላክ"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"አዳዲስ መተግበሪያዎች ይጫኑ"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"መተግበሪያዎችን ያራግፉ"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ተጠቃሚን አክል"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"አዲስ ተጠቃሚ"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"አዲስ ተጠቃሚ ይታከል?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"አዲስ ተጠቃሚ ሲያክሉ ያ ሰው የራሳቸውን ቦታ ማቀናበር አለባቸው።"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ማንኛውም ተጠቃሚ መተግበሪያዎችን ለሌሎች ተጠቃሚዎች ሁሉ ማዘመን ይችላል።"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"የተጠቃሚ ገደብ ላይ ተደርሷል"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">እስከ <xliff:g id="COUNT">%d</xliff:g> ተጠቃሚዎች መፍጠር ይችላሉ።</item>
+      <item quantity="other">እስከ <xliff:g id="COUNT">%d</xliff:g> ተጠቃሚዎች መፍጠር ይችላሉ።</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"አዲስ ተጠቃሚን መፍጠር አልተሳካም"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ይህ ተጠቃሚ ይሰረዝ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ሁሉም መተግበሪያዎች እና ውሂብ ይሰረዛሉ።"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ተጠቃሚን መሰረዝ አልተሳካም።"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"አሰናብት"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"እንደገና ሞክር"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"የመጨረሻው ተጠቃሚ ይሰረዝ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ለዚህ መኪና ብቻ ያለው ብቸኛውን ተጠቃሚ ከተሰረዘ በኋላ አዲስ አስተዳዳሪ ተጠቃሚ ይፈጠራል።"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ከዚህ ተጠቃሚ ጋር የተጎዳኙ ሁሉም ውሂብ፣ ቅንብሮች እና መተግበሪያዎች ይሰረዛሉ። ስርዓቱን እንደገና ማዋቀር ይኖርብዎታል።"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"አዲስ አስተዳዳሪ ይምረጡ"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"ቢያንስ አንድ አስተዳዳሪ ያስፈልገዎታል። ይህን ለመሰረዝ መጀመሪያ ምትኩን ይምረጡ።"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"አስተዳዳሪ ይምረጡ"</string>
+    <string name="user_guest" msgid="3465399481257448601">"እንግዳ"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"እንግዳ"</string>
     <string name="user_switch" msgid="6544839750534690781">"ቀይር"</string>
     <string name="current_user_name" msgid="3813671533249316823">"እርስዎ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ስም"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"አልተዋቀረም"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"የተጠቃሚ ስም አርትዕ ያድርጉ"</string>
     <string name="users_list_title" msgid="770764290290240909">"ተጠቃሚዎች"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"ፈቃዶች ለ%1$s ተሰጥቷል"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"መለያዎች"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"ተጠቃሚ"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"መለያ አክል"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"ምንም መለያዎች አልታከሉም"</string>
     <string name="account_list_title" msgid="7631588514613843065">"የ<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> መለያዎች"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ውሂብን በራስ-ሰር አሳምር"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"መተግበሪያዎች ውሂብን በራስ-ሰር ያድሱ"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ውሂብን ራስ-አሳምር ይብራ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ድር ላይ በመለያዎችዎ ላይ የሚያደርጓቸው ማንኛቸውም ለውጦች በራስ-ሰር ወደ ስልክዎ ይቀዳሉ።\n\nአንዳንድ መለያዎች እንዲሁም በስልክ ላይ የሚያደርጓቸውን ማንኛቸውም ለውጦች ወደ ድሩ ሊቀዷቸው ይችላሉ። የGoogle መለያ በዚህ መንገድ ነው የሚሰራው።"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ውሂብን ራስ-አሳምር ይጥፋ?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ይህ ውሂብን ይቆጥባል፣ ነገር ግን የቅርብ ጊዜውን መረጃ ለመሰብሰብ እያንዳንዱን መለያ ራስዎ ማሳመር ይኖርብዎታል። እና ዝማኔዎች ሲከሰቱ ማሳወቂያዎች አይደርሰዎትም።"</string>
     <string name="account_details_title" msgid="7529571432258448573">"የመለያ መረጃ"</string>
     <string name="add_account_title" msgid="5988746086885210040">"መለያ ያክሉ"</string>
     <string name="add_an_account" msgid="1072285034300995091">"መለያ አክል"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"መለያን አስወግድ"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"መለያ ይወገድ?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ይህን መለያ ማስወገድ ሁሉንም መልዕክቶቹ፣ እውቂያዎቹ እና ሌላ ውሂቡ ከስልኩ ላይ ይሰርዛቸዋል!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ይህ ለውጥ በአስተዳዳሪዎ አይፈቀድም"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"ይህ ተጠቃሚ ይወገድ?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"ሁሉም መተግበሪያዎች እና ውሂብ ይሰረዛሉ።"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"ተጠቃሚውን ማስወገድ አልተሳካም።"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"እንደገና ይሞከር?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"አሰናብት"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"እንደገና ሞክር"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"አዲስ ተጠቃሚ ይታከል?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"አዲስ ተጠቃሚ ሲያክሉ ያ ሰው የራሳቸውን ቦታ ማቀናበር አለባቸው።"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ማንኛውም ተጠቃሚ መተግበሪያዎችን ለሌሎች ተጠቃሚዎች ሁሉ ማዘመን ይችላል።"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"መለያን ማስወገድ አልተሳካም።"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"የመለያ ስምረት"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"ለ<xliff:g id="ID_1">%1$d</xliff:g> ከ<xliff:g id="ID_2">%2$d</xliff:g> ንጥሎች ስምረትን አብራ"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"ለሁሉም ንጥሎች ስምረትን አብራ"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"ለሁሉም ንጥሎች ስምረትን አጥፋ"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"አስምር ጠፍቷል"</string>
+    <string name="sync_error" msgid="6698021343089247914">"የአስምር ስህተት"</string>
+    <string name="last_synced" msgid="4745124489150101529">"ለመጨረሻ ጊዜ የሰመረው <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"አሁን በማስመር ላይ…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"አሁን ለማስመር ነካ ያድርጉ<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"አሁን አመሳስል"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"አስምር ሰርዝ"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"አስምር በአሁኑጊዜ ችግር እየገጠመው ነው። ከአፍታ በኋላ ይመለሳል።"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ደኅንነት"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ማያ ገጽ መቆለፊያ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ምንም"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"ፒን"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"የይለፍ ቃል"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"የቁልፍ አይነት ይምረጡ"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"ማያ ገጽ መቆለፊያ አማራጮች"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"የመቆለፊያ አማራጮች"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"ሥርዓተ-ጥለትዎን ያስገቡ"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"አረጋግጥ"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"በድጋሚ ሳል"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"የማያ ገጽ መቆለፊያን ያቀናብሩ"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"የእርስዎን ፒን ይምረጡ"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"የእርስዎን ሥርዓተ ጥለት ይምረጡ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"የይለፍ ቃልዎን ይምረጡ"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"የእርስዎን የይለፍ ቃል ይምረጡ"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"አሁን ያለ ማያ ገጽ መቆለፊያ"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"ለደህንነት ሲባል፣ ሥርዓተ ጥለትን ያቀናብሩ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"አጽዳ"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"የተለመዱ የይለፍ ቃላት በአይቲ አስተዳዳሪዎ የታገዱ ናቸው። የተለየ የይለፍ ቃል ይሞክሩ።"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"እየጨመሩ የሚሄዱ፣ እየቀነሱ የሚሄዱ ወይም ተደጋጋሚ የአኃዞች ተከታታይ አይፈቀድም።"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"የማያ ገጽ መቆለፊያ አማራጮች"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ቀኖች በፊት"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"የሚታመን መሣሪያ አክል"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"የሚታመኑ መሣሪያዎች"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> መሣሪያዎች</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> መሣሪያዎች</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"የእርስዎ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> በሚገናኝበት ጊዜ የእርስዎን መኪና ይከፍተዋል። የእርስዎን <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> የሆነ ሰው ከወሰደው፣ ይህን መሣሪያ ሊደርስበት ይችላል"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"ያረጋግጡ"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"የሚታመን መሣሪያን አስወግድ"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"ተከናውኗል"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"የታመነ መሣሪያ ለማቀናበር አጃቢ መተግበሪያን ይጠቀሙ። አንድ ጊዜ ካቀናበሩ በኋላ፣ የእርስዎ ስልክ በተሽከርካሪው ተፈልጎ በሚገኝበት ጊዜ ላይ የእርስዎን የተጠቃሚ መገለጫ ለመክፈት እርስዎ ይችላሉ"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. በእርስዎ ስልክ ላይ አጃቢውን መተግበሪያ ያውርዱ"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. መሣሪያዎቹን ለማጣመር በእርስዎ ስልክ ላይ <xliff:g id="CAR_NAME">%1$s</xliff:g> ን ይምረጡ"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock የዚህን መሣሪያ የደህንነት ባህሪያት ፈልጎ ማግኘት አይችልም። የእርስዎን መኪና ለመጠበቅ እንዲያግዝ፣ የታመነ መሣሪያ አንድ ጊዜ በእርስዎ ቀደም ብሎ ከተከፈተ በኋላ ብቻ የእርስዎን መኪና እንደተከፈተ ማቆየት ይችላል። የእርስዎ የታመነ መሣሪያ የእርስዎ መኪና በአቅራቢያ ላይ በሚሆንበት ጊዜ ምንም እንኳ ሌላ ሰው የያዘው ቢሆንም እንደተከፈተ ሊያቆየው ይችላል።"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> እንደ የሚታመን መሣሪያ ያክሉ"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> በተሳካ ሁኔታ እንደ ታመነ መሣሪያ ታክሏል"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> መመዝገብ አልተሳካም"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"የታመነ መሣሪያን ማከል ቀጥለው የማረጋገጫ ዘዴን እንዲያክሉ ይፈልግብዎታል። የታመነ መሣሪያዎ ከእርስዎ ጋር ከሌለ መገለጫዎን ለመድረስ ማረጋገጫ ያስፈልጋል።"</string>
     <string name="forget" msgid="3971143908183848527">"እርሳ"</string>
+    <string name="connect" msgid="5861699594602380150">"አገናኝ"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ግንኙነት አቋርጥ"</string>
     <string name="delete_button" msgid="5840500432614610850">"ሰርዝ"</string>
     <string name="remove_button" msgid="6664656962868194178">"አስወግድ"</string>
     <string name="cancel" msgid="750286395700355455">"ይቅር"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ከልምምድ ሁነታ ውጣ"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ይህ የልምምድ መለያውን እና የፋብሪካ ዳግም አስጀምር ሥርዓቱን ይሰርዛል። ሁሉም የተጠቃሚ ውሂብ ይጠፋል።"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ከማሳያ ውጣ"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"ማዋቀር ጨርስ"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"አሁን አልፈልግም"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"አሰናብት"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"እየነዱ ሳለ ባህሪ አይገኝም።"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"እየነዱ ሳለ ተጠቃሚን ማከል አይቻልም።"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index fe813aa..fe3227c 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"تعتيم شاشة، شاشة تعمل باللمس، بطارية"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"تعتيم الشاشة، ليل، تلوين خفيف"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"الوضع الليلي"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"الشبكة والإنترنت"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"شبكة الجوّال"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"بيانات الجوّال"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"الوصول إلى البيانات باستخدام شبكة الجوّال"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"هل تريد إيقاف بيانات الجوّال؟"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"استخدام البيانات"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"تحذير بشأن قيود البيانات"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"دورة استخدام التطبيقات للبيانات"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ضبط تحذيرات استخدام البيانات"</string>
+    <string name="data_warning" msgid="116776633806885370">"تحذيرات البيانات"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ضبط الأحد الأقصى للبيانات"</string>
+    <string name="data_limit" msgid="227338836292511425">"الحد الأقصى للبيانات"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"وضع حد لاستخدام البيانات"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ستُوقف الوحدة الأساسية لمركبتك بيانات الجوّال بعد الوصول إلى الحد الأقصى الذي وضعته.\n\nولأنّ الوحدة الأساسية تقيس حجم استخدام البيانات بطريقة معيّنة وقد يحاسبك مشغّل شبكة الجوّال بطريقة مختلفة، ننصحك بوضع حدٍ معتدلٍ."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"إعداد نقاط الدخول اللاسلكية وإدارتها"</string>
     <string name="wifi_starting" msgid="473253087503153167">"جارٍ تفعيل Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"جارٍ إيقاف Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"جارٍ تحميل قائمة Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"تم إيقاف Wi-Fi."</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"تعذّر حذف الشبكة."</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"تعذّر الاتصال بالشبكة."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"إضافة شبكة"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"تم إيقاف Wi-Fi."</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"اتصال"</string>
     <string name="wifi_password" msgid="5565632142720292397">"كلمة المرور"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"عرض كلمة المرور"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"اسم الشبكة"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"إدخال SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"الأمان"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"قوة الإشارة"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"قوة الإشارة"</string>
     <string name="wifi_status" msgid="5688013206066543952">"الحالة"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"سرعة الربط"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"نطاق التردد"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"عنوان IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"عرض كلمة المرور"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"أدخِل اسم الشبكة."</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"أدخِل كلمة المرور."</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ضعيفة"</item>
-    <item msgid="2032262610626057081">"متوسطة"</item>
-    <item msgid="3859756017461098953">"جيدة"</item>
-    <item msgid="1521103743353335724">"ممتازة"</item>
+    <item msgid="7683058295076342057">"ضعيفة"</item>
+    <item msgid="1639222824821660744">"متوسطة"</item>
+    <item msgid="1838705897358163300">"جيدة"</item>
+    <item msgid="6067166649320533751">"ممتازة"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"بلوتوث"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"تفعيل البلوتوث"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"بلوتوث"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"تم إيقاف البلوتوث."</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d ميغابت في الثانية"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"٢٫٤ غيغاهرتز"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"٥ غيغاهرتز"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"تفاصيل الشبكة"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"عنوان MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"عنوان IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"قناع الشبكة الفرعية"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"نظام أسماء النطاقات"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"عناوين IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"البوابة"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"الإعدادات المفضّلة لشبكة Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"تفعيل شبكة Wi‑Fi تلقائيًا"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"سيتم تفعيل Wi‑Fi بالقرب من الشبكات المحفوظة العالية الجودة، مثل شبكتك المنزلية."</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"غير متاحة نظرًا لإيقاف خدمة الموقع. يُرجى تفعيل خدمة "<annotation id="link">"الموقع"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"هل تريد تفعيل ميزة البحث عن شبكات Wi‑Fi؟"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"تفعيل"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"تم تفعيل البحث عن شبكات Wi‑Fi."</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"التبديل إلى بيانات الجوال تلقائيًا"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"يمكنك استخدام بيانات الجوّال إذا تعذّر الدخول إلى الإنترنت عبر شبكة Wi‑Fi، وقد يتم فرض رسوم على استخدام البيانات."</string>
+    <string name="learn_more" msgid="8214605928933358604">"مزيد من المعلومات"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"بلوتوث"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"إدارة الاتصالات وتعيين اسم الجهاز وقابلية الاكتشاف"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"جهاز الكمبيوتر"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"سماعة الرأس"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"هاتف"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"تصوير"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"سماعة الأذن"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"جهاز إدخال طرفي"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"بلوتوث"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"الأجهزة التي تم إقرانها"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"الأجهزة المتوفرة"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"ليست هناك أجهزة تم إقرانها."</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"لا تتوفر أي أجهزة."</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"الجهاز الذي تم إقرانه"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"الاسم"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"استخدام مع"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"غيِّر اسم جهاز البلوتوث."</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"جهاز بدون اسم"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"الأجهزة المقترنة"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"إقران جهاز جديد"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"سيتمّ تشغيل بلوتوث للإقران."</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"هل تريد إلغاء ربط الجهاز؟"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"سيتمّ إلغاء ربط سيارتك بالجهاز <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"عنوان بلوتوث السيارة: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"عنوان البلوتوث للجهاز: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"اسم السيارة"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"إعادة تسمية هذه السيارة"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"إعادة تسمية الجهاز"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"إعادة تسمية"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"الأجهزة المُتاحة"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"الملفات الشخصية"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"طلب إقران البلوتوث"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"الإقران والاتصال"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"بلوتوث"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"رمز إقران البلوتوث"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"يشتمل رقم التعريف الشخصي على أحرف أو رموز."</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"اكتب رمز الإقران، ثم اضغط على \"رجوع\" أو \"إدخال\"."</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"0000 أو 1234 عادة"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"طلب الإقران"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"انقر للإقران مع <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"اللغات"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"اللغات والإدخال"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"لوحة المفاتيح"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"إدارة لوحات المفاتيح"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"إخراج النص إلى كلام"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"المحرّك المُفضَّل"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"المحرّك الحالي"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"معدل سرعة الكلام"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"درجة الصوت"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"إعادة الضبط"</string>
     <string name="sound_settings" msgid="3072423952331872246">"صوت"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"مستوى صوت الرنين"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"مستوى صوت التنقل"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"الوسائط"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"تعيين مستوى الصوت للموسيقى والفيديوهات"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"المنبّه"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"نغمة رنين الهاتف"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"الصوت التلقائي للإشعارات"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"الصوت التلقائي للتنبيهات"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"التطبيقات والإشعارات"</string>
+    <string name="all_applications" msgid="7798210477486822168">"إظهار جميع التطبيقات"</string>
+    <string name="default_applications" msgid="1558183275638697087">"التطبيقات التلقائية"</string>
     <string name="applications_settings" msgid="794261395191035632">"معلومات التطبيق"</string>
+    <string name="force_stop" msgid="2153183697014720520">"فرض الإيقاف"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"هل تريد فرض إيقاف التطبيق؟"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"في حال فرض إيقاف التطبيق، قد لا يعمل بشكل صحيح."</string>
     <string name="disable_text" msgid="4358165448648990820">"إيقاف"</string>
     <string name="enable_text" msgid="1794971777861881238">"تفعيل"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"إلغاء التثبيت"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"قد يؤدي إيقاف هذا التطبيق إلى عدم عمل كل من نظام التشغيل Android وتطبيقات أخرى على النحو المنشود."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"إيقاف التطبيق"</string>
     <string name="permissions_label" msgid="2701446753515612685">"الأذونات"</string>
     <string name="application_version_label" msgid="8556889839783311649">"الإصدار: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"لم يتم منح أي أذونات."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"لم يتم طلب أي أذونات."</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"استخدام البيانات"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"استخدام بيانات التطبيق"</string>
-    <string name="force_stop" msgid="2153183697014720520">"فرض الإيقاف"</string>
     <string name="computing_size" msgid="5791407621793083965">"جارٍ الحساب…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> إذن إضافي</item>
@@ -119,15 +170,39 @@
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> إذن إضافي</item>
       <item quantity="one">إذن واحد إضافي (<xliff:g id="COUNT_0">%d</xliff:g>)</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"المساعدة والإدخال الصوتي"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"تطبيق المساعد"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"استخدام نص من الشاشة"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"السماح للتطبيق المساعد بالوصول إلى محتوى الشاشة كالنص"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"استخدام لقطة الشاشة"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"السماح للتطبيق المساعد بالوصول إلى صورة للشاشة"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"خدمة الملء التلقائي"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"بدون"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"التطبيق التلقائي"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"سيتمكن المساعد من قراءة المعلومات عن التطبيقات قيد الاستخدام على نظامك، بما في ذلك المعلومات المرئية على شاشتك أو التي يمكن الوصول إليها داخل التطبيقات."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;تأكّد من أنك تثق بهذا التطبيق.&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; تستخدم البيانات المعروضة على الشاشة لتحديد ما يمكن ملؤه تلقائيًا."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"إضافة خدمة"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"الموقع الجغرافي"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"طلبات الموقع الجغرافي الأخيرة"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"لا توجد طلبات حديثة للموقع الجغرافي."</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"الأذونات على مستوى التطبيقات"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"البحث عن الموقع الجغرافي"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"خدمات الموقع الجغرافي"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"البحث عن شبكات Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"يمكنك السماح للتطبيقات والخدمات بالبحث عن الأجهزة المجاورة في أيّ وقت، حتى في حال إيقاف Wi‑Fi. ويمكن استخدام هذه البيانات مثلاً لتحسين الميزات والخدمات المستندة إلى الموقع الجغرافي."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"البحث عن بلوتوث"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"يمكنك السماح للتطبيقات والخدمات بالبحث عن الأجهزة المجاورة في أيّ وقت، حتى في حال إيقاف البلوتوث. ويمكن استخدام هذه البيانات مثلاً لتحسين الميزات والخدمات المستندة إلى الموقع الجغرافي."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"النظام"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"تحديثات النظام"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"تحديثات النظام"</string>
     <string name="firmware_version" msgid="8491753744549309333">"إصدار Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"مستوى رمز تصحيح أمان Android"</string>
     <string name="model_info" msgid="4966408071657934452">"الطراز"</string>
     <string name="baseband_version" msgid="2370088062235041897">"إصدار النطاق الأساسي"</string>
     <string name="kernel_version" msgid="7327212934187011508">"إصدار النواة"</string>
     <string name="build_number" msgid="3997326631001009102">"رقم الإصدار"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"عنوان البلوتوث"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"غير متوفرة"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"الحالة"</string>
     <string name="device_status" msgid="267298179806290920">"الحالة"</string>
@@ -144,12 +219,53 @@
     <string name="copyright_title" msgid="4220237202917417876">"حقوق الطبع والنشر"</string>
     <string name="license_title" msgid="936705938435249965">"الترخيص"</string>
     <string name="terms_title" msgid="5201471373602628765">"الأحكام والشروط"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"ترخيص WebView للنظام"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"تراخيص WebView للنظام"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"الخلفيات"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"الشركات الموفرة لصور القمر الصناعي:\n©2014 CNES / Astrium وDigitalGlobe وBluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"تراخيص الأطراف الثالثة"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"حدثت مشكلة أثناء تحميل التراخيص."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"جارٍ التحميل…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="zero">لا يفصلك الآن عن الوصول إلى مرحلة مطوّري البرامج سوى <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> خطوة.</item>
+      <item quantity="two">لا يفصلك الآن عن الوصول إلى مرحلة مطوّري البرامج سوى خطوتين (<xliff:g id="STEP_COUNT_1">%1$d</xliff:g>).</item>
+      <item quantity="few">لا يفصلك الآن عن الوصول إلى مرحلة مطوّري البرامج سوى <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> خطوات.</item>
+      <item quantity="many">لا يفصلك الآن عن الوصول إلى مرحلة مطوّري البرامج سوى <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> خطوة.</item>
+      <item quantity="other">لا يفصلك الآن عن الوصول إلى مرحلة مطوّري البرامج سوى <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> خطوة.</item>
+      <item quantity="one">لا يفصلك الآن عن الوصول إلى مرحلة مطوّري البرامج سوى خطوة (<xliff:g id="STEP_COUNT_0">%1$d</xliff:g>).</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"لقد أصبحت الآن مطوّر برامج."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"لا حاجة لذلك، فأنت مطوّر برامج فعلاً."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"خيارات المطوّرين"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"خيارات إعادة التعيين"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"إعادة تعيين الشبكة أو التطبيقات أو الجهاز"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"إعادة ضبط الشبكة"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"سيؤدي هذا الإجراء إلى إعادة ضبط جميع إعدادات الشبكة، بما في ذلك:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"بيانات الجوّال"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"بلوتوث"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"محو بيانات جميع بطاقات eSIM للمركبة"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"لن يلغي هذا الإجراء خطة الخدمة التي تستخدمها."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"تعذُّر إعادة ضبط شرائح eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"اختيار شبكة"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"إعادة ضبط الإعدادات"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"هل تريد إعادة الضبط؟"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"هل تريد إعادة ضبط جميع إعدادات الشبكة؟ لا يمكنك التراجع عن هذا الإجراء."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"إعادة ضبط الإعدادات"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"تمت إعادة ضبط إعدادات الشبكة."</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"إعادة ضبط خيارات التطبيقات المفضّلة"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"يؤدي ذلك إلى إعادة تعيين جميع الإعدادات المفضَّلة لما يلي:\n\n"<li>"التطبيقات الموقوفة"</li>\n<li>"إشعارات التطبيقات الموقوفة"</li>\n<li>"التطبيقات التلقائية للإجراءات"</li>\n<li>"القيود على البيانات الخلفية للتطبيقات"</li>\n<li>"أيّ قيود على الأذونات"</li>\n\n"ولن تفقد أيّ بيانات للتطبيقات."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"إعادة ضبط التطبيقات"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"تم إعادة ضبط خيارات التطبيقات المفضّلة"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"محو جميع البيانات (factory reset)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"سيؤدي هذا الإجراء إلى محو جميع البيانات من الوحدة الأساسية لمركبتك، بما في ذلك:\n\n"<li>"حسابك على Google"</li>\n<li>"بيانات وإعدادات النظام والتطبيقات"</li>\n<li>"التطبيقات التي تم تنزيلها"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"الحسابات التي سجَّلت الدخول إليها حاليًا:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"هناك مستخدمون آخرون موجودون على هذه المركبة."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"إعادة ضبط المركبة"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"هل تريد إعادة الضبط؟"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"هل تريد محو جميع المعلومات الشخصية والتطبيقات التي تم تنزيلها؟ لا يمكنك التراجع عن هذا الإجراء."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"محو جميع المعلومات والتطبيقات"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"جارٍ محو البيانات"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"يُرجى الانتظار..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"التاريخ والوقت"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"تعيين التاريخ والوقت"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"تعيين التاريخ والوقت والمنطقة الزمنية والتنسيقات"</string>
@@ -169,23 +285,63 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"ترتيب بحسب المنطقة الزمنية"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"التاريخ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"الوقت"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"إضافة مستخدم"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"إضافة حساب"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"حذف حساب مستخدم"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"مستخدم جديد"</string>
-    <string name="user_guest" msgid="3465399481257448601">"الضيف"</string>
     <string name="user_admin" msgid="1535484812908584809">"المشرف"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"تمّ تسجيل الدخول كمشرف."</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"جميع أذونات المشرفين"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"منح المستخدم دور المشرف"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"سيتمكن المستخدم من حذف حسابات المستخدمين، بما في ذلك حسابات المشرفين الآخرين، وإعادة ضبط النظام بحسب إعدادات المصنع."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"لا يمكن التراجع عن هذا الإجراء."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"منح المستخدم دور المشرف"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"إنشاء مستخدمين جدد"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"إجراء مكالمات هاتفية"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"المراسلة عبر بيانات جوّال السيارة"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"تثبيت تطبيقات جديدة"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"إلغاء تثبيت التطبيقات"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"إضافة مستخدم"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"مستخدم جديد"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"أتريد إضافة مستخدم جديد؟"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"عند إضافة مستخدم جديد، عليه إعداد مساحته."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"يمكن لأي مستخدم تحديث التطبيقات لجميع المستخدمين الآخرين."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"تم الوصول إلى أقصى عدد للمستخدمين"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="zero">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدم.</item>
+      <item quantity="two">يمكنك إنشاء ما يصل إلى مستخدمينِ (<xliff:g id="COUNT">%d</xliff:g>).</item>
+      <item quantity="few">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدمين.</item>
+      <item quantity="many">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدمًا.</item>
+      <item quantity="other">يمكنك إنشاء ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدم.</item>
+      <item quantity="one">يمكن إنشاء مستخدم واحد فقط.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"تعذّر إنشاء مستخدم جديد."</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"هل تريد حذف هذا المستخدم؟"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"سيتم حذف جميع التطبيقات والبيانات."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"تعذّر حذف المستخدم."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"رفض"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"إعادة المحاولة"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"حذف المستخدم الأخير؟"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"سيتم إنشاء مستخدم إداري جديد بعد حذف المستخدم المتبقي الوحيد لهذه السيارة."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"سيتم حذف جميع البيانات والإعدادات والتطبيقات المرتبطة بهذا المستخدم. وستحتاج إلى إعداد النظام مرة أخرى."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"اختر مسؤولًا جديدًا."</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"أنت بحاجة إلى مدير واحد على الأقل. ولحذف هذا المدير، اختر بديلًا أولًا."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"اختر المدير"</string>
+    <string name="user_guest" msgid="3465399481257448601">"الضيف"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ضيف"</string>
     <string name="user_switch" msgid="6544839750534690781">"تبديل"</string>
     <string name="current_user_name" msgid="3813671533249316823">"أنت (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"الاسم"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"لم يتم الإعداد."</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"تعديل اسم المستخدم"</string>
     <string name="users_list_title" msgid="770764290290240909">"المستخدمون"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"تمّ منح الأذونات للمستخدم %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"الحسابات"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"المستخدم"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"إضافة حساب"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"لم تتم إضافة أي حسابات."</string>
     <string name="account_list_title" msgid="7631588514613843065">"حسابات <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"مزامنة البيانات تلقائيًا"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"السماح للتطبيقات بتحديث البيانات تلقائيًا"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"أتريد تشغيل مزامنة البيانات تلقائيًا؟"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"سيتمّ نسخ أيّ تغييرات تجريها على حساباتك على الويب إلى جهازك تلقائيًا.\n\nوقد تعمل بعض الحسابات أيضًا على نسخ التغييرات التي تجريها على الهاتف إلى الويب تلقائيًا، فهذه هي طريقة عمل \"حساب Google\"."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"أتريد إيقاف مزامنة البيانات تلقائيًا؟"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"سيؤدي ذلك إلى الحفاظ على البيانات، ولكن ستحتاج إلى مزامنة كل حساب يدويًا لجمع المعلومات الحديثة. ولن تتلقى إشعارات عند إتمام التحديثات."</string>
     <string name="account_details_title" msgid="7529571432258448573">"معلومات الحساب"</string>
     <string name="add_account_title" msgid="5988746086885210040">"إضافة حساب"</string>
     <string name="add_an_account" msgid="1072285034300995091">"إضافة حساب"</string>
@@ -193,16 +349,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"إزالة الحساب"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"هل تريد إزالة الحساب؟"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ستؤدي إزالة هذا الحساب إلى حذف جميع الرسائل وجهات الاتصال والبيانات الأخرى من الجهاز."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"لا يسمح المشرف بإجراء هذا التغيير."</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"أتريد إزالة هذا المستخدم؟"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"سيتم حذف جميع التطبيقات والبيانات."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"تعذّرت إزالة المستخدم."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"إعادة المحاولة؟"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"تجاهل"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"إعادة المحاولة"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"أتريد إضافة مستخدم جديد؟"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"عند إضافة مستخدم جديد، عليه إعداد مساحته."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"يمكن لأي مستخدم تحديث التطبيقات لجميع المستخدمين الآخرين."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"أخفق حذف الحساب."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"مزامنة الحساب"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"تمّ تفعيل المزامنة لـ <xliff:g id="ID_1">%1$d</xliff:g> من إجمالي <xliff:g id="ID_2">%2$d</xliff:g> عنصر."</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"المزامنة مفعَّلة لكل العناصر."</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"المزامنة متوقفة لكل العناصر."</string>
+    <string name="sync_disabled" msgid="393531064334628258">"المزامنة متوقفة."</string>
+    <string name="sync_error" msgid="6698021343089247914">"خطأ في المزامنة"</string>
+    <string name="last_synced" msgid="4745124489150101529">"تاريخ آخر مزامنة: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"تجري المزامنة الآن…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"انقُر للمزامنة الآن<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>."</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"المزامنة الآن"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"إلغاء المزامنة"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"تواجه المزامنة حاليًا بعض المشاكل. وسوف تكون متاحة خلال وقت قصير."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"الأمان"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"قفل الشاشة"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"بدون"</string>
@@ -210,7 +370,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"رقم التعريف الشخصي"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"كلمة المرور"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"اختيار نوع القفل"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"خيارات قفل الشاشة"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"خيارات القفل"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"أدخل النقش"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"تأكيد"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"إعادة رسم النقش"</string>
@@ -220,7 +380,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"تعيين قفل شاشة"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"اختيار رقم التعريف الشخصي"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"اختيار النّقش"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"اختيار كلمة المرور"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"اختيار كلمة المرور"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"قفل الشاشة الحالي"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"للحفاظ على الأمان، يجب تعيين نقش."</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"محو"</string>
@@ -316,7 +476,32 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"حظرَ مشرف تكنولوجيا المعلومات استخدام كلمات المرور الشائعة. جرِّب استخدام كلمة مرور مختلفة."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"لا يُسمح باستخدام الترتيب التصاعدي أو التنازلي أو المكرر للأرقام."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"خيارات قفل الشاشة"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : قبل <xliff:g id="NUM_DAYS">%3$s</xliff:g> يوم"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"إضافة جهاز موثوق به"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"الأجهزة الموثوق بها"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> جهاز</item>
+      <item quantity="two">جهازان (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> أجهزة</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> جهازًا</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> جهاز</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> جهاز</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"سيتمكّن <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> من فتح هذه السيارة عند توصيله. وإذا حصل شخص على <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> التابع لك، قد يتمكّن من الدخول إلى هذا الجهاز."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"تأكيد"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"إزالة الجهاز الموثوق به"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"تم"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"استخدِم التطبيق المصاحب لإعداد جهاز موثوق به. بعد إعداد الجهاز، ستتمكّن من فتح ملفك الشخصي للمستخدم عندما يتم رصد هاتفك بواسطة المركبة."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. تنزيل التطبيق المصاحب على هاتفك"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. اختيار <xliff:g id="CAR_NAME">%1$s</xliff:g> على هاتفك لإقران الأجهزة"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"يتعذّر على Smart Lock رصد الميزات الأمنية لهذا الجهاز. للمساعدة في حماية سيارتك، لن يتمكّن الجهاز الموثوق به من أن يُبقي سيارتك مفتوحة إلا إذا سبقَ وتم فتحها بواسطتك. ويمكن للجهاز الموثوق به أن يُبقي سيارتك مفتوحة عندما يكون قريبًا منها، حتى لو كان يحمله شخص غيرك."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"إضافة <xliff:g id="DEVICE_NAME">%1$s</xliff:g> كجهاز موثوق به"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"تم إضافة <xliff:g id="DEVICE_NAME">%1$s</xliff:g> كجهاز موثوق به."</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"تعذّر تسجيل جهاز <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"سيتعيَّن عليك تحديد طريقة المصادقة بعد إضافة جهاز موثوق به. وإذا لم يكن بحوزتك جهازك الموثوق به، ستلزم المصادقة للوصول إلى ملفك الشخصي."</string>
     <string name="forget" msgid="3971143908183848527">"حذف"</string>
+    <string name="connect" msgid="5861699594602380150">"اتصال"</string>
+    <string name="disconnect" msgid="6140789953324820336">"قطع اتصال"</string>
     <string name="delete_button" msgid="5840500432614610850">"حذف"</string>
     <string name="remove_button" msgid="6664656962868194178">"إزالة"</string>
     <string name="cancel" msgid="750286395700355455">"إلغاء"</string>
@@ -326,8 +511,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"خروج من وضع العرض التوضيحي"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"سيؤدي هذا إلى حذف حساب العرض التوضيحي وإعادة الضبط بحسب بيانات المصنع على النظام. سيتم فقد جميع بيانات المستخدم."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"خروج من عرض توضيحي"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"الانتهاء من الإعداد"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ليس الآن"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"رفض"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"لا تتوفَّر الميزة أثناء القيادة."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"لا يمكن إضافة مستخدم أثناء القيادة."</string>
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
new file mode 100644
index 0000000..7e5c6f3
--- /dev/null
+++ b/res/values-as/strings.xml
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright 2018 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="settings_label" msgid="5147911978211079839">"ছেটিংবোৰ"</string>
+    <string name="more_settings_label" msgid="3867559443480110616">"অধিক"</string>
+    <string name="display_settings" msgid="5325515247739279185">"ডিছপ্লে’"</string>
+    <string name="brightness" msgid="2919605130898772866">"উজ্জ্বলতাৰ স্তৰ"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"অভিযোজিত উজ্জ্বলতা"</string>
+    <string name="auto_brightness_summary" msgid="4741887033140384352">"উপলব্ধ পোহৰ অনুযায়ী উজ্জ্বলতাৰ পৰিমাণ অপ্টিমাইজ কৰক"</string>
+    <string name="condition_night_display_title" msgid="3777509730126972675">"ৰাতিৰ লাইট অন হৈ আছে"</string>
+    <string name="keywords_display" msgid="3978416985146943922">"স্ক্ৰীণ, টাচ্চ স্ক্ৰীণ"</string>
+    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"অনুজ্জ্বল স্ক্ৰীণ, টাচ্চস্ক্ৰীণ, বেটাৰি"</string>
+    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"অনুজ্জ্বল স্ক্ৰীণ, টাচ্চস্ক্ৰীণ, বেটাৰি"</string>
+    <string name="keywords_display_night_display" msgid="2922294576679769957">"অনুজ্জ্বল স্ক্ৰীণ, ৰাতি, আভা"</string>
+    <string name="night_mode_tile_label" msgid="6603597795502131664">"নৈশ ম\'ড"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"নেটৱৰ্ক আৰু ইণ্টাৰনেট"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"ম’বাইল নেটৱৰ্ক"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"ম’বাইল ডেটা"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ম’বাইল নেটৱৰ্ক ব্যৱহাৰ কৰি ডেটা এক্সেছ কৰক"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"ম’বাইল ডেটা অফ কৰিবনে?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ডেটা ব্যৱহাৰ"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ডেটা ব্যৱহাৰৰ সকীয়নি আৰু সীমা"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"এপে ব্যৱহাৰ কৰা ডেটাৰ চক্ৰ"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ডেটা ব্যৱহাৰৰ সকীয়নি ছেট কৰক"</string>
+    <string name="data_warning" msgid="116776633806885370">"ডেটা সকীয়নি"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ডেটাৰ সীমা ছেট কৰক"</string>
+    <string name="data_limit" msgid="227338836292511425">"ডেটাৰ সীমা"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ডেটাৰ ব্যৱহাৰ সীমিত কৰি থকা হৈছে"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"আপুনি ছেট কৰা সীমাত উপনীত হোৱাৰ লগে লগে আপোনাৰ বাহনৰ হে’ড ইউনিটে ম’বাইল ডেটা অফ কৰি দিব।\n\nযিহেতু ডেটাৰ ব্যৱহাৰ আপোনাৰ হে’ড ইউনিটে গণনা কৰে যিটো আপোনাৰ বাহকৰ গণনাৰ সৈতে একে নহ’বও পাৰে, গতিকে এক ৰক্ষণশীল সীমা বন্ধাৰ কথা বিবেচনা কৰক।"</string>
+    <string name="wifi_settings" msgid="7701477685273103841">"ৱাই-ফাই"</string>
+    <string name="wifi_starting" msgid="473253087503153167">"ৱাই-ফাই অন কৰি থকা হৈছে…"</string>
+    <string name="wifi_stopping" msgid="3534173972547890148">"ৱাই-ফাই অফ কৰি থকা হৈছে…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"ৱাই-ফাইৰ তালিকা ল’ড কৰি থকা হৈছে"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"ৱাই-ফাই অক্ষম কৰা হ’ল"</string>
+    <string name="wifi_failed_forget_message" msgid="121732682699377206">"নেটৱৰ্ক পাহৰিব পৰা নগ\'ল"</string>
+    <string name="wifi_failed_connect_message" msgid="4447498225022147324">"নেটৱৰ্কৰ সৈতে সংযোগ কৰিব পৰা নগ\'ল"</string>
+    <string name="wifi_setup_add_network" msgid="3660498520389954620">"নেটৱৰ্ক যোগ কৰক"</string>
+    <string name="wifi_setup_connect" msgid="3512399573397979101">"সংযোগ কৰক"</string>
+    <string name="wifi_password" msgid="5565632142720292397">"পাছৱৰ্ড"</string>
+    <string name="wifi_show_password" msgid="8423293211933521097">"পাছৱৰ্ড দেখুৱাওক"</string>
+    <string name="wifi_ssid" msgid="488604828159458741">"নেটৱৰ্কৰ নাম"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID দিয়ক"</string>
+    <string name="wifi_security" msgid="158358046038876532">"সুৰক্ষা"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"ছিগনেলৰ ক্ষমতা"</string>
+    <string name="wifi_status" msgid="5688013206066543952">"স্থিতি"</string>
+    <string name="wifi_speed" msgid="1650692446731850781">"লিংকৰ গতি"</string>
+    <string name="wifi_frequency" msgid="8951455949682864922">"ফ্ৰিকুৱেন্সী"</string>
+    <string name="wifi_ip_address" msgid="3128140627890954061">"আইপি ঠিকনা"</string>
+    <string name="show_password" msgid="2074628020371139240">"পাছৱৰ্ড দেখুৱাওক"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"নেটৱৰ্কৰ নাম দিয়ক"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"পাছৱৰ্ড দিয়ক"</string>
+    <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
+  <string-array name="wifi_signals">
+    <item msgid="4897376984576812606">"ক্ষীণ"</item>
+    <item msgid="7683058295076342057">"বেয়া"</item>
+    <item msgid="1639222824821660744">"ঠিকে আছে"</item>
+    <item msgid="1838705897358163300">"ভাল"</item>
+    <item msgid="6067166649320533751">"বৰ ভাল"</item>
+  </string-array>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d এমবিপিএছ"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"২.৪ গিগাহাৰ্টজ"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"৫ গিগাহাৰ্টজ"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"নেটৱৰ্কৰ সবিশেষ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ঠিকনা"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ঠিকনা"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"ছাবনেট মাস্ক"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ঠিকনা"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"গে’টৱে’"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"ৱাই-ফাইৰ অগ্ৰাধিকাৰ"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"ৱাই-ফাই স্বয়ংক্ৰিয়ভাৱে অন কৰক"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"আপোনাৰ ঘৰৰ নেটৱৰ্কৰ দৰে ছেভ কৰি থোৱা উচ্চ গুণগত মানৰ নেটৱৰ্কৰ ওচৰ পালে ৱাই-ফাই পুনৰ অন হ\'ব"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"অৱস্থান সেৱা অফ কৰি থোৱা কাৰণে উপলব্ধ নহয়। "<annotation id="link">"অৱস্থান"</annotation>" অন কৰক।"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"ৱাই-ফাই স্কেনিঙৰ সুবিধাটো অন কৰিবনে?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"অন কৰক"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"ৱাই-ফাই স্কেনিঙৰ সুবিধাটো অন কৰা আছে"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"স্বয়ংক্ৰিয়ভাৱে ম’বাইল ডেটালৈ সলনি কৰক"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"ৱাই-ফাইত ইণ্টাৰনেট নাথাকিলে ম’বাইল ডেটা ব্যৱহাৰ কৰক। ডেটাৰ খৰচ বহন কৰিবলগীয়া হ’ব পাৰে।"</string>
+    <string name="learn_more" msgid="8214605928933358604">"অধিক জানক"</string>
+    <string name="bluetooth_settings_title" msgid="3794688574569688649">"ব্লুটুথ"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"নাম নথকা ডিভাইচ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"যোৰা লগোৱা ডিভাইচসমূহ"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"নতুন ডিভাইচ যোৰা লগাওক"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"যোৰা লগাবলৈ ব্লুটুথ অন হ’ব"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ডিভাইচৰ সংযোগ বিচ্ছিন্ন কৰিবনে?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"আপোনাৰ বাহনৰ সৈতে <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ৰ সংযোগ বিচ্ছিন্ন হ’ব।"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"বাহনৰ ব্লুটুথৰ ঠিকনা: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ডিভাইচৰ ব্লুটুথৰ ঠিকনা: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"বাহনৰ নাম"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"এই বাহনৰ নতুন নাম দিয়ক"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ডিভাইচৰ নতুন নাম দিয়ক"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"নতুন নাম দিয়ক"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"উপলব্ধ ডিভাইচসমূ্হ"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"প্ৰ’ফাইল"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
+    <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ব্লুটুথ যোৰা লগোৱাৰ অনুৰোধ"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"যোৰা লগাওক আৰু সংযোগ কৰক"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ব্লুটুথ যোৰ লগোৱা ক’ড"</string>
+    <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"পিনত বৰ্ণ বা প্ৰতীকবোৰ থাকে"</string>
+    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"যোৰা লগোৱা ক’ডটো টাইপ কৰক আৰু তাৰ পিছত ৰিটাৰ্ণ বা এণ্টাৰ কী হেঁচক"</string>
+    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ৰ সৈতে যোৰা লগাবনে?"</string>
+    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ক আপোনাৰ সম্পৰ্কসূচী আৰু কলৰ ইতিহাস চাবলৈ দিয়ক"</string>
+    <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"আপুনি এই পিনটো আনটো ডিভাইচত টাইপ কৰিবলগীয়াও হ’ব পাৰে৷"</string>
+    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"আপুনি এই পাছকীটো আনটো ডিভাইচত টাইপ কৰিবলগীয়াও হ’ব পাৰে৷"</string>
+    <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"১৬টা অংকযুক্ত হ\'ব লাগিব"</string>
+    <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"সচৰাচৰতে ০০০০ বা ১২৩৪"</string>
+    <string name="bluetooth_notif_title" msgid="8374602799367803335">"যোৰা লগোৱাৰ অনুৰোধ"</string>
+    <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ৰ লগত যোৰা লগাবলৈ টিপক"</string>
+    <string name="language_settings" msgid="2079258598337245546">"ভাষা"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ভাষা আৰু ইনপুট"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"কীব’ৰ্ড"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"কীব’ৰ্ড পৰিচালনা কৰক"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"পাঠৰ পৰা কথনৰ আউটপুট"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"অগ্ৰাধিকাৰপ্ৰাপ্ত ইঞ্জিন"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"বৰ্তমানৰ ইঞ্জিন"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"কথা কোৱাৰ হাৰ"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"পিচ্চ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"ৰিছেট কৰক"</string>
+    <string name="sound_settings" msgid="3072423952331872246">"ধ্বনি"</string>
+    <string name="ring_volume_title" msgid="3135241004980719442">"ৰিঙৰ ভলিউম"</string>
+    <string name="navi_volume_title" msgid="946292066759195165">"নেভিগেশ্বনৰ ভলিউম"</string>
+    <string name="incoming_call_volume_title" msgid="6972117872424656876">"ৰিংট’ন"</string>
+    <string name="notification_volume_title" msgid="6749411263197157876">"জাননী"</string>
+    <string name="media_volume_title" msgid="6697416686272606865">"মিডিয়া"</string>
+    <string name="media_volume_summary" msgid="2961762827637127239">"সংগীত আৰু ভিডিঅ’সমূহৰ বাবে ভলিউম ছেট কৰক"</string>
+    <string name="alarm_volume_title" msgid="840384014895796587">"এলাৰ্ম"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ফ’নৰ ৰিংট’ন"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"জাননীৰ ডিফ’ল্ট ধ্বনি"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"এলাৰ্মৰ ডিফ’ল্ট ধ্বনি"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"এপ্ আৰু জাননী"</string>
+    <string name="all_applications" msgid="7798210477486822168">"সকলো এপ্‌ দেখুৱাওক"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ডিফ’ল্ট এপ্"</string>
+    <string name="applications_settings" msgid="794261395191035632">"এপ সম্পৰ্কীয় তথ্য"</string>
+    <string name="force_stop" msgid="2153183697014720520">"বলেৰে ৰখাওক"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"বলেৰে বন্ধ কৰিবনে?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"আপুনি কোনো এপ্‌ বলেৰে বন্ধ কৰিবলৈ চেষ্টা কৰিলে ই অস্বাভাৱিক আচৰণ কৰিব পাৰে।"</string>
+    <string name="disable_text" msgid="4358165448648990820">"অক্ষম কৰক"</string>
+    <string name="enable_text" msgid="1794971777861881238">"সক্ষম কৰক"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"আনইনষ্টল কৰক"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"আপুনি যদি এই এপ্‌টো অক্ষম কৰে, তেন্তে Android আৰু অন্য এপ্‌সমূহে বিচৰাধৰণে আৰু কাম নকৰিব পাৰে।"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"এপ্‌টো অক্ষম কৰক"</string>
+    <string name="permissions_label" msgid="2701446753515612685">"অনুমতি"</string>
+    <string name="application_version_label" msgid="8556889839783311649">"সংস্কৰণ: %1$s"</string>
+    <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"কোনো অনুমতি দিয়া হোৱা নাই"</string>
+    <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"অনুমতি বিচৰা হোৱা নাই"</string>
+    <string name="data_usage_summary_title" msgid="4368024763485916986">"ডেটাৰ ব্যৱহাৰ"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"এপ্ ডেটাৰ ব্যৱহাৰ"</string>
+    <string name="computing_size" msgid="5791407621793083965">"গণনা কৰি থকা হৈছে…"</string>
+    <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>টা অতিৰিক্ত অনুমতি</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>টা অতিৰিক্ত অনুমতি</item>
+    </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"সহায় আৰু ধ্বনি ইনপুট"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"সহায়ক এপ্"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"স্ক্ৰীণৰ পৰা পাঠ ব্যৱহাৰ কৰক"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"স্ক্ৰীণৰ সমলসমূহ পাঠ ৰূপে চাবলৈ সহায়ক এপক অনুমতি দিয়ক"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"স্ক্ৰীণশ্বট ব্যৱহাৰ কৰক"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"সহায়ক এপ্‌টোক স্ক্ৰীণৰ কোনো ছবি এক্সেছ কৰিবলৈ অনুমতি দিয়ক"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"স্বয়ংপূৰ্তি সেৱা"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"নাই"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"বাছনিকৃত"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"এই সহায়কটোৱে আপোনাৰ ছিষ্টেমত ব্যৱহৃত হৈ থকা এপসমূহৰ বিষয়ে তথ্য পঢ়িব পাৰিব। সেই তথ্যসমূহৰ ভিতৰত আপোনাৰ স্ক্ৰীণত দেখা পোৱা বা এপে চাব পৰা তথ্যসমূহ অন্তৰ্ভুক্ত।"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;আপুনি এই এপটোক বিশ্বাস কৰাটো নিশ্চিত কৰক&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt;এ কি স্বয়ংপূৰ্তি কৰিব পাৰিব সেয়া আপোনাৰ স্ক্ৰীণত থকা সমল ব্যৱহাৰ কৰি নির্ধাৰণ কৰে।"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"সেৱা যোগ কৰক"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"অৱস্থান"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"শেহতীয়া অৱস্থানৰ অনুৰোধ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"শেহতীয়াকৈ কোনো এপে অৱস্থানৰ অনুৰোধ প্ৰেৰণ কৰা নাই"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"এপ্‌-স্তৰৰ অনুমতি"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"স্কেন কৰি থকা হৈছে…"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"অৱস্থান সেৱা"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"ৱাই-ফাই স্কেনিং"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"ব্লুটুথ অফ থকা অৱস্থাতো এপ্ আৰু সেৱাসমূহক যিকোনো সময়ত নিকটৱৰ্তী ডিভাইচবোৰ স্কেন কৰিবলৈ দিয়ক। ইয়াক অৱস্থান-নিৰ্ভৰ সুবিধা আৰু সেৱাসমূহ উন্নত কৰা আদি কাৰ্যত ব্যৱহাৰ কৰিব পাৰি।"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ব্লুটুথ স্কেনিং"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ব্লুটুথ অফ থকা অৱস্থাতো এপ্ আৰু সেৱাসমূহক যিকোনো সময়ত নিকটৱৰ্তী ডিভাইচবোৰ স্কেন কৰিবলৈ দিয়ক। ইয়াক অৱস্থান-নিৰ্ভৰ সুবিধা আৰু সেৱাসমূহ উন্নত কৰা আদি কাৰ্যত ব্যৱহাৰ কৰিব পাৰি।"</string>
+    <string name="system_setting_title" msgid="6864599341809463440">"ছিষ্টেম"</string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"ছিষ্টেম আপডে’ট"</string>
+    <string name="firmware_version" msgid="8491753744549309333">"Android সংস্কৰণ"</string>
+    <string name="security_patch" msgid="4794276590178386903">"Android সুৰক্ষা পেচ্চ স্তৰ"</string>
+    <string name="model_info" msgid="4966408071657934452">"ম\'ডেল"</string>
+    <string name="baseband_version" msgid="2370088062235041897">"বেইছবেণ্ডৰ সংস্কৰণ"</string>
+    <string name="kernel_version" msgid="7327212934187011508">"কাৰ্ণেলৰ সংস্কৰণ"</string>
+    <string name="build_number" msgid="3997326631001009102">"বিল্ড নম্বৰ"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ব্লুটুথৰ ঠিকনা"</string>
+    <string name="device_info_not_available" msgid="2095601973977376655">"উপলব্ধ নহয়"</string>
+    <string name="device_status_activity_title" msgid="4083567497305368200">"স্থিতি"</string>
+    <string name="device_status" msgid="267298179806290920">"স্থিতি"</string>
+    <string name="device_status_summary" product="tablet" msgid="600543254608862075">"বেটাৰিৰ অৱস্থা, নেটৱৰ্ক আৰু অন্যান্য তথ্য"</string>
+    <string name="device_status_summary" product="default" msgid="9130360324418117815">"ফ\'ন নম্বৰ, বেতাঁৰ সংকেত ইত্যাদি"</string>
+    <string name="about_settings" msgid="4329457966672592345">"ইয়াৰ বিষয়ে"</string>
+    <string name="about_summary" msgid="5374623866267691206">"Android <xliff:g id="VERSION">%1$s</xliff:g>"</string>
+    <string name="about_settings_summary" msgid="7975072809083281401">"আইনী তথ্য, স্থিতি, ছফটৱেৰৰ সংস্কৰণ চাওক"</string>
+    <string name="legal_information" msgid="1838443759229784762">"আইনী তথ্য"</string>
+    <string name="contributors_title" msgid="7698463793409916113">"অৱদানকাৰীসকল"</string>
+    <string name="manual" msgid="4819839169843240804">"মেনুএল"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"নিয়মৰ লেবেলবোৰ"</string>
+    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"সুৰক্ষা আৰু নিময় সম্পৰ্কীয় মেনুৱেল"</string>
+    <string name="copyright_title" msgid="4220237202917417876">"স্ৱত্ৱাধিকাৰ"</string>
+    <string name="license_title" msgid="936705938435249965">"অনুজ্ঞাপত্ৰ"</string>
+    <string name="terms_title" msgid="5201471373602628765">"নিয়ম আৰু চৰ্তাৱলী"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"ছিষ্টেম ৱেবভিউ অনুজ্ঞাপত্ৰ"</string>
+    <string name="wallpaper_attributions" msgid="9201272150014500697">"ৱালপেপাৰ"</string>
+    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"উপগ্ৰহ ছবি যোগানকাৰী:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"তৃতীয় পক্ষৰ অনুজ্ঞাপত্ৰ"</string>
+    <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"অনুজ্ঞাপত্ৰসমূহ ল\'ড কৰাত সমস্যা।"</string>
+    <string name="settings_license_activity_loading" msgid="6163263123009681841">"ল’ড হৈ আছে…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">আপুনি এতিয়া এজন বিকাশকৰ্তা হোৱাৰ পৰা <xliff:g id="STEP_COUNT_1">%1$d</xliff:g>টা পদক্ষেপ দূৰত।</item>
+      <item quantity="other">আপুনি এতিয়া এজন বিকাশকৰ্তা হোৱাৰ পৰা <xliff:g id="STEP_COUNT_1">%1$d</xliff:g>টা পদক্ষেপ দূৰত।</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"আপুনি এতিয়া এজন বিকাশকৰ্তা!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"কোনো প্ৰয়োজন নাই, আপুনি ইতিমধ্যে এজন বিকাশকৰ্তা।"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"বিকাশকৰ্তাৰ বিকল্পসমূহ"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"বিকল্পসমূহ ৰিছেট কৰক"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"নেটৱৰ্ক, এপসমূহ বা ডিভাইচৰ ৰিছেট সম্পৰ্কীয় বিকল্প"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"নেটৱৰ্ক ৰিছেট কৰক"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"এই কাৰ্যই সকলো নেটৱৰ্কৰ ছেটিংসমূহ ৰিছেট কৰিব, য’ত অন্তৰ্ভুক্ত আছে:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"ৱাই-ফাই"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"ম’বাইল ডেটা"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ব্লুটুথ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"বাহনৰ সকলো eSIMs মচক"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"এইটোৱে আপোনাৰ সেৱাৰ আঁচনি বাতিল নকৰে।"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIMs ৰিছেট কৰিব নোৱাৰি"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"নেটৱৰ্ক বাছনি কৰক"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ছেটিংসমূহ ৰিছেট কৰক"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"ৰিছেট কৰিবনে?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"সকলো নেটৱৰ্কৰ ছেটিংসমূহ ৰিছেট কৰিবনে? আপুনি এই কাৰ্যটো আনডু কৰিব নোৱাৰিব!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ছেটিংসমূহ ৰিছেট কৰক"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"নেটৱৰ্কৰ ছেটিংসমূহ ৰিছেট কৰা হৈছে"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"এপৰ অগ্ৰাধিকাৰসমূহ ৰিছেট কৰক"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ইয়ে:\n\n"<li>"অক্ষম কৰি থোৱা এপ্"</li>\n<li>"অক্ষম কৰি থোৱা এপ্ জাননী"</li>\n<li>"কাৰ্যৰ ডিফ’ল্ট এপ্লিকেশ্বন"</li>\n<li>"এপৰ নেপথ্য ডেটা সীমাবদ্ধকৰণ"</li>\n<li>"যিকোনো অনুমতিৰ সীমাবদ্ধকৰণ"</li>"ৰ অগ্ৰাধিকাৰসমূহ ৰিছেট কৰিব\n\nআপুনি কোনো এপৰ ডেটা নেহেৰুৱায়।"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"এপসমূহ ৰিছেট কৰক"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"এপৰ অগ্ৰাধিকাৰসমূহ ৰিছেট কৰা হৈছে"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"সকলো ডেটা মচক (ফেক্টৰী ৰিছেট কৰক)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ইয়ে আপোনাৰ বাহনখনৰ হে’ড ইউনিটটোত থকা:\n\n"<li>"আপোনাৰ Google একাউণ্ট"</li>\n<li>"ছিষ্টেম আৰু এপ্‌ ডেটা আৰু ছেটিং "</li>\n<li>"ডাউনল’ড কৰা এপ্‌"</li>" আদিকে ধৰি সকলো ডেটা মচিব"</string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"আপুনি বৰ্তমান এই একাউণ্টসমূহত ছাইন ইন হৈ আছে:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"এই বাহনখনত আৰু ব্যৱহাৰকাৰী আছে।"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"বাহনখন ৰিছেট কৰক"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ৰিছেট কৰিবনে?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"আপোনাৰ ব্যক্তিগত সকলো তথ্য আৰু ডাউনল’ড কৰা সমস্ত এপ্‌ মচিবনে? আপুনি এই কাৰ্য পিছত আনডু কৰিব নোৱাৰিব!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"সকলো মচক"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"মচি থকা হৈছে"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"অনুগ্রহ কৰি অপেক্ষা কৰক…"</string>
+    <string name="date_and_time_settings_title" msgid="4058492663544475485">"তাৰিখ আৰু সময়"</string>
+    <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"তাৰিখ আৰু সময় ছেট কৰক"</string>
+    <string name="date_and_time_settings_summary" msgid="7669856855390804666">"তাৰিখ, সময়, সময় মণ্ডল আৰু ফৰমেটসমূহ ছেট কৰক"</string>
+    <string name="date_time_auto" msgid="3570339569471779767">"স্বয়ং ছেট কৰা তাৰিখ আৰু সময়"</string>
+    <string name="date_time_auto_summary" msgid="3311706425095342759">"নেটৱৰ্কে প্ৰদান কৰা সময় ব্যৱহাৰ কৰক"</string>
+    <string name="zone_auto" msgid="3701878581920206160">"স্বয়ংক্ৰিয় সময় মণ্ডল"</string>
+    <string name="zone_auto_summary" msgid="4345856882906981864">"নেটৱৰ্কে দিয়া সময় মণ্ডল ব্যৱহাৰ কৰক"</string>
+    <string name="date_time_24hour_title" msgid="3025576547136168692">"২৪ ঘণ্টীয়া ফৰমেট"</string>
+    <string name="date_time_24hour" msgid="1137618702556486913">"২৪ ঘণ্টীয়া ফৰমেট ব্যৱহাৰ কৰক"</string>
+    <string name="date_time_set_time_title" msgid="5884883050656937853">"সময়"</string>
+    <string name="date_time_set_time" msgid="6449555153906058248">"সময় ছেট কৰক"</string>
+    <string name="date_time_set_timezone_title" msgid="3001779256157093425">"সময় মণ্ডল"</string>
+    <string name="date_time_set_timezone" msgid="4759353576185916944">"সময় মণ্ডল বাছনি কৰক"</string>
+    <string name="date_time_set_date_title" msgid="6834785820357051138">"তাৰিখ"</string>
+    <string name="date_time_set_date" msgid="2537494485643283230">"তাৰিখ ছেট কৰক"</string>
+    <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"বৰ্ণ অনুসৰি ক্ৰমত সজাওক"</string>
+    <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"সময় মণ্ডল অনুসৰি সজাওক"</string>
+    <string name="date_picker_title" msgid="1533614225273770178">"তাৰিখ"</string>
+    <string name="time_picker_title" msgid="7436045944320504639">"সময়"</string>
+    <string name="user_admin" msgid="1535484812908584809">"প্ৰশাসক"</string>
+    <string name="signed_in_admin_user" msgid="1267225622818673274">"প্ৰশাসক হিচাপে ছাইন ইন হৈ আছে"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"সকলো প্ৰশাসকীয় অনুমতি"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"প্ৰশাসকৰ দায়িত্ব দিয়ক"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"এই ব্যৱহাৰকাৰীজনে অন্য প্ৰশাসককে ধৰি যিকোনো ব্যৱহাৰকাৰীকে মচিব পাৰিব আৰু লগতে ছিষ্টেমটোৰ ফেক্টৰী ৰিছেট কৰিব পাৰিব।"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"এই কাৰ্যটো ওলোটাব নোৱাৰি।"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"হয়, প্ৰশাসকৰ দায়িত্ব দিয়ক"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰক"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ফ\'ন কল কৰক"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"গাড়ীৰ ম’বাইল ডেটাৰ জৰিয়তে বার্তালাপ"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"নতুন এপ্ ইনষ্টল কৰক"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"এপসমূহ আনইনষ্টল কৰক"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ব্যৱহাৰকাৰী যোগ কৰক"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"নতুন ব্যৱহাৰকাৰী"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"নতুন ব্যৱহাৰকাৰী যোগ কৰেনে?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"আপুনি যেতিয়া কোনো ব্য়ৱহাৰকাৰীক যোগ কৰে সেই ব্য়ক্তিজনে নিজৰ বাবে খালী ঠাই ছেট আপ কৰা প্ৰয়োজন।"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"যিকোনো ব্য়ৱহাৰকাৰীয়ে সকলো ব্য়ৱহাৰকাৰীৰ বাবে এপসমূহ আপডে’ট কৰিব পাৰে।"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"অধিকতম ব্য়ৱহাৰকাৰী সৃষ্টি কৰা হ’ল"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">আপুনি <xliff:g id="COUNT">%d</xliff:g> জন পৰ্যন্ত ব্যৱহাৰকাৰী সৃষ্টি কৰিব পাৰে।</item>
+      <item quantity="other">আপুনি <xliff:g id="COUNT">%d</xliff:g> জন পৰ্যন্ত ব্যৱহাৰকাৰী সৃষ্টি কৰিব পাৰে।</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"নতুন ব্য়ৱহাৰকাৰী সৃষ্টি কৰিব পৰা নগ’ল"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"এই ব্যৱহাৰকাৰীক মচেনে?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"সকলো এপ্ আৰু ডেটা মচা হ’ব।"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ব্যৱহাৰকাৰীক মচিব পৰা নগ’ল।"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"অগ্ৰাহ্য কৰক"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"পুনৰায় চেষ্টা কৰক"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"অন্তিমজন ব্যৱহাৰকাৰীক মচেনে?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"এই গাড়ীখনৰ বাবে বাকী থকা একমাত্ৰ ব্যৱহাৰকাৰীজনক মচাৰ পিছত, এজন নতুন প্ৰশাসক ব্যৱহাৰকাৰী সৃষ্টি কৰা হ’ব।"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"এই ব্যৱহাৰকাৰীৰ লগত জড়িত সকলো ডেটা, ছেটিং আৰু এপ্ মচা হ’ব। আপুনি ছিষ্টেমটো আকৌ ছেট আপ কৰিব লাগিব।"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"নতুন প্ৰশাসক বাছনি কৰক"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"আপোনাক অতি কমেও এজন প্ৰশাসক দৰকাৰ। এইজনক মচিবলৈ হ’লে প্ৰথমে আপুনি এজন বিকল্প প্ৰশাসক নিৰ্বাচন কৰিব লাগিব।"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"প্ৰশাসক বাছনি কৰক"</string>
+    <string name="user_guest" msgid="3465399481257448601">"অতিথি"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"অতিথি"</string>
+    <string name="user_switch" msgid="6544839750534690781">"ছুইচ্চ"</string>
+    <string name="current_user_name" msgid="3813671533249316823">"আপুনি (%1$s)"</string>
+    <string name="user_name_label" msgid="3210832645046206845">"নাম"</string>
+    <string name="user_summary_not_set_up" msgid="1473688119241224145">"ছেট আপ কৰা হোৱা নাই"</string>
+    <string name="edit_user_name_title" msgid="6890782937520262478">"ব্যৱহাৰকাৰীৰ নাম সম্পাদনা কৰক"</string>
+    <string name="users_list_title" msgid="770764290290240909">"ব্যৱহাৰকাৰীসকল"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$sক অনুমতি প্ৰদান কৰা হ’ল"</string>
+    <string name="accounts_settings_title" msgid="436190037084293471">"একাউণ্টসমূহ"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"একাউণ্ট যোগ কৰক"</string>
+    <string name="no_accounts_added" msgid="5148163140691096055">"কোনো একাউণ্ট যোগ কৰা হোৱা নাই"</string>
+    <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>ৰ একাউণ্ট"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ডেটা স্বয়ংক্ৰিয়ভাৱে ছিংক কৰক"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"এপক স্বয়ংক্ৰিয়ভাৱে ডেটা ৰিফ্ৰে’শ্ব কৰিবলৈ দিয়ক"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ডেটা স্বয়ং-ছিংক অন কৰিবনে?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"আপুনি ৱেবৰ যোগেৰে আপোনাৰ একাউণ্টটোত কৰা যিকোনো সালসলনি স্বয়ংক্ৰিয়ভাৱে আপোনাৰ ফ’নত প্ৰতিফলিত হ’ব।\n\nকিছুমান একাউণ্টে আপুনি ফ’নত কৰা সালসলনিসমূহো স্বয়ংক্ৰিয়ভাৱে ৱেবলৈ প্ৰতিলিপি কৰিব পাৰে। এটা Google একাউণ্টে এই ধৰণে কাম কৰে।"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ডেটা স্বয়ং-ছিংক অফ কৰিবনে?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ইয়ে ডেটা ৰাহি কৰিব, কিন্তু আপুনি শেহতীয়া তথ্য পাবলৈ নিজে নিজে প্ৰতিটো একাউণ্ট ছিংক কৰিব লাগিব। আৰু আপডে’ট আহিলে আপুনি তাৰ জাননী নাপাব।"</string>
+    <string name="account_details_title" msgid="7529571432258448573">"একাউণ্টৰ তথ্য়"</string>
+    <string name="add_account_title" msgid="5988746086885210040">"একাউণ্ট যোগ কৰক"</string>
+    <string name="add_an_account" msgid="1072285034300995091">"একাউণ্ট যোগ কৰক"</string>
+    <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"সীমিত প্ৰ\'ফাইলসমূহে একাউণ্ট যোগ কৰিব নোৱাৰে"</string>
+    <string name="remove_account_title" msgid="8840386525787836381">"একাউণ্ট আঁতৰাওক"</string>
+    <string name="really_remove_account_title" msgid="3555164432587924900">"একাউণ্ট আঁতৰাবনে?"</string>
+    <string name="really_remove_account_message" msgid="4296769280849579900">"এই একাউণ্টটো আঁতৰালে ডিভাইচৰ পৰা ইয়াৰ সকলো বাৰ্তা, সম্পৰ্কসূচী আৰু অন্য ডেটা মচা হ\'ব!"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"একাউণ্ট আঁতৰাব পৰা নগ’ল।"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"একাউণ্ট ছিংক"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g>টা আইটেমৰ <xliff:g id="ID_1">%1$d</xliff:g>টাৰ বাবে ছিংক অন হৈ আছে"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"সকলো বস্তুৰ বাবে ছিংক অন হৈ আছে"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"সকলো বস্তুৰ বাবে ছিংক অফ হৈ আছে"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"ছিংক অফ কৰা আছে"</string>
+    <string name="sync_error" msgid="6698021343089247914">"ছিংকৰ আসোঁৱাহ"</string>
+    <string name="last_synced" msgid="4745124489150101529">"অন্তিমবাৰ ছিংক কৰাৰ সময় <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"এতিয়া ছিংক কৰি থকা হৈছে…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"এতিয়াই ছিংক কৰিবলৈ টিপক<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"এতিয়া ছিংক কৰক"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ছিংক বাতিল কৰক"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"ছিংকে সমস্যাৰ সন্মুখীন হৈছে। ই অলপ পিছতে ঠিক হ’ব।"</string>
+    <string name="security_settings_title" msgid="6955331714774709746">"সুৰক্ষা"</string>
+    <string name="security_settings_subtitle" msgid="2244635550239273229">"স্ক্ৰীণ লক"</string>
+    <string name="security_lock_none" msgid="1054645093754839638">"নাই"</string>
+    <string name="security_lock_pattern" msgid="1174352995619563104">"আৰ্হি"</string>
+    <string name="security_lock_pin" msgid="4891899974369503200">"পিন"</string>
+    <string name="security_lock_password" msgid="4420203740048322494">"পাছৱৰ্ড"</string>
+    <string name="lock_settings_picker_title" msgid="6590330165050361632">"কোনো লকৰ প্ৰকাৰ বাছক"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"স্ক্ৰীণ লকৰ বিকল্প"</string>
+    <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"আপোনাৰ আৰ্হি দিয়ক"</string>
+    <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"নিশ্চিত কৰক"</string>
+    <string name="lockpattern_restart_button_text" msgid="9355771277617537">"আকৌ আঁকক"</string>
+    <string name="continue_button_text" msgid="5129979170426836641">"অব্যাহত ৰাখক"</string>
+    <string name="lockscreen_retry_button_text" msgid="5314212350698701242">"পুনৰ চেষ্টা কৰক"</string>
+    <string name="lockscreen_skip_button_text" msgid="3755748786396198091">"এৰি যাওক"</string>
+    <string name="set_screen_lock" msgid="5239317292691332780">"স্ক্ৰীণ ছেট কৰক"</string>
+    <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"আপোনাৰ পিন বাছনি কৰক"</string>
+    <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"আপোনাৰ আৰ্হি বাছক"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"আপোনাৰ পাছৱৰ্ড বাছনি কৰক"</string>
+    <string name="current_screen_lock" msgid="637651611145979587">"বৰ্তমান ব্যৱহাৰ হৈ থকা স্ক্ৰীণ লক"</string>
+    <string name="choose_lock_pattern_message" msgid="6242765203541309524">"সুৰক্ষাৰ বাবে কোনো আৰ্হি ছেট কৰক"</string>
+    <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"মচক"</string>
+    <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"বাতিল কৰক"</string>
+    <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"আপোনাৰ নতুন আনলক আৰ্হি"</string>
+    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"লক খোলাৰ আৰ্হি আঁকক"</string>
+    <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"আৰ্হি অঁকা কাৰ্য হ\'লে আঙুলিটো উঠাওক"</string>
+    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"আৰ্হি ৰেক\'ৰ্ড কৰা হ’ল"</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"নিশ্চিত কৰিবলৈ আৰ্হিটো আকৌ আঁকক"</string>
+    <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"কমেও ৪টা বিন্দু লগ লগাই আকৌ চেষ্টা কৰক।"</string>
+    <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"ভুল আৰ্হি"</string>
+    <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"লক খোলাৰ আৰ্হি অঁকা উপায়"</string>
+    <string name="error_saving_lockpattern" msgid="2933512812768570130">"আৰ্হি ছেভ কৰোঁতে আঁসোৱাহ"</string>
+    <string name="okay" msgid="4589873324439764349">"ঠিক আছে"</string>
+    <string name="remove_screen_lock_title" msgid="1234382338764193387">"স্ক্ৰীণ লক আঁতৰাবনে?"</string>
+    <string name="remove_screen_lock_message" msgid="6675850371585564965">"এই কাৰ্যই সকলোকে আপোনাৰ একাউণ্টৰ এক্সেছ দিব"</string>
+    <string name="lock_settings_enter_pin" msgid="1669172111244633904">"আপোনাৰ পিন দিয়ক"</string>
+    <string name="lock_settings_enter_password" msgid="2636669926649496367">"আপোনাৰ পাছৱৰ্ড দিয়ক"</string>
+    <string name="choose_lock_pin_message" msgid="2963792070267774417">"সুৰক্ষাৰ বাবে কোনো পিন ছেট কৰক"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"আপোনাৰ পিনটো আকৌ দিয়ক"</string>
+    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"পিনটোত কমেও ৪টা অংক থাকিব লাগিব"</string>
+    <string name="lockpin_invalid_pin" msgid="2149191577096327424">"অমান্য় পিন, কমেও ৪টা সংখ্য়া হ\'ব লাগিব।"</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"পিনবিলাক মিলা নাই"</string>
+    <string name="error_saving_lockpin" msgid="9011960139736000393">"পিন ছেভ কৰোঁতে আঁসোৱাহ"</string>
+    <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"ভুল পিন"</string>
+    <string name="lockscreen_wrong_password" msgid="5757087577162231825">"ভুল পাছৱৰ্ড"</string>
+    <string name="choose_lock_password_message" msgid="6124341145027370784">"সুৰক্ষাৰ বাবে কোনো পাছৱৰ্ড ছেট কৰক"</string>
+    <string name="confirm_your_password_header" msgid="7052891840366724938">"আপোনাৰ পাছৱৰ্ডটো আকৌ দিয়ক"</string>
+    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"পাছৱৰ্ড মিলা নাই"</string>
+    <string name="lockpassword_clear_label" msgid="6363680971025188064">"মচক"</string>
+    <string name="lockpassword_cancel_label" msgid="5791237697404166450">"বাতিল কৰক"</string>
+    <string name="lockpassword_confirm_label" msgid="5918463281546146953">"নিশ্চিত কৰক"</string>
+    <string name="choose_lock_password_hints" msgid="3903696950202491593">"অতি কমেও ৪টা বর্ণ থাকিব লাগিব"</string>
+    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা বৰ্ণ থাকিব লাগিব"</string>
+    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"পিনটোত অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা অংক থাকিব লাগিব"</string>
+    <string name="lockpassword_password_too_long" msgid="7530214940279491291">"<xliff:g id="NUMBER">%d</xliff:g>তকৈ কম সংখ্যক বৰ্ণ থাকিব লাগিব"</string>
+    <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g>তকৈ কম সংখ্যক অংকৰ হ\'ব লাগিব"</string>
+    <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"কেৱল ০-৯ৰ ভিতৰৰ অংকহে থাকিব লাগিব।"</string>
+    <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ডিভাইচৰ প্ৰশাসকে শেহতীয়া পিন ব্যৱহাৰ কৰিব নিদিয়ে"</string>
+    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"আপোনাৰ আইটি প্ৰশাসকে উমৈহতীয়া পিনবোৰ অৱৰোধ কৰি থৈছে৷ বেলেগ পিন ব্য়ৱহাৰ কৰি চাওক৷"</string>
+    <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ইয়াত অমান্য় বৰ্ণ থাকিব নোৱাৰে।"</string>
+    <string name="lockpassword_invalid_password" msgid="1690956113717418430">"অমান্য পাছৱর্ড, অতি কমেও ৪টা বর্ণ থাকিব লাগিব।"</string>
+    <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
+      <item quantity="one">অতি কমেও <xliff:g id="COUNT">%d</xliff:g> টা বৰ্ণ থাকিব লাগিব</item>
+      <item quantity="other">অতি কমেও <xliff:g id="COUNT">%d</xliff:g> বৰ্ণ থাকিব লাগিব</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_lowercase" formatted="false" msgid="2267487180744744833">
+      <item quantity="one">অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা সৰুফলাৰ বৰ্ণ থাকিব লাগিব</item>
+      <item quantity="other">অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা সৰুফলাৰ বৰ্ণ থাকিব লাগিব</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_uppercase" formatted="false" msgid="7999264563026517898">
+      <item quantity="one">অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা বৰফলাৰ বৰ্ণ থাকিব লাগিব</item>
+      <item quantity="other">অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা বৰফলাৰ বৰ্ণ থাকিব লাগিব</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_numeric" formatted="false" msgid="7935079851855168646">
+      <item quantity="one">কমেও <xliff:g id="COUNT">%d</xliff:g>টা অংক থাকিব লাগিব</item>
+      <item quantity="other">কমেও <xliff:g id="COUNT">%d</xliff:g>টা অংক থাকিব লাগিব</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_symbols" formatted="false" msgid="3994046435150094132">
+      <item quantity="one">অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা বিশেষ চিহ্ন থাকিব লাগিব</item>
+      <item quantity="other">অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা বিশেষ চিহ্ন থাকিব লাগিব</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_nonletter" formatted="false" msgid="6878486326748506524">
+      <item quantity="one">অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা সংখ্যা বা প্ৰতীক থাকিব লাগিব</item>
+      <item quantity="other">অতি কমেও <xliff:g id="COUNT">%d</xliff:g>টা সংখ্যা বা প্ৰতীক থাকিব লাগিব</item>
+    </plurals>
+    <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ডিভাইচৰ প্ৰশাসকে শেহতীয়া পাছৱৰ্ড ব্যৱহাৰ কৰিব নিদিয়ে"</string>
+    <string name="error_saving_password" msgid="8334882262622500658">"পাছৱৰ্ড ছেভ কৰোঁতে আঁসোৱাহ"</string>
+    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"আইটি প্ৰশাসকে উমৈহতীয়া পাছৱৰ্ডসমূহ অৱৰোধ কৰি থৈছে। বেলেগ পাছৱৰ্ড ব্যৱাহৰ কৰি চাওক।"</string>
+    <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"সংখ্যাবোৰৰ ঊৰ্ধ্বগামী, অধোগামী বা পুনৰাবৃত্তি ক্ৰমক অনুমতি দিয়া নহয়।"</string>
+    <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"স্ক্ৰীণ লক সম্পৰ্কীয় বিকল্প"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> দিন আগত"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"বিশ্বাসী ডিভাইচ যোগ কৰক"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"বিশ্বাসী ডিভাইচ"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>টা ডিভাইচ</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>টা ডিভাইচ</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"আপোনাৰ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g>এ সংযোগ হ\'লে এই গাড়ীখন আনলক কৰিব। আপোনাৰ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ব্যৱহাৰ কৰা লোকসকলে এই ডিভাইচলৈ এক্সেছ পাব পাৰে"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"নিশ্চিত কৰক"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"বিশ্বাসী ডিভাইচ আঁতৰাওক"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"কৰা হ’ল"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"এটা বিশ্বাসী ডিভাইচ ছেট আপ কৰিবলৈ সহযোগী এপ্‌টো ব্যৱহাৰ কৰক। ছেট আপ কৰাৰ পিছত যেতিয়া গাড়ীখনে আপোনাৰ ফ’নটো চিনাক্ত কৰিব তেতিয়া আপুনি নিজৰ ব্যৱহাৰকাৰীৰ প্ৰ’ফাইলটো আনলক কৰিব পাৰিব"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"১. আপোনাৰ ফ’নটোত সহযোগী এপ্‌টো ডাউনল’ড কৰক"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"২. ডিভাইচকেইটা যোৰা লগাবলৈ আপোনাৰ ফ’নটোত <xliff:g id="CAR_NAME">%1$s</xliff:g> বাছনি কৰক"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"স্মাৰ্ট লকে এই ডিভাইচটোত থকা সুৰক্ষা সুবিধা চিনাক্ত কৰিব পৰা নাই। আপোনাৰ গাড়ীখন নিৰাপদে ৰাখিবৰ কাৰণে আপুনি গাড়ীখন আনলক কৰাৰ পিছতহে বিশ্বাসী ডিভাইচটোৱে গাড়ীখন আনলক কৰি ৰাখিব পাৰিব। আপোনাৰ বিশ্বাসী ডিভাইচটো যেতিয়া আপোনাৰ গাড়ীখনৰ ওচৰত থাকে তেতিয়া সেইটোৱে গাড়ীখন আনলক কৰিব ৰাখিব পাৰিব, আনকি যেতিয়া ডিভাইচটো আনে লৈ থাকে তেতিয়াও।"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ডিভাইচটো বিশ্বাসী ডিভাইচ হিচাপে যোগ কৰক"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"বিশ্বাসী ডিভাইচ হিচাপে <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ক সফলতাৰে যোগ কৰা হ’ল"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> যোৰা লগাব পৰা নগ’ল"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"আপুনি কোনো বিশ্বাসী ডিভাইচ যোগ কৰিলে তাৰ পিছত এটা বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ পদ্ধতি ছেট কৰাৰ প্ৰয়োজন হ’ব। যদি বিশ্বাসী ডিভাইচটো আপোনাৰ সৈতে নাই তেন্তে আপোনাৰ প্ৰ’ফাইলটো এক্সেছ কৰিবলৈ বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ প্ৰয়োজন হ’ব।"</string>
+    <string name="forget" msgid="3971143908183848527">"পাহৰক"</string>
+    <string name="connect" msgid="5861699594602380150">"সংযোগ কৰক"</string>
+    <string name="disconnect" msgid="6140789953324820336">"সংযোগ বিচ্ছিন্ন কৰক"</string>
+    <string name="delete_button" msgid="5840500432614610850">"মচক"</string>
+    <string name="remove_button" msgid="6664656962868194178">"আঁতৰাওক"</string>
+    <string name="cancel" msgid="750286395700355455">"বাতিল কৰক"</string>
+    <string name="backspace_key" msgid="1545590866688979099">"Backspace কী"</string>
+    <string name="enter_key" msgid="2121394305541579468">"Enter কী"</string>
+    <string name="exit_retail_button_text" msgid="6093240315583384473">"ডেম\'ৰ পৰা বাহিৰ হওক"</string>
+    <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ডেম\' ম\'ডৰ পৰা বাহিৰ হওক"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"এই কামে ডেম\' একাউণ্টটো মচি পেলাব আৰু ছিষ্টেমটোৰ ফেক্টৰী ডেটা ৰিছেট কৰিব। সকলো ব্যৱহাৰকাৰীৰ ডেটা হেৰাব।"</string>
+    <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ডেম\'ৰ পৰা বাহিৰ হওক"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"অগ্ৰাহ্য কৰক"</string>
+    <string name="restricted_while_driving" msgid="6217369093121968299">"ড্ৰাইভিং কৰা সময়ত এই সুবিধাটো নাথাকে।"</string>
+    <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ড্ৰাইভিং কৰিথকা সময়ত ব্য়ৱহাৰকাৰী যোগ কৰিব নোৱাৰি।"</string>
+</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 62628bb..bc1aa22 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"solğun ekran, sensor ekran, batareya"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"solğun ekran, gecə, rəng"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Gecə rejimi"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Şəbəkə və internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobil şəbəkə"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobil data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Mobil şəbəkədən istifadə edərək dataya daxil olun"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobil data söndürülsün?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Data istifadəsi"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Data xəbərdarlığı və limiti"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Tətbiq datasının istifadə tsikli"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Data xəbərdarlığı ayarlayın"</string>
+    <string name="data_warning" msgid="116776633806885370">"Data xəbərdarlığı"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Data limiti ayarlayın"</string>
+    <string name="data_limit" msgid="227338836292511425">"Data limiti"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Data istifadəsinə limit qoyulması"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Ayarladığınız limitə çatdıqda, avtomobilinizin idarə paneli mobil datanı söndürəcək.\n\nData istifadəsi idarə paneli tərəfindən ölçüldüyü və operatorun hesablaması fərqli ola bildiyi üçün uyğun limit ayarlamağınız tövsiyə olunur."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Simsiz giriş nöqtələrini quraşdırın və idarə edin"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi yandırılır…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi söndürülür…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi siyahısı yüklənir"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi deaktiv edilib"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Şəbəkəni unutmaq alınmadı"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Şəbəkəyə qoşulmaq alınmadı"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Şəbəkə əlavə edin"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi deaktiv edilib"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Qoşun"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parol"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Parolu göstərin"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Şəbəkə adı"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID daxil edin"</string>
     <string name="wifi_security" msgid="158358046038876532">"Təhlükəsizlik"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Siqnal gücü"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Siqnal gücü"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Link sürəti"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Tezlik"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP ünvanı"</string>
+    <string name="show_password" msgid="2074628020371139240">"Parolu göstərin"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Şəbəkə adını daxil edin"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Parol daxil edin"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Zəif"</item>
-    <item msgid="2032262610626057081">"Kafi"</item>
-    <item msgid="3859756017461098953">"Yaxşı"</item>
-    <item msgid="1521103743353335724">"Əla"</item>
+    <item msgid="7683058295076342057">"Zəif"</item>
+    <item msgid="1639222824821660744">"Kafi"</item>
+    <item msgid="1838705897358163300">"Yaxşı"</item>
+    <item msgid="6067166649320533751">"Əla"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth aktivləşdirilsin?"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth deaktiv edildi"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Şəbəkə təfsilatları"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ünvanı"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ünvanı"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Alt şəbəkə maskası"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ünvanları"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Şlüz"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi tərcihləri"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi\'ı avtomatik olaraq aktiv edin"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi daxili şəbəkə kimi saxlanmış keyfiyyətli şəbəkə yanında aktiv ediləcək"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Əlçatan deyil çünki məkan deaktivdir. "<annotation id="link">"Məkanı"</annotation>" aktiv edin."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi skanı aktiv edilsin?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktiv edin"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi skanı aktiv edildi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Mobil dataya avtomatik keçin"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi internetə qoşulmayanda mobil datadan istifadə edin. Xidmət haqqı tutula bilər."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Ətraflı məlumat"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Bağlantıları idarə edin, cihaz adı və görünmə rejimini təyin edin"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Kompüter"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Qulaqlıq"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Görüntüləmə"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Qulaqlıq"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Daxiletmə periferiki"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Birləşdirilmiş cihazlar"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Əlçatan cihazlar"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Birləşdirilmiş cihaz yoxdur"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Əlçatan cihaz yoxdur"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Birləşdirilmiş cihaz"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Ad"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"İstifadə məqsədi"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth cihazının adını dəyişin"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Adsız cihaz"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Birləşdirilmiş cihazlar"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Yeni cihaz birləşdirin"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth birləşmək üçün aktiv ediləcək"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Cihaz ayrılsın?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Nəqliyyat vasitənizin <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə bağlantısı ayrılacaq."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Nəqliyyat vasitəsinin Bluetooth ünvanı: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Cihazın Bluetooth ünvanı: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nəqliyyat vasitəsinin adı"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Bu nəqliyyat vasitəsini yenidən adlandırın"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Cihazı yenidən adlandırın"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Yenidən adlandırın"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Əlçatan cihazlar"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profillər"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth birləşdirmə sorğusu"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"birləşdirin və əlaqə yaradın"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth birləşdirmə kodu"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN hərflər və ya simvollar ehtiva edir"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Birləşdirmə kodunu yazın, sonra Geriyə və ya Enter düyməsinə basın"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Adətən, 0000 və ya 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Birləşdirmə sorğusu"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə birləşdirmək üçün toxunun"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Dillər"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Dillər və daxiletmə"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Klaviatura"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Klaviaturaları idarə edin"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Mətndən-nitqə daxiletmə"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Tərcih edilən mühərrik"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Cari mühərrik"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Nitq sürəti"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tembr"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Sıfırlayın"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Səs"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Zəngin səs səviyyəsi"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Naviqasiyanın səs səviyyəsi"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Musiqi və video üçün səs səviyyəsi təyin edin"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Xəbərdarlıq siqnalı"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Telefon zəng səsi"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Defolt bildiriş səsi"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Defolt zəngli saat səsi"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Tətbiqlər və bildirişlər"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Bütün tətbiqləri göstərin"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Defolt tətbiqlər"</string>
     <string name="applications_settings" msgid="794261395191035632">"Tətbiq haqqında məlumat"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Məcburən dayansın"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Məcburi dayandırılsın?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Tətbiqi məcburi dayandırsanız, o, düzgün işləməyə bilər."</string>
     <string name="disable_text" msgid="4358165448648990820">"Deaktiv edin"</string>
     <string name="enable_text" msgid="1794971777861881238">"Aktiv edin"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Sistemdən silin"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Əgər bu tətbiqi deaktiv etsəniz, Android və digər tətbiqlər düzgün işlməyə bilər."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Tətbiqi deaktiv edin"</string>
     <string name="permissions_label" msgid="2701446753515612685">"İcazələr"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versiya: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"İcazə verilməyib"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"İcazə sorğusu göndərilməyib"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data istifadəsi"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Tətbiq data istifadəsi"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Məcburən dayansın"</string>
     <string name="computing_size" msgid="5791407621793083965">"Hesablanır…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> əlavə icazə</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> əlavə icazə</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Yardım və səslə daxiletmə"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Yardım tətbiqi"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Ekrandakı mətni istifadə edin"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Yardım tətbiqinə ekran məzmunlarına mətn kimi daxil olmağa icazə verin"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Ani görüntü istifadə edin"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Yardım tətbiqinə ekrandakı şəkilə daxil olmağa icazə verin"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Avtodoldurma xidməti"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Yoxdur"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Seçilib"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Asistent sisteminizdə istifadə olunan tətbiqlər haqqında məlumatı oxuya biləcək, bura ekranınızda görünən və ya tətbiqlər daxilində əlçatan olan məlumatlar da daxildir."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Bu tətbiqə etibar etdiyinizə əmin olun&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Avtodoldurma&gt;%1$s&lt;/xliff:g&gt; nəyin avtomatik doldurula biləcəyini müəyyən etmək üçün ekrandakılardan istifadə edir."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Xidmət əlavə edin"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Məkan"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Son Məkan Sorğuları"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Məkan sorğusu yoxdur"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Tətbiq səviyyəsi icazələri"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Skan edilir"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Məkan Xidmətləri"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi skan edilir"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Wi‑Fi deaktiv olsa belə, tətbiq və xidmətlərin Wi‑Fi şəbəkələrini istənilən zaman skan etməsinə icazə verin. Məsələn, bu, məkanla bağlı xüsusiyyət və xidmətləri təkmilləşdirmək üçün istifadə edilə bilər."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth skan edilir"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth deaktiv olsa belə, tətbiq və xidmətlərə yaxınlıqdakı cihazları istənilən zaman skan etməsinə icazə verin. Məsələn, bu, məkanla bağlı xüsusiyyət və xidmətləri təkmilləşdirmək üçün istifadə edilə bilər."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Sistem yenilənməsi"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Sistem yenilənməsi"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android versiyası"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android təhlükəsizlik gücləndirmə səviyyəsi"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband versiyası"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel versiyası"</string>
     <string name="build_number" msgid="3997326631001009102">"Versiya nömrəsi"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth ünvanı"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Əlçatan deyil"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Müəllif hüququ"</string>
     <string name="license_title" msgid="936705938435249965">"Lisenziya"</string>
     <string name="terms_title" msgid="5201471373602628765">"Şərtlər və qaydalar"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Sistem WebView Lisenziyası"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"WebGörüntü lisenziyalar sistemi"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Divar kağızları"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Peyk şəkillərini təmin edənlər:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Üçüncü tərəf lisenziyaları"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Lisenziyaların yüklənilməsində problem var."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Yüklənir…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">İndi tərtibatçı olmağınıza <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> addım qalıb.</item>
+      <item quantity="one">İndi tərtibatçı olmağınıza <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> addım qalıb.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Siz indi tərtibatçısınız!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Ehtiyac yoxdur, siz artıq tərtibatçısınız."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Tərtibatçı seçimləri"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Sıfırlama seçimləri"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Şəbəkə, tətbiqlər və ya cihaz sıfırlaması"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Şəbəkəni sıfırlayın"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Bu aşağıdakılar da daxil olmaqla bütün şəbəkə ayarlarını sıfırlayacaq:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobil məlumatlar"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Bütün nəqliyyat eSIM\'lərini silin"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Bu, xidmət planını ləğv etməyəcək."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM\'ləri sıfırlamaq mümkün deyil"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Şəbəkə seçin"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Ayarları sıfırlayın"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Sıfırlansın?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Bütün şəbəkə ayarları sıfırlansın? Bu əməliyyatı geri qaytara bilməzsiniz!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Ayarları sıfırlayın"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Şəbəkə ayarları sıfırlandı"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Tətbiq seçimlərini sıfırlayın"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Bu, aşağıdakılar üçün bütün tərcihləri sıfırlayacaq:\n\n"<li>" Deaktiv edilmiş tətbiqlər"</li>\n<li>"Deaktiv edilmiş tətbiq bildirişləri"</li>\n<li>"Əməliyyatlar üçün defolt tətbiqlər"</li>\n<li>"Tətbiqlər üçün arxa fon məlumatlarının məhdudlaşdırılması"</li>\n<li>"İstənilən icazə məhdudiyyətləri"</li>\n\n"Hər hansı tətbiq məlumatını itirməyəcəksiniz."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Tətbiqləri sıfırla"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Tətbiq seçimləri sıfırlanıb"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Bütün datanı silin (fabrika sıfırlaması)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Bu, avtomobilin əsas blokundakı bütün datanı siləcək, bura daxildir:\n\n"<li>"Google Hesabınız"</li>\n<li>"Sistem və tətbiq datası və ayarları"</li>\n<li>"Endirilmiş tətbiqlər"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Hazırda bu hesablara daxil olmusunuz:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Bu avtomobildə başqa istifadəçilər mövcuddur."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Avtomobili sıfırlayın"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Sıfırlansın?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Bütün şəxsi məlumatlarınız və endirilmiş tətbiqlər silinsin? Bu əməliyyatı geri qaytara bilməyəcəksiniz!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Hər şeyi silin"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Silinir"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Lütfən, gözləyin..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tarix və vaxt"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Tarix və vaxtı təyin edin"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Tarix, vaxt, vaxt zonası və formatları təyin edin"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Vaxt zonasına görə sıralayın"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Tarix"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Vaxt"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"İstifadəçi əlavə edin"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Hesab əlavə edin"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"İstifadəçinin silinməsi"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Yeni istifadəçi"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Qonaq"</string>
     <string name="user_admin" msgid="1535484812908584809">"Admin"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"İnzibatçı kimi daxil olunub"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Bütün admin icazələri"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Admin edin"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"İstifadəçi Adminlər daxil olmaqla istifadəçiləri silə və sistemi zavod ayarlarına qaytara biləcək."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Bu əməliyyat geri qaytarıla bilməz."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Bəli, admin edin"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Yeni istifadəçilər yaradın"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefon zəngləri edin"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Maşının mobil datası ilə mesajlaşma"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Yeni tətbiqlər quraşdırın"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Tətbiqləri ləğv edin"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"İstifadəçi əlavə edin"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Yeni istifadəçi"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Yeni istifadəçi əlavə edilsin?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yeni istifadəçi əlavə etdiyinizdə həmin şəxs öz yerini təyin etməlidir."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"İstənilən istifadəçi digər bütün istifadəçilər üçün tətbiqləri güncəlləyə bilər."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"İstifadəçi limitinə çatmısınız"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> sayda istifadəçiyə qədər yarada bilərsiniz.</item>
+      <item quantity="one">Yalnız bir istifadəçi yaradıla bilər.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Yeni istifadəçi yaradılmadı"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Bu istifadəçi silinsin?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Bütün tətbiqlər və data silinəcək."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"İstifadəçi silinmədi"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Silin"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Yenidən cəhd edin"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Son istifadəçi silinsin?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Bu avtomobil üçün qalan yeganə istifadəçini sildikdən sonra yeni admin istifadəçi yaradılacaq."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Bu istifadəçi ilə əlaqələndirilmiş bütün verilənlər, ayarlar və tətbiqlər silinəcək. Sistemi yenidən quraşdırmalı olacaqsınız."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Yeni admin seçin"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Ən azı bir admininiz olmalıdır. Bunu silmək üçün ilk növbədə əvəzləyici seçin."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Admin seçin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Qonaq"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Qonaq"</string>
     <string name="user_switch" msgid="6544839750534690781">"Dəyişin"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Siz (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ad"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Quraşdırılmayıb"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"İstifadəçi adını redaktə edin"</string>
     <string name="users_list_title" msgid="770764290290240909">"İstifadəçilər"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s üçün verilmiş icazələr"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Hesablar"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"İstifadəçi"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Hesab əlavə edin"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Hesab əlavə edilməyib"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> üçün hesablar"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Datanı avtomatik sinxronizasiya edin"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Tətbiqlərə datanı avtomatik yeniləmək icazəsi verin"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Data avto-sinx aktiv edilsin?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Vebdə hesabınıza etdiyiniz istənilən dəyişiklik avtomatik cihazınıza kopyalayacaq.\n\nBəzi hesablar telefonda etdiyiniz dəyişiklikləri avtomatik vebə kopyalaya bilər. Google Hesabı bu cür işləyir."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Data avto-sinx deaktiv edilsin?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Bu, data istifadəsinə qənaət edəcək, lakin Siz sonuncu məlumatları toplamaq üçün hər hesabı əl ilə sinxronlaşdırmalı olacaqsınız. Və güncəlləşmə olduqda Sizə bildiriş gəlməyəcək."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Hesab məlumatı"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Hesab əlavə edin"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Hesab əlavə edin"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Hesabı silin"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Hesab silinsin?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Bu hesabın silinməsi bütün mesajları, kontaktları və digər datanı cihazdan siləcək!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Admin bu dəyişikliyə icazə vermir"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Bu istifadəçi silinsin?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Bütün tətbiqlər və data silinəcək."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"İstifadəçini silmək mümkün olmadı."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Cəhd edilsin?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Keçin"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Yenidən cəhd edin"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Yeni istifadəçi əlavə edilsin?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yeni istifadəçi əlavə etdiyinizdə həmin şəxs öz yerini təyin etməlidir."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"İstənilən istifadəçi digər bütün istifadəçilər üçün tətbiqləri güncəlləyə bilər."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Hesab silinmədi."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Hesab sinxronizasiyası"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinxronizasiya <xliff:g id="ID_2">%2$d</xliff:g> elementin <xliff:g id="ID_1">%1$d</xliff:g> elementi üçün aktivdir"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Bütün elementlər üçün sinxronizasiya aktivdir"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Bütün elementlər üçün sinxronizasiya deaktivdir"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinxronizasiya deaktivdir"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sinxronizasiya xətası"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Son sinxronlaşdırma <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"İndi sinxronlaşdırılır…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"İndi sinxronlaşdırmaq üçün tıklayın<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"İndi sinxronizə edin"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Sinxronizasiyanı ləğv edin"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Hazırda sinxronizasiyada problemlər var. Bir azdan düzələcək."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Təhlükəsizlik"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekran kilidi"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Yoxdur"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Parol"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Kilid növü seçin"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Ekran kilidi seçimləri"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Kilidləmə seçimləri"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Modeli daxil edin"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Təsdiq edin"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Yenidən çəkin"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ekran kilidi təyin edin"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PİN seçin"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Modelinizi seçin"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Parolunuzu seçin"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Parolunuzu seçin"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Cari ekran kilidi"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Təhlükəsizlik üçün model təyin edin"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Silin"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Ümumi parollar IT admini tərəfindən blok edilib. Fərqli parolu sınayın."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Artan, azalan və ya təkrarlanan rəqəm ardıcıllığı qadağandır."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran kilidi seçimləri"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> gün əvvəl"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Güvənli cihaz əlavə edin"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Güvənli cihazlar"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> cihaz</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> cihaz</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> cihazınız qoşulduqda bu avtomobili kiliddən çıxaracaq. Kimsə <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> cihazınızı götürsə, bu cihaza daxil ola bilər"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Təsdiq"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Güvənli cihazı silin"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Hazırdır"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Etibarlı cihaz ayarlamaq üçün kompanyon tətbiq istifadə edin. Ayarlandıqdan sonra, telefonunuz avtomobil tərəfindən aşkarlandıqda istifadəçi profilinizi kiliddən çıxara biləcəksiniz"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Telefonunuza kompanyon tətbiqini endirin"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Cihazları birləşdirmək üçün telefonda <xliff:g id="CAR_NAME">%1$s</xliff:g> seçin"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock bu cihazın təhlükəsizlik xüsusiyyətlərini aşkarlaya bilmir. Telefonunuzu qorumağa kömək etmək üçün etibarlı cihaz yalnızca avtomobilin kilidini açdığınız zaman kilidi açıq vəziyyətdə saxlaya biləcək. Etibarlı cihazınız hətta başqasının əlində olarkən belə, yaxınlıqda olduqda avtomobili kilidi açıq saxlaya bilər."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazını etibarlı cihaz kimi əlavə edin"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> uğurla etibarlı cihaz kimi əlavə edildi"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qeydiyyatı alınmadı"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Etibarlı cihaz əlavə etdikdən sonra doğrulama metodu təyin edilməlidir. Etibarlı cihazınız üzərinizdə deyilsə, profilinizə giriş üçün doğrulama tələb olunacaq."</string>
     <string name="forget" msgid="3971143908183848527">"Unudun"</string>
+    <string name="connect" msgid="5861699594602380150">"Qoşun"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Ayırın"</string>
     <string name="delete_button" msgid="5840500432614610850">"Silin"</string>
     <string name="remove_button" msgid="6664656962868194178">"Silin"</string>
     <string name="cancel" msgid="750286395700355455">"Ləğv edin"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demo rejimdən çıxın"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Bu, demo hesabı siləcək və sistemi istehsalçı nizamlarına qaytaracaq."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demodan çıxın"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"quraşdırmanı bitirin"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"indi yox"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"RƏDD EDİN"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Xüsusiyyət avtomobil idarə edərkən əlçatan deyil."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Avtomobil idarə edərkən istifadəçi əlavə etmək mümkün deyil."</string>
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 07e2feb..2be4806 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zatamniti ekran, dodirni ekran, baterija"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"zatamniti ekran, noć, nijansa"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni režim"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilni podaci"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Koristi podatke preko mobilne mreže"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Želite li da isključite mobilne podatke?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Potrošnja podataka"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Upozorenje i ograničenja za podatke"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciklus potrošnje podataka aplikacije"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Podesite upozorenja o podacima"</string>
+    <string name="data_warning" msgid="116776633806885370">"Upozorenje na potrošnju podataka"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Podesite ograničenja za podatke"</string>
+    <string name="data_limit" msgid="227338836292511425">"Ograničenje potrošnje podataka"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ograničavanje potrošnje podataka"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Glavna jedinica u vozilu će isključiti mobilne podatke čim dostigne ograničenje koje ste podesili.\n\nPošto potrošnju podataka meri glavna jedinica, a mobilni operater može drugačije da računa potrošnju, razmislite o tome da podesite neko uobičajeno ograničenje."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Podešavajte bežične pristupne tačke i upravljajte njima"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi se uključuje..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi se isključuje..."</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Učitava se Wi‑Fi lista"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi je onemogućen"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Brisanje mreže nije uspelo"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Povezivanje sa mrežom nije uspelo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj mrežu"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi je onemogućen"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Poveži se"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Lozinka"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Prikaži lozinku"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Naziv mreže"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Unesite SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Bezbednost"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Jačina signala"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Jačina signala"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Brzina veze"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvencija"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP adresa"</string>
+    <string name="show_password" msgid="2074628020371139240">"Prikaži lozinku"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Unesite naziv mreže"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Unesite lozinku"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Slaba"</item>
-    <item msgid="2032262610626057081">"Zadovoljavajuća"</item>
-    <item msgid="3859756017461098953">"Dobra"</item>
-    <item msgid="1521103743353335724">"Odlična"</item>
+    <item msgid="7683058295076342057">"Slaba"</item>
+    <item msgid="1639222824821660744">"Zadovoljavajuća"</item>
+    <item msgid="1838705897358163300">"Dobra"</item>
+    <item msgid="6067166649320533751">"Odlična"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Uključi Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth je onemogućen"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d MB/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalji o mreži"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC adresa"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP adresa"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Maska podmreže"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 adrese"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Mrežni prolaz"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Podešavanja Wi‑Fi-ja"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Automatski uključi Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi će se ponovo uključiti u blizini sačuvanih mreža visokog kvaliteta, kao što je kućna mreža"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nije dostupno jer je lokacija isključena. Uključite "<annotation id="link">"lokaciju"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Želite li da uključite Wi-Fi skeniranje?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Uključi"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi skeniranje je uključeno"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automatski pređi na mobilne podatke"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Koristite mobilne podatke kada Wi‑Fi nema pristup internetu. Može da vam bude naplaćena potrošnja podataka."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Saznajte više"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Upravljajte vezama, podešavajte naziv i vidljivost uređaja"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Računar"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Slušalice"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Obrada slika"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Slušalice"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periferni uređaj za unos"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Upareni uređaji"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dostupni uređaji"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nema uparenih uređaja"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nema dostupnih uređaja"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Upareni uređaj"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Naziv"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Koristite za"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Promenite naziv Bluetooth uređaja"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Neimenovani uređaj"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Upareni uređaji"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Upari novi uređaj"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth će se uključiti radi uparivanja"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Prekidate vezu sa uređajem?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Vozilo će prekinuti vezu sa uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth adresa vozila: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth adresa uređaja: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Naziv vozila"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Preimenujte ovo vozilo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Preimenujte uređaj"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Preimenuj"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dostupni uređaji"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profili"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Zahtev za Bluetooth uparivanje"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Upari i poveži"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kôd za uparivanje sa Bluetooth uređajem"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN sadrži slova ili simbole"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Unesite kôd za uparivanje, pa pritisnite Return ili Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Obično 0000 ili 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Zahtev za uparivanje"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Dodirnite da biste uparili sa uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Jezici"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Jezici i unos"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastatura"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Upravljajte tastaturama"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Izlaz za pretv. teksta u govor"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Željeni mehanizam"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Aktuelni mehanizam"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Brzina govora"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Visina glasa"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Resetuj"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Zvuk"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Jačina zvuka zvona"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Jačina zvuka za navigaciju"</string>
@@ -100,31 +140,66 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Mediji"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Podesite jačinu zvuka za muziku i video snimke"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Melodija zvona telefona"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Podrazumevani zvuk obaveštenja"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Podrazumevani zvuk alarma"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikacije i obaveštenja"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Prikaži sve aplikacije"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Podrazumevane aplikacije"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacije o aplikaciji"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Prinudno zaustavi"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Želite li da prinudno zaustavite?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ako prinudno zaustavite aplikaciju, možda će se ponašati neočekivano."</string>
     <string name="disable_text" msgid="4358165448648990820">"Onemogući"</string>
     <string name="enable_text" msgid="1794971777861881238">"Omogući"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Deinstaliraj"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ako onemogućite ovu aplikaciju, Android i druge aplikacije možda više neće funkcionisati ispravno."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Onemogući aplikaciju"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Dozvole"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nijedna dozvola nije odobrena"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nijedna dozvola nije zahtevana"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Potrošnja podataka"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Potrošnja podataka aplik."</string>
-    <string name="force_stop" msgid="2153183697014720520">"Prinudno zaustavi"</string>
     <string name="computing_size" msgid="5791407621793083965">"Izračunava se..."</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dodatna dozvola</item>
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dodatne dozvole</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dodatnih dozvola</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Pomoćnik i glasovni unos"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplikacija za pomoć"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Koristi tekst sa ekrana"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Dozvolite aplikaciji za pomoć da pristupi sadržaju ekrana kao tekstu"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Koristi snimak ekrana"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Dozvolite aplikaciji za pomoć da pristupi slici ekrana"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Usluga automatskog popunjavanja"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ništa"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Izabrano"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Pomoćnik će moći da čita informacije o aplikacijama koje se koriste u sistemu, uključujući informacije vidljive na ekranu ili kojima može da se pristupa u okviru aplikacija."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Uverite se da je ova aplikacija pouzdana&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google automatsko popunjavanje&gt;%1$s&lt;/xliff:g&gt; koristi sadržaj ekrana za utvrđivanje podataka koji mogu automatski da se popune."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Dodajte uslugu"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lokacija"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedavni zahtevi za lokaciju"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahteva za lokaciju"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Dozvole na nivou aplikacija"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Skeniranje"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Usluge lokacije"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi skeniranje"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Dozvolite aplikacijama i uslugama da traže Wi‑Fi mreže u bilo kom trenutku, čak i kada je Wi‑Fi isključen. Ovo može da se koristi, na primer, za poboljšanje funkcija i usluga zasnovanih na lokaciji."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth skeniranje"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Dozvolite aplikacijama i uslugama da traže uređaje u blizini u svakom trenutku, čak i kada je Bluetooth isključen. Ovo može da se koristi, na primer, za poboljšanje funkcija i usluga zasnovanih na lokaciji."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Ažuriranja sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verzija Android-a"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivo bezbednosne zakrpe za Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Verzija osnovnog propusnog opsega"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Verzija jezgra"</string>
     <string name="build_number" msgid="3997326631001009102">"Broj verzije"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adresa"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nije dostupno"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -141,12 +216,50 @@
     <string name="copyright_title" msgid="4220237202917417876">"Autorska prava"</string>
     <string name="license_title" msgid="936705938435249965">"Licenca"</string>
     <string name="terms_title" msgid="5201471373602628765">"Uslovi i odredbe"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licenca za sistemski WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licence za sistemski WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Pozadine"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Dobavljači satelitskih slika:\n©2014. CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licence treće strane"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Došlo je do problema pri učitavanju licenci."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Učitava se…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Treba da obavite još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> korak da biste postali programer.</item>
+      <item quantity="few">Treba da obavite još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> koraka da biste postali programer.</item>
+      <item quantity="other">Treba da obavite još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> koraka da biste postali programer.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Postali ste programer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nema potrebe, već ste programer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opcije za programere"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opcije za resetovanje"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Resetovanje mreže, aplikacija ili uređaja"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Resetuj mrežu"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Ovim resetujete sva podešavanja mreže, uključujući:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi-Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobilni podaci"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Izbriši sve eSIM-ove vozila"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Time nećete otkazati tarifni paket."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Resetovanje eSIM-ova nije uspelo"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Izaberite mrežu"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Resetuj podešavanja"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Želite li da resetujete?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Želite li da resetujete sva podešavanja mreže? Ova radnja ne može da se opozove!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Resetuj podešavanja"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Podešavanja mreže su resetovana"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Resetuj podešavanja aplikacija"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Ovim će se resetovati sva podešavanja za:\n\n"<li>"Onemogućene aplikacije"</li>\n<li>"Obaveštenja o onemogućenim aplikacijama"</li>\n<li>"Podrazumevane aplikacije za radnje"</li>\n<li>"Ograničenja za pozadinske podatke za aplikacije"</li>\n<li>"Sva ograničenja za dozvole"</li>\n\n"Nećete izgubiti nikakve podatke aplikacije."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Resetuj aplikacije"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Podešavanja aplikacija su resetovana"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Obriši sve podatke"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Ovim brišete sve podatke iz interne memorije vozila, uključujući:\n\n"<li>"Google nalog"</li>\n<li>"podatke i podešavanja sistema i aplikacija"</li>\n<li>"preuzete aplikacije"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Trenutno ste prijavljeni na sledeće naloge:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"U ovom vozilu su prisutni i drugi korisnici."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Resetuj vozilo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Želite li da resetujete?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Želite li da obrišete sve lične podatke i preuzete aplikacije? Ne možete da opozovete ovu radnju!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Izbriši sve"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Briše se"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Sačekajte..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum i vreme"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Podesite datum i vreme"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Podesite datum, vreme, vremensku zonu i formate"</string>
@@ -166,23 +279,60 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sortiraj prema vremenskoj zoni"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Vreme"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj korisnika"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj nalog"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Izbrišite korisnika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gost"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prijavljeni ste kao administrator"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Sve dozvole za administratora"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Postavi za administratora"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Korisnik će moći da briše korisnike, uključujući ostale administratore, i da resetuje sistem na fabrička podešavanja."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Ova radnja ne može da se opozove."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, postavi za administatora"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Napravite nove korisnike"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Pozivajte"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS preko mobilnih podataka auta"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalirajte nove aplikacije"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Deinstalirajte aplikacije"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj korisnika"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Dodajete novog korisnika?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba treba da podesi svoj prostor."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može da ažurira aplikacije za sve ostale korisnike."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Dostignut maksimalni broj korisnika"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+      <item quantity="few">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+      <item quantity="other">Možete da napravite najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Pravljenje novog korisnika nije uspelo"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Želite da izbrišete ovog korisnika?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Sve aplikacije i podaci će biti izbrisani."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Brisanje korisnika nije uspelo."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Odbaci"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Probaj ponovo"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Želite da izbrišete poslednjeg korisnika?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Novi administrator će se napraviti kada izbrišete jedinog preostalog korisnika za ovaj automobil."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Izbrisaće se svi podaci, podešavanja i aplikacije koji su povezani sa ovim korisnikom. Moraćete da podesite sistem ponovo."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Odaberite novog administratora"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Treba vam najmanje jedan administrator. Da biste izbrisali ovog, prvo odaberite zamenu."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Odaberite administratora"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gost"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gost"</string>
     <string name="user_switch" msgid="6544839750534690781">"Prebacite na drugog korisnika"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Vi (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ime"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nije podešeno"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Izmenite ime korisnika"</string>
     <string name="users_list_title" msgid="770764290290240909">"Korisnici"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Dozvola je data korisniku %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Nalozi"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Korisnik"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj nalog"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nijedan nalog nije dodat"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Nalozi za korisnika <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatski sinhronizuj podatke"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Omogući aplikacijama da automatski osvežavaju podatke"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Uključiti autom. sinh. podataka?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Sve promene koje unesete na naloge na vebu će automatski biti kopirane na uređaj.\n\nNeki nalozi mogu i automatski da kopiraju na veb sve promene koje unesete na telefonu. Tako funkcioniše Google nalog."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Isključiti autom. sinh. podataka?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"To će se smanjiti potrošnju podataka, ali biće potrebno da ručno sinhronizujete svaki nalog da biste prikupili nedavne informacije. Nećete primati obaveštenja o ažuriranjima."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informacije o nalogu"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Dodajte nalog"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Dodajte nalog"</string>
@@ -190,16 +340,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Ukloni nalog"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Želite da uklonite nalog?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Ako uklonite ovaj nalog, izbrisaćete sve poruke, kontakte i druge podatke sa uređaja!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Administrator ne dozvoljava ovu promenu"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Uklanjate ovog korisnika?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Sve aplikacije i podaci će biti izbrisani."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Uklanjanje korisnika nije uspelo."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Želite da probate ponovo?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Odbaci"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Probaj ponovo"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodajete novog korisnika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba treba da podesi svoj prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može da ažurira aplikacije za sve ostale korisnike."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Uklanjanje naloga nije uspelo."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sinhronizacija naloga"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinhronizacija je uključena za određene stavke (<xliff:g id="ID_1">%1$d</xliff:g> od <xliff:g id="ID_2">%2$d</xliff:g>)"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinhronizacija je uključena za sve stavke"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinhronizacija je isključena za sve stavke"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinhronizacija je ISKLJ."</string>
+    <string name="sync_error" msgid="6698021343089247914">"Greška pri sinhronizaciji"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Poslednja sinhronizacija: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sinhronizacija je u toku..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Dodirnite da biste sinhronizovali odmah <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinhronizuj odmah"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Otkaži sinhronizaciju"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sinhronizacija trenutno ima problema. Uskoro će se nastaviti."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Bezbednost"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zaključavanje ekrana"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nema"</string>
@@ -207,7 +361,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Lozinka"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Izaberite zaključavanje"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opcije zaključavanja ekrana"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opcije zaključavanja"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Unesite šablon"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Potvrdi"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Ponovo nacrtajte"</string>
@@ -217,7 +371,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Podesite zaključavanje ekrana"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Odaberite PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Odaberite šablon"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Odaberite lozinku"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Odaberite lozinku"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Trenutno zaključavanje ekrana"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Podesite šablon iz bezbednosnih razloga"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Obriši"</string>
@@ -295,18 +449,39 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT administrator blokira česte lozinke. Izaberite drugu lozinku."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Rastući, opadajući ili ponovljeni niz cifara nije dozvoljen."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja ekrana"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pre <xliff:g id="NUM_DAYS">%3$s</xliff:g> dan(a)"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Dodaj pouzdani uređaj"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Pouzdani uređaji"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> uređaj</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> će otključati ovaj automobil kada se poveže. Ako vam neko uzme <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, možda će moći da pristupa ovom uređaju"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdi"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ukloni pouzdani uređaj"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Gotovo"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Pouzdani uređaj podesite pomoću prateće aplikacije. Kada ga podesite, moći ćete da otključavate korisnički profil kada vozilo otkrije telefon"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Preuzmite prateću aplikaciju na telefonu"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Izaberite <xliff:g id="CAR_NAME">%1$s</xliff:g> na telefonu da biste uparili uređaje"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ne može da otkrije bezbednosne funkcije ovog uređaja. Da bi automobil bio zaštićen, pouzdani uređaj će omogućiti da automobil ostane otključan samo kada ga vi prethodno otključate. Pouzdani uređaj može da omogući da automobil ostane otključan kada se nalazi u blizini, čak i kada ga neko drugi drži."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Dodajte uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kao pouzdani"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Dodali ste uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kao pouzdani"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Registracija uređaja <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije uspela"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Za dodavanje pouzdanog uređaja sledeće što treba da uradite je da podesite metod potvrde identiteta. Ako nemate pouzdani uređaj sa sobom, potvrda identiteta će biti potrebna da biste pristupili profilu."</string>
     <string name="forget" msgid="3971143908183848527">"Zaboravi"</string>
+    <string name="connect" msgid="5861699594602380150">"Poveži"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Prekini vezu"</string>
     <string name="delete_button" msgid="5840500432614610850">"Izbriši"</string>
     <string name="remove_button" msgid="6664656962868194178">"Ukloni"</string>
     <string name="cancel" msgid="750286395700355455">"Otkaži"</string>
     <string name="backspace_key" msgid="1545590866688979099">"Taster za brisanje unazad"</string>
     <string name="enter_key" msgid="2121394305541579468">"Taster Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Napustite režim demonstr."</string>
-    <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Da napustite režim dem.?"</string>
+    <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Da napustite režim demonstracije"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ovim ćete izbrisati nalog za demonstracije i resetovati sistem na fabrička podešavanja. Svi podaci korisnika će biti izgubljeni."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Napusti režim demonstr."</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"završite podešavanje"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ne sada"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ODBACI"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funkcija nije dostupna tokom vožnje."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Ne možete da dodate korisnika tokom vožnje."</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 40cc6c9..9069e77 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"зацемнены экран, сэнсарны экран, акумулятар"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"зацемнены экран, ноч, адценне"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Начны рэжым"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Сетка і інтэрнэт"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мабільная сетка"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мабільная перадача даных"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Доступ да даных па мабільнай сетцы"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Адключыць мабільную перадачу даных?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Выкарыстанне трафіка"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Папярэджанне і ліміт трафіка"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Цыкл выкарыстання трафіка праграм"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Папярэджваць пра ліміт трафіка"</string>
+    <string name="data_warning" msgid="116776633806885370">"Папярэджанне пра ліміт трафіка"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Задаць ліміт трафіка"</string>
+    <string name="data_limit" msgid="227338836292511425">"Ліміт трафіка"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Абмежаванне выкарыстання даных"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Пасля дасягнення вызначанага ліміту трафіка галаўная прылада аўтамабіля выключыць мабільную перадачу даных.\n\nПаколькі метады разліку выкарыстання трафіка галаўной прыладай і аператарам могуць адрознівацца, мы рэкамендуем устанавіць заніжаны ліміт."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Налада кропак доступу бесправадной сеткі і кіраванне імі"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Уключэнне Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Адключэнне Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Загружаецца спіс Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi адключаны"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Не атрымалася забыць сетку"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Не атрымалася падключыцца да сеткі"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Дадаць сетку"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi адключаны"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Падключыць"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Пароль"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Паказваць пароль"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Імя сеткі"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Увядзіце SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Бяспека"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Узровень сігналу"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Узровень сігналу"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Стан"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Хуткасць злучэння"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Частата"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-адрас"</string>
+    <string name="show_password" msgid="2074628020371139240">"Паказаць пароль"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Увядзіце назву сеткі"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Увядзіце пароль"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Слабы"</item>
-    <item msgid="2032262610626057081">"Дастатковы"</item>
-    <item msgid="3859756017461098953">"Добры"</item>
-    <item msgid="1521103743353335724">"Выдатны"</item>
+    <item msgid="7683058295076342057">"Слабы"</item>
+    <item msgid="1639222824821660744">"Дастатковы"</item>
+    <item msgid="1838705897358163300">"Добры"</item>
+    <item msgid="6067166649320533751">"Выдатны"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Уключыць Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth адключаны"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Мб/с"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 ГГц"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ГГц"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Інфармацыя пра сетку"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-адрас"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-адрас"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Маска падсеткі"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-адрасы"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Шлюз"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Параметры Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Уключаць Wi‑Fi аўтаматычна"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi уключаецца побач з захаванымі сеткамі (хатняй сеткай)"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Недаступна, бо трэба ўключыць "<annotation id="link">"Вызначэнне месцазнаходжання"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Уключыць сканіраванне Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Уключыць"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Сканіраванне Wi‑Fi уключана"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Пераключацца на мабільную перадачу даных аўтаматычна"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Выкарыстоўваць мабільную перадачу даных, калі сетка Wi-Fi страчвае доступ да інтэрнэту. Можа спаганяцца плата за выкарыстанне трафіка."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Даведацца больш"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Кіраваць падключэннямі, назвай і бачнасцю прылады"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Камп\'ютар"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Гарнітура"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Тэлефон"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Прылада візуалізацыі"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Навушнікі"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Перыферыйная прылада ўводу"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Спалучаныя прылады"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Даступныя прылады"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Няма спалучаных прылад"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Няма даступных прылад"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Спалучаная прылада"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Назва"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Выкарыстоўваць для"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Змяніце назву прылады Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Прылада без назвы"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Спалучаныя прылады"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Спалучыць новую прыладу"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Каб выканаць спалучэнне, будзе ўключаны Bluetooth"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Адключыць прыладу?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Ваш аўтамабіль будзе адключаны ад прылады \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Адрас Bluetooth аўтамабіля: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Адрас Bluetooth прылады: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Назва аўтамабіля"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Перайменаванне аўтамабіля"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Перайменаванне прылады"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Перайменаваць"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Даступныя прылады"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Профілі"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Запыт спалучэння па Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Спалучэнне i падключэнне"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код спалучэння па Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN-код складаецца з літар ці знакаў"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Увядзіце код спалучэння, потым націсніце кнопку \"Назад\" або \"Увод\""</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Звычайна 0000 або 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Запыт на спалучэнне"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Націсніце, каб спалучыцца з прыладай \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Мовы"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Мовы і спосаб уводу"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Клавіятура"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Кіраванне клавіятурамі"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Сінтэз маўлення"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Выбраны модуль"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Бягучы модуль"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Хуткасць маўлення"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Вышыня голасу"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Скінуць"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Гук"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Гучнасць званка"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Гучнасць навігацыі"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Мультымедыя"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Наладзіць гучнасць музыкі і відэа"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Будзільнік"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Рынгтон тэлефона"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Стандартны гук апавяшчэння"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Стандартны сігнал будзільніка"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Праграмы і апавяшчэнні"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Паказваць усе праграмы"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Стандартныя праграмы"</string>
     <string name="applications_settings" msgid="794261395191035632">"Звесткі пра праграму"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Прымусова спыніць"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Спыніць прымусова?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Прымусовае спыненне дзейнасці праграмы можа прывесці да збою."</string>
     <string name="disable_text" msgid="4358165448648990820">"Адключыць"</string>
     <string name="enable_text" msgid="1794971777861881238">"Уключыць"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Выдаліць"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Калі вы адключыце гэту праграму, іншыя праграмы могуць працаваць неналежным чынам."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Адключыць праграму"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Дазволы"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версія: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Няма дазволаў"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Няма запытаў на дазволы"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Выкарыстанне трафіка"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Выкарыстанне трафіка"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Прымусова спыніць"</string>
     <string name="computing_size" msgid="5791407621793083965">"Вылічэнне…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> дадатковы дазвол</item>
@@ -117,15 +168,39 @@
       <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> дадатковых дазволаў</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> дадатковага дазволу</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Памочнік і галасавы ўвод"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Праграма-памочнік"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Выкарыстоўваць тэкст з экрана"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Дазволіць праграме-памочніку мець доступ да змесціва на экране ў выглядзе тэксту"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Выкарыстоўваць скрыншот"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Дазволіць праграме-памочніку мець доступ да відарыса на экране"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Сэрвіс аўтазапаўнення"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Няма"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Выбрана"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Памочнік атрымае доступ да інфармацыі пра праграмы, якія выкарыстоўваюцца ў вашай сістэме, у тым ліку да інфармацыі, бачнай на вашым экране ці даступнай у праграмах."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Упэўніцеся, што давяраеце гэтай праграме&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Аўтазапаўненне Google&gt;%1$s&lt;/xliff:g&gt; выкарыстоўвае тое, што знаходзіцца на вашым экране, каб вызначыць, што можна запоўніць аўтаматычна."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Дадаць службу"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Месцазнаходжанне"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Нядаўнія запыты геаданых"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Няма нядаўніх запытаў геаданых"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Дазволы на ўзроўні праграм"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Сканіраванне"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Службы геалакацыі"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Пошук сетак Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Дазвольце праграмам і сэрвісам шукаць сеткі Wi‑Fi, нават калі Wi‑Fi не падключаны. Гэта можна выкарыстоўваць, напрыклад, для паляпшэння функцый і сэрвісаў, якія выкарыстоўваюць геалакацыю."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Пошук прылад Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Дазвольце праграмам і сэрвісам шукаць прылады паблізу, нават калі Bluetooth выключаны. Гэта можна выкарыстоўваць, напрыклад, для паляпшэння функцый і сэрвісаў, якія выкарыстоўваюць геалакацыю."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Сістэма"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Абнаўленне сістэмы"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Абнаўленне сістэмы"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Версія Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Абнаўленне сістэмы бяспекі Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Мадэль"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Версія дыяпазону"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Версія ядра"</string>
     <string name="build_number" msgid="3997326631001009102">"Нумар зборкі"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Адрас Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Недаступнае"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Стан"</string>
     <string name="device_status" msgid="267298179806290920">"Стан"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"Аўтарскія правы"</string>
     <string name="license_title" msgid="936705938435249965">"Ліцэнзія"</string>
     <string name="terms_title" msgid="5201471373602628765">"Умовы выкарыстання"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Сістэмная ліцэнзія WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Сістэмныя ліцэнзіі WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Шпалеры"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Спадарожнікавыя фота:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Ліцэнзіі трэціх бакоў"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Немагчыма загрузіць ліцэнзіі."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Загрузка…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Цяпер вы ў <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> кроку ад таго, каб стаць распрацоўшчыкам.</item>
+      <item quantity="few">Цяпер вы ў <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> кроках ад таго, каб стаць распрацоўшчыкам.</item>
+      <item quantity="many">Цяпер вы ў <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> кроках ад таго, каб стаць распрацоўшчыкам.</item>
+      <item quantity="other">Цяпер вы ў <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> кроку ад таго, каб стаць распрацоўшчыкам.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Цяпер вы распрацоўшчык!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Не трэба, вы ўжо з\'яўляецеся распрацоўшчыкам."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Параметры распрацоўшчыка"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Параметры скіду"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Скід налад сеткі, праграм ці прылады"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Скінуць налады сеткі да заводскіх"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Гэта дзеянне прывядзе да скіду ўсіх налад сеткі, уключаючы:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мабільная перадача даных"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Сцерці ўсе eSIM аўтамабіля"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Гэта не прывядзе да скасавання вашага тарыфнага плана."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Не ўдалося скінуць налады eSIM-карт"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Выберыце сетку"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Скід налад"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Скінуць?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Скінуць усе налады сеткі? Гэта дзеянне нельга адмяніць!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Скід налад"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Налады сеткі скінуты"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Скінуць налады праграм"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Будуць скінуты наступныя налады:\n\n"<li>" адключаныя праграмы;"</li>\n<li>"адключаныя апавяшчэнні праграм;"</li>\n<li>"стандартныя праграмы;"</li>\n<li>"абмежаванні на фонавую перадачу даных;"</li>\n<li>"абмежаванні дазволаў. "</li>\n\n"Даныя праграм не будуць выдалены."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Скінуць налады праграм"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Налады праграм скінуты"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Сцерці даныя (скід да заводскіх налад)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Гэта дзеянне сатрэ ўсе даныя з галаўной прылады аўтамабіля, у тым ліку:\n\n"<li>"ваш уліковы запіс Google;"</li>\n<li>"сістэмныя даныя і налады праграм;"</li>\n<li>"спампаваныя праграмы"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Цяпер вы ўвайшлі ў наступныя ўліковыя запісы:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"У гэтага аўтамабіля ёсць іншыя карыстальнікі."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Скінуць налады аўтамабіля"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Скінуць?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Сцерці ўсю вашу асабістую інфармацыю і спампаваныя праграмы? Гэта дзеянне нельга адрабіць!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Сцерці ўсе даныя"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Ідзе сціранне"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Пачакайце..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Дата і час"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Задаць дату і час"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Задаць дату, час, часавы пояс і фарматы"</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Сартаваць па часавым поясе"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Дата"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Час"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Дадаць карыстальніка"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Дадаць уліковы запіс"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Выдаліць карыстальніка"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Новы карыстальнік"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Госць"</string>
     <string name="user_admin" msgid="1535484812908584809">"Адміністратар"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Вы ўвайшлі як адміністратар"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Усе дазволы адміністратара"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Прызначыць адміністратарам"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Гэты карыстальнік зможа выдаляць карыстальнікаў, у тым ліку іншых адміністратараў, і скідваць налады сістэмы да заводскіх."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Гэта дзеянне нельга адмяніць."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Так, прызначыць адміністратарам"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Ствараць новых карыстальнікаў"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Рабіць тэлефонныя выклікі"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Паведамленні праз трафік аўтамабіля"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Усталёўваць новыя праграмы"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Выдаляць праграмы"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Дадаць карыстальніка"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Новы карыстальнік"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Дадаць карыстальніка?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Калі вы дадаяце новага карыстальніка, яму трэба наладзіць свой профіль."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Кожны карыстальнік прылады можа абнаўляць праграмы для іншых уліковых запісаў."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Дасягнуты ліміт карыстальнікаў"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Можна стварыць не больш за <xliff:g id="COUNT">%d</xliff:g> карыстальніка.</item>
+      <item quantity="few">Можна стварыць не больш за <xliff:g id="COUNT">%d</xliff:g> карыстальнікі.</item>
+      <item quantity="many">Можна стварыць не больш за <xliff:g id="COUNT">%d</xliff:g> карыстальнікаў.</item>
+      <item quantity="other">Можна стварыць не больш за <xliff:g id="COUNT">%d</xliff:g> карыстальніка.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Не ўдалося стварыць новага карыстальніка"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Выдаліць карыстальніка?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Усе праграмы і даныя будуць выдалены."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Не ўдалося выдаліць карыстальніка."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Закрыць"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Паўтарыць"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Выдаліць карыстальніка?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Пасля выдалення апошняга з карыстальнікаў гэтага аўтамабіля будзе створаны новы адміністратар."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Усе даныя, налады і праграмы, звязаныя з гэтым карыстальнікам, будуць выдалены. Спатрэбіцца наладзіць сістэму паўторна."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Выберыце новага адміністратара"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Патрэбны па меншай меры адзін адміністратар. Каб выдаліць існуючага, спачатку выберыце яму замену."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Выберыце адміністратара"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Госць"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Госць"</string>
     <string name="user_switch" msgid="6544839750534690781">"Пераключыцца"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Вы (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Імя"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не наладжана"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Змяніць імя карыстальніка"</string>
     <string name="users_list_title" msgid="770764290290240909">"Карыстальнікі"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Дазволы карыстальніка %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Уліковыя запісы"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Карыстальнік"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Дадаць уліковы запіс"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Уліковыя запісы не дададзены"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Уліковыя запісы карыстальніка <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Аўтаматычна сінхранізаваць даныя"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Дазволіць праграмам абнаўляць даныя аўтаматычна"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Уключыць аўтасінхранізацыю?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Усе змяненні, унесеныя ва ўліковы запіс у інтэрнэце, аўтаматычна капіруюцца ў памяць прылады.\n\nДля некаторых уліковых запісаў усе змены, зробленыя ў тэлефоне, могуць таксама аўтаматычна капіравацца ў інтэрнэт. Уліковы запіс Google працуе такім чынам."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Адключыць аўтасінхранізацыю?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Гэта дапаможа ашчаджаць трафік. Але, каб мець свежую інфармацыю, вам давядзецца сінхранізаваць кожны ўліковы запіс уручную. І вы не будзеце атрымліваць апавяшчэнні пра абнаўленні."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Даныя аб уліковым запісе"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Дадаць уліковы запіс"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Дадаць уліковы запіс"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Выдаліць уліковы запіс"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Выдаліць уліковы запіс?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Выдаленне гэтага ўліковага запісу прывядзе да выдалення з прылады ўсіх паведамленняў, кантактаў і іншых даных!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Адміністратар не дазваляе гэту змену"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Выдаліць карыстальніка?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Усе праграмы і даныя будуць выдалены."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Не атрымалася выдаліць карыстальніка."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Паўтарыць спробу?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Адхіліць"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Паўтарыць"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Дадаць карыстальніка?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Калі вы дадаяце новага карыстальніка, яму трэба наладзіць свой профіль."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Кожны карыстальнік прылады можа абнаўляць праграмы для іншых уліковых запісаў."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Не ўдалося выдаліць уліковы запіс."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Сінхранізацыя ўліковага запісу"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Сінхранізацыя ўключана для <xliff:g id="ID_1">%1$d</xliff:g> з <xliff:g id="ID_2">%2$d</xliff:g> элементаў"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Сінхранізацыя ўключана для ўсіх элементаў"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Сінхранізацыя выключана для ўсіх элементаў"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Сінхранізацыя АДКЛ."</string>
+    <string name="sync_error" msgid="6698021343089247914">"Памылка сінхранізацыі"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Апошняя сінхранізацыя: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Ідзе сінхранізацыя…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Націсніце, каб сінхранізаваць <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Сінхранізаваць"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Скасаваць сінхранізацыю"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Цяпер ёсць праблемы з сінхранізацыяй, аднак яна хутка адновіцца."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Бяспека"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Блакіроўка экрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Няма"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-код"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Пароль"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Выбар тыпу блакіроўкі"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Параметры блакіроўкі экрана"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Параметры блакіроўкі"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Увядзіце ўзор разблакіроўкі"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Пацвердзіць"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Нарысаваць нанова"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Задайце блакіроўку экрана"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Набярыце PIN-код"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Выберыце шаблон"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Набярыце пароль"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Выберыце пароль"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Бягучая блакіроўка экрана"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Задайце ўзор, каб абараніць прыладу"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Выдаліць"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-адміністратар блакіруе папулярныя паролі. Паспрабуйце іншы пароль."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Забаронена выкарыстоўваць паслядоўнасці з лічбаў, якія ідуць адна за адной або паўтараюцца."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Параметры блакіроўкі экрана"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> сут. таму назад"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Дадаць давераную прыладу"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Давераныя прылады"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> прылада</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> прылады</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> прылад</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> прылады</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Калі падключана, <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> зможа разблакіраваць гэты аўтамабіль. Калі <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> трапіць у рукі іншаму карыстальніку, той атрымае доступ да прылады"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Пацвердзіць"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Выдаліць давераную прыладу"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Гатова"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Для наладкі даверанай прылады выкарыстоўвайце спадарожную праграму. Калі пасля наладкі аўтамабіль выявіць тэлефон, вы зможаце разблакіраваць профіль карыстальніка"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Спампуйце спадарожную праграму на тэлефон"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Каб спалучыць прылады, выберыце на тэлефоне назву \"<xliff:g id="CAR_NAME">%1$s</xliff:g>\""</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"\"Разумная блакіроўка\" не можа вызначаць якасць бяспекі прылады. З мэтай абароны вашага аўтамабіля давераная прылада будзе трымаць ваш аўтамабіль разблакіраваным, толькі калі вы яго ўжо разблакіравалі. Давераная прылада можа трымаць аўтамабіль разблакіраваным, калі ён знаходзіцца паблізу, незалежна ад таго, хто ім кіруе."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Дадаць у якасці даверанай прыладу \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\""</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Прылада \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" паспяхова дададзена ў якасці даверанай"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Не ўдалося зарэгістраваць прыладу \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\""</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Для дадавання даверанай прылады неабходна задаць спосаб аўтэнтыфікацыі. Ён спатрэбіцца для атрымання доступу да вашага профілю, калі давераная прылада не з вамі."</string>
     <string name="forget" msgid="3971143908183848527">"Забыць"</string>
+    <string name="connect" msgid="5861699594602380150">"Падключыцца"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Адключыцца"</string>
     <string name="delete_button" msgid="5840500432614610850">"Выдаліць"</string>
     <string name="remove_button" msgid="6664656962868194178">"Выдаліць"</string>
     <string name="cancel" msgid="750286395700355455">"Скасаваць"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Выйсці з дэма-рэжыму"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Адбудзецца скід сістэмы да заводскіх налад. Тэставы ўліковы запіс і ўсе карыстальніцкія даныя будуць выдалены."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Выйсці з дэма-рэжыму"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"завяршыць наладку"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"не зараз"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"АДХІЛІЦЬ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Функцыя недаступная, калі вы за рулём."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Нельга дадаць карыстальніка, калі аўтамабіль рухаецца."</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 606e882..fb6da0e 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"затъмняване на екрана, сензорен екран, батерия"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"затъмняване на екрана, нощ, нюансиране"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Нощен режим"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобилни данни"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Достъп до данните през мобилната мрежа"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Да се изключат ли мобилните данни?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Пренос на данни"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Предупреждение и лимит за данните"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Цикъл на използване на данни от прилож."</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Предупр. за данните: Задаване"</string>
+    <string name="data_warning" msgid="116776633806885370">"Предупреждение за данните"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Задаване на лимит за данните"</string>
+    <string name="data_limit" msgid="227338836292511425">"Лимит за данните"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ограничаване на преноса на данни"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Основното устройство на автомобила ви ще изключи мобилните данни, след като достигне зададения от вас лимит.\n\nТъй като преносът им се измерва от основното устройство, а операторът ви може да го отчита по различен начин, добре е да използвате умерен лимит."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Задаване и управление на безжични точки за достъп"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi се включва…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi се изключва…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Списъкът с Wi‑Fi мрежите се зарежда"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Функцията за Wi‑Fi е деактивирана"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Забравянето на мрежата не бе успешно"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Свързването с мрежата не бе успешно"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Добавяне на мрежа"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Функцията за Wi‑Fi е деактивирана"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Свързване"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Парола"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Показване на паролата"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Име на мрежата"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Въведете SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Сигурност"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Сила на сигнала"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Сила на сигнала"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Състояние"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Скорост на връзката"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Честота"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP адрес"</string>
+    <string name="show_password" msgid="2074628020371139240">"Показване на паролата"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Въведете име на мрежата"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Въведете парола"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Слаб"</item>
-    <item msgid="2032262610626057081">"Задоволителен"</item>
-    <item msgid="3859756017461098953">"Добър"</item>
-    <item msgid="1521103743353335724">"Отличен"</item>
+    <item msgid="7683058295076342057">"Слаб"</item>
+    <item msgid="1639222824821660744">"Задоволителен"</item>
+    <item msgid="1838705897358163300">"Добър"</item>
+    <item msgid="6067166649320533751">"Отличен"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Включване на Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth е деактивиран"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Мб/с"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 ГХц"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ГХц"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Подробности за мрежата"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC адрес"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP адрес"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Подмрежова маска"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 адреси"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Шлюз"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Предпочитания за Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Автоматично включване на Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi ще се включва в близост до висококач. запазени мрежи, като тази в дома ви"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Не е налице, защото местопол. е изкл. Включете "<annotation id="link">"настройката"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Да се включи ли сканирането за Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Включване"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Сканирането за Wi-Fi е включено"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Автоматично превключване към мобилни данни"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Използване на мобилни данни, когато Wi‑Fi мрежата няма достъп до интернет. Може да бъдете таксувани за пренос на данни."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Научете повече"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Управление на връзки, задаване на име и откриваемост на устройство"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Компютър"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Слушалки"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Телефон"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Изображения"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Слушалки"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Периферен вход"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Сдвоени устройства"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Налични устройства"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Няма сдвоени устройства"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Няма налични устройства"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Сдвоено устройство"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Име"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Използване за"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Променете името на у-вото с Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Устройство без име"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Сдвоени устройства"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Сдвояване на ново устройство"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth ще се включи с цел сдвояване"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Прекр. на връзката с у-вото?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Връзката между автомобила ви и <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ще бъде прекратена."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth адрес на автомобила: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth адрес на устройството: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Име на автомобила"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Преименуване на този автомобил"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Преименуване на устройството"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Преименуване"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Налични устройства"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Потребителски профили"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Заявка за сдвояване чрез Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Сдвояване и свързване"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код за сдвояване с Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ПИН кодът съдържа букви или символи"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Въведете кода за сдвояване, след което натиснете „Return“ или „Enter“"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Обикновено 0000 или 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Заявка за сдвояване"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Докоснете за сдвояване с/ъс „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Езици"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Езици и въвеждане"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Клавиатура"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Управление на клавиатурите"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Синтезиран говор"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Предпочитана машина"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Текуща машина"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Скорост на говора"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Височина"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Нулиране"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Звук"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Сила на звука при звънене"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Сила на звука на навигацията"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Мултимедия"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Задаване на сила на звука за музика и видеоклипове"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Будилник"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Мелодия на телефона"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Стандартен звук за известяване"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Стандартен звук за будилника"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Приложения и известия"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Показване на всички приложения"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Приложения по подразбиране"</string>
     <string name="applications_settings" msgid="794261395191035632">"Информация за приложенията"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Принудително спиране"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Да се спре ли принудително?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ако принудително спрете приложение, то може да не функционира правилно."</string>
     <string name="disable_text" msgid="4358165448648990820">"Деактивиране"</string>
     <string name="enable_text" msgid="1794971777861881238">"Активиране"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Деинсталиране"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ако деактивирате това приложение, Android и други приложения може да спрат да работят както трябва."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Деактивиране на приложението"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Разрешения"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версия: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Няма предоставени разрешения"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Няма заявени разрешения"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Пренос на данни"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Прилож.: Пренос на данни"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Принудително спиране"</string>
     <string name="computing_size" msgid="5791407621793083965">"Изчислява се…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> допълнителни разрешения</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> допълнително разрешение</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Помощник и гласово въвеждане"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Помощно приложение"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Използване на текста от екрана"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Разрешаване на помощното приложение да осъществява достъп до текстовото съдържание на екрана"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Използване на екранна снимка"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Разрешаване на помощното приложение да осъществява достъп до екранно изображение"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Услуга за автоматично попълване"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Без"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Избрано"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Асистентът ще може да чете информацията за използваните в системата приложения, включително данните, видими на екрана или достъпни в тях."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Уверете се, че имате доверие на това приложение&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Функцията на Google за автоматично попълване&gt;%1$s&lt;/xliff:g&gt; използва това, което е на екрана ви, за да определи какво може да се попълни автоматично."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Добавяне на услуга"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Местоположение"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Скорошни заявки за местоположението"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Няма скорошни заявки за местоположението"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Разрешения на ниво приложение"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Сканиране"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Услуги за местоположение"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Сканиране за Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Разрешете на приложенията и услугите да сканират за Wi‑Fi мрежи по всяко време дори когато функцията за Wi‑Fi e изключена. Това може да послужи например за подобряване на базиращите се на местоположението функции и услуги."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Сканиране за устройства с Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Разрешете на приложенията и услугите да сканират за устройства в близост по всяко време дори когато функцията за Bluetooth e изключена. Това може да послужи например за подобряване на базиращите се на местоположението функции и услуги."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Системни актуализации"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Системни актуализации"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Версия на Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Ниво на корекцията на сигурността под Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Модел"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Версия на базовия диапазон"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Версия на ядрото"</string>
     <string name="build_number" msgid="3997326631001009102">"Номер на версията"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Адрес на Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Не е налице"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Състояние"</string>
     <string name="device_status" msgid="267298179806290920">"Състояние"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Авторски права"</string>
     <string name="license_title" msgid="936705938435249965">"Лиценз"</string>
     <string name="terms_title" msgid="5201471373602628765">"Общи условия"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Системен лиценз за WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Системни лицензи за WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Тапети"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Доставчици на сателитни изображения:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Лицензи на трети страни"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Възникна проблем при зареждането на лицензите."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Зарежда се…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Вече сте на <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> стъпки от това, да бъдете програмист.</item>
+      <item quantity="one">Вече сте на <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> стъпка от това, да бъдете програмист.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Вече сте програмист!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Не е необходимо – вече сте програмист."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Опции за програмисти"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Опции за нулиране"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Нулиране на мрежата, приложенията или устройството"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Нулиране на мрежата"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Това действие ще нулира всички мрежови настройки, включително:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобилни данни"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Изтриване на всички ел. SIM карти за автомобила"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Това действие няма да анулира плана ви за услуги."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Електронните SIM карти не могат да бъдат нулирани"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Избиране на мрежа"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Нулиране на настройките"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Да се извърши ли нулиране?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Да се нулират ли всички мрежови настройки? Не можете да отмените това действие!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Нулиране на настройките"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Мрежовите настройки са нулирани"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Нулиране на предпочитанията за прилож."</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Това действие ще нулира всички предпочитания за:\n\n"<li>"деактивираните приложения;"</li>\n<li>"известията за деактивирани приложения;"</li>\n<li>"стандартните приложения за действия;"</li>\n<li>"ограниченията за данни на заден план за приложенията;"</li>\n<li>" ограниченията за всички разрешения."</li>\n\n"Няма да загубите данни от приложенията."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Нулиране на приложенията"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Предпочитанията за приложенията са нулирани"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Изтрив. на данните (възст. на фабр. настр.)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Това ще изтрие всички данни от основното устройство на автомобила ви, включително:\n\n"<li>"профила ви в Google;"</li>\n<li>"данни и настройки от системата и приложенията;"</li>\n<li>"изтеглените приложения."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Понастоящем сте влезли в следните профили:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"В този автомобил има други потребители."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Нулиране на автомобила"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Да се извърши ли нулиране?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Да се изтрият ли цялата ви лична информация и всички изтеглени приложения? Не можете да отмените това действие!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Изтриване на всичко"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Изтрива се"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Моля, изчакайте..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Дата и час"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Задаване на дата и час"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Задаване на дата, час, часова зона и формати"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Сортиране по часова зона"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Дата"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Час"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Добавяне на потребител"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Добавяне на профил"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Изтриване на потребител"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Нов потребител"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Гост"</string>
     <string name="user_admin" msgid="1535484812908584809">"Администратор"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Влезли сте като администратор"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Всички администраторски разрешения"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Задаване като администратор"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Този потребител ще може да изтрива потребители, включително и други администратори, и да възстановява фабричните настройки на системата."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Това действие не е обратимо."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Да, задаване като администратор"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Създаване на нови потребители"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Провеждане на телефонни обаждания"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS чрез моб. данни на автомобила"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Инсталиране на нови приложения"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Деинсталиране на приложения"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Добавяне на потребител"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Нов потребител"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Добавяне на нов потреб.?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Когато добавите нов потребител, той трябва да настрои работното си пространство."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Всеки потребител може да актуализира приложенията за всички останали потребители."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Достигнахте огранич. за потребители"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Можете да създадете до <xliff:g id="COUNT">%d</xliff:g> потребители.</item>
+      <item quantity="one">Може да бъде създаден само един потребител.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Неуспешно създаване на нов потребител"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Да се изтрие ли потребителят?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Всички приложения и данни ще бъдат изтрити."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Изтриването на потребителя бе неуспешно."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Отхвърляне"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Нов опит"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Изтриване на последния потребител?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"След като изтриете единствения оставащ потребител за този автомобил, ще бъде създаден нов потребител с администраторски достъп."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Всички данни, настройки и приложения, свързани с този потребител, ще бъдат изтрити. Трябва да настроите системата отново."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Избиране на нов администратор"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Трябва да посочите поне един администратор. За да изтриете този, първо изберете заместник."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Избиране на администратор"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Гост"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Гост"</string>
     <string name="user_switch" msgid="6544839750534690781">"Превключване"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Вие (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Име"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не е настроен"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Редактиране на потребит. име"</string>
     <string name="users_list_title" msgid="770764290290240909">"Потребители"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Разрешенията са дадени на %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Профили"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Потребител"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Добавяне на профил"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Няма добавени профили"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Профили за <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Автоматично синхронизиране на данните"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Позволете на приложенията да опресняват автоматично данните"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Вкл. на авт. синхрон. на данни?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Всички промени, които правите в профилите си в мрежата, ще бъдат копирани автоматично в устройството ви.\n\nНякои профили могат също да копират автоматично в мрежата извършените от вас промени в телефона. Профилът в Google работи по този начин."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Изкл. на авт. синхрон. на данни?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Това ще спести използването на данни, но ще трябва да синхронизирате ръчно всеки профил, за да събирате скорошна информация. Също така няма да получавате известия, когато има актуализации."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Информация за профила"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Добавяне на профил"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Добавяне на профил"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Премахване на профила"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Премахване на профила?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Премахването на този профил ще изтрие всички съобщения, контакти и други данни в него от устройството!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Тази промяна не е разрешена от администратора ви"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Да се премахне ли потр.?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Всички приложения и данни ще се изтрият."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Премахв. на потребителя не бе успешно."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Искате ли да опитате отново?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Отхвърляне"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Нов опит"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Добавяне на нов потреб.?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Когато добавите нов потребител, той трябва да настрои работното си пространство."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Всеки потребител може да актуализира приложенията за всички останали потребители."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Премахването на профила не бе успешно."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Синхронизиране на профила"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Синхронизирането е включено за <xliff:g id="ID_1">%1$d</xliff:g> от <xliff:g id="ID_2">%2$d</xliff:g> елемента"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Синхронизирането е включено за всички елементи"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Синхронизирането е изключено за всички елементи"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Синхронизирането е ИЗКЛ."</string>
+    <string name="sync_error" msgid="6698021343089247914">"Грешка при синхрониз."</string>
+    <string name="last_synced" msgid="4745124489150101529">"Последно синхронизиране: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Синхронизира се сега…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Докоснете, за да синхронизирате сега (<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Синхронизиране сега"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Анулиране на синхронизирането"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Понастоящем има проблеми със синхронизирането. Ще се решат скоро."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Сигурност"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Заключване на екрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Без"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"ПИН код"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Парола"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Избор на типа на закл."</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Опции за заключване на екрана"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Опции за заключване"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Въведете фигурата си"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Потвърждаване"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Повторно начертаване"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Задайте опция за заключване на екрана"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Изберете ПИН кода си"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Изберете фигурата си"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Изберете паролата си"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Изберете паролата си"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Текуща опция за заключване на екрана"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"За по-голяма сигурност задайте фигура"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Изчистване"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Често срещаните пароли се блокират от системния ви администратор. Опитайте с друга парола."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Възходящите, низходящите и повтарящите се поредици от цифри не са разрешени."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опции за заключване на екрана"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Преди <xliff:g id="NUM_DAYS">%3$s</xliff:g> дни"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Добав. на надеждно устройство"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Надеждни устройства"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> устройства</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> устройство</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Устройството ви <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ще отключи този автомобил, когато е свързано. Ако някой вземе устройството ви <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, е възможно да осъществи достъп до него."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Потвърждаване"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Премахване на надеждното устройство"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Използвайте придружаващото приложение, за да настроите надеждно устройство. След настройването ще можете да отключвате потребителския си профил, когато телефонът ви бъде разпознат от автомобила."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Изтеглете придружаващото приложение на телефона си."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Изберете „<xliff:g id="CAR_NAME">%1$s</xliff:g>“ на телефона си, за да сдвоите устройствата."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock не може да открие функциите за сигурност на това устройство. За да е защитен автомобилът ви, надеждното устройство ще може да го поддържа в отключено състояние само ако той вече е отключен от вас. То може да поддържа автомобила ви отключен, когато е близо до него, дори ако го държи някой друг."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Добавяне на <xliff:g id="DEVICE_NAME">%1$s</xliff:g> като надеждно устройство"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Успешно добавихте <xliff:g id="DEVICE_NAME">%1$s</xliff:g> като надеждно устройство"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Регистрацията на <xliff:g id="DEVICE_NAME">%1$s</xliff:g> не бе успешна"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"За добавянето на надеждно устройство се изисква да зададете метод на удостоверяване на следващия екран. Ако надеждното ви устройство не е у вас, удостоверяването ще се изисква за достъп до потребителския ви профил."</string>
     <string name="forget" msgid="3971143908183848527">"Забравяне"</string>
+    <string name="connect" msgid="5861699594602380150">"Свързване"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Прекрат. на връзката"</string>
     <string name="delete_button" msgid="5840500432614610850">"Изтриване"</string>
     <string name="remove_button" msgid="6664656962868194178">"Премахване"</string>
     <string name="cancel" msgid="750286395700355455">"Отказ"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Изход от демонстр. режим"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Това действие ще изтрие демонстрационния профил и ще възстанови фабричните настройки на системата. Всички потребителски данни ще бъдат изгубени."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Демонстр. режим: Изход"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"завършване на настройването"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"не сега"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ОТХВЪРЛЯНЕ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Функцията не е налице по време на шофиране."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Потребителят не може да се добави по време на шофиране."</string>
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 5e73843..6d77f49 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"অনুজ্জ্বল স্ক্রিন, টাচস্ক্রিন, ব্যাটারি"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"অনুজ্জ্বল স্ক্রিন, রাত্রি, আভা"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"রাতের মোড"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"নেটওয়ার্ক এবং ইন্টারনেট"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"মোবাইল নেটওয়ার্ক"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"মোবাইল ডেটা"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"মোবাইল নেটওয়ার্ক ব্যবহার করে ডেটা অ্যাক্সেস করুন"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"মোবাইল ডেটা বন্ধ করবেন?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ডেটার ব্যবহার"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ডেটা সম্পর্কিত সতর্কতা ও সীমা"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"অ্যাপের ডেটা ব্যবহারের চক্র"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ডেটা সতর্কতা সেট করুন"</string>
+    <string name="data_warning" msgid="116776633806885370">"ডেটা সম্পর্কিত সতর্কতা"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ডেটার সীমা সেট করুন"</string>
+    <string name="data_limit" msgid="227338836292511425">"ডেটার সীমা"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ডেটার ব্যবহার সীমিত করা"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ডেটার ব্যবহার আপনার সেট করা সীমায় পৌঁছলে আপনার গাড়ির হেড ইউনিট মোবাইল ডেটা বন্ধ করে দেবে।.\n\nযেহেতু আপনার গাড়ির হেড ইউনিট আপনার ডেটা ব্যবহারের হিসাব রাখে এবং আপনার পরিষেবা প্রদানকারীর রাখা হিসাব কিছুটা আলাদা হলেও হতে পারে, তাই যাতে কম মোবাইল ডেটা খরচ হোক এমনভাবে সীমা সেট করার কথা ভাবতে পারেন।"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"ওয়াই-ফাই"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"ওয়্যারলেস অ্যাক্সেস পয়েন্ট সেট-আপ ও পরিচালনা করুন"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ওয়াই-ফাই চালু করা হচ্ছে..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ওয়াই-ফাই বন্ধ করা হচ্ছে..."</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"ওয়াই-ফাইের তালিকা লোড করা হচ্ছে"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"ওয়াই-ফাই বন্ধ আছে"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"আগে থেকে থাকা নেটওয়ার্কের তথ্য সরানো যায়নি"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"নেটওয়ার্কে কানেক্ট করা যায়নি"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"নেটওয়ার্ক যোগ করুন"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"ওয়াই-ফাই বন্ধ আছে"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"কানেক্ট"</string>
     <string name="wifi_password" msgid="5565632142720292397">"পাসওয়ার্ড"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"পাসওয়ার্ড দেখুন"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"নেটওয়ার্কের নাম"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID লিখুন"</string>
     <string name="wifi_security" msgid="158358046038876532">"নিরাপত্তা"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"সিগন্যালের ক্ষমতা"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"সিগন্যালের ক্ষমতা"</string>
     <string name="wifi_status" msgid="5688013206066543952">"স্ট্যাটাস"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"লিঙ্কের গতি"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"পুনরাবৃত্তির হার"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"আইপি ঠিকানা"</string>
+    <string name="show_password" msgid="2074628020371139240">"পাসওয়ার্ড দেখুন"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"নেটওয়ার্কের নাম লিখুন"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"পাসওয়ার্ড লিখুন"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"খারাপ"</item>
-    <item msgid="2032262610626057081">"ঠিকঠাক"</item>
-    <item msgid="3859756017461098953">"ভাল"</item>
-    <item msgid="1521103743353335724">"খুব ভাল"</item>
+    <item msgid="7683058295076342057">"খারাপ"</item>
+    <item msgid="1639222824821660744">"ঠিকঠাক"</item>
+    <item msgid="1838705897358163300">"ভাল"</item>
+    <item msgid="6067166649320533751">"খুব ভাল"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ব্লুটুথ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ব্লুটুথ চালু করুন"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ব্লুটুথ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ব্লুটুথ বন্ধ আছে"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"২.৪ GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"৫ GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"নেটওয়ার্কের বিবরণ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC অ্যাড্রেস"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP অ্যাড্রেস"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"সাবনেট মাস্ক"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"ডিএনএস"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 অ্যাড্রেসগুলি"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"গেটওয়ে"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"ওয়াই-ফাই-এর অভিরুচি"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"অটোমেটিক ওয়াই-ফাই চালু করুন"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"সেভ করা ভাল নেটওয়ার্কে এলেই ওয়াই-ফাই চলবে, হোম নেটওয়ার্ক"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"লোকেশন বন্ধ থাকার কারণে উপলভ্য নয়। "<annotation id="link">"লোকেশন"</annotation>" চালু করুন।"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"ওয়াই-ফাই স্ক্যান চালু করবেন?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"চালু করুন"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"ওয়াই-ফাই স্ক্যানিং চালু করা হয়েছে"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"নিজে থেকে মোবাইল ডেটাতে চলে যান"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"ওয়াই-ফাই-এ ইন্টারনেট অ্যাক্সেস না থাকলে মোবাইল ডেটা ব্যবহার করুন৷ ডেটা ব্যবহারের চার্জ প্রযোজ্য।"</string>
+    <string name="learn_more" msgid="8214605928933358604">"আরও জানুন"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ব্লুটুথ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"কানেকশন, সেট ডিভাইসের নাম এবং খুঁজে নেওয়া যোগ্যতা পরিচালনা করুন"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"কম্পিউটার"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"হেডসেট"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ফোন"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ইমেজিং"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"হেডফোন"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ইনপুট পেরিফেরাল"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ব্লুটুথ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"পেয়ার করা ডিভাইসগুলি"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"উপলভ্য ডিভাইসগুলি"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"কোনও ডিভাইস পেয়ার করা নেই"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"কোনও ডিভাইস উপলভ্য নেই"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"পেয়ার করা ডিভাইসগুলি"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"নাম"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"এর জন্য ব্যবহার করুন"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"ব্লুটুথ ডিভাইসের নাম পরিবর্তন করুন"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"নামবিহীন ডিভাইস"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"পেয়ার করা ডিভাইসগুলি"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"নতুন ডিভাইস পেয়ার করুন"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"পেয়ার করার জন্য ব্লুটুথ চালু হবে"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ডিভাইস ডিসকানেক্ট করতে চান?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>.ডিভাইস থেকে আপনার গাড়িটি ডিসকানেক্ট হয়ে যাবে।"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"গাড়িতে ব্যবহার হওয়া ব্লুটুথ ঠিকানা: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ডিভাইসে ব্যবহার হওয়া ব্লুটুথ ঠিকানা: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"গাড়ির নাম"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"এই গাড়িটির আবার নামকরণ করুন"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ডিভাইসের আবার নামকরণ করুন"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"আবার নামকরণ করুন"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"উপলভ্য ডিভাইস"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"প্রোফাইলগুলি"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ব্লুটুথ পেয়ার করার অনুরোধ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"পেয়ার এবং কানেক্ট করুন"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ব্লুটুথ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ব্লুটুথ এর সাথে পেয়ার করার কোড"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"পিনে অক্ষর বা চিহ্ন রয়েছে"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"যুক্ত করার কোড লিখে রিটার্ন অথবা এন্টার টিপুন"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"সাধারণত ০০০০ বা ১২৩৪"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"পেয়ার করার অনুরোধ"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> এর সঙ্গে পেয়ার করতে ট্যাপ করুন।"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ভাষা"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ভাষাগুলি ও ইনপুট"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"কীবোর্ড"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"কীবোর্ডগুলি ম্যানেজ করুন"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"টেক্সট টু স্পিচ আউটপুট"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"পছন্দের ইঞ্জিন"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"বর্তমান ইঞ্জিন"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"কথা বলার স্পিড"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"পিচ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"রিসেট করুন"</string>
     <string name="sound_settings" msgid="3072423952331872246">"সাউন্ড"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"রিং ভলিউম"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"ন্যাভিগেশন ভলিউম"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"মিডিয়া"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"মিউজিক এবং ভিডিওগুলির জন্য ভলিউম সেট করুন"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"অ্যালার্ম"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ফোনের রিংটোন"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"ডিফল্ট বিজ্ঞপ্তির সাউন্ড"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"ডিফল্ট অ্যালার্মের শব্দ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"অ্যাপ ও বিজ্ঞপ্তি"</string>
+    <string name="all_applications" msgid="7798210477486822168">"সব অ্যাপ দেখুন"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ডিফল্ট অ্যাপ"</string>
     <string name="applications_settings" msgid="794261395191035632">"অ্যাপের তথ্য"</string>
+    <string name="force_stop" msgid="2153183697014720520">"জোর করে বন্ধ করুন"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"জোর করে বন্ধ করবেন?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"আপনি একটি অ্যাপকে জোর করে বন্ধ করলে, তা সঠিক ভাবে কাজ নাও করতে পারে।"</string>
     <string name="disable_text" msgid="4358165448648990820">"বন্ধ করুন"</string>
     <string name="enable_text" msgid="1794971777861881238">"চালু করুন"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"আনইনস্টল করুন"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"আপনি এই অ্যাপটি বন্ধ করলে, Android এবং অন্যান্য অ্যাপকে যে কাজের উদ্দেশ্যে তৈরি করা হয়েছিল সেগুলি আর কাজ নাও করতে পারে।"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"অ্যাপ বন্ধ করুন"</string>
     <string name="permissions_label" msgid="2701446753515612685">"অনুমতিগুলি"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ভার্সন: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"কোনও অনুমতি দেওয়া হয় নি"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"কোনও অনুমতির অনুরোধ জানানো হয়নি"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ডেটা ব্যবহার"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"অ্যাপ ডেটার ব্যবহার"</string>
-    <string name="force_stop" msgid="2153183697014720520">"জোর করে বন্ধ করুন"</string>
     <string name="computing_size" msgid="5791407621793083965">"কম্পিউটিং..."</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>টি অতিরিক্ত অনুমতি</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>টি অতিরিক্ত অনুমতি</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"অ্যাসিস্ট্যান্ট এবং ভয়েস ইনপুট"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"সহায়তা অ্যাপ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"স্ক্রিন থেকে টেক্সট ব্যবহার করুন"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"সহায়তা অ্যাপটিকে স্ক্রিনের কন্টেন্টকে টেক্সট হিসেবে অ্যাক্সেস করার অনুমতি দিন"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"স্ক্রিনশট ব্যবহার করুন"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"সহায়তা অ্যাপটিকে স্ক্রিনের একটি ছবি অ্যাক্সেস করার অনুমতি দিন"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"আপনাআপনি পূরণ করার পরিষেবা"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"কোনওটিই নয়"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"বেছে নেওয়া হয়েছে"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"অ্যাসিস্ট্যান্ট আপনার স্ক্রিনে দেখা যাচ্ছে বা অ্যাপের মধ্যে থাকা অ্যাক্সেসযোগ্য তথ্য সহ, আপনার সিস্টেমে ব্যবহার হওয়া অ্যাপ সম্পর্কিত তথ্য পড়তে পারবে।"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;দেখে নিন এই অ্যাপটি বিশ্বাসযোগ্য কিনা&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google অটোফিল&gt;%1$s&lt;/xliff:g&gt; আপনার স্ক্রিনে দেখানো তথ্য ব্যবহার করে কোনও তথ্য নিজে থেকে পূরণ করা যাবে কিনা তা নির্ণয় করে।"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"পরিষেবা যোগ করুন"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"লোকেশন"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"সাম্প্রতিক লোকেশনের অনুরোধ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"কোনও সাম্প্রতিক লোকেশনের অনুরোধ নেই"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"অ্যাপ-লেবেল অনুমতি"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"স্ক্যান করা হচ্ছে"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"লোকেশন পরিষেবা"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"ওয়াই-ফাই স্ক্যানিং"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"ব্লুটুথ বন্ধ থাকলেও অ্যাপ এবং পরিষেবাগুলিকে যেকোনও সময় ওয়াই-ফাই নেটওয়ার্ক স্ক্যান করার অনুমতি দিন। এটি বিভিন্ন ক্ষেত্রে কাজে লাগতে পারে, যেমন লোকেশন-ভিত্তিক বৈশিষ্ট্য এবং পরিষেবার উন্নতির জন্য।"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ব্লুটুথ স্ক্যানিং"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ব্লুটুথ বন্ধ থাকলেও অ্যাপ এবং পরিষেবাগুলিকে যেকোনও সময় আশেপাশে থাকা অন্যান্য ডিভাইস স্ক্যান করার অনুমতি দিন। এটি বিভিন্ন ক্ষেত্রে কাজে লাগতে পারে, যেমন লোকেশন-ভিত্তিক বৈশিষ্ট্য এবং পরিষেবার উন্নতির জন্য।"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"সিস্টেম"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"সিস্টেম আপডেট"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"সিস্টেম আপডেট"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ভার্সন"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android সুরক্ষার প্যাচ লেবেল"</string>
     <string name="model_info" msgid="4966408071657934452">"মডেল"</string>
     <string name="baseband_version" msgid="2370088062235041897">"বেসব্যান্ড ভার্সন"</string>
     <string name="kernel_version" msgid="7327212934187011508">"কার্নেল ভার্সন"</string>
     <string name="build_number" msgid="3997326631001009102">"বিল্ড নম্বর"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ব্লুটুথ অ্যাড্রেস"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"উপলভ্য নয়"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"স্ট্যাটাস"</string>
     <string name="device_status" msgid="267298179806290920">"স্ট্যাটাস"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"কপিরাইট"</string>
     <string name="license_title" msgid="936705938435249965">"লাইসেন্স"</string>
     <string name="terms_title" msgid="5201471373602628765">"নিয়ম ও শর্তাবলী"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"সিস্টেম ওয়েবভিউ লাইসেন্স"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"সিস্টেম ওয়েবভিউ লাইসেন্স"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"ওয়ালপেপার"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"উপগ্রহ ছবি প্রদানকারী:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"তৃতীয় পক্ষের লাইসেন্স"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"লাইসেন্সগুলি লোড হতে সমস্যা হয়েছে।"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"লোড করা হচ্ছে…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">একজন ডেভেলপার হওয়া থেকে আপনি এখন <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ধাপ দূরে রয়েছেন।</item>
+      <item quantity="other">একজন ডেভেলপার হওয়া থেকে আপনি এখন <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ধাপ দূরে রয়েছেন।</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"আপনি এখন একজন ডেভেলপার!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"কোনও প্রয়োজন নেই, আপনি ইতিমধ্যেই একজন ডেভেলপার।"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ডেভেলপারের জন্য বিকল্প"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"রিসেটের বিকল্পগুলি"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"নেটওয়ার্ক, অ্যাপ অথবা ডিভাইস রিসেট"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"নেটওয়ার্ক রিসেট করুন"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"এর ফলে সমস্ত নেটওয়ার্ক সেটিংস রিসেট করা হবে, এগুলি সহ:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"ওয়াই-ফাই"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"মোবাইল ডেটা"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ব্লুটুথ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"সব গাড়ির ই-সিম মুছে ফেলুন"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"এতে আপনার এর পরিষেবার প্ল্যান বাতিল হবে না।"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"ই-সিমগুলি রিসেট করা যাচ্ছে না"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"নেটওয়ার্ক বেছে নিন"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"সেটিংস রিসেট করুন"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"রিসেট করবেন?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"সমস্ত নেটওয়ার্ক সেটিংস রিসেট করবেন? এখনকার সেটিংস আর ফিরিয়ে আনা যাবে না!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"সেটিংস রিসেট করুন"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"নেটওয়ার্ক সেটিংস রিসেট করা হয়েছে"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"অ্যাপের অভিরুচি রিসেট করুন"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"এটি এইগুলির জন্য সব পছন্দ রিসেট করবে:\n\n"<li>" বন্ধ করা অ্যাপ"</li>\n<li>" বন্ধ করা অ্যাপের বিজ্ঞপ্তি"</li>\n<li>" অ্যাকশনের জন্য ডিফল্ট অ্যাপ্লিকেশন"</li>\n<li>" অ্যাপের জন্য ব্যাকগ্রাউন্ড ডেটার সীমাবদ্ধতা"</li>\n<li>" যেকোনও অনুমতির সীমাবদ্ধতা"</li>\n\n" আপনি কোনও অ্যাপের ডেটা হারাবেন না।"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"অ্যাপ আবার সেট করুন"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"অ্যাপের পছন্দ রিসেট করা হয়েছে"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"সমস্ত ডেটা মুছে ফেলুন (ফ্যাক্টরি রিসেট)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"এটি গাড়ির প্রধান ডিসপ্লে ইউনিট থেকে সমস্ত ডেটা মুছে ফেলবে, নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত:\n\n"<li>"আপনার Google অ্যাকাউন্ট"</li>\n<li>"সিস্টেম এবং অ্যাপের ডেটা এবং সেটিংস"</li>\n<li>"ডাউনলোড করা অ্যাপ"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"আপনি বর্তমানে নিম্নলিখিত অ্যাকাউন্টে সাইন-ইন করে আছেন:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"এই গাড়িতে অন্য ব্যবহারকারী আছেন।"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"গাড়ি রিসেট করুন"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"রিসেট করবেন?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"আপনার সমস্ত ব্যক্তিগত তথ্য এবং ডাউনলোড করা অ্যাপ মুছে দিতে চান? আপনি এই প্রক্রিয়াটি আগের অবস্থায় ফেরাতে পারবেন না!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"সবকিছু মুছে দিন"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"মোছা হচ্ছে"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"অপেক্ষা করুন..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"দিন ও তারিখ"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"তারিখ ও সময় সেট করুন"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"তারিখ, সময়, টাইম জোন ও ফর্ম্যাট সেট করুন"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"টাইম জোন অনুযায়ী সাজান"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"তারিখ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"সময়"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ব্যবহারকারী যোগ করুন"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"অ্যাকাউন্ট যোগ করুন"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"ব্যবহারকারীকে মুছুন"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"নতুন ব্যবহারকারী"</string>
-    <string name="user_guest" msgid="3465399481257448601">"অতিথি"</string>
     <string name="user_admin" msgid="1535484812908584809">"অ্যাডমিন"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"অ্যাডমিন হিসেবে সাইন-ইন করেছেন"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"সকল অ্যাডমিন অনুমতি সহকারে"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"নতুন অ্যাডমিন বেছে নিন"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ব্যবহারকারী অন্যান্য অ্যাডমিন সহ ব্যবহারকারীদের মুছে দিতে পারবে এবং ফ্যাক্টরি সিস্টেমটি রিসেট করবে।"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"এই অ্যাকশনটি আগের অবস্থায় ফেরানো যাবে না।"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"হ্যাঁ, নতুন অ্যাডমিন বেছে নিন"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"নতুন ব্যবহারকারী তৈরি করুন"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ফোন কল করে দেখুন"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"গাড়ির মোবাইল ডেটা ব্যবহার করে মেসেজিং"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"নতুন অ্যাপ ইনস্টল করে দেখুন"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"অ্যাপ আনইনস্টল করে দেখুন"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ব্যবহারকারী যোগ করুন"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"নতুন ব্যবহারকারী"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"ব্যবহারকারী যোগ করবেন?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"আপনি একজন নতুন ব্যবহারকারী যোগ করলে তাকে তার স্পেস সেট-আপ করে নিতে হবে৷"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"যেকোনও ব্যবহারকারী বাকি সব ব্যবহারকারীর জন্য অ্যাপ আপডেট করতে পারবেন।"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"আর কোনও প্রোফাইল যোগ করা যাবে না"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">আপনি <xliff:g id="COUNT">%d</xliff:g>টি প্রোফাইল তৈরি করতে পারবেন।</item>
+      <item quantity="other">আপনি <xliff:g id="COUNT">%d</xliff:g>টি প্রোফাইল তৈরি করতে পারবেন।</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"নতুন প্রোফাইল তৈরি করা যায়নি"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"এই ব্যবহারকারীর অ্যাকাউন্টটি মুছবেন?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"সব অ্যাপ ও ডেটা মুছে ফেলা হবে।"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ব্যবহারকারীকে মুছে ফেলা যায়নি।"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"খারিজ"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"আবার চেষ্টা করুন"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"শেষ ব্যবহারকারীকে মুছে দিতে চান?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"এই গাড়ির আগের ব্যবহারকারীকে মুছে ফেলার পর, নতুন অ্যাডমিন ব্যবহারকারী তৈরি করা হবে।"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"এই ব্যবহারকারীর সব ডেটা, সেটিংস, এবং অ্যাপ মুছে ফেলা হবে। আপনাকে সিস্টেম আবার সেট-আপ করতে হবে।"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"নতুন অ্যাডমিন বেছে নিন"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"আপনার একজন অ্যাডমিন প্রয়োজন। এটি মুছে ফেলতে, অন্য একটি বিকল্প বেছে নিন।"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"অ্যাডমিন বেছে নিন"</string>
+    <string name="user_guest" msgid="3465399481257448601">"অতিথি"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"অতিথি"</string>
     <string name="user_switch" msgid="6544839750534690781">"পরিবর্তন করুন"</string>
     <string name="current_user_name" msgid="3813671533249316823">"আপনি (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"নাম"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"সেট-আপ করা নেই"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"ব্যবহারকারীর নাম এডিট করুন"</string>
     <string name="users_list_title" msgid="770764290290240909">"ব্যবহারকারী"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s কে অনুমতি দেওয়া হয়েছে"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"অ্যাকাউন্ট"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"ব্যবহারকারী"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"অ্যাকাউন্ট যোগ করুন"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"কোনও অ্যাকাউন্ট যোগ করা হয়নি"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> এর অ্যাকাউন্ট"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ডেটা অটোমেটিক সিঙ্ক হবে"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"অ্যাপকে অটোমেটিক ডেটা রিফ্রেশ করতে দিন"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ডেটা অটোমেটিক সিঙ্ক চালু করবেন?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ওয়েবে আপনার অ্যাকাউন্টে আপনি যে পরিবর্তন করবেন সেটি অটোমেটিক আপনার ফোনে কপি করা হবে।\n\nকোনও কোনও অ্যাকাউন্ট আপনার ফোনে করা পরিবর্তনগুলি অটোমেটিক ওয়েবে কপি করতে পারবে। Google অ্যাকাউন্ট এভাবেই কাজ করে।"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ডেটা অটোমেটিক সিঙ্ক বন্ধ করবেন?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"এটি ডেটা এবং ব্যাটারির খরচ বাঁচাবে, কিন্তু আপনাকে সাম্প্রতিক তথ্য সংগ্রহ করতে ম্যানুয়ালি প্রতিটি অ্যাকাউন্ট সিঙ্ক করতে হবে। আপডেট হলে আপনি তখন বিজ্ঞপ্তি পাবেন না।"</string>
     <string name="account_details_title" msgid="7529571432258448573">"অ্যাকাউন্টের তথ্য"</string>
     <string name="add_account_title" msgid="5988746086885210040">"অ্যাকাউন্ট যোগ করুন"</string>
     <string name="add_an_account" msgid="1072285034300995091">"একটি অ্যাকাউন্ট যোগ করুন"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"অ্যাকাউন্ট সরিয়ে দিন"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"অ্যাকাউন্টটি সরাবেন?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"এই অ্যাকাউন্টটি মুছে দিলে এটির সমস্ত মেসেজ, পরিচিতি এবং অন্যান্য ডেটা ডিভাইস থেকে মুছে দেওয়া হবে!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"আপনার অ্যাডমিন এই পরিবর্তনটি করার অনুমতি দেয় না"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"এই ব্যবহারকারীকে সরাবেন?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"সব অ্যাপ ও ডেটা মুছে ফেলা হবে।"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"ব্যবহারকারীকে সরানো যায়নি।"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"আবার করবেন?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"খারিজ করুন"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"আবার চেষ্টা করুন"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ব্যবহারকারী যোগ করবেন?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"আপনি একজন নতুন ব্যবহারকারী যোগ করলে তাকে তার স্পেস সেট-আপ করে নিতে হবে৷"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"যেকোনও ব্যবহারকারী বাকি সব ব্যবহারকারীর জন্য অ্যাপ আপডেট করতে পারবেন।"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"অ্যাকাউন্ট সরানো যায়নি।"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"অ্যাকাউন্ট সিঙ্ক"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g>টির মধ্যে <xliff:g id="ID_1">%1$d</xliff:g>টি আইটেমের জন্য সিঙ্ক চালু আছে"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"সব আইটেমের জন্য সিঙ্ক চালু আছে"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"সব আইটেমের জন্য সিঙ্ক বন্ধ আছে"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"সিঙ্ক বন্ধ আছে"</string>
+    <string name="sync_error" msgid="6698021343089247914">"সিঙ্ক করার সময় সমস্যা"</string>
+    <string name="last_synced" msgid="4745124489150101529">"শেষ সিঙ্ক হয়েছে: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"এখনই সিঙ্ক করুন…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"এখনই সিঙ্ক করতে ট্যাপ করুন<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"এখন সিঙ্ক করুন"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"সিঙ্ক বাতিল করুন"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"সিঙ্কে বর্তমানে সমস্যা দেখা দিচ্ছে। এটি খুব শীঘ্রই ঠিক হয়ে যাবে।"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"নিরাপত্তা"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"স্ক্রিন লক"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"কোনওটিই নয়"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"পিন"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"পাসওয়ার্ড"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"লকের একটি ধরন বেছে নিন"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"স্ক্রিন লকের বিকল্প"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"লক করার বিকল্প"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"প্যাটার্ন আঁকুন"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"নিশ্চিত করুন"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"আবার আঁকুন"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"একটি স্ক্রিন লক সেট করুন"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"আপনার পিন বেছে নিন"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"আপনার প্যাটার্ন বেছে নিন"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"আপনার পাসওয়ার্ড বেছে নিন"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"আপনার পাসওয়ার্ড বেছে নিন"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"বর্তমান স্ক্রিন লক"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"নিরাপত্তার জন্য একটি প্যাটার্ন সেট করুন"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"সরান"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"একইধরনের পাসওয়ার্ড আপনার আইটি অ্যাডমিনের মাধ্যমে ব্লক করা হয়। অন্য একটি পাসওয়ার্ড ব্যবহার করার চেষ্টা করুন।"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ছোট থেকে বড়, বড় থেকে ছোট সংখ্যা অথবা নির্দিষ্ট কয়েকটি সংখ্যা বার বার লেখা যাবে না।"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"স্ক্রিন লকের বিকল্প"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> দিন আগে"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"বিশ্বস্ত ডিভাইস যোগ করুন"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"বিশ্বস্ত ডিভাইসগুলি"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>টি ডিভাইস</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>টি ডিভাইস</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"এই গাড়ি কানেক্ট করা থাকলে <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> এটিকে আনলক করবে কেউ আপনার <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> নিলে, তারা আপনার ডিভাইস অ্যাক্সেস করতে পারবেন।"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"কনফার্ম করুন"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"বিশ্বস্ত ডিভাইস সরান"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"হয়ে গেছে"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"কোনও বিশ্বস্ত ডিভাইস সেট-আপ করতে কম্প্যানিয়ন অ্যাপ ব্যবহার করুন। একবার সেট-আপ হয়ে গেলে, যখন গাড়ি আপনার ফোন শনাক্ত করবে তখন ব্যবহারকারী হিসেবে আপনি নিজের প্রোফাইল আনলক করতে পারবেন"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"১. আপনার ফোনে কম্প্যানিয়ন অ্যাপ ডাউনলোড করুন"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"২. ডিভাইসের সাথে যোগ করতে <xliff:g id="CAR_NAME">%1$s</xliff:g> বেছে নিন"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock এই ডিভাইসের নিরাপত্তা বিষয়ক ফিচার শনাক্ত করতে পারে না। গাড়ি রক্ষায় সাহায্য করতে, আপনার গাড়ি আনলক করে রাখলেই বিশ্বস্ত ডিভাইস শুধুমাত্র আপনার গাড়িকে আনলক করতে পারবে। আপনার গাড়ি আশেপাশে থাকার সময় এমনকি যদি এটি অন্য কারও কাছে থাকে তাহলেও বিশ্বস্ত ডিভাইস আপনার গাড়িটি আনলক করতে পারবে।"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-কে বিশ্বস্ত ডিভাইস হিসেবে যোগ করুন"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-কে বিশ্বস্ত ডিভাইস হিসেবে যোগ করা হয়েছে"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> নথিভুক্ত করা যায়নি"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"একটি বিশ্বস্ত ডিভাইস যোগ করার পর যাচাইকরণ পদ্ধতি সেট করতে হবে। যদি আপনার বিশ্বস্ত ডিভাইস হাতের কাছে না থাকে তাহলে আপনার প্রোফাইল অ্যাক্সেস করার জন্য যাচাইকরণ করা প্রয়োজন।"</string>
     <string name="forget" msgid="3971143908183848527">"ভুলে যান"</string>
+    <string name="connect" msgid="5861699594602380150">"কানেক্ট করুন"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ডিসকানেক্ট করুন"</string>
     <string name="delete_button" msgid="5840500432614610850">"মুছুন"</string>
     <string name="remove_button" msgid="6664656962868194178">"সরিয়ে দিন"</string>
     <string name="cancel" msgid="750286395700355455">"বাতিল করুন"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ডেমো মোড ছেড়ে বেরিয়ে আসুন"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"এর ফলে ডেমো অ্যাকাউন্টটি মুছে দেওয়া হবে এবং সিস্টেমের ডেটা ফ্যাক্টরি রিসেট করা হবে। ব্যবহারকারীর সমস্ত ডেটা মুছে যাবে।"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ডেমো মোড ছেড়ে যান"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"সেট-আপ শেষ করুন"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"এখনই নয়"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"খারিজ করুন"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ড্রাইভ করার সময় এই বৈশিষ্ট্য উপলভ্য নয়।"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ড্রাইভ করার সময় ব্যবহারকারীকে যোগ করতে পারবেন না।"</string>
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 5965fd3..2b62f0a 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zatamnjenje ekrana, ekran osjetljiv na dodir, baterija"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"zatamnjenje ekrana, noć, boja"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni način rada"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilni podaci"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Pristupi podacima putem mobilne mreže"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Isključiti prijenos podataka na mobilnoj mreži?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Prijenos podataka"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Upozorenje na podatke i limit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciklus upotrebe podataka apl."</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Postavi upozorenje o podacima"</string>
+    <string name="data_warning" msgid="116776633806885370">"Upozorenje na podatke"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Postavi ograničenje za podatke"</string>
+    <string name="data_limit" msgid="227338836292511425">"Ograničenje za podatke"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ograničavanje prijenosa podataka"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Glavna jedinica vozila će isključiti prijenos podataka na mobilnoj mreži nakon što dostigne ograničenje koje ste postavili.\n\nS obzirom na to da glavna jedinica vozila mjeri prijenos podataka te da obračun vašeg operatera može biti drugačiji, uzmite u obzir postavljanje umjerenog ograničenja."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"WiFi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Podešavanje bežičnih pristupnih tačaka i upravljanje njima"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Uključivanje WiFi-a…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Isključivanje WiFi-a…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Učitavanje liste WiFi mreža"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi mreža je onemogućena"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Zaboravljanje mreže nije uspjelo"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Povezivanje na mrežu nije uspjelo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj mrežu"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi mreža je onemogućena"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Poveži"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Lozinka"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Prikaži lozinku"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Naziv mreže"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Unesite SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sigurnost"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Jačina signala"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Jačina signala"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Brzina veze"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvencija"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP adresa"</string>
+    <string name="show_password" msgid="2074628020371139240">"Prikaži lozinku"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Unesite naziv mreže"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Unesite lozinku"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Loš"</item>
-    <item msgid="2032262610626057081">"Slab"</item>
-    <item msgid="3859756017461098953">"Dobar"</item>
-    <item msgid="1521103743353335724">"Odličan"</item>
+    <item msgid="7683058295076342057">"Loš"</item>
+    <item msgid="1639222824821660744">"Slab"</item>
+    <item msgid="1838705897358163300">"Dobar"</item>
+    <item msgid="6067166649320533751">"Odličan"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Uključi Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth je onemogućen"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalji o mreži"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC adresa"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP adresa"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Maska podmreže"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 adrese"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Pristupnik"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Postavke za WiFi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Automatsko uključivanje WiFi veze"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"WiFi se ponovo uključuje blizu sačuvanih mreža visokog kvaliteta, poput kućne mreže"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nije dostupno jer je lokacija isključena. Uključite "<annotation id="link">"lokaciju"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Uključiti skeniranje WiFi mreže?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Uključi"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Skeniranje WiFi mreže je isključeno"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automatsko prebacivanje na prijenos podataka na mobilnoj mreži"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Korištenje prijenosa podataka na mobilnoj mreži kada WiFi mreža nema pristup internetu. Mogu nastati troškovi prijenosa podataka."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Saznajte više"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Upravljajte vezama, postavite naziv uređaja i mogućnost otkrivanja"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Računar"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Slušalice"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Snimanje"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Slušalica"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Ulazni periferni uređaj"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Upareni uređaji"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dostupni uređaji"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nema uparenih uređaja"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nema dostupnih uređaja"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Upareni uređaj"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Naziv"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Koristi se za"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Promijenite naziv Bluetooth uređaja"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Neimenovani uređaj"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Upareni uređaji"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Uparivanje novog uređaja"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth će se uključiti za uparivanje"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Prekinuti vezu s uređajem?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Vaše vozilo će prekinuti vezi s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth adresa vozila: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth adresa uređaja: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Naziv vozila"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Promijena naziva vozila"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Promijena naziva uređaja"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Promijeni naziv"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dostupni uređaji"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profili"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Zahtjev za Bluetooth uparivanje"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Upari i poveži"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kôd za Bluetooth uparivanje"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN sadrži slova ili simbole"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Upišite kôd za uparivanje, a zatim pritisnite Return ili Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Obično 0000 ili 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Zahtjev za uparivanje"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Dodirnite za uparivanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Jezici"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Jezici i unos"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastatura"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Upravljanje tastaturama"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Pretvaranje teksta u govor"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Željeni alat"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Trenutni program"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Brzina govora"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Visina"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Vrati na zadano"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Zvuk"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Jačina zvona"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Jačina zvuka navigacije"</string>
@@ -100,31 +140,66 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Mediji"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Postavite jačinu zvuka za muziku i videozapise"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Melodija zvona telefona"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Zadani zvuk obavještenja"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Zadani zvuk alarma"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikacije i obavještenja"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Prikaži sve aplikacije"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Zadane aplikacije"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacije o aplikaciji"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Prisilno zaustavi"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Prisilno zaustaviti?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ako prisilno zaustavite aplikaciju, moguće je da će nepravilno funkcionirati."</string>
     <string name="disable_text" msgid="4358165448648990820">"Onemogući"</string>
     <string name="enable_text" msgid="1794971777861881238">"Omogući"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Deinstaliraj"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ako onemogućite ovu aplikaciju, moguće je da Android i druge aplikacije više neće funkcionirati ispravno."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Onemogući aplikaciju"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Odobrenja"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nema dodijeljenih odobrenja"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nema zatraženih odobrenja"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Prijenos podataka"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Prijenos podataka za apl."</string>
-    <string name="force_stop" msgid="2153183697014720520">"Prisilno zaustavi"</string>
     <string name="computing_size" msgid="5791407621793083965">"Računanje…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dodatno odobrenje</item>
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dodatna odobrenja</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dodatnih odobrenja</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Pomoć i glasovni unos"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplikacija za pomoć"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Korištenje teksta s ekrana"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Omogućava aplikaciji za pomoć da pristupa sadržaju na ekranu kao tekstu"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Korištenje snimke ekrana"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Omogućava aplikaciji za pomoć da pristupa slici ekrana"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Usluga automatskog popunjavanja"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Nema"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Odabrano"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Asistent će imati mogućnost čitanja informacija o aplikacijama koje se koriste na vašem sistemu, uključujući informacije vidljive na ekranu ili dostupne unutar aplikacija."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Vodite računa da je to pouzdana aplikacija&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Automatsko popunjavanje&gt;%1$s&lt;/xliff:g&gt; koristi sadržaj na vašem ekranu da odredi šta se može automatski popuniti."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Dodaj uslugu"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lokacija"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedavni zahtjevi za lokaciju"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahtjeva za lokaciju"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Odobrenja na nivou aplikacija"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Skeniranje"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Usluge lokacije"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Skeniranje Wi‑Fi mreže"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Dozvolite aplikacijama i uslugama skeniranje WiFi mreže u svakom trenutku, čak i kada je WiFi mreža isključena. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Skeniranje Bluetootha"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Dozvolite aplikacijama i uslugama skeniranje uređaja u blizini u svakom trenutku, čak i kada je Bluetooth isključen. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Ažuriranja sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verzija Androida"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivo sigurnosne zakrpe Androida"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Verzija nemoduliranog signala"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Osnovna verzija"</string>
     <string name="build_number" msgid="3997326631001009102">"Broj međuverzije"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adresa"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nije dostupno"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -141,12 +216,50 @@
     <string name="copyright_title" msgid="4220237202917417876">"Autorska prava"</string>
     <string name="license_title" msgid="936705938435249965">"Licenca"</string>
     <string name="terms_title" msgid="5201471373602628765">"Uslovi i odredbe"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Sistemske WebView licence"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Sistemske WebView licence"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Pozadinske slike"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Pružaoci satelitskih slika:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licence trećih strana"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Došlo je do problema s učitavanjem licenci."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Učitavanje…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> korak vas dijeli od toga da postanete programer.</item>
+      <item quantity="few">Još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> koraka vas dijele od toga da postanete programer.</item>
+      <item quantity="other">Još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> koraka vas dijeli od toga da postanete programer.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Sada ste programer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nema potrebe, već ste programer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opcije za programere"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opcije vraćanja na zadano"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Vratite na zadano mrežu, aplikacije ili uređaj"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Vrati mrežu na zadano"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Ovim će se sve postavke mreže vratiti na zadano, uključujući:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"WiFi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Prijenos podataka na mobilnoj mreži"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Potpuno izbriši sve eSIM-ove vozila."</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Ovim se neće otkazati vaš plan usluga mobilnog operatera."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Nije moguće vratiti eSIM-ove na zadano"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Odabir mreže"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Vrati postavke na zadano"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Ponovo postaviti?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Vratiti sve postavke mreže na zadano? Ovu radnju ne možete opozvati!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Vrati postavke na zadano"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Postavke mreže su vraćene na zadano"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Vrati postavke aplikacije na zadano"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Ovim će se vratiti sve postavke na zadano za:\n\n"<li>" Onemogućene aplikacije"</li>\n<li>"Obavještenja za onemogućene aplikacije"</li>\n<li>"Zadane aplikacije za radnje"</li>\n<li>" Ograničenje pozadinskih podataka za aplikacije"</li>\n<li>" Sva ograničenja za odobrenja"</li>\n\n" Nećete izgubiti podatke iz aplikacija."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Vrati aplikacije na zadano"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Postavke aplikacije su vraćene na zadano"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Potpuno izbriši sve podatke"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Na ovaj način će se izbrisati svi podaci s glavne jedinice vozila, uključujući:\n\n"<li>"vaš Google račun"</li>\n<li>"sistemske i aplikacijske podatke i postavke"</li>\n<li>"preuzete aplikacije"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Trenutno ste prijavljeni u sljedeće račune:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Drugi korisnici su prisutni u ovom vozilu."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Vrati vozilo na zadano"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vratiti na zadano?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Izbrisati sve vaše lične podatke i preuzete aplikacije? Ovu radnju ne možete poništiti!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Izbriši sve"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Brisanje u toku"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Pričekajte..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum i vrijeme"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Postavljanje datuma i vremena"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Postavi datum, vrijeme, vremensku zonu i formate"</string>
@@ -166,23 +279,60 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Poredaj po vremenskim zonama"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Vrijeme"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj korisnika"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj račun"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Brisanje korisnika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gost"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prijavljeni ste kao administrator"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Sva odobrenja administratora"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Postavi kao administratora"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Korisnik će moći izbrisati korisnike, uključujući druge Administratore te vratiti sistem na fabričke postavke."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Ova radnja se ne može poništiti."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, postavi kao administratora"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Kreirajte nove korisnike"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Uspostavljajte telefonske pozive"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Poruke putem mobilnih podataka auta"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalirajte nove aplikacije"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Deinstalirajte aplikacije"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj korisnika"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Dodati novog korisnika?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba treba postaviti svoj prostor."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može ažurirati aplikacije za sve druge korisnike."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Dostignut limit za broj korisnika"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+      <item quantity="few">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+      <item quantity="other">Možete kreirati najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Kreiranje novog korisnika nije uspjelo"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Izbrisati ovog korisnika?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Sve aplikacije i podaci će biti izbrisani."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Brisanje korisnika nije uspjelo."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Odbaci"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Pokušaj ponovo"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Brisati zadnjeg korisnika?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Nakon što izbrišete preostalog korisnika ovog automobila, kreirat će se novi korisnik administrator."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Svi podaci, postavke i aplikacije povezane s ovim korisnikom bit će izbrisani. Morat ćete ponovo postaviti sistem."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Odabir novog administratora"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Morate odabrati najmanje jednog administratora. Da izbrišete ovog, prvo odaberite zamjenskog."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Odaberite administratora"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gost"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gost"</string>
     <string name="user_switch" msgid="6544839750534690781">"Prebaci"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Vi (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ime"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nije postavljen"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Izmjena korisničkog imena"</string>
     <string name="users_list_title" msgid="770764290290240909">"Korisnici"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Odobrenja za korisnika %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Računi"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Korisnik"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj račun"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nije dodan nijedan račun"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Računi za korisnika <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatsko sinhroniziranje podataka"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Omogućava aplikacijama automatsko osvježavanje podataka"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Uklj. autom. sinhron. podataka?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Promjene računa koje unesete na webu automatski će se kopirati na vaš uređaj.\n\nNeki računi također mogu automatski kopirati promjene s telefona na web. Google račun funkcionira na ovaj način."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Isklj. autom. sinhron. podataka?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Ovim će se uštedjeti na prijenosu podataka, ali ćete morati ručno sinhronizirati svaki račun da prikupite najnovije informacije. Također, nećete primati obavještenja kada se izvrše ažuriranja."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Podaci o računu"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Dodaj račun"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Dodavanje računa"</string>
@@ -190,16 +340,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Ukloni račun"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Ukloniti račun?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Uklanjanjem ovog računa izbrisat ćete sve njegove poruke, kontakte i druge podatke s uređaja!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Vaš administrator ne dozvoljava ovu promjenu"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Ukloniti ovog korisnika?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Sve aplikacije i podaci će biti izbrisani."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Uklanjanje korisnika nije uspjelo."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Pokušati ponovo?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Odbaci"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Pokušaj ponovo"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodati novog korisnika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba treba postaviti svoj prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može ažurirati aplikacije za sve druge korisnike."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Uklanjanje računa nije uspjelo."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sinhronizacija računa"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinhronizacija uključena za stavke: <xliff:g id="ID_1">%1$d</xliff:g> od ukupno <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinhronizacija je uključena za sve stavke"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinhronizacija je isključena za sve stavke"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinhronizir. ISKLJUČENO"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Greška u sinhroniziranju"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Posljednje sinhroniziranje: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sinhroniziranje u toku…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Dodirnite da sinhronizirate odmah<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinhroniziraj sada"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Otkaži sinhroniziranje"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Trenutno se javljaju problemi sa sinhroniziranjem. Ubrzo će opet raditi."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sigurnost"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zaključavanje ekrana"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nema"</string>
@@ -207,7 +361,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Lozinka"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Izaberite vrstu zaklj."</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opcije zaključavanja ekrana"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opcije zaključavanja"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Unesite svoj uzorak"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Potvrdi"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Nacrtajte ponovo"</string>
@@ -217,7 +371,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Postavljanje zaključavanja ekrana"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Odabir PIN-a"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Odaberite uzorak"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Odabir lozinke"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Odabir lozinke"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Trenutni način zaključavanja ekrana"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Postavite uzorak radi sigurnosti"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Obriši"</string>
@@ -295,7 +449,29 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Vaš IT administrator je blokirao uobičajene lozinke. Probajte drugu lozinku."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nije dozvoljen rastući, opadajući ili ponavljajući niz cifri."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja ekrana"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : prije <xliff:g id="NUM_DAYS">%3$s</xliff:g> dana"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Dodaj pouzdani uređaj"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Pouzdani uređaji"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> uređaj</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Uređaj <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> će otključati ovaj automobil kada se poveže. Ako neko uzme <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, može pristupiti ovom uređaju"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdi"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ukloni pouzdani uređaj"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Gotovo"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Postavite pouzdani uređaj pomoću prateće aplikacije. Nakon što ga postavite, moći ćete otključati svoj korisnički profil kada vozilo otkrije vaš telefon"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Preuzmite prateću aplikaciju na svoj telefon"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Odaberite automobil <xliff:g id="CAR_NAME">%1$s</xliff:g> na telefonu da uparite uređaje"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Funkcija Smart Lock ne može prepoznati sigurnosne funkcije ovog uređaja. Kako bi zaštitio vaš automobil, pouzdani uređaj će moći održati vaš automobil otključanim samo nakon što ga vi otključate. Vaš pouzdani uređaj može zadržati vaš automobil otključanim kada je u blizini, čak i ako ga drži neko drugi."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Dodajte <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kao pouzdani uređaj"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g> je uspješno dodan kao pouzdani uređaj"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Prijava uređaja <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije uspjela"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Nakon što dodate pouzdani uređaj, morate postaviti metodu autentifikacije. Autentifikacija će biti potrebna za pristup profilu u slučaju da kod sebe nemate pouzdani uređaj."</string>
     <string name="forget" msgid="3971143908183848527">"Zaboravi"</string>
+    <string name="connect" msgid="5861699594602380150">"Poveži"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Prekini vezu"</string>
     <string name="delete_button" msgid="5840500432614610850">"Izbriši"</string>
     <string name="remove_button" msgid="6664656962868194178">"Ukloni"</string>
     <string name="cancel" msgid="750286395700355455">"Otkaži"</string>
@@ -305,8 +481,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Izađite iz načina demonstr."</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ovim će se izbrisati račun za demonstraciju i vratiti sistem na fabričke postavke. Svi korisnički podaci bit će izgubljeni."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Izađite iz demonstr."</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"dovrši postavljanje"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ne sada"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ODBACI"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funkcija nije dostupna tokom vožnje."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Nije moguće dodati korisnika za vrijeme vožnje."</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index c26b27e..6562fd4 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"pantalla atenuada, pantalla tàctil, bateria"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"pantalla atenuada, nit, color"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mode nocturn"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Xarxa i Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Xarxa mòbil"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dades mòbils"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accedeix a les dades amb la xarxa mòbil"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vols desactivar les dades mòbils?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Ús de dades"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Advertiment i límit de dades"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cicle d\'ús de dades d\'aplicacions"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Defineix un advertiment de dades"</string>
+    <string name="data_warning" msgid="116776633806885370">"Advertiment de dades"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Defineix un límit de dades"</string>
+    <string name="data_limit" msgid="227338836292511425">"Límit de dades"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitació de l\'ús de dades"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Es desactivaran les dades mòbils de la unitat principal del vehicle quan s\'arribi al límit que has establert.\n\nCom que la unitat principal mesura l\'ús de dades i és possible que l\'operador de telefonia mòbil en faci un recompte diferent, et recomanem que estableixis un límit prudent."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configura i gestiona els punts d\'accés sense fil"</string>
     <string name="wifi_starting" msgid="473253087503153167">"S\'està activant la Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"S\'està desactivant la Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"S\'està carregant la llista de xarxes Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi desactivada"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"No s\'ha pogut oblidar la xarxa"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"No s\'ha pogut connectar a la xarxa"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Afegeix una xarxa"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi desactivada"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connecta"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Contrasenya"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostra la contrasenya"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nom de la xarxa"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Introdueix l\'SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Seguretat"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Intensitat del senyal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Intensitat del senyal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Estat"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Velocitat d\'enllaç"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Freqüència"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Adreça IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Mostra la contrasenya"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Introdueix el nom de la xarxa"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Introdueix la contrasenya"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Feble"</item>
-    <item msgid="2032262610626057081">"Suficient"</item>
-    <item msgid="3859756017461098953">"Bona"</item>
-    <item msgid="1521103743353335724">"Excel·lent"</item>
+    <item msgid="7683058295076342057">"Feble"</item>
+    <item msgid="1639222824821660744">"Suficient"</item>
+    <item msgid="1838705897358163300">"Bona"</item>
+    <item msgid="6067166649320533751">"Excel·lent"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Activa el Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth desactivat"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalls de la xarxa"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Adreça MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Adreça IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Màscara de subxarxa"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adreces IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Passarel·la"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferències de la Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Activa la Wi‑Fi automàticament"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"La Wi‑Fi es tornarà a activar automàticament prop de xarxes desades d\'alta qualitat, com la de casa teva"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"No disponible perquè la ubicació està desactivada. Activa la "<annotation id="link">"ubicació"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vols activar la cerca de xarxes Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Activa"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"S\'ha activat la cerca de xarxes Wi‑Fi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Canvia automàticament a dades mòbils"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Utilitza dades mòbils quan la Wi‑Fi no tingui accés a Internet. És possible que s\'apliquin càrrecs per ús de dades."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Més informació"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Gestiona les connexions, defineix el nom i la visibilitat del dispositiu"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Ordinador"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Auriculars"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telèfon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imatges"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Auricular"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Perifèric d\'entrada"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Dispositius vinculats"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dispositius disponibles"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"No hi ha cap dispositiu vinculat"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"No hi ha cap dispositiu disponible"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Dispositiu vinculat"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nom"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Utilitza per a"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Canvia el nom dispositiu Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Dispositiu sense nom"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositius vinculats"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Vincula un dispositiu nou"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"El Bluetooth s\'activarà per vincular"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Vols desconnectar el dispositiu?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"El vehicle es desconnectarà del dispositiu (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>)."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Adreça Bluetooth del vehicle: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Adreça Bluetooth del dispositiu: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nom del vehicle"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Canvia el nom del vehicle"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Canvia el nom del dispositiu"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Canvia el nom"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dispositius disponibles"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Perfils"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Sol·licitud de vinculació de Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Vincula i connecta"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Codi de vinculació per Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"El PIN conté lletres o símbols"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Escriu el codi de vinculació i, a continuació, prem la tecla de retorn."</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Generalment 0000 o 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Sol·licitud de vinculació"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Toca per vincular el dispositiu amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Idiomes"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Idiomes i introducció de text"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Teclat"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Gestiona els teclats"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Sortida de síntesi de veu"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor preferit"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motor actual"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Velocitat de veu"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"To"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Restableix"</string>
     <string name="sound_settings" msgid="3072423952331872246">"So"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volum del to"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volum de navegació"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Multimèdia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Defineix el volum de la música i els vídeos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarma"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"So de trucada"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"So de notificació predeterminat"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"So d\'alarma predeterminat"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplicacions i notificacions"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Mostra totes les aplicacions"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplicacions predeterminades"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informació de les aplicacions"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Força l\'aturada"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vols forçar l\'aturada?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Si forces l\'aturada d\'una aplicació, és possible que no funcioni correctament."</string>
     <string name="disable_text" msgid="4358165448648990820">"Desactiva"</string>
     <string name="enable_text" msgid="1794971777861881238">"Activa"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Desinstal·la"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si desactives aquesta aplicació, és possible que Android i altres aplicacions deixin de funcionar com esperes."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desactiva l\'aplicació"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisos"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versió: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No s\'ha concedit cap permís"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No s\'ha sol·licitat cap permís"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Ús de dades"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Ús de dades de l\'aplicació"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Força l\'aturada"</string>
     <string name="computing_size" msgid="5791407621793083965">"S\'està calculant…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> permisos addicionals</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> permís addicional</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistència i entrada de veu"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplicació d\'assistència"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Utilitza el text de la pantalla"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Permet que l\'aplicació d\'assistència accedeixi als continguts de la pantalla en forma de text"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Utilitza la captura de pantalla"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Permet que l\'aplicació d\'assistència accedeixi a una imatge de la pantalla"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Servei Emplenament automàtic"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Cap"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Seleccionada"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"L\'assistent podrà llegir informació sobre les aplicacions que s\'utilitzen al teu sistema; també podrà accedir a la informació que es veu a la teva pantalla o a què accedeixes des de les aplicacions."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Assegura\'t que confies en aquesta aplicació&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Emplenament automàtic de Google&gt;%1$s&lt;/xliff:g&gt; utilitza el contingut que es mostra a la pantalla per determinar què es pot emplenar automàticament."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Afegeix un servei"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Ubicació"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Sol·licituds d\'ubicació recents"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No hi ha cap sol·licitud d\'ubicació recent"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisos al nivell de l\'aplicació"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Cerca"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Serveis d\'ubicació"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Cerca de xarxes Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Permet que les aplicacions i els serveis cerquin xarxes Wi‑Fi en qualsevol moment, fins i tot quan la Wi‑Fi estigui desactivada. Aquesta opció es pot utilitzar, per exemple, per millorar les funcions i els serveis basats en la ubicació."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Cerca de dispositius Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permet que les aplicacions i els serveis cerquin dispositius propers en qualsevol moment, fins i tot quan el Bluetooth estigui desactivat. Es pot utilitzar, per exemple, per millorar les funcions i els serveis basats en la ubicació."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Actualitzacions del sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Actualitzacions del sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versió d\'Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivell de pedaç de seguretat d\'Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versió de banda base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versió de kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Número de compilació"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Adreça Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"No disponible"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Estat"</string>
     <string name="device_status" msgid="267298179806290920">"Estat"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Drets d\'autor"</string>
     <string name="license_title" msgid="936705938435249965">"Llicència"</string>
     <string name="terms_title" msgid="5201471373602628765">"Termes i condicions"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Llicència de WebView del sistema"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Llicències de WebView del sistema"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Fons de pantalla"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Proveïdors d\'imatges per satèl·lit:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Llicències de tercers"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"S\'ha produït un problema en carregar les llicències."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"S\'està carregant…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Ara ja només et queden <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> passos per convertir-te en desenvolupador.</item>
+      <item quantity="one">Ara ja només et queda <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> pas per convertir-te en desenvolupador.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Ara ja ets desenvolupador!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"No és necessari, ja ets desenvolupador."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opcions per a desenvolupadors"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opcions de recuperació"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Restabliment de la xarxa, de les aplicacions o del dispositiu"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Restableix la xarxa"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Es restablirà tota la configuració de la xarxa, com ara les opcions següents:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Dades mòbils"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Esborra totes les eSIM del vehicle"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Aquesta acció no cancel·larà el teu pla de servei."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"No es poden restablir les eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Selecciona una xarxa"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Restableix la configuració"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Vols restablir-la?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Vols restablir tota la configuració de la xarxa? Aquesta acció no es pot desfer."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Restableix la configuració"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"S\'ha restablert la configuració de la xarxa"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Restableix les preferències d\'aplicacions"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Amb aquesta acció, es restabliran les preferències dels elements següents:\n\n"<li>"aplicacions desactivades"</li>\n<li>"notificacions d\'aplicacions desactivades"</li>\n<li>"aplicacions predeterminades per a les accions"</li>\n<li>"restriccions de dades en segon pla per a les aplicacions"</li>\n<li>"restriccions de permisos"</li>\n\n"No perdràs les dades de les aplicacions."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Restableix les aplicacions"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"S\'han restablert les preferències d\'aplicacions"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Esborra totes les dades"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Aquesta opció esborrarà totes dades de la unitat principal del vehicle, com ara:\n\n"<li>"el teu Compte de Google"</li>\n<li>"la configuració i les dades d\'aplicacions i del sistema"</li>\n<li>"les aplicacions baixades"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Actualment tens la sessió iniciada als comptes següents:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Hi ha altres usuaris al vehicle."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Restableix el vehicle"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vols restablir-lo?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vols esborrar tota la informació personal i les aplicacions baixades? Aquesta acció no es pot desfer."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Esborra-ho tot"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"S\'està esborrant"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Espera…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data i hora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Estableix la data i l\'hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Estableix la data, l\'hora, la zona horària i els formats"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Ordena per zona horària"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Hora"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Afegeix un usuari"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Afegeix un compte"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Suprimeix l\'usuari"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Usuari nou"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Convidat"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrador"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sessió iniciada com a administrador"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tots els permisos d\'administrador"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Converteix en administrador"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"L\'usuari podrà suprimir usuaris, inclosos altres administradors, i restablir les dades de fàbrica del sistema."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Aquesta acció no es pot desfer."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Sí, converteix en administrador"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Crea usuaris"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Fes trucades"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Envia SMS amb dades mòbils del cotxe"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instal·la aplicacions noves"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstal·la aplicacions"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Afegeix un usuari"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Usuari nou"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Vols afegir un usuari?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Quan s\'afegeix un usuari nou, aquest usuari ha de configurar el seu espai."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualsevol usuari pot actualitzar les aplicacions de la resta d\'usuaris."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"S\'ha assolit el límit d\'usuaris"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Pots crear fins a <xliff:g id="COUNT">%d</xliff:g> usuaris.</item>
+      <item quantity="one">Només es pot crear 1 usuari.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"No s\'ha pogut crear l\'usuari"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vols suprimir l\'usuari?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Se suprimiran totes les dades i totes les aplicacions."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"No s\'ha pogut suprimir l\'usuari."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignora"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Torna-ho a provar"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Suprimir l\'últim usuari?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Després de suprimir l\'únic usuari restant d\'aquest cotxe, es crearà un usuari administrador nou."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"S\'esborraran totes les dades, les opcions de configuració i les aplicacions associades a aquest usuari. Hauràs de tornar a configurar el sistema."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Tria un administrador nou"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Hi ha d\'haver com a mínim un administrador. Per suprimir aquest administrador, primer n\'has de triar un altre."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Tria un administrador"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Convidat"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Convidat"</string>
     <string name="user_switch" msgid="6544839750534690781">"Canvia"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Tu (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nom"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"No configurat"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Edita el nom d\'usuari"</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuaris"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permisos concedits a %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Comptes"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Usuari"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Afegeix un compte"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"No s\'ha afegit cap compte"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Comptes de l\'usuari <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronitza les dades automàticament"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permet que les aplicacions actualitzin dades automàticament"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Activar sincronització autom.?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Els canvis que facis als comptes des del web es reflectiran automàticament al dispositiu.\n\nÉs possible que alguns comptes també reflecteixin al web els canvis que hagis fet al telèfon. Així funcionen els comptes de Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Desactivar sincronització autom.?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Et permetrà estalviar dades, però hauràs de sincronitzar cada compte manualment per obtenir la informació recent. No rebràs notificacions quan hi hagi actualitzacions."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informació del compte"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Afegeix un compte"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Afegeix un compte"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Suprimeix el compte"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Vols suprimir el compte?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"En suprimir aquest compte, se\'n suprimiran tots els missatges, els contactes i la resta de dades del dispositiu."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"L\'administrador no permet aquest canvi"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Vols suprimir l\'usuari?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Se suprimiran totes les dades i totes les aplicacions."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"No s\'ha pogut suprimir l\'usuari."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Ho vols tornar a provar?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Ignora"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Torna-ho a provar"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Vols afegir un usuari?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Quan s\'afegeix un usuari nou, aquest usuari ha de configurar el seu espai."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualsevol usuari pot actualitzar les aplicacions de la resta d\'usuaris."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"No s\'ha pogut suprimir el compte."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronització del compte"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"La sincronització està activada per a <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g> elements"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"La sincronització està activada per a tots els elements"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"La sincronització està desactivada per a tots els elements"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sincronització desactivada"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Error de sincronització"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Última sincronització: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"S\'està sincronitzant ara…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Toca per sincronitzar ara (<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronitza ara"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel·la la sincronització"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"La sincronització té problemes. Tornarà a funcionar aviat."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguretat"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueig de pantalla"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Cap"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Contrasenya"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Tria tipus de bloqueig"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opcions de bloqueig de pantalla"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opcions de bloqueig"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Introdueix el patró"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirma"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Torna a dibuixar"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Defineix un bloqueig de pantalla"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Tria un PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Tria el teu patró"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Tria una contrasenya"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Tria una contrasenya"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Bloqueig de pantalla actual"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Per seguretat, defineix un patró"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Esborra"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"L\'administrador de TI ha bloquejat les contrasenyes més comunes. Prova una altra contrasenya."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No es permet cap seqüència de dígits ascendents, descendents ni repetits."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcions de bloqueig de pantalla"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: fa <xliff:g id="NUM_DAYS">%3$s</xliff:g> dies"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Afegeix dispositiu de confiança"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Disp. de confiança"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositius</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositiu</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"El <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> desbloquejarà el cotxe quan estigui connectat. Si algú t\'agafa el <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, és possible que puguin accedir-hi"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirma"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Suprimeix el dispositiu de confiança"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Fet"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Fes servir l\'aplicació complementària per configurar un dispositiu de confiança. Un cop configurat, podràs desbloquejar el teu perfil d\'usuari quan el vehicle detecti el telèfon"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Baixa l\'aplicació complementària al telèfon"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecciona <xliff:g id="CAR_NAME">%1$s</xliff:g> al telèfon per vincular els dispositius"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock no pot detectar les funcions de seguretat d\'aquest dispositiu. Per protegir el cotxe, el dispositiu de confiança només podrà mantenir-lo desbloquejat si l\'has desbloquejat tu. El dispositiu de confiança pot mantenir el cotxe desbloquejat quan estigui a prop, encara que l\'agafi algú altre."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Afegeix <xliff:g id="DEVICE_NAME">%1$s</xliff:g> com a dispositiu de confiança"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"El dispositiu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> s\'ha afegit correctament com a dispositiu de confiança"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"No s\'ha pogut inscriure el dispositiu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Per afegir un dispositiu de confiança, cal que defineixis un mètode d\'autenticació a continuació. Si no tens a mà el dispositiu de confiança, caldrà que utilitzis el mètode d\'autenticació per accedir al perfil."</string>
     <string name="forget" msgid="3971143908183848527">"Oblida"</string>
+    <string name="connect" msgid="5861699594602380150">"Connecta"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Desconnecta"</string>
     <string name="delete_button" msgid="5840500432614610850">"Suprimeix"</string>
     <string name="remove_button" msgid="6664656962868194178">"Suprimeix"</string>
     <string name="cancel" msgid="750286395700355455">"Cancel·la"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Surt del mode de demostració"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Aquesta acció suprimirà el compte de demostració i es restabliran les dades de fàbrica del sistema. Es perdran totes les dades d\'usuari."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Surt de la demostració"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"finalitza la configuració"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ara no"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORA"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Aquesta funció no està disponible mentre condueixes."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"No pots afegir usuaris mentre condueixes."</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index f7b6ae5..b688779 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ztlumení obrazovky, dotyková obrazovka, baterie"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ztlumení obrazovky, noc, tónování"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Noční režim"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Síť a internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilní síť"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilní data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Přistupovat k datům přes mobilní síť"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vypnout mobilní data?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Využití dat"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Limit dat a upozornění"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cyklus využití dat aplikacemi"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Nastavit upozornění na data"</string>
+    <string name="data_warning" msgid="116776633806885370">"Upozornění na data"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Nastavit limit dat"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limit dat"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Omezení spotřeby dat"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Jakmile dosáhnete stanoveného limitu dat, řídicí jednotka auta mobilní data vypne.\n\nVyužití dat je měřeno řídicí jednotkou, ale váš operátor ho může měřit jinak, doporučujeme proto nastavit konzervativní limit."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Nastavení a správa přístupových bodů bezdrátové sítě"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Zapínání Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Vypínání Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Načítání seznamu Wi-Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Síť Wi-Fi je vypnutá"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Síť se nepodařilo odstranit"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Připojení k síti se nezdařilo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Přidat síť"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Síť Wi-Fi je vypnutá"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Připojit"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Heslo"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Zobrazit heslo"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Název sítě"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Zadejte SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Zabezpečení"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Síla signálu"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Síla signálu"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Stav"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Rychlost připojení"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvence"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP adresa"</string>
+    <string name="show_password" msgid="2074628020371139240">"Zobrazit heslo"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Zadejte název sítě"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Zadejte heslo"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"klíč_značky_přístupového_bodu"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Slabý"</item>
-    <item msgid="2032262610626057081">"Dostačující"</item>
-    <item msgid="3859756017461098953">"Dobrý"</item>
-    <item msgid="1521103743353335724">"Vynikající"</item>
+    <item msgid="7683058295076342057">"Slabý"</item>
+    <item msgid="1639222824821660744">"Dostačující"</item>
+    <item msgid="1838705897358163300">"Dobrý"</item>
+    <item msgid="6067166649320533751">"Vynikající"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Zapnout Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Rozhraní Bluetooth deaktivováno"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Podrobnosti sítě"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Adresa MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP adresa"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Maska podsítě"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adresy IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Brána"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Předvolby Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Zapínat Wi-Fi automaticky"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"V dosahu kvalitních uložených sítí, jako je například vaše domácí síť, se Wi-Fi znovu zapne"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nedostupné, protože je vypnuto určování polohy. "<annotation id="link">"Zapnout"</annotation></string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Zapnout vyhledávání Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Zapnout"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Vyhledávání Wi‑Fi je zapnuto"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automaticky přepínat na mobilní data"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Když Wi-Fi nebude mít přístup k internetu, použije se mobilní datové připojení. Za využití dat mohou být účtovány poplatky."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Další informace"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Umožňuje spravovat připojení, nastavit název zařízení a viditelnost"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Počítač"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Náhlavní souprava"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Zobrazovací zařízení"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Sluchátka"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periferní vstupní zařízení"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Spárovaná zařízení"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dostupná zařízení"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Žádná spárovaná zařízení"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Žádná dostupná zařízení"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Spárované zařízení"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Název"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Použít pro"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Změna názvu zařízení Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Zařízení bez názvu"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Spárovaná zařízení"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Spárovat nové zařízení"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Zapne se Bluetooth za účelem spárování"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Odpojit zařízení?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Vozidlo bude odpojeno od zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Adresa Bluetooth vozidla: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Adresa Bluetooth zařízení: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Název vozidla"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Přejmenovat vozidlo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Přejmenovat zařízení"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Přejmenovat"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dostupná zařízení"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profily"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Požadavek na párování zařízení Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Párovat a připojit"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Párovací kód Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Kód PIN obsahuje písmena nebo symboly"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Zadejte párovací kód a poté stiskněte Return nebo Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Obvykle 0000 nebo 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Požadavek na párování"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Klepnutím spárujete se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Jazyky"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Jazyky a zadávání"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Klávesnice"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Spravovat klávesnice"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Výstup převodu textu na řeč"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Preferovaný modul"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Aktuální modul"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Rychlost řeči"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Výška"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Resetovat"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Zvuk"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Hlasitost vyzvánění"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Hlasitost navigace"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Média"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Umožňuje nastavit hlasitost hudby a videí"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Budík"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Vyzváněcí tón telefonu"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Výchozí zvuk oznámení"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Výchozí zvuk budíku"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikace a oznámení"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Zobrazit všechny aplikace"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Výchozí aplikace"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informace o aplikaci"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Vynutit ukončení"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vynutit ukončení?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Vynucené ukončení může způsobit nepředvídatelné chování aplikace."</string>
     <string name="disable_text" msgid="4358165448648990820">"Zakázat"</string>
     <string name="enable_text" msgid="1794971777861881238">"Povolit"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Odinstalovat"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Pokud tuto aplikaci deaktivujete, systém Android a ostatní aplikace nemusejí fungovat správně."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktivovat aplikaci"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Oprávnění"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verze: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nebyla udělena žádná oprávnění"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nevyžaduje žádná oprávnění"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Využití dat"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Využití dat aplikací"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Vynutit ukončení"</string>
     <string name="computing_size" msgid="5791407621793083965">"Probíhá výpočet…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> další oprávnění</item>
@@ -117,15 +168,39 @@
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dalších oprávnění</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> další oprávnění</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asistence a hlasový vstup"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Asistenční aplikace"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Použití textu z obrazovky"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Asistenční aplikace bude mít přístup k obsahu obrazovky v textové podobě"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Použití snímku obrazovky"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Asistenční aplikace bude mít přístup k obrazu na obrazovce"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Služba automatického vyplňování"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Žádné"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Vybráno"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Asistent bude moci číst informace o aplikacích používaných v systému, včetně údajů viditelných na obrazovce a přístupných v rámci aplikací."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Zkontrolujte, zda se jedná o důvěryhodnou aplikaci&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Automatické doplňování Google&gt;%1$s&lt;/xliff:g&gt; určuje na základě obsahu obrazovky, co lze automaticky vyplnit."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Přidat službu"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Poloha"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedávné žádosti o určení polohy"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Žádné nedávné žádosti o určení polohy"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Oprávnění na úrovni aplikace"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Vyhledávání"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Služby určování polohy"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Vyhledávání Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Povolit aplikacím a službám vyhledávat sítě Wi‑Fi, i když je připojení k sítím Wi‑Fi vypnuté. Tuto funkci lze využít například ke zlepšení funkcí a služeb založených na poloze."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Vyhledávání Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Povolit aplikacím a službám vyhledávat zařízení v okolí kdykoliv, i když je rozhraní Bluetooth vypnuté. Tuto funkci lze využít například ke zlepšení funkcí a služeb založených na poloze."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Systém"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Aktualizace systému"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizace systému"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verze systému Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Úroveň opravy zabezpečení Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Verze základního pásma"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Verze jádra"</string>
     <string name="build_number" msgid="3997326631001009102">"Číslo sestavení"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresa Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Není k dispozici"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Stav"</string>
     <string name="device_status" msgid="267298179806290920">"Stav"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"Autorská práva"</string>
     <string name="license_title" msgid="936705938435249965">"Licence"</string>
     <string name="terms_title" msgid="5201471373602628765">"Smluvní podmínky"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Systémová licence WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Systémové licence WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Tapety"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Poskytovatelé satelitních snímků:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licence třetích stran"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Při načítání licencí došlo k chybě."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Načítání…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="few">Jste <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> klepnutí od toho, abyste se stali vývojářem.</item>
+      <item quantity="many">Jste <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> klepnutí od toho, abyste se stali vývojářem.</item>
+      <item quantity="other">Jste <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> klepnutí od toho, abyste se stali vývojářem.</item>
+      <item quantity="one">Jste <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> klepnutí od toho, abyste se stali vývojářem.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Voilà! Stal se z vás vývojář."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Není potřeba, už jste vývojář."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Pro vývojáře"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Možnosti resetu"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Resetování sítě, aplikací nebo zařízení"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Resetovat síť"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Budou resetovány všechny sítě, včetně těchto:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobilní data"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Vymazat všechny eSIM karty ve vozidle"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Váš tarif nebude zrušen."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM karty nelze resetovat"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Vyberte síť"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Resetovat nastavení"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Resetovat?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Chcete resetovat všechna nastavení sítí? Tuto akci nelze vrátit zpět."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Resetovat nastavení"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Nastavení sítí bylo resetováno"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Resetovat předvolby aplikací"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Touto akcí obnovíte všechna nastavení pro:\n\n"<li>"deaktivované aplikace,"</li>\n<li>"deaktivovaná oznámení aplikací,"</li>\n<li>"výchozí aplikace k provádění akcí,"</li>\n<li>"omezení dat na pozadí pro aplikace,"</li>\n<li>"omezení oprávnění."</li>\n\n"O žádná data aplikací nepřijdete."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Resetovat aplikace"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Předvolby aplikací byly resetovány"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Vymazat data (tovární reset)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Touto akcí vymažete všechna data z řídicí jednotky vozidla, včetně těchto:\n\n"<li>"váš účet Google,"</li>\n<li>"data a nastavení systému a aplikací,"</li>\n<li>"stažené aplikace."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Jste přihlášeni k následujícím účtům:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"V tomto vozidle jsou další uživatelé."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Resetovat vozidlo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Resetovat?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Chcete vymazat všechny osobní údaje a stažené aplikace? Tuto akci nelze vrátit zpět."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Vymazat vše"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Mazání"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Prosím čekejte..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum a čas"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Nastavení data a času"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Umožňuje nastavit datum, čas, časové pásmo a formát"</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Seřadit podle časového pásma"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Čas"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Přidat uživatele"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Přidat účet"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Smazání uživatele"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nový uživatel"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Host"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrátor"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Jste přihlášeni jako administrátor"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Všechna oprávnění administrátora"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Nastavit jako administrátora"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Uživatel bude moci mazat ostatní uživatele (včetně administrátorů) a resetovat systém do továrního nastavení."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Tuto akci nelze vrátit zpět."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ano, nastavit jako administrátora"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Vytvoření nových uživatelů"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefonování"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS přes mobilní data auta"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalace nových aplikací"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Odinstalace aplikací"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Přidat uživatele"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nový uživatel"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Přidat nového uživatele?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Každý nově přidaný uživatel si musí nastavit vlastní prostor."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Každý uživatel může aktualizovat aplikace všech ostatních uživatelů."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Bylo dosaženo limitu uživatelů"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="few">Lze vytvořit až <xliff:g id="COUNT">%d</xliff:g> uživatele.</item>
+      <item quantity="many">Lze vytvořit až <xliff:g id="COUNT">%d</xliff:g> uživatele.</item>
+      <item quantity="other">Lze vytvořit až <xliff:g id="COUNT">%d</xliff:g> uživatelů.</item>
+      <item quantity="one">Lze vytvořit jen jednoho uživatele.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Nového uživatele se nepodařilo vytvořit"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Smazat tohoto uživatele?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Budou smazány všechny aplikace a data."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Uživatele se nepodařilo smazat."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Zavřít"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Zkusit znovu"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Smazat posledního uživatele?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Po smazání posledního uživatele auta bude vytvořen nový uživatel-administrátor."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Budou smazána všechna data, nastavení a aplikace tohoto uživatele. Systém bude nutné nastavit znovu."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Vyberte nového administrátora"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Potřebujete minimálně jednoho administrátora. Chcete-li tohoto administrátora smazat, nejprve vyberte náhradního."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Vyberte administrátora"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Host"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Host"</string>
     <string name="user_switch" msgid="6544839750534690781">"Přepnout"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Vy (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Jméno"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Není nastaveno"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Upravení uživatelského jména"</string>
     <string name="users_list_title" msgid="770764290290240909">"Uživatelé"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Oprávnění uživatele %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Účty"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Uživatel"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Přidat účet"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nebyly přidány žádné účty"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Účty uživatele <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automaticky synchronizovat data"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Nechat aplikace automaticky aktualizovat data"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Zapnout aut. synchronizaci dat?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Změny, které v rámci svých účtů provedete na webu, se automaticky zkopírují do telefonu.\n\nNěkteré účty také automaticky zkopírují změny provedené v telefonu na web. Tímto způsobem funguje například účet Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Vypnout automatickou synchronizaci dat?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Toto nastavení šetří data. Nejnovější informace ale bude třeba získávat pomocí ruční synchronizace každého účtu. Kromě toho nebudete dostávat oznámení o aktualizacích."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informace o účtu"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Přidat účet"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Přidání účtu"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Odstranit účet"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Odstranit účet?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Odebráním účtu smažete ze zařízení také všechny jeho zprávy, kontakty a další data."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Administrátor tuto změnu zakázal"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Odstranit uživatele?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Budou smazány všechny aplikace a data."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Uživatele se nepodařilo odstranit."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Zkusit znovu?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Zavřít"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Zkusit znovu"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Přidat nového uživatele?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Každý nově přidaný uživatel si musí nastavit vlastní prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Každý uživatel může aktualizovat aplikace všech ostatních uživatelů."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Účet se nepodařilo odstranit."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Synchronizace účtů"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synchronizace je zapnuta u <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g> položek"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synchronizace je zapnuta u všech položek"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synchronizace je vypnuta u všech položek"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synchronizace je VYPNUTA"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Chyba synchronizace"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Poslední synchronizace <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synchronizace..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Klepnutím synchronizujete (poslední synchronizace proběhla <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synchronizovat"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Zrušit synchronizaci"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Nastaly potíže se synchronizací. Služba bude brzy obnovena."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Zabezpečení"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zámek obrazovky"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Žádný zámek"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Heslo"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Zvolte typ zámku"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Možnosti zámku obrazovky"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Možnosti zámku"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Zadejte gesto"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Potvrdit"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Nakreslit znovu"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Nastavení zámku obrazovky"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Zvolte kód PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Vyberte gesto"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Zvolte heslo"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Zvolte heslo"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Aktuální zámek obrazovky"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Z bezpečnostních důvodů nastavte gesto"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Vymazat"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Obvyklá hesla jsou blokována administrátorem IT. Použijte jiné heslo."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Posloupnost rostoucích, klesajících nebo opakujících se číslic není povolena."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zámku obrazovky"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : před <xliff:g id="NUM_DAYS">%3$s</xliff:g> dny"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Přidat důvěryhodné zařízení"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Důvěryhodná zařízení"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> zařízení</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> zařízení</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> zařízení</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> zařízení</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Když zařízení <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> připojíte, odemkne tohle auto. Pokud vám zařízení <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> někdo vezme, bude mít přístup k tomuto zařízení."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdit"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Odstranit důvěryhodné zařízení"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Hotovo"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Nastavte důvěryhodné zařízení pomocí doprovodné aplikace. Jakmile bude nastaveno, budete moci odemknout profil uživatele, když vozidlo rozpozná váš telefon"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Stáhněte si do telefonu doprovodnou aplikaci"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. V telefonu vyberte <xliff:g id="CAR_NAME">%1$s</xliff:g> a zařízení spárujte"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Funkci Smart Lock se nepodařilo rozpoznat bezpečnostní prvky tohoto zařízení. Z důvodu ochrany vašeho auta bude důvěryhodné zařízení moci udržovat auto odemknuté až poté, co jej odemknete. Pokud je důvěryhodné zařízení poblíž, může vaše auto udržet odemknuté i v případě, že jej drží někdo jiný."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Přidat <xliff:g id="DEVICE_NAME">%1$s</xliff:g> jako důvěryhodné zařízení"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g> bylo úspěšně přidáno jako důvěryhodné"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Registrace zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g> se nezdařila"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Když přidáte důvěryhodné zařízení, bude nutné následně nastavit metodu ověření. Pokud důvěryhodné zařízení nemáte u sebe, před zobrazení profilu bude nutné provést ověření."</string>
     <string name="forget" msgid="3971143908183848527">"Odstranit"</string>
+    <string name="connect" msgid="5861699594602380150">"Připojit"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Odpojit"</string>
     <string name="delete_button" msgid="5840500432614610850">"Smazat"</string>
     <string name="remove_button" msgid="6664656962868194178">"Odstranit"</string>
     <string name="cancel" msgid="750286395700355455">"Zrušit"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Ukončení ukázkového režimu"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ukázkový účet bude smazán a systém se resetuje do továrního nastavení. Všechna uživatelská data budou ztracena."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Ukončit ukázku"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"dokončit nastavení"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"teď ne"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ZAVŘÍT"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funkce při řízení není dostupná."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Při řízení nelze přidat uživatele."</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 0329f40..599415a 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -29,101 +28,177 @@
     <string name="keywords_display_brightness_level" msgid="3956411572536209195">"nedton skærm, touchskærm, batteri"</string>
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"nedton skærm, touchskærm, batteri"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"nedton skærm, nat, farvetone"</string>
-    <string name="night_mode_tile_label" msgid="6603597795502131664">"Natfunktion"</string>
+    <string name="night_mode_tile_label" msgid="6603597795502131664">"Nattilstand"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Netværk og internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnetværk"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobildata"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Brug data via mobilnetværk"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vil du deaktivere mobildata?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Dataforbrug"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Advarsel om dataforbrug og datagrænse"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cyklus for appdataforbrug"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Angiv advarsel om dataforbrug"</string>
+    <string name="data_warning" msgid="116776633806885370">"Advarsel om dataforbrug"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Angiv datagrænse"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datagrænse"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Grænse for dataforbrug"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Dit køretøjs hovedenhed deaktiverer mobildata, når den angivne grænse er nået.\n\nEftersom dataforbruget måles af hovedenheden, og dit mobilselskab muligvis beregner forbrug på en anden måde, kan du overveje at angive en lav grænse."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Konfigurer og administrer trådløse adgangspunkter"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Aktiverer Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Deaktiverer Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Indlæser Wi‑Fi-liste"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi er deaktiveret"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Netværket kunne ikke glemmes"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Der kunne ikke oprettes forbindelse til netværket"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Tilføj netværk"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi er deaktiveret"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Forbind"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Adgangskode"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Vis adgangskode"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Netværksnavn"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Angiv SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sikkerhed"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signalstyrke"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signalstyrke"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Linkhastighed"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvens"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-adresse"</string>
+    <string name="show_password" msgid="2074628020371139240">"Vis adgangskode"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Angiv netværksnavn"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Angiv adgangskode"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Dårligt"</item>
-    <item msgid="2032262610626057081">"Rimeligt"</item>
-    <item msgid="3859756017461098953">"Godt"</item>
-    <item msgid="1521103743353335724">"Fremragende"</item>
+    <item msgid="7683058295076342057">"Dårlig"</item>
+    <item msgid="1639222824821660744">"Rimelig"</item>
+    <item msgid="1838705897358163300">"God"</item>
+    <item msgid="6067166649320533751">"Fremragende"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Aktivér Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth er deaktiveret"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Netværksoplysninger"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-adresse"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-adresse"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Undernetmaske"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-adresser"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi-præferencer"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Aktivér Wi-Fi automatisk"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi aktiveres igen ved et netværk af høj kvalitet, f.eks. dit hjemmenetværk"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Ikke muligt, da placering er deaktiveret. Aktivér "<annotation id="link">"placering"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vil du aktivere Wi‑Fi-scanning?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktivér"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi-scanning blev aktiveret"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Skift automatisk til mobildata"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Brug mobildata, når du ikke har internetadgang via Wi-Fi. Du skal muligvis betale for dataforbrug."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Få flere oplysninger"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Administrer forbindelser, angiv enhedens navn og synlighed"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Billeder"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Høretelefoner"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Eksterne inputenheder"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Parrede enheder"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Tilgængelige enheder"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Der er ingen parrede enheder"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Der er ingen tilgængelige enheder"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Parret enhed"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Navn"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Brug til"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Skift navn for Bluetooth-enheden"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Enhed uden navn"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Parrede enheder"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Par en ny enhed"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth aktiveres for at oprette forbindelse"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Afbryd forbindelse til enhed?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Dit køretøj afbryder forbindelsen til <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Køretøjets Bluetooth-adresse: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Enhedens Bluetooth-adresse: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Navn på køretøj"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Omdøb dette køretøj"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Omdøb enheden"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Omdøb"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Tilgængelige enheder"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiler"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Anmodning om Bluetooth-parring"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Tilknyt og forbind"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-parringskode"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Pinkoden indeholder bogstaver eller symboler"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Angiv parringskoden, og tryk på Enter"</string>
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"Vil du parre med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
-    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"Giv <xliff:g id="DEVICE_NAME">%1$s</xliff:g> adgang til dine kontaktpersoner og din opkaldshistorik"</string>
+    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"Giv <xliff:g id="DEVICE_NAME">%1$s</xliff:g> adgang til dine kontakter og din opkaldshistorik"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"Du skal muligvis også indtaste denne pinkode på den anden enhed."</string>
     <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"Du skal muligvis også indtaste denne adgangsnøgle på den anden enhed."</string>
     <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"Skal bestå af 16 cifre"</string>
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Normalt 0000 eller 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Anmodning om parring"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tryk for at parre med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Sprog"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Sprog og indtastning"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastatur"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Administrer tastaturer"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Oplæsning"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Foretrukken maskine"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Nuværende maskine"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Talehastighed"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Toneleje"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Nulstil"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Lyd"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Lydstyrke for ringetone"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigationslydstyrke"</string>
     <string name="incoming_call_volume_title" msgid="6972117872424656876">"Ringetone"</string>
-    <string name="notification_volume_title" msgid="6749411263197157876">"Underretning"</string>
+    <string name="notification_volume_title" msgid="6749411263197157876">"Notifikation"</string>
     <string name="media_volume_title" msgid="6697416686272606865">"Medier"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Angiv lydstyrke for musik og videoer"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Ringetone ved opkald"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Standardlyd for notifikationer"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standardlyd for alarmer"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps og notifikationer"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Vis alle apps"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Standardapps"</string>
     <string name="applications_settings" msgid="794261395191035632">"Appinfo"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Tving til at standse"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vil du tvinge appen til at standse?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Hvis du tvinger en app til at standse, kan det medføre, at den ikke fungerer korrekt."</string>
     <string name="disable_text" msgid="4358165448648990820">"Deaktiver"</string>
     <string name="enable_text" msgid="1794971777861881238">"Aktivér"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Afinstaller"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Hvis du deaktiverer denne app, kan det medføre, at Android-apps og andre apps ikke fungerer korrekt."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktiver appen"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Tilladelser"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Der er ikke givet nogen tilladelser"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Der er ikke anmodet om nogen tilladelser"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Dataforbrug"</string>
-    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Appens dataforbrug"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Tving til at standse"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Dataforbrug fra apps"</string>
     <string name="computing_size" msgid="5791407621793083965">"Beregner…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ekstra tilladelse</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ekstra tilladelser</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistance og indtaling"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assistanceapp"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Brug tekst fra skærmen"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Giv assistanceappen adgang til skærmens indhold som tekst"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Brug screenshot"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Giv assistanceappen adgang til et billede af skærmen"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"AutoFyld-tjenesten"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ingen"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Valgt"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Assistenten kan læse oplysninger om, hvilke apps der bruges i dit system, herunder oplysninger, der er synlige på din skærm eller tilgængelige i dine apps."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Sørg for, at du har tillid til denne app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; anvender indholdet af din skærm til at fastslå, hvad der kan udfyldes automatisk."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Tilføj tjeneste"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Placering"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Seneste placeringsanmodninger"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Der er ingen seneste placeringsanmodninger"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Tilladelser på appniveau"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Scanning"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Placeringstjenester"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi-scanning"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Tillad, at apps og tjenester til enhver tid kan søge efter Wi-Fi-netværk, også selvom Wi-Fi er deaktiveret. Dette kan f.eks. bruges til at forbedre stedbaserede funktioner og tjenester."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-scanning"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Tillad, at apps og tjenester til enhver tid kan søge efter enheder i nærheden, også selvom Bluetooth er deaktiveret. Dette kan f.eks. bruges til at forbedre stedbaserede funktioner og tjenester."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Systemopdateringer"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Systemopdateringer"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Seneste sikkerhedsopdatering i Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Basebandversion"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernesystem"</string>
     <string name="build_number" msgid="3997326631001009102">"Buildnummer"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adresse"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Ikke tilgængelig"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Ophavsret"</string>
     <string name="license_title" msgid="936705938435249965">"Licens"</string>
     <string name="terms_title" msgid="5201471373602628765">"Vilkår og betingelser"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licens til webvisning"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"System WebView-licenser"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Baggrunde"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Leverandører af satellitbilleder:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Tredjepartslicenser"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Der er problemer med at indlæse licenserne."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Indlæser…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Du er nu <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> skridt fra at være udvikler.</item>
+      <item quantity="other">Du er nu <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> skridt fra at være udvikler.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Nu er du udvikler."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Det behøver du ikke. Du er allerede udvikler."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Indstillinger for udviklere"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Nulstil valg"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Nulstilling af netværk, apps eller enhed"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Nulstil netværk"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Denne handling nulstiller alle netværksindstillingerne, bl.a.:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobildata"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Nulstil alle eSIM-kort til køretøjer"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Dette medfører ikke, at din serviceaftale annulleres."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM-kort kan ikke nulstilles"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Vælg netværk"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Nulstil indstillinger"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Vil du nulstille?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Vil du nulstille alle netværksindstillingerne? Du kan ikke fortryde denne handling."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Nulstil indstillinger"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Netværksindstillingerne er blevet nulstillet"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Nulstil app-præferencer"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Dette vil nulstille alle præferencer for:\n\n "<li>"Deaktiverede apps"</li>\n" "<li>"Deaktiverede appnotifikationer"</li>\n" "<li>"Standardapps til handlinger"</li>\n" "<li>"Begrænsning af baggrundsdata for apps"</li>\n<li>" "</li>"Eventuelle begrænsede tilladelser\n\n Du vil ikke miste nogen appdata."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Nulstil apps"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App-præferencerne er blevet nulstillet"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Ryd alle data (nulstil)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Denne handling sletter alle data fra dit køretøjs hovedenhed. bl.a.:\n\n"<li>"Din Google-konto"</li>\n<li>"Data og indstillinger for system og apps "</li>\n<li>"Downloadede apps"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Du er i øjeblikket logget ind på følgende konti:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Der er andre brugere på dette køretøj."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Nulstil køretøj"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vil du nulstille?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vil du slette alle dine personlige oplysninger og downloadede apps? Du kan ikke fortryde denne handling."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Slet alt"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Sletter"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Vent et øjeblik..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dato og klokkeslæt"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Angiv dato og klokkeslæt"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Angiv dato, klokkeslæt, tidszone og formater"</string>
@@ -165,40 +277,80 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sortér efter tidszone"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Dato"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Klokkeslæt"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Tilføj bruger"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Tilføj konto"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Slet bruger"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Ny bruger"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gæst"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Logget ind som administrator"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle administratortilladelser"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Tildel administratorrettigheder"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Brugeren vil kunne slette brugere, heriblandt andre administratorer, og gendanne systemets fabriksindstillinger."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Denne handling kan ikke fortrydes."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, tildel administratorrettigheder"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Opret nye brugere"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Foretag telefonopkald"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Sms-beskeder via bilens mobildata"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Installer nye apps"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Afinstaller apps"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Tilføj bruger"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Ny bruger"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Tilføj ny bruger?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Når du tilføjer en ny bruger, skal vedkommende konfigurere sit område."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alle brugere kan opdatere apps for alle andre brugere."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Grænsen for brugere er nået"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Der kan kun oprettes <xliff:g id="COUNT">%d</xliff:g> bruger.</item>
+      <item quantity="other">Der kan kun oprettes <xliff:g id="COUNT">%d</xliff:g> brugere.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Der kunne ikke oprettes en ny bruger"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vil du slette brugeren?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alle apps og data slettes."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Brugeren kunne ikke slettes."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Luk"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Prøv igen"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Vil du slette den sidste bruger?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Når den sidste tilbageværende bruger er slettet for denne bil, oprettes en ny administrator."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alle data, indstillinger og apps, der er knyttet til denne bruger, slettes. Du skal konfigurere systemet igen."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Vælg en ny administrator"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Der skal være mindst én administrator. Hvis du vil slette denne, skal du først vælge en anden."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Vælg en administrator"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gæst"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gæst"</string>
     <string name="user_switch" msgid="6544839750534690781">"Skift"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Dig (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Navn"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Ikke konfigureret"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Rediger brugernavn"</string>
     <string name="users_list_title" msgid="770764290290240909">"Brugere"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Tilladelser er givet til %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Konti"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Bruger"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Tilføj konto"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Der er ikke tilføjet nogen konti"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Konti for <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Synkroniser data automatisk"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Giv apps tilladelse til at opdatere data automatisk"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Aktivér automatisk datasynk.?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Alle ændringer, som du foretager på dine konti på nettet, kopieres automatisk til din enhed.\n\nDer vil muligvis også være nogle konti, hvor de ændringer, du foretager på telefonen, automatisk kopieres til internettet. Sådan fungerer en Google-konto."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Deaktiver automatisk datasynk.?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Dette vil reducere dataforbruget, men du skal til gengæld synkronisere hver konto manuelt for at hente de nyeste oplysninger. Du vil heller ikke modtage notifikationer om nye opdateringer."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Kontooplysninger"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Tilføj konto"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Tilføj en konto"</string>
     <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"Begrænsede profiler kan ikke tilføje konti"</string>
     <string name="remove_account_title" msgid="8840386525787836381">"Fjern konto"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Vil du fjerne kontoen?"</string>
-    <string name="really_remove_account_message" msgid="4296769280849579900">"Hvis du fjerner denne konto, slettes alle tilknyttede beskeder, kontaktpersoner og andre data fra enheden."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Din administrator har ikke givet tilladelse til at foretage denne ændring"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Vil du fjerne brugeren?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Alle apps og data slettes."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Brugeren kunne ikke fjernes."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Vil du prøve igen?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Afvis"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Prøv igen"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Tilføj ny bruger?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Når du tilføjer en ny bruger, skal vedkommende konfigurere sit område."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alle brugere kan opdatere apps for alle andre brugere."</string>
+    <string name="really_remove_account_message" msgid="4296769280849579900">"Hvis du fjerner denne konto, slettes alle tilknyttede beskeder, kontakter og andre data fra enheden."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Kontoen kunne ikke fjernes."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Kontosynkronisering"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synkronisering er aktiveret for <xliff:g id="ID_1">%1$d</xliff:g> ud af <xliff:g id="ID_2">%2$d</xliff:g> elementer"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synkronisering er aktiveret for alle elementer"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synkronisering er deaktiveret for alle elementer"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synkronisering er slået FRA"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Synkroniseringsfejl"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Sidst synkroniseret <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synkroniserer nu…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tryk for at synkronisere nu <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synkroniser nu"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Annuller synkronisering"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Der er problemer med synkroniseringen i øjeblikket. Den er snart tilbage."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sikkerhed"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skærmlås"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ingen"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Pinkode"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Adgangskode"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Vælg en låsetype"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Valgmuligheder for skærmlås"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Valgmuligheder for låsning"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Angiv dit mønster"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Bekræft"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Tegn igen"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Konfigurer en skærmlås"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Vælg din pinkode"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Vælg dit mønster"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Vælg din adgangskode"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Vælg din adgangskode"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Aktuel skærmlås"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Angiv et mønster af sikkerhedshensyn"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Ryd"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Brug af almindelige adgangskoder er blokeret af din it-administrator. Prøv en anden adgangskode."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Stigende eller faldende talsekvens og gentagne tal er ikke tilladt."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Valgmuligheder for skærmlås"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : For <xliff:g id="NUM_DAYS">%3$s</xliff:g> dage siden"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Tilføj godkendt enhed"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Godkendte enheder"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> enhed</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> enheder</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Din <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> låser bilen op, når der er forbindelse til enheden. Hvis en anden person tager din <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, kan vedkommende muligvis få adgang til denne enhed"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bekræft"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Fjern godkendt enhed"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Luk"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Brug den medfølgende app til at konfigurere en godkendt enhed. Når du har konfigureret enheden, kan du låse din brugerprofil op, når køretøjet registrerer din telefon."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download den medfølgende app på din telefon"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Vælg <xliff:g id="CAR_NAME">%1$s</xliff:g> på telefonen for at parre enhederne"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock kan ikke registrere sikkerhedsfunktionerne på enheden. Af hensyn til beskyttelsen af din bil kan en godkendt enhed kun holde din bil ulåst, hvis du allerede har låst den op. Din godkendte enhed kan holde din bil ulåst, når den er i nærheden, også selvom den holdes af en anden."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Tilføj <xliff:g id="DEVICE_NAME">%1$s</xliff:g> som godkendt enhed"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> er nu tilføjet som en godkendt enhed"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Tilmeldingen af <xliff:g id="DEVICE_NAME">%1$s</xliff:g> mislykkedes"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Hvis du vil tilføje en godkendt enhed, skal du først angive en godkendelsesmetode. Hvis du ikke har din godkendte enhed med dig, kræves der godkendelse, før du kan få adgang til din profil."</string>
     <string name="forget" msgid="3971143908183848527">"Glem"</string>
+    <string name="connect" msgid="5861699594602380150">"Opret forbindelse"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Afbryd forbindelse"</string>
     <string name="delete_button" msgid="5840500432614610850">"Slet"</string>
     <string name="remove_button" msgid="6664656962868194178">"Fjern"</string>
     <string name="cancel" msgid="750286395700355455">"Annuller"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Luk demotilstand"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Denne handling sletter demokontoen og gendanner systemets fabriksdata. Du mister alle brugerdata."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Luk demotilstand"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"afslut konfiguration"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ikke nu"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"AFVIS"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funktionen er ikke tilgængelig under kørsel."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Du kan ikke tilføje brugere under kørsel."</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 3ce1ab3..e48913e 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -22,7 +21,7 @@
     <string name="more_settings_label" msgid="3867559443480110616">"Mehr"</string>
     <string name="display_settings" msgid="5325515247739279185">"Display"</string>
     <string name="brightness" msgid="2919605130898772866">"Helligkeit"</string>
-    <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptive Helligkeit"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"Automatische Helligkeit"</string>
     <string name="auto_brightness_summary" msgid="4741887033140384352">"Helligkeit an Lichtverhältnisse anpassen"</string>
     <string name="condition_night_display_title" msgid="3777509730126972675">"Nachtlicht ist eingeschaltet"</string>
     <string name="keywords_display" msgid="3978416985146943922">"bildschirm, display, touchscreen"</string>
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"display dimmen, bildschirm dimmen, touchscreen, akku"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"display dimmen, bildschirm dimmen, nacht, tönung"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nachtmodus"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Netzwerk &amp; Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilfunknetz"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile Daten"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Datenzugriff über Mobilfunknetz"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobile Daten deaktivieren?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Datennutzung"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Datenwarnung &amp; Datenlimit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Datennutzungszyklus der App"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Datenwarnung festlegen"</string>
+    <string name="data_warning" msgid="116776633806885370">"Datenwarnung"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Datenlimit festlegen"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datenlimit"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Datennutzung begrenzen"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Die Haupteinheit deines Fahrzeugs deaktiviert mobile Daten, sobald das von dir festgelegte Limit erreicht wurde.\n\nDa die Datennutzung von der Haupteinheit gemessen wird und dein Mobilfunkanbieter sie möglicherweise anders berechnet, solltest du von einem eher etwas niedrigeren Limit ausgehen."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"WLAN"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"WLAN-Zugangspunkte festlegen &amp; verwalten"</string>
     <string name="wifi_starting" msgid="473253087503153167">"WLAN wird aktiviert…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"WLAN wird deaktiviert…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"WLAN-Liste wird geladen"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"WLAN deaktiviert"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Netzwerk konnte nicht entfernt werden"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Netzwerkverbindung konnte nicht hergestellt werden"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"WLAN hinzufügen"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"WLAN deaktiviert"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Verbinden"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Passwort"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Passwort anzeigen"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Netzwerkname"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID eingeben"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sicherheit"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signalstärke"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signalstärke"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Verbindungsgeschwindigkeit"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequenz"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-Adresse"</string>
+    <string name="show_password" msgid="2074628020371139240">"Passwort anzeigen"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Netzwerkname eingeben"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Passwort eingeben"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Schwach"</item>
-    <item msgid="2032262610626057081">"Ausreichend"</item>
-    <item msgid="3859756017461098953">"Gut"</item>
-    <item msgid="1521103743353335724">"Sehr gut"</item>
+    <item msgid="7683058295076342057">"Schwach"</item>
+    <item msgid="1639222824821660744">"Ausreichend"</item>
+    <item msgid="1838705897358163300">"Gut"</item>
+    <item msgid="6067166649320533751">"Sehr gut"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth aktivieren"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth deaktiviert"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbit/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Netzwerkdetails"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-Adresse"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-Adresse"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnetzmaske"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-Adressen"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"WLAN-Einstellungen"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"WLAN automatisch aktivieren"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"WLAN wird in der Nähe von leistungsstarken gespeicherten Netzwerken wie deinem Heimnetzwerk automatisch aktiviert"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nicht verfügbar. Du musst erst "<annotation id="link">"Standort"</annotation>" aktivieren."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"WLAN-Suche aktivieren?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktivieren"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"WLAN-Suche aktiviert"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automatisch zur mobilen Datennutzung wechseln"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wenn Internetzugriff über WLAN nicht möglich ist, mobile Daten verwenden. Es können Gebühren für die Datennutzung anfallen."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Weitere Informationen"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Verbindungen, Gerätename &amp; Sichtbarkeit verwalten"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Smartphone"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Bildverarbeitung"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Kopfhörer"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Eingabeperipherie"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Gekoppelte Geräte"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Verfügbare Geräte"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Keine gekoppelten Geräte"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Keine verfügbaren Geräte"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Gekoppeltes Gerät"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Name"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Nutzen für"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Name des Bluetooth-Geräts ändern"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Unbenanntes Gerät"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Gekoppelte Geräte"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Neues Gerät koppeln"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth wird aktiviert, um das Koppeln zu ermöglichen"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Geräteverbindung trennen?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Die Verbindung deines Fahrzeugs mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> wird getrennt."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth-Adresse des Fahrzeugs: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth-Adresse des Geräts: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Name des Fahrzeugs"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Dieses Fahrzeug umbenennen"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Gerät umbenennen"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Umbenennen"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Verfügbare Geräte"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profile"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Anfrage zur Bluetooth-Kopplung"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Koppeln &amp; verbinden"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-Kopplungscode"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN enthält Buchstaben oder Symbole"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Gib den Kopplungscode ein und tippe dann auf die Eingabetaste"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"In der Regel 0000 oder 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Kopplungsanfrage"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Zum Koppeln mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> tippen."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Sprachen"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Sprachen &amp; Eingabe"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastatur"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Tastaturen verwalten"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Sprachausgabe"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Bevorzugtes Modul"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Aktuelles Modul"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Sprechgeschwindigkeit"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Stimmlage"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Zurücksetzen"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Ton"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Klingeltonlautstärke"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Lautstärke für Navigation"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Medien"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Lautstärke für Musik und Videos festlegen"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Wecker"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Klingelton"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Standard-Benachrichtigungston"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standard-Weckton"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps &amp; Benachrichtigungen"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Alle Apps anzeigen"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Standard-Apps"</string>
     <string name="applications_settings" msgid="794261395191035632">"App-Info"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Beenden erzwingen"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Beenden erzwingen?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Das Beenden der App zu erzwingen kann zu unerwünschtem Verhalten führen."</string>
     <string name="disable_text" msgid="4358165448648990820">"Deaktivieren"</string>
     <string name="enable_text" msgid="1794971777861881238">"Aktivieren"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Deinstallieren"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Bei Deaktivierung dieser App funktionieren Android und andere Apps möglicherweise nicht mehr ordnungsgemäß."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"App deaktivieren"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Berechtigungen"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Keine Berechtigungen gewährt"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Keine Berechtigungen angefordert"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datennutzung"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Datennutzung durch Apps"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Beenden erzwingen"</string>
     <string name="computing_size" msgid="5791407621793083965">"Berechnung läuft…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"> zusätzliche Berechtigungen</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> zusätzliche Berechtigung</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistent &amp; Spracheingabe"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assistent-App"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Text auf Bildschirm verwenden"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Der Assistent-App den Zugriff auf den Bildschirminhalt als Text gestatten"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Screenshot verwenden"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Der Assistent-App den Zugriff auf eine Momentaufnahme deines Bildschirminhalts (Screenshot) gestatten"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"AutoFill-Dienst"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Keine"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Ausgewählt"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Der Assistent kann Informationen zu Apps abrufen, die du auf deinem System verwendest, einschließlich Informationen, die auf deinem Bildschirm angezeigt werden oder die in Apps zugänglich sind."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Sorge dafür, dass dieser App vertraut wird.&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google AutoFill&gt;%1$s&lt;/xliff:g&gt; entscheidet dann anhand der Inhalte auf dem Display, welche Informationen automatisch ausgefüllt werden können."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Dienst hinzufügen"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Standort"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Letzte Standortanfragen"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Keine letzten Standortanfragen"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Berechtigungen auf App-Ebene"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Suche"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Standortdienste"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"WLAN-Suche"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Apps und Dienste dürfen immer nach WLANs suchen, auch wenn die WLAN-Funktion deaktiviert ist. Dadurch können beispielsweise standortbasierte Funktionen und Dienste verbessert werden."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-Suche"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Apps und Dienste dürfen immer nach Geräten in der Nähe suchen, auch wenn Bluetooth deaktiviert ist. Dadurch können beispielsweise standortbasierte Funktionen und Dienste verbessert werden."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Systemupdates"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Systemupdates"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-Version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Stand der Sicherheitsupdates"</string>
     <string name="model_info" msgid="4966408071657934452">"Modell"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband-Version"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel-Version"</string>
     <string name="build_number" msgid="3997326631001009102">"Build-Nummer"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-Adresse"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nicht verfügbar"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Urheberrecht"</string>
     <string name="license_title" msgid="936705938435249965">"Lizenz"</string>
     <string name="terms_title" msgid="5201471373602628765">"Nutzungsbedingungen"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"System-WebView-Lizenz"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"System-WebView-Lizenzen"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Hintergründe"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satellitenbilder bereitgestellt von:\n© 2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Drittlizenzen"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Beim Laden der Lizenzen ist ein Problem aufgetreten."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Wird geladen…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Nur noch <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> Schritte und du bist Entwickler.</item>
+      <item quantity="one">Nur noch <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> Schritt und bist du Entwickler.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Du bist jetzt Entwickler!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Okay, du bist bereits Entwickler."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Entwickleroptionen"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Optionen zum Zurücksetzen"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Netzwerk, Apps oder Gerät zurücksetzen"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Netzwerk zurücksetzen"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Hierdurch werden alle Netzwerkeinstellungen zurückgesetzt, einschließlich:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"WLAN"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobile Daten"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Alle eSIMs des Fahrzeugs löschen"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Dein Mobilfunkvertrag wird dadurch nicht gekündigt."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIMs können nicht zurückgesetzt werden"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Netzwerk auswählen"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Einstellungen zurücksetzen"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Zurücksetzen?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Alle Netzwerkeinstellungen zurücksetzen? Diese Aktion kann nicht rückgängig gemacht werden."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Einstellungen zurücksetzen"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Die Netzwerkeinstellungen wurden zurückgesetzt"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"App-Einstellungen zurücksetzen"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Hierdurch werden alle Einstellungen zurückgesetzt für:\n\n"<li>"Deaktivierte Apps"</li>\n<li>"Benachrichtigungen zu deaktivierten Apps"</li>\n<li>"Standardanwendungen für Aktionen"</li>\n<li>"Einschränkungen der Hintergrunddaten für Apps"</li>\n<li>"Jegliche Zugriffsbeschränkungen"</li>\n\n"Alle App-Daten bleiben erhalten."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Apps zurücksetzen"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App-Einstellungen wurden zurückgesetzt"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Alle Daten löschen (Werkseinstellungen)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Hierdurch werden alle Daten von der Haupteinheit deines Fahrzeugs gelöscht, u. a.:\n\n"<li>"Dein Google-Konto"</li>\n<li>"System- und App-Daten sowie entsprechende Einstellungen"</li>\n<li>"Heruntergeladene Apps"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Du bist derzeit in folgenden Konten angemeldet:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Auf der Haupteinheit dieses Fahrzeugs sind andere Nutzer vorhanden."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Fahrzeug zurücksetzen"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Zurücksetzen?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Alle personenbezogenen Daten und heruntergeladenen Apps löschen? Diese Aktion kann nicht rückgängig gemacht werden!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Alles löschen"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Wird gelöscht"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Bitte warten…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum &amp; Uhrzeit"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Datum und Uhrzeit festlegen"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Datum, Uhrzeit, Zeitzone &amp; Formate festlegen"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Nach Zeitzone sortieren"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Uhrzeit"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Nutzer hinzufügen"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Konto hinzufügen"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Nutzer löschen"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Neuer Nutzer"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gast"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Als Administrator angemeldet"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle Administrator-Berechtigungen"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Als Administrator festlegen"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Der Nutzer kann dann andere Nutzer einschließlich anderer Administratoren löschen und das System auf die Werkseinstellungen zurücksetzen."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Diese Aktion lässt sich nicht rückgängig machen."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, als Administrator festlegen"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Neue Nutzer erstellen"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Anrufe tätigen"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS über mobile Daten des Autos senden und empfangen"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Neue Apps installieren"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Apps deinstallieren"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Nutzer hinzufügen"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Neuer Nutzer"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Neuen Nutzer hinzufügen?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Wenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Jeder Nutzer kann Apps für alle anderen Nutzer aktualisieren."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Nutzerlimit erreicht"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Du kannst bis zu <xliff:g id="COUNT">%d</xliff:g> Nutzer erstellen.</item>
+      <item quantity="one">Es kann nur ein Nutzer erstellt werden.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Nutzer konnte nicht erstellt werden"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Diesen Nutzer löschen?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Sämtliche Apps und Daten werden gelöscht."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Der Nutzer konnte nicht gelöscht werden."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Schließen"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Noch einmal versuchen"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Letzten Nutzer löschen?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Nachdem du den letzten Nutzer für dieses Auto gelöscht hast, wird ein neuer Administrator erstellt."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Sämtliche Daten, Einstellungen und Apps, die mit diesem Nutzer zugeordnet sind, werden gelöscht. Du musst das System dann neu einrichten."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Neuen Administrator auswählen"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Du benötigst mindestens einen Administrator. Damit diesen Administrator löschen kannst, musst du zuerst einen Ersatz auswählen."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Administrator auswählen"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gast"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gast"</string>
     <string name="user_switch" msgid="6544839750534690781">"Wechseln"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Du (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nicht eingerichtet"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Nutzername bearbeiten"</string>
     <string name="users_list_title" msgid="770764290290240909">"Nutzer"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Berechtigungen für %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Konten"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Nutzer"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Konto hinzufügen"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Keine Konten hinzugefügt"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Konten für <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Daten automatisch synchronisieren"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Apps die automatische Aktualisierung von Daten erlauben"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Automatische Synchronisierung aktivieren?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Änderungen, die du im Web an deinen Konten vornimmst, werden automatisch auf deinen Gerät übernommen.\n\nBREAK_0BREAK_1Für einige Konten werden eventuell auch Änderungen, die du auf deinem Telefon vornimmst, im Web übernommen. Das ist die übliche Synchronisierungsfunktion eines Google-Kontos."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Automatische Synchronisierung deaktivieren?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"So reduzierst du den Datenverbrauch, musst jedoch jedes einzelne Konto manuell synchronisieren, um neue Informationen abzurufen. Außerdem erhältst du keine Benachrichtigung über Updates mehr."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Kontoinformationen"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Konto hinzufügen"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Konto hinzufügen"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Konto entfernen"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Konto entfernen?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Durch das Entfernen dieses Kontos werden alle zugehörigen Nachrichten, Kontakte und andere Daten vom Gerät gelöscht!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Dein Administrator lässt diese Änderung nicht zu"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Diesen Nutzer entfernen?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Sämtliche Apps und Daten werden gelöscht."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Entfernen von Nutzer fehlgeschlagen."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Wiederholen?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Schließen"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Wiederholen"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Neuen Nutzer hinzufügen?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Wenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Jeder Nutzer kann Apps für alle anderen Nutzer aktualisieren."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Das Konto konnte nicht entfernt werden."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Kontosynchronisierung"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synchronisierung für <xliff:g id="ID_1">%1$d</xliff:g> von <xliff:g id="ID_2">%2$d</xliff:g> Elementen aktiviert"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synchronisierung für alle Elemente aktiviert"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synchronisierung für alle Elemente deaktiviert"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synchronisierung: AUS"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Synchronisierungsfehler"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Zuletzt synchronisiert: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Wird synchronisiert…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tippen, um jetzt zu synchronisieren (<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Jetzt synchronisieren"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Synchronisierung abbrechen"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Bei der Synchronisierung treten momentan Probleme auf. Sie wird bald fortgesetzt."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sicherheit"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Displaysperre"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Keine"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Passwort"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Art der Sperre auswählen"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Optionen für die Displaysperre"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Sperroptionen"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Muster eingeben"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Bestätigen"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Neu zeichnen"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Displaysperre einrichten"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN wählen"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Muster wählen"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Passwort ändern"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Passwort festlegen"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Aktuelle Displaysperre"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Richte zur Sicherheit ein Muster ein"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Löschen"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Dein IT-Administrator hat die Verwendung allzu häufiger Passwörter blockiert. Versuch es mit einem anderen Passwort."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Aufsteigende, absteigende oder sich wiederholende Ziffernfolgen sind unzulässig."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Optionen für die Displaysperre"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: vor <xliff:g id="NUM_DAYS">%3$s</xliff:g> Tagen"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Vertrauenswürdiges Gerät hinzufügen"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Vertrauenswürdige Geräte"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> Geräte</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> Gerät</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> entsperrt dieses Auto, wenn eine Verbindung besteht. Wenn dein <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> in die Hände einer anderen Person gelangt, kann diese möglicherweise auf das Gerät zugreifen"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bestätigen"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Vertrauenswürdiges Gerät entfernen"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Fertig"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Verwende die Companion App, um ein vertrauenswürdiges Gerät einzurichten. Danach kannst du dein Nutzerprofil entsperren, wenn dein Smartphone vom Fahrzeug erkannt wird"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Lade die Companion App auf dein Smartphone herunter"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2 Wähle auf deinem Smartphone \"<xliff:g id="CAR_NAME">%1$s</xliff:g>\" aus, um die Geräte zu koppeln"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock erkennt die Sicherheitsfunktionen dieses Geräts nicht. Zum Schutz deines Autos kann das vertrauenswürdige Gerät nur dann dafür sorgen, dass dein Auto entsperrt bleibt, wenn du es vorher entsperrt hast. Mit dem vertrauenswürdigen Gerät bleibt dein Auto entsperrt, solange sich das Gerät in der Nähe befindet, und zwar auch dann, wenn eine andere Person es in der Hand hält."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> als vertrauenswürdig einstufen"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> wurde als vertrauenswürdiges Gerät hinzugefügt"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Anmeldung von <xliff:g id="DEVICE_NAME">%1$s</xliff:g> fehlgeschlagen"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Wenn du ein vertrauenswürdiges Gerät hinzufügst, musst du danach eine Authentifizierungsmethode festlegen. Diese wird benötigt, um auf dein Konto zuzugreifen, wenn du dein vertrauenswürdiges Gerät nicht dabei hast."</string>
     <string name="forget" msgid="3971143908183848527">"Entfernen"</string>
+    <string name="connect" msgid="5861699594602380150">"Verbinden"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Trennen"</string>
     <string name="delete_button" msgid="5840500432614610850">"Löschen"</string>
     <string name="remove_button" msgid="6664656962868194178">"Entfernen"</string>
     <string name="cancel" msgid="750286395700355455">"Abbrechen"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demomodus beenden"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Dadurch wird das Demokonto gelöscht und das System auf die Werkseinstellungen zurückgesetzt. Dabei gehen alle Nutzerdaten verloren."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demo beenden"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"Einrichtung abschließen"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"jetzt nicht"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"SCHLIEẞEN"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funktion während der Fahrt nicht verfügbar."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Während der Fahrt kann kein Nutzer hinzugefügt werden."</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 93238c1..2197bba 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"μείωση φωτεινότητας οθόνης, οθόνη αφής, μπαταρία"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"μείωση φωτεινότητας οθόνης, νυχτερινή λειτουργία, απόχρωση"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Νυχτερινή λειτουργία"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Δίκτυο και διαδίκτυο"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Δίκτυο κινητής τηλεφωνίας"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Δεδομένα κινητής τηλεφωνίας"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Πρόσβαση σε δεδομένα μέσω δικτύου κινητής τηλεφ."</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Απενεργοποίηση δεδομένων κινητής τηλεφωνίας;"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Χρήση δεδομένων"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Προειδοποίηση και όριο δεδομένων"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Κύκλος χρήσης δεδομένων εφαρμογής"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Ορισμός προειδοπ. δεδομένων"</string>
+    <string name="data_warning" msgid="116776633806885370">"Προειδοποίηση δεδομένων"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Ορισμός ορίου δεδομένων"</string>
+    <string name="data_limit" msgid="227338836292511425">"Όριο δεδομένων"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Περιορισμός χρήσης δεδομένων"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Η κεντρική μονάδα του οχήματός σας θα απενεργοποιήσει τα δεδομένα κινητής τηλεφωνίας μόλις συμπληρωθεί το καθορισμένο όριο.\n\nΕπειδή η χρήση δεδομένων μετράται από την κεντρική μονάδα σας και ενδέχεται η εταιρεία κινητής τηλεφωνίας να την υπολογίζει με διαφορετικό τρόπο, σκεφτείτε το ενδεχόμενο να ορίσετε ένα συντηρητικό όριο."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Ορισμός και διαχείριση ασύρματων σημείων πρόσβασης"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Ενεργοποίηση Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Απενεργοποίηση Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Γίνεται φόρτωση της λίστας Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Το Wi‑Fi είναι απενεργοποιημένο"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Αποτυχία κατάργησης δικτύου από τη μνήμη"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Αποτυχία σύνδεσης στο δίκτυο"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Προσθήκη δικτύου"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Το Wi‑Fi είναι απενεργοποιημένο"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Σύνδεση"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Κωδικός πρόσβασης"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Εμφάνιση κωδικού πρόσβασης"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Όνομα δικτύου"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Εισαγάγετε το SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Ασφάλεια"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Ισχύ σήματος"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Ισχύς σήματος"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Κατάσταση"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Ταχύτητα σύνδεσης"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Συχνότητα"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Διεύθυνση IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Εμφάνιση κωδικού πρόσβασης"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Εισαγωγή ονόματος δικτύου"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Εισαγωγή κωδικού πρόσβασης"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Κακό"</item>
-    <item msgid="2032262610626057081">"Επαρκές"</item>
-    <item msgid="3859756017461098953">"Καλό"</item>
-    <item msgid="1521103743353335724">"Εξαιρετικό"</item>
+    <item msgid="7683058295076342057">"Κακό"</item>
+    <item msgid="1639222824821660744">"Επαρκές"</item>
+    <item msgid="1838705897358163300">"Καλό"</item>
+    <item msgid="6067166649320533751">"Εξαιρετικό"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Ενεργοποίηση Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Το Bluetooth απενεργοποιήθηκε"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Λεπτομέρειες δικτύου"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Διεύθυνση MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Διεύθυνση IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Μάσκα υποδικτύου"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Διευθύνσεις IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Πύλη"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Προτιμήσεις Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Αυτόματη ενεργοποίηση Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Το Wi‑Fi θα ενεργ. ξανά κοντά σε αποθ. δίκτυα υψηλής ποιότ. όπως το οικιακό δίκτυο"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Μη διαθέσ. επειδή η τοποθ. είναι απεν. Ενεργ. την "<annotation id="link">"τοποθεσία"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Ενεργοποίηση σάρωσης Wi‑Fi;"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Ενεργοποίηση"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Ενεργοποιήθηκε η σάρωση Wi‑Fi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Αυτόματη εναλλαγή σε δεδομένα κινητής τηλεφωνίας"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Χρησιμοποιήστε δεδομένα κινητής τηλεφωνίας όταν το Wi‑Fi δεν έχει πρόσβαση στο διαδίκτυο. Μπορεί να ισχύουν χρεώσεις χρήσης δεδομένων."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Μάθετε περισσότερα"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Διαχείριση συνδέσεων, ορισμός ονόματος συσκευής και δυνατότητα ανακάλυψης"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Υπολογιστής"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Ακουστικά"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Τηλέφωνο"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Συσκευή απεικόνισης"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Ακουστικά"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Περιφερειακό εισόδου"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Συσκευές σε σύζευξη"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Διαθέσιμες συσκευές"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Δεν υπάρχουν συσκευές σε σύζευξη"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Δεν υπάρχουν διαθέσιμες συσκευές"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Συσκευή σε σύζευξη"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Όνομα"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Χρήση για"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Αλλαγή ονόματος συσκευής Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Ανώνυμη συσκευή"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Συσκευές σε σύζευξη"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Σύζευξη νέας συσκευής"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Το Bluetooth θα ενεργοποιηθεί για σύζευξη"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Αποσύνδεση συσκευής;"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Το όχημά σας θα αποσυνδεθεί από τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Διεύθυνση Bluetooth οχήματος: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Διεύθυνση Bluetooth συσκευής: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"\'Όνομα οχήματος"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Μετονομασία αυτού του οχήματος"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Μετονομασία συσκευής"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Μετονομασία"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Διαθέσιμες συσκευές"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Προφίλ"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Αίτημα σύζευξης Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Σύζευξη και σύνδεση"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Κωδικός σύζευξης Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Το PIN περιέχει γράμματα ή σύμβολα"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Πληκτρολογήστε τον κωδικό σύζευξης και, στη συνέχεια, πατήστε Επιστροφή ή Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Συνήθως 0000 ή 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Αίτημα σύζευξης"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Πατήστε για σύζευξη με τη συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Γλώσσες"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Γλώσσες και είσοδος"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Πληκτρολόγιο"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Διαχείριση πληκτρολογίων"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Έξοδος κειμένου σε ομιλία"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Προτιμώμενη μηχανή"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Τρέχουσα μηχανή"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Ταχύτητα ομιλίας"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Τόνος"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Επαναφορά"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Ήχος"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Ένταση ήχου κουδουνίσματος"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Ένταση ήχου πλοήγησης"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Πολυμέσα"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Ορισμός έντασης ήχου για μουσική και βίντεο"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Ξυπνητήρι"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Ήχος κλήσης τηλεφώνου"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Προεπιλεγμ. ήχος ειδοποίησης"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Προεπιλεγμ. ήχος ξυπνητηριού"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Εφαρμογές και ειδοποιήσεις"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Εμφάνιση όλων των εφαρμογών"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Προεπιλεγμένες εφαρμογές"</string>
     <string name="applications_settings" msgid="794261395191035632">"Πληροφορίες εφαρμογής"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Αναγκαστική διακοπή"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Αναγκαστική διακοπή;"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Εάν επιβάλετε τη διακοπή μιας εφαρμογής, ενδέχεται να μην λειτουργήσει σωστά."</string>
     <string name="disable_text" msgid="4358165448648990820">"Απενεργοποίηση"</string>
     <string name="enable_text" msgid="1794971777861881238">"Ενεργοποίηση"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Απεγκατάσταση"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Εάν απενεργοποιήσετε αυτήν την εφαρμογή, η λειτουργία του Android και άλλων εφαρμογών ενδέχεται να μην είναι η αναμενόμενη."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Απενεργοποίηση εφαρμογής"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Δικαιώματα"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Έκδοση: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Δεν έχουν εκχωρηθεί δικαιώματα"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Δεν ζητήθηκαν δικαιώματα"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Χρήση δεδομένων"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Χρήση δεδομένων εφαρμογών"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Αναγκαστική διακοπή"</string>
     <string name="computing_size" msgid="5791407621793083965">"Υπολογισμός…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> επιπλέον δικαιώματα</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> επιπλέον δικαίωμα</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Βοήθεια και φωνητικές εντολές"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Εφαρμογή υποβοήθειας"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Χρήση κειμένου από την οθόνη"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Να επιτρέπεται στην εφαρμογή υποβοήθειας να έχει πρόσβαση στο περιεχόμενο της οθόνης όπως το κείμενο."</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Χρήση στιγμιότυπου οθόνης"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Να επιτρέπεται στην εφαρμογή υποβοήθειας να έχει πρόσβαση σε μια εικόνα στην οθόνη"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Υπηρεσία αυτόματης συμπλήρωσης"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Καμία"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Επιλέχτηκε"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Ο Βοηθός θα μπορεί να διαβάσει πληροφορίες σχετικά με τις εφαρμογές που χρησιμοποιούνται στο σύστημά σας, συμπεριλαμβανομένων πληροφοριών που είναι ορατές στην οθόνη σας ή διαθέσιμες εντός των εφαρμογών."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Βεβαιωθείτε ότι εμπιστεύεστε αυτήν την εφαρμογή&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; χρησιμοποιεί το περιεχόμενο της οθόνης σας για να διαπιστώσει τι μπορεί να συμπληρωθεί αυτόματα."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Προσθήκη υπηρεσίας"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Τοποθεσία"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Πρόσφατα αιτήματα τοποθεσίας"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Δεν υπάρχουν πρόσφατα αιτήματα τοποθεσίας"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Άδειες επιπέδου εφαρμογής"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Σάρωση"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Υπηρεσίες τοποθεσίας"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Σάρωση Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Επιτρέψτε σε εφαρμογές και υπηρεσίες να εκτελούν σάρωση για δίκτυα Wi‑Fi, ακόμα και όταν το Wi‑Fi είναι ανενεργό. Η σάρωση μπορεί να χρησιμοποιηθεί, για παράδειγμα, για τη βελτίωση λειτουργιών και υπηρεσιών που εκτελούνται βάσει τοποθεσίας."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Σάρωση Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Επιτρέψτε σε εφαρμογές/υπηρεσίες να κάνουν σάρωση για κοντινές συσκευές, ακόμα και όταν το Bluetooth είναι ανενεργό. Η σάρωση μπορεί να χρησιμοποιηθεί, για παράδειγμα, για τη βελτίωση λειτουργιών/υπηρεσιών που εκτελούνται βάσει τοποθεσίας."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Σύστημα"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Ενημερώσεις συστήματος"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Ενημερώσεις συστήματος"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Έκδοση Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Επίπεδο ενημέρωσης κώδικα ασφαλείας Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Μοντέλο"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Έκδοση βασικού φάσματος"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Έκδοση Kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Αριθμός έκδοσης"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Διεύθυνση Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Μη διαθέσιμο"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Κατάσταση"</string>
     <string name="device_status" msgid="267298179806290920">"Κατάσταση"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Πνευματικά δικαιώματα"</string>
     <string name="license_title" msgid="936705938435249965">"Άδεια"</string>
     <string name="terms_title" msgid="5201471373602628765">"Όροι και προϋποθέσεις"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Άδεια WebView συστήματος"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Άδειες συστήμ. Προβολής στον ιστό"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Ταπετσαρίες"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Πηγές δορυφορικών εικόνων:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Άδειες τρίτου μέρους"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Παρουσιάστηκε κάποιο πρόβλημα κατά τη φόρτωση των αδειών."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Φόρτωση…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Απομένουν <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> βήματα για να γίνετε προγραμματιστής.</item>
+      <item quantity="one">Απομένει <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> βήμα για να γίνετε προγραμματιστής.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Είστε πλέον προγραμματιστής!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Δεν χρειάζεται, είστε ήδη προγραμματιστής."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Επιλογές για προγραμματιστές"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Επαναφορά επιλογών"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Επαναφορά δικτύου, εφαρμογών ή συσκευής"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Επαναφορά δικτύου"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Με αυτήν την ενέργεια, θα γίνει επαναφορά όλων των ρυθμίσεων δικτύου, συμπεριλαμβανομένων των εξής:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Δεδομένα κινητής τηλεφωνίας"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Διαγραφή όλων των eSIM του οχήματος"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Με αυτήν την ενέργεια, δεν θα ακυρωθεί το πρόγραμμα υπηρεσίας σας."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Δεν είναι δυνατή η επαναφορά eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Επιλογή δικτύου"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Επαναφορά ρυθμίσεων"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Να γίνει επαναφορά;"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Να γίνει επαναφορά όλων των ρυθμίσεων δικτύου; Δεν είναι δυνατή η αναίρεση αυτής της ενέργειας!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Επαναφορά ρυθμίσεων"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Έγινε επαναφορά των ρυθμίσεων δικτύου"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Επαναφορά προτιμήσεων εφαρμογών"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Με αυτήν την ενέργεια, θα γίνει επαναφορά όλων των προτιμήσεων για:\n\n"<li>"Απενεργοποιημένες εφαρμογές"</li>\n<li>"Απενεργοποιημένες ειδοποιήσεις εφαρμογών"</li>\n<li>"Προεπιλεγμένες εφαρμογές για ενέργειες"</li>\n<li>"Περιορισμούς δεδομένων παρασκηνίου για εφαρμογές"</li>\n<li>"Τυχόν περιορισμούς αδειών"</li>\n\n"Δεν θα χάσετε τυχόν δεδομένα εφαρμογών."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Επαναφορά εφαρμογών"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Έγινε επαναφορά των προτιμήσεων των εφαρμογών"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Διαγραφή δεδομένων (Επαν. εργοστ. ρυθμ.)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Αυτή η ενέργεια θα διαγράψει όλα τα δεδομένα από την κεντρική μονάδα του οχήματος, συμπεριλαμβανομένων:\n\n"<li>"Του Λογαριασμού σας Google"</li>\n<li>"Των δεδομένων και των ρυθμίσεων του συστήματος και των εφαρμογών"</li>\n<li>"Των εφαρμογών που έχετε κατεβάσει"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Αυτήν τη στιγμή είστε συνδεδεμένοι στους παρακάτω λογαριασμούς:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Υπάρχουν άλλοι χρήστες σε αυτό το όχημα."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Επαναφορά οχήματος"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Να γίνει επαναφορά;"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Να διαγραφούν όλα τα προσωπικά σας στοιχεία και οι εφαρμογές που έχετε κατεβάσει; Δεν είναι δυνατή η αναίρεση αυτής της ενέργειας!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Διαγραφή όλων"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Διαγραφή"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Περιμένετε…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Ημερομηνία και ώρα"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Ορισμός ημερομηνίας και ώρας"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Ορισμός ημερομηνίας, ώρας, ζώνης ώρας και μορφές"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Ταξινόμηση ανά ζώνη ώρας"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Ημερομηνία"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Ώρα"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Προσθήκη χρήστη"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Προσθήκη λογαριασμού"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Διαγραφή χρήστη"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Νέος χρήστης"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Επισκέπτης"</string>
     <string name="user_admin" msgid="1535484812908584809">"Διαχειριστής"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Συνδεδεμένος ως διαχειριστής"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Όλα τα δικαιώματα διαχειριστή"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Να γίνει διαχειριστής"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Ο χρήστης θα μπορεί να διαγράφει χρήστες, συμπεριλαμβανομένων άλλων διαχειριστών, και να επαναφέρει τις εργοστασιακές ρυθμίσεις του συστήματος."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Αυτή η ενέργεια δεν είναι αναστρέψιμη."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ναι, να γίνει διαχειριστής"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Δημιουργία νέων χρηστών"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Τηλεφωνικές κλήσεις"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Αντ. μηνυμάτων μέσω δεδ. κιν. τηλ. αυτοκ."</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Εγκατάσταση νέων εφαρμογών"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Απεγκαταστήστε εφαρμογές"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Προσθήκη χρήστη"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Νέος χρήστης"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Προσθήκη νέου χρήστη;"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Κατά την προσθήκη ενός νέου χρήστη, αυτός θα πρέπει να ρυθμίσει το χώρο του."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Οποιοσδήποτε χρήστης μπορεί να ενημερώσει τις εφαρμογές για όλους τους άλλους χρήστες."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Συμπληρώθηκε το όριο χρηστών"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Μπορείτε να δημιουργήσετε έως <xliff:g id="COUNT">%d</xliff:g> χρήστες.</item>
+      <item quantity="one">Είναι δυνατή η δημιουργία μόνο ενός χρήστη.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Η δημιουργία νέου χρήστη απέτυχε"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Να διαγραφεί ο χρήστης;"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Όλες οι εφαρμογές και τα δεδομένα θα διαγραφούν."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Η διαγραφή χρήστη απέτυχε."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Παράβλεψη"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Επανάληψη"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Διαγρ. τελευταίου χρήστη;"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Αφού διαγράψετε τον μοναδικό χρήστη που έχει απομείνει για αυτό το αυτοκίνητο, θα δημιουργηθεί ένας νέος διαχειριστής."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Όλα τα δεδομένα, οι ρυθμίσεις και οι εφαρμογές που είναι συσχετισμένες με αυτόν τον χρήστη θα διαγραφούν. Θα πρέπει να ρυθμίσετε ξανά το σύστημα."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Επιλογή νέου διαχειριστή"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Θα πρέπει να υπάρχει τουλάχιστον ένας διαχειριστής. Για να διαγράψετε αυτόν τον διαχειριστή, πρώτα επιλέξτε έναν αντικαταστάτη."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Επιλογή διαχειριστή"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Επισκέπτης"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Επισκέπτης"</string>
     <string name="user_switch" msgid="6544839750534690781">"Εναλλαγή"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Εσείς (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Όνομα"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Δεν έχει ρυθμιστεί"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Επεξεργασία ονόματος χρήστη"</string>
     <string name="users_list_title" msgid="770764290290240909">"Χρήστες"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Δικαιώματα που δόθηκαν σε %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Λογαριασμοί"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Χρήστης"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Προσθήκη λογαριασμού"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Δεν έχουν προστεθεί λογαριασμοί"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Λογαριασμοί για <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Αυτόματος συγχρονισμός δεδομένων"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Επιτρέπει στις εφαρμογές να ανανεώνουν δεδομένα αυτόματα"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Ενεργοπ. αυτόμ. συγχρ. δεδομ.;"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Θα γίνεται αυτόματη αντιγραφή τυχόν αλλαγών που πραγματοποιείτε στους λογαριασμούς σας στον ιστό στη συσκευή σας.\n\nΣε ορισμένους λογαριασμούς ενδέχεται να γίνεται αυτόματη αντιγραφή τυχόν αλλαγών που πραγματοποιείτε στο τηλέφωνό σας στον ιστό. Ένας Λογαριασμός Google λειτουργεί με αυτόν τον τρόπο."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Απενέργ. αυτ/του συγχρονισμού;"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Με αυτόν τον τρόπο θα εξοικονομήσετε δεδομένα, αλλά θα πρέπει να συγχρονίσετε κάθε λογαριασμό με μη αυτόματο τρόπο για να συλλέξετε πρόσφατες πληροφορίες. Δεν θα λαμβάνετε ειδοποιήσεις κατά τη διάρκεια των ενημερώσεων."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Πληροφορίες λογαριασμού"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Προσθήκη λογαριασμού"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Προσθέστε έναν λογαριασμό"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Κατάργηση λογαριασμού"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Κατάργηση λογαριασμού;"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Η κατάργηση αυτού του λογαριασμού θα έχει σαν αποτέλεσμα τη διαγραφή όλων των μηνυμάτων, των επαφών και άλλων δεδομένων του από τη συσκευή!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Αυτή η αλλαγή δεν επιτρέπεται από τον διαχειριστή σας"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Κατάργηση χρήστη;"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Όλες οι εφαρμογές και τα δεδομένα θα διαγραφούν."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Αποτυχία κατάργησης χρήστη."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Επανάληψη;"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Παράβλεψη"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Επανάληψη"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Προσθήκη νέου χρήστη;"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Κατά την προσθήκη ενός νέου χρήστη, αυτός θα πρέπει να ρυθμίσει το χώρο του."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Οποιοσδήποτε χρήστης μπορεί να ενημερώσει τις εφαρμογές για όλους τους άλλους χρήστες."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Η κατάργηση του λογαριασμού απέτυχε."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Συγχρονισμός λογαριασμού"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Ο συγχρονισμός είναι ενεργοποιημένος για <xliff:g id="ID_1">%1$d</xliff:g> από <xliff:g id="ID_2">%2$d</xliff:g> στοιχεία"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Ο συγχρονισμός είναι ενεργοποιημένος για όλα τα στοιχεία"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Ο συγχρονισμός είναι απενεργοποιημένος για όλα τα στοιχεία"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Συγχρονισμός ανενεργός"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Σφάλμα συγχρονισμού"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Τελευταίος συγχρονισμός <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Συγχρονισμός τώρα…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Πατήστε για να κάνετε συγχρονισμό τώρα<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Συγχρονισμός τώρα"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Ακύρωση συγχρονισμού"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Ο συγχρονισμός αντιμετωπίζει προβλήματα αυτή τη στιγμή. Θα είναι διαθέσιμος ξανά σε λίγο."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Ασφάλεια"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Κλείδωμα οθόνης"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Κανένα"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Αριθμός PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Κωδικός πρόσβασης"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Επιλογή τύπου κλειδώμ."</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Επιλογές κλειδώματος οθόνης"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Επιλογές κλειδώματος"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Εισαγάγετε το μοτίβο σας"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Επιβεβαίωση"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Επανάληψη σχεδίασης"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ορισμός κλειδώματος οθόνης"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Επιλέξτε αριθμό PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Επιλέξτε το μοτίβο σας"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Επιλέξτε κωδικό πρόσβασης"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Επιλέξτε τον κωδικό πρόσβασής σας"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Τρέχουσα οθόνη κλειδώματος"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Για λόγους ασφαλείας, ορίστε ένα μοτίβο"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Διαγραφή"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Οι συνηθισμένοι κωδικοί πρόσβασης αποκλείονται από τον διαχειριστή IT. Δοκιμάστε να χρησιμοποιήσετε διαφορετικό κωδικό πρόσβασης."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Δεν επιτρέπεται η αύξουσα, φθίνουσα ή επαναλαμβανόμενη ακολουθία ψηφίων."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Επιλογές κλειδώματος οθόνης"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ημέρες πριν"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Προσθήκη αξιόπιστης συσκευής"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Αξιόπιστες συσκευές"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> συσκευές</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> συσκευή</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Το <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> θα ξεκλειδώσει αυτό το αυτοκίνητο όταν συνδεθεί. Εάν κάποιος αποκτήσει το <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> σας, θα μπορεί να αποκτήσει πρόσβαση σε αυτήν τη συσκευή"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Επιβεβαίωση"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Κατάργηση αξιόπιστης συσκευής"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Τέλος"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Χρησιμοποιήστε τη συνοδευτική εφαρμογή για να ρυθμίσετε μια αξιόπιστη συσκευή. Μετά τη ρύθμιση, θα μπορείτε να ξεκλειδώνετε το προφίλ χρήστη σας όταν το τηλέφωνό σας εντοπίζεται από το όχημα"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Κατεβάστε τη συνοδευτική εφαρμογή στο τηλέφωνό σας"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Επιλέξτε το αυτοκίνητο <xliff:g id="CAR_NAME">%1$s</xliff:g> στο τηλέφωνό σας για να κάνετε σύζευξη των συσκευών"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Το Smart Lock δεν μπορεί να εντοπίσει λειτουργίες ασφαλείας σε αυτήν τη συσκευή. Για την προστασία του αυτοκινήτου σας, η αξιόπιστη συσκευή θα μπορεί να κρατήσει ξεκλείδωτο το αυτοκίνητό σας μόνο όταν το έχετε ήδη ξεκλειδώσει εσείς. Η αξιόπιστη συσκευή σας μπορεί να κρατήσει ξεκλείδωτο το αυτοκίνητό σας όταν βρίσκεται σε κοντινή απόσταση από αυτό, ακόμη και αν την κρατάει κάποιο άλλο άτομο."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Προσθήκη της συσκευής <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ως αξιόπιστης συσκευής"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Η συσκευή <xliff:g id="DEVICE_NAME">%1$s</xliff:g> προστέθηκε με επιτυχία ως έμπιστη συσκευή"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Η εγγραφή της συσκευής <xliff:g id="DEVICE_NAME">%1$s</xliff:g> απέτυχε"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Η προσθήκη αξιόπιστης συσκευής απαιτεί να ορίσετε στη συνέχεια μια μέθοδο ελέγχου ταυτότητας. Εάν δεν έχετε μαζί σας την αξιόπιστη συσκευή σας, θα ζητηθεί έλεγχος ταυτότητας για την πρόσβαση στο προφίλ σας."</string>
     <string name="forget" msgid="3971143908183848527">"Διαγραφή από μνήμη"</string>
+    <string name="connect" msgid="5861699594602380150">"Σύνδεση"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Αποσύνδεση"</string>
     <string name="delete_button" msgid="5840500432614610850">"Διαγραφή"</string>
     <string name="remove_button" msgid="6664656962868194178">"Κατάργηση"</string>
     <string name="cancel" msgid="750286395700355455">"Ακύρωση"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Έξοδος από λειτ. επίδειξης"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Με αυτόν τον τρόπο, ο λογαριασμός επίδειξης θα χαθεί και θα γίνει επαναφορά των εργοστασιακών δεδομένων συστήματος. Όλα τα δεδομένα χρήστη θα χαθούν."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Έξοδος από επίδειξη"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"ολοκλήρωση ρύθμισης"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"όχι τώρα"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ΠΑΡΑΒΛΕΨΗ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Η λειτουργία δεν διατίθεται κατά τη διάρκεια της οδήγησης."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Δεν είναι δυνατή η προσθήκη χρήστη κατά την οδήγηση."</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index db58240..ad3a983 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim screen, touchscreen, battery"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"dim screen, night, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Network &amp; internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Data warning limit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"App data usage cycle"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Set data warning"</string>
+    <string name="data_warning" msgid="116776633806885370">"Data warning"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Set data limit"</string>
+    <string name="data_limit" msgid="227338836292511425">"Data limit"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limiting data usage"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Your vehicle’s head unit will turn off mobile data once it reaches the limit that you set.\n\nSince data usage is measured by the head unit, and your operator may account for usage differently, consider setting a conservative limit."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Set up &amp; manage wireless access points"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Turning Wi‑Fi on…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Turning off Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Loading Wi‑Fi list"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi disabled"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Failed to forget network"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Failed to connect to network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Add network"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi disabled"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Show password"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Network name"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Enter the SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Security"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signal strength"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signal strength"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Link speed"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequency"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP Address"</string>
+    <string name="show_password" msgid="2074628020371139240">"Show password"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Enter network name"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Enter password"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Poor"</item>
-    <item msgid="2032262610626057081">"Fair"</item>
-    <item msgid="3859756017461098953">"Good"</item>
-    <item msgid="1521103743353335724">"Excellent"</item>
+    <item msgid="7683058295076342057">"Poor"</item>
+    <item msgid="1639222824821660744">"Fair"</item>
+    <item msgid="1838705897358163300">"Good"</item>
+    <item msgid="6067166649320533751">"Excellent"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Turn on Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth disabled"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Network details"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC address"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP address"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 addresses"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi preferences"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Turn on Wi‑Fi automatically"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi will turn back on near high‑quality saved networks, such as your home network"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Unavailable because location is turned off. Turn on "<annotation id="link">"location"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Turn on Wi‑Fi scanning?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Turn on"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi scanning turned on"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Switch to mobile data automatically"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Use mobile data when Wi‑Fi has no Internet access. Data usage charges may apply."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Learn more"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Manage connections, set device name &amp; discoverability"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Phone"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imaging"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Headphone"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Input Peripheral"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Paired devices"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Available devices"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"No paired devices"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"No available devices"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Paired device"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Name"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Use for"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Change the name of the Bluetooth device"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Unnamed device"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Paired devices"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Pair new device"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth will turn on to pair"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Disconnect device?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Your vehicle will disconnect from <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Vehicle\'s Bluetooth address: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Device\'s Bluetooth address: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Vehicle name"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Rename this vehicle"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Rename device"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Rename"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Available devices"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiles"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pairing request"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pair &amp; connect"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth pairing code"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN contains letters or symbols"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Type the pairing code then press Return or Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Usually 0000 or 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Pairing request"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tap to pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Languages"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Languages &amp; input"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Keyboard"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Manage keyboards"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Text to speech output"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Preferred engine"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Current engine"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Speech Rate"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Pitch"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Reset"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Sound"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Ring volume"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigation volume"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Set volume for music and videos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Phone ringtone"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Default notification sound"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default alarm sound"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps &amp; notifications"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Show all apps"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Default apps"</string>
     <string name="applications_settings" msgid="794261395191035632">"App info"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Force stop?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"If you force-stop an app, it may misbehave."</string>
     <string name="disable_text" msgid="4358165448648990820">"Disable"</string>
     <string name="enable_text" msgid="1794971777861881238">"Enable"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Uninstall"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"If you disable this app, Android and other apps may no longer function as intended."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disable app"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permission"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No permissions granted"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No permissions requested"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data usage"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"App data usage"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
     <string name="computing_size" msgid="5791407621793083965">"Computing…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> additional permissions</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> additional permission</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assist &amp; voice input"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assist app"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Use text from screen"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Allow the assist app to access the screen contents as text"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Use screenshot"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Allow the assist app to access an image of the screen"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Auto-fill service"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"None"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Selected"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"The assistant will be able to read information about apps that are in use on your system, including information visible on your screen or accessible within the apps."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Make sure that you trust this app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Auto-fill&gt;%1$s&lt;/xliff:g&gt; uses what\'s on your screen to determine what can be auto-filled."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Add service"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Location"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"App-level permissions"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Scanning"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Location Services"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi scanning"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Allow apps and services to scan for Wi‑Fi networks at any time, even when Wi‑Fi is off. This can be used, for example, to improve location-based features and services."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth scanning"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"System updates"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband version"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
     <string name="build_number" msgid="3997326631001009102">"Build number"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licence"</string>
     <string name="terms_title" msgid="5201471373602628765">"Terms and conditions"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"System WebView Licence"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"System WebView licences"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Wallpaper"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satellite imagery providers:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Third-party licences"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"There is a problem loading the licences."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Loading…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">You are now <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> steps away from being a developer.</item>
+      <item quantity="one">You are now <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> step away from being a developer.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"You are now a developer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"No need, you are already a developer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Developer options"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Reset options"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Network, apps or device reset"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Reset network"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"This will reset all network settings, including:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobile data"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Erase all vehicle eSIMs"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"This will not cancel your service plan."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Can’t reset eSIMs"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Select network"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Reset settings"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Reset?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Reset all network settings? You can\'t undo this action!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Reset settings"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Network settings have been reset"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Reset app preferences"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"This will reset all preferences for:\n\n"<li>"Disabled apps"</li>\n<li>"Disabled app notifications"</li>\n<li>"Default applications for actions"</li>\n<li>"Background data restrictions for apps"</li>\n<li>"Any permission restrictions"</li>\n\n"You will not lose any app data."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset apps"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App preferences have been reset"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Erase all data (factory reset)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"This will erase all data from your vehicle’s head unit, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"You are currently signed in to the following accounts:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"There are other users present on this vehicle."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset vehicle"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Reset?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Erase all your personal information and downloaded apps? You can\'t undo this action!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Erase everything"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Erasing"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Please wait..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date &amp; time"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Set date and time"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Set date, time, time zone, &amp; formats"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sort by time zone"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Date"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Time"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Add account"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Delete user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Guest"</string>
     <string name="user_admin" msgid="1535484812908584809">"Admin"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Signed in as admin"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"All admin permissions"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Make admin"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"The user will be able to delete users, including other admins, and factory reset the system."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"This action is not reversible."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Yes, make admin"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Create new users"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Make phone calls"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging via car\'s mobile data"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Install new apps"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uninstall apps"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"User limit reached"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
+      <item quantity="one">Only one user can be created.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Failed to create a new user"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Delete this user?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"All apps and data will be deleted."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Failed to delete user."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dismiss"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Retry"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Delete last user?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"After deleting the only remaining user for this car, a new admin user will be created."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"All data, settings and apps associated with this user will be deleted. You\'ll need to set up the system again."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Choose new admin"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"You need at least one admin. To delete this one, choose a replacement first."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Choose admin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Guest"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Guest"</string>
     <string name="user_switch" msgid="6544839750534690781">"Switch"</string>
     <string name="current_user_name" msgid="3813671533249316823">"You (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Not set up"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Edit user name"</string>
     <string name="users_list_title" msgid="770764290290240909">"Users"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permissions granted to %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Accounts"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"User"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Add account"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"No accounts added"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Accounts for <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatically sync data"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Let apps refresh data automatically"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Turn auto-sync data on?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Any changes that you make to your accounts on the web will be automatically copied to your device.\n\nSome accounts may also automatically copy any changes that you make on the phone to the web. A Google Account works this way."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Turn auto-sync data off?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"This will conserve data, but you’ll need to sync each account manually to collect recent information. And you won’t receive notifications when updates occur."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Account info"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Add account"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Add an account."</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Remove account"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Remove account?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Removing this account will delete all of its messages, contacts and other data from the device!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"This change isn\'t allowed by your admin"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Remove this user?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"All apps and data will be deleted."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Failed to remove user."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Try again?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Dismiss"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Retry"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Failed to remove account."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Account sync"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sync on for <xliff:g id="ID_1">%1$d</xliff:g> of <xliff:g id="ID_2">%2$d</xliff:g> items"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sync on for all items"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sync off for all items"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sync is OFF"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sync error"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Last synced <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Syncing now…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tap to sync now<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sync now"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel sync"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sync is currently experiencing problems. It will be back shortly."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Security"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Screen lock"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"None"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Password"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Choose a lock type"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Screen lock options"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Lock options"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Enter your pattern"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirm"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Redraw"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Set a screen lock"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Choose your PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Choose your pattern"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Choose your passowrd"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Choose your password"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Current screen lock"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"For security, set a pattern"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Clear"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Use the companion app to set up a trusted device. Once set up, you will be able to unlock your user profile when your phone is detected by the vehicle"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock can\'t detect security features of this device. To help protect your car, trusted device will only be able to keep your car unlocked once it\'s already unlocked by you. Your trusted device can keep your car unlocked when it\'s nearby, even if someone else is holding it."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Add <xliff:g id="DEVICE_NAME">%1$s</xliff:g> as a trusted device"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> successfully added as a trusted device"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrolment failed"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
     <string name="forget" msgid="3971143908183848527">"Forget"</string>
+    <string name="connect" msgid="5861699594602380150">"Connect"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
     <string name="delete_button" msgid="5840500432614610850">"Delete"</string>
     <string name="remove_button" msgid="6664656962868194178">"Remove"</string>
     <string name="cancel" msgid="750286395700355455">"Cancel"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Exit demo mode"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"This will delete the demo account and factory data reset the system. All user data will be lost."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Exit Demo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"finish setup"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"not now"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISMISS"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Feature not available while driving."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Can\'t add user while driving."</string>
 </resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000..ad3a983
--- /dev/null
+++ b/res/values-en-rCA/strings.xml
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright 2018 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="settings_label" msgid="5147911978211079839">"Settings"</string>
+    <string name="more_settings_label" msgid="3867559443480110616">"More"</string>
+    <string name="display_settings" msgid="5325515247739279185">"Display"</string>
+    <string name="brightness" msgid="2919605130898772866">"Brightness level"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"Adaptive brightness"</string>
+    <string name="auto_brightness_summary" msgid="4741887033140384352">"Optimise brightness level for available light"</string>
+    <string name="condition_night_display_title" msgid="3777509730126972675">"Night Light is on"</string>
+    <string name="keywords_display" msgid="3978416985146943922">"screen, touchscreen"</string>
+    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"dim screen, touchscreen, battery"</string>
+    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim screen, touchscreen, battery"</string>
+    <string name="keywords_display_night_display" msgid="2922294576679769957">"dim screen, night, tint"</string>
+    <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Network &amp; internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Data warning limit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"App data usage cycle"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Set data warning"</string>
+    <string name="data_warning" msgid="116776633806885370">"Data warning"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Set data limit"</string>
+    <string name="data_limit" msgid="227338836292511425">"Data limit"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limiting data usage"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Your vehicle’s head unit will turn off mobile data once it reaches the limit that you set.\n\nSince data usage is measured by the head unit, and your operator may account for usage differently, consider setting a conservative limit."</string>
+    <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
+    <string name="wifi_starting" msgid="473253087503153167">"Turning Wi‑Fi on…"</string>
+    <string name="wifi_stopping" msgid="3534173972547890148">"Turning off Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Loading Wi‑Fi list"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi disabled"</string>
+    <string name="wifi_failed_forget_message" msgid="121732682699377206">"Failed to forget network"</string>
+    <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Failed to connect to network"</string>
+    <string name="wifi_setup_add_network" msgid="3660498520389954620">"Add network"</string>
+    <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
+    <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
+    <string name="wifi_show_password" msgid="8423293211933521097">"Show password"</string>
+    <string name="wifi_ssid" msgid="488604828159458741">"Network name"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Enter the SSID"</string>
+    <string name="wifi_security" msgid="158358046038876532">"Security"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signal strength"</string>
+    <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
+    <string name="wifi_speed" msgid="1650692446731850781">"Link speed"</string>
+    <string name="wifi_frequency" msgid="8951455949682864922">"Frequency"</string>
+    <string name="wifi_ip_address" msgid="3128140627890954061">"IP Address"</string>
+    <string name="show_password" msgid="2074628020371139240">"Show password"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Enter network name"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Enter password"</string>
+    <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
+  <string-array name="wifi_signals">
+    <item msgid="4897376984576812606">"Poor"</item>
+    <item msgid="7683058295076342057">"Poor"</item>
+    <item msgid="1639222824821660744">"Fair"</item>
+    <item msgid="1838705897358163300">"Good"</item>
+    <item msgid="6067166649320533751">"Excellent"</item>
+  </string-array>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Network details"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC address"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP address"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 addresses"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi preferences"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Turn on Wi‑Fi automatically"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi will turn back on near high‑quality saved networks, such as your home network"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Unavailable because location is turned off. Turn on "<annotation id="link">"location"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Turn on Wi‑Fi scanning?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Turn on"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi scanning turned on"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Switch to mobile data automatically"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Use mobile data when Wi‑Fi has no Internet access. Data usage charges may apply."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Learn more"</string>
+    <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Unnamed device"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Paired devices"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Pair new device"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth will turn on to pair"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Disconnect device?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Your vehicle will disconnect from <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Vehicle\'s Bluetooth address: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Device\'s Bluetooth address: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Vehicle name"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Rename this vehicle"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Rename device"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Rename"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Available devices"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiles"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
+    <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pairing request"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pair &amp; connect"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth pairing code"</string>
+    <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN contains letters or symbols"</string>
+    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Type the pairing code then press Return or Enter"</string>
+    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"Pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string>
+    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"Allow <xliff:g id="DEVICE_NAME">%1$s</xliff:g> to access your contacts and call history"</string>
+    <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"You may also need to type this PIN on the other device."</string>
+    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"You may also need to type this passkey on the other device."</string>
+    <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"Must be 16 digits"</string>
+    <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Usually 0000 or 1234"</string>
+    <string name="bluetooth_notif_title" msgid="8374602799367803335">"Pairing request"</string>
+    <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tap to pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="language_settings" msgid="2079258598337245546">"Languages"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Languages &amp; input"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Keyboard"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Manage keyboards"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Text to speech output"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Preferred engine"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Current engine"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Speech Rate"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Pitch"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Reset"</string>
+    <string name="sound_settings" msgid="3072423952331872246">"Sound"</string>
+    <string name="ring_volume_title" msgid="3135241004980719442">"Ring volume"</string>
+    <string name="navi_volume_title" msgid="946292066759195165">"Navigation volume"</string>
+    <string name="incoming_call_volume_title" msgid="6972117872424656876">"Ring tone"</string>
+    <string name="notification_volume_title" msgid="6749411263197157876">"Notification"</string>
+    <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
+    <string name="media_volume_summary" msgid="2961762827637127239">"Set volume for music and videos"</string>
+    <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Phone ringtone"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Default notification sound"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default alarm sound"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps &amp; notifications"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Show all apps"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Default apps"</string>
+    <string name="applications_settings" msgid="794261395191035632">"App info"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Force stop?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"If you force-stop an app, it may misbehave."</string>
+    <string name="disable_text" msgid="4358165448648990820">"Disable"</string>
+    <string name="enable_text" msgid="1794971777861881238">"Enable"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Uninstall"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"If you disable this app, Android and other apps may no longer function as intended."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disable app"</string>
+    <string name="permissions_label" msgid="2701446753515612685">"Permission"</string>
+    <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
+    <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No permissions granted"</string>
+    <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No permissions requested"</string>
+    <string name="data_usage_summary_title" msgid="4368024763485916986">"Data usage"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"App data usage"</string>
+    <string name="computing_size" msgid="5791407621793083965">"Computing…"</string>
+    <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> additional permissions</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> additional permission</item>
+    </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assist &amp; voice input"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assist app"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Use text from screen"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Allow the assist app to access the screen contents as text"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Use screenshot"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Allow the assist app to access an image of the screen"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Auto-fill service"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"None"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Selected"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"The assistant will be able to read information about apps that are in use on your system, including information visible on your screen or accessible within the apps."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Make sure that you trust this app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Auto-fill&gt;%1$s&lt;/xliff:g&gt; uses what\'s on your screen to determine what can be auto-filled."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Add service"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Location"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"App-level permissions"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Scanning"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Location Services"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi scanning"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Allow apps and services to scan for Wi‑Fi networks at any time, even when Wi‑Fi is off. This can be used, for example, to improve location-based features and services."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth scanning"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
+    <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
+    <string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
+    <string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
+    <string name="model_info" msgid="4966408071657934452">"Model"</string>
+    <string name="baseband_version" msgid="2370088062235041897">"Baseband version"</string>
+    <string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
+    <string name="build_number" msgid="3997326631001009102">"Build number"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
+    <string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
+    <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
+    <string name="device_status" msgid="267298179806290920">"Status"</string>
+    <string name="device_status_summary" product="tablet" msgid="600543254608862075">"Status of the battery, network and other information"</string>
+    <string name="device_status_summary" product="default" msgid="9130360324418117815">"Phone number, signal, etc."</string>
+    <string name="about_settings" msgid="4329457966672592345">"About"</string>
+    <string name="about_summary" msgid="5374623866267691206">"Android <xliff:g id="VERSION">%1$s</xliff:g>"</string>
+    <string name="about_settings_summary" msgid="7975072809083281401">"View legal info, status, software version"</string>
+    <string name="legal_information" msgid="1838443759229784762">"Legal information"</string>
+    <string name="contributors_title" msgid="7698463793409916113">"Contributors"</string>
+    <string name="manual" msgid="4819839169843240804">"Manual"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"Regulatory labels"</string>
+    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"Safety &amp; regulatory manual"</string>
+    <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
+    <string name="license_title" msgid="936705938435249965">"Licence"</string>
+    <string name="terms_title" msgid="5201471373602628765">"Terms and conditions"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"System WebView licences"</string>
+    <string name="wallpaper_attributions" msgid="9201272150014500697">"Wallpaper"</string>
+    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satellite imagery providers:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"Third-party licences"</string>
+    <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"There is a problem loading the licences."</string>
+    <string name="settings_license_activity_loading" msgid="6163263123009681841">"Loading…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">You are now <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> steps away from being a developer.</item>
+      <item quantity="one">You are now <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> step away from being a developer.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"You are now a developer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"No need, you are already a developer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Developer options"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Reset options"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Network, apps or device reset"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Reset network"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"This will reset all network settings, including:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobile data"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Erase all vehicle eSIMs"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"This will not cancel your service plan."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Can’t reset eSIMs"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Select network"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Reset settings"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Reset?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Reset all network settings? You can\'t undo this action!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Reset settings"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Network settings have been reset"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Reset app preferences"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"This will reset all preferences for:\n\n"<li>"Disabled apps"</li>\n<li>"Disabled app notifications"</li>\n<li>"Default applications for actions"</li>\n<li>"Background data restrictions for apps"</li>\n<li>"Any permission restrictions"</li>\n\n"You will not lose any app data."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset apps"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App preferences have been reset"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Erase all data (factory reset)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"This will erase all data from your vehicle’s head unit, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"You are currently signed in to the following accounts:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"There are other users present on this vehicle."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset vehicle"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Reset?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Erase all your personal information and downloaded apps? You can\'t undo this action!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Erase everything"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Erasing"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Please wait..."</string>
+    <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date &amp; time"</string>
+    <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Set date and time"</string>
+    <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Set date, time, time zone, &amp; formats"</string>
+    <string name="date_time_auto" msgid="3570339569471779767">"Automatic date &amp; time"</string>
+    <string name="date_time_auto_summary" msgid="3311706425095342759">"Use network-provided time"</string>
+    <string name="zone_auto" msgid="3701878581920206160">"Automatic time zone"</string>
+    <string name="zone_auto_summary" msgid="4345856882906981864">"Use network-provided time zone"</string>
+    <string name="date_time_24hour_title" msgid="3025576547136168692">"24‑hour format"</string>
+    <string name="date_time_24hour" msgid="1137618702556486913">"Use 24-hour format"</string>
+    <string name="date_time_set_time_title" msgid="5884883050656937853">"Time"</string>
+    <string name="date_time_set_time" msgid="6449555153906058248">"Set time"</string>
+    <string name="date_time_set_timezone_title" msgid="3001779256157093425">"Time zone"</string>
+    <string name="date_time_set_timezone" msgid="4759353576185916944">"Select time zone"</string>
+    <string name="date_time_set_date_title" msgid="6834785820357051138">"Date"</string>
+    <string name="date_time_set_date" msgid="2537494485643283230">"Set date"</string>
+    <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"Sort alphabetically"</string>
+    <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sort by time zone"</string>
+    <string name="date_picker_title" msgid="1533614225273770178">"Date"</string>
+    <string name="time_picker_title" msgid="7436045944320504639">"Time"</string>
+    <string name="user_admin" msgid="1535484812908584809">"Admin"</string>
+    <string name="signed_in_admin_user" msgid="1267225622818673274">"Signed in as admin"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"All admin permissions"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Make admin"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"The user will be able to delete users, including other admins, and factory reset the system."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"This action is not reversible."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Yes, make admin"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Create new users"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Make phone calls"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging via car\'s mobile data"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Install new apps"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uninstall apps"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"User limit reached"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
+      <item quantity="one">Only one user can be created.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Failed to create a new user"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Delete this user?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"All apps and data will be deleted."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Failed to delete user."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dismiss"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Retry"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Delete last user?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"After deleting the only remaining user for this car, a new admin user will be created."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"All data, settings and apps associated with this user will be deleted. You\'ll need to set up the system again."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Choose new admin"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"You need at least one admin. To delete this one, choose a replacement first."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Choose admin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Guest"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Guest"</string>
+    <string name="user_switch" msgid="6544839750534690781">"Switch"</string>
+    <string name="current_user_name" msgid="3813671533249316823">"You (%1$s)"</string>
+    <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
+    <string name="user_summary_not_set_up" msgid="1473688119241224145">"Not set up"</string>
+    <string name="edit_user_name_title" msgid="6890782937520262478">"Edit user name"</string>
+    <string name="users_list_title" msgid="770764290290240909">"Users"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permissions granted to %1$s"</string>
+    <string name="accounts_settings_title" msgid="436190037084293471">"Accounts"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Add account"</string>
+    <string name="no_accounts_added" msgid="5148163140691096055">"No accounts added"</string>
+    <string name="account_list_title" msgid="7631588514613843065">"Accounts for <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatically sync data"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Let apps refresh data automatically"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Turn auto-sync data on?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Any changes that you make to your accounts on the web will be automatically copied to your device.\n\nSome accounts may also automatically copy any changes that you make on the phone to the web. A Google Account works this way."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Turn auto-sync data off?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"This will conserve data, but you’ll need to sync each account manually to collect recent information. And you won’t receive notifications when updates occur."</string>
+    <string name="account_details_title" msgid="7529571432258448573">"Account info"</string>
+    <string name="add_account_title" msgid="5988746086885210040">"Add account"</string>
+    <string name="add_an_account" msgid="1072285034300995091">"Add an account."</string>
+    <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"Restricted profiles cannot add accounts"</string>
+    <string name="remove_account_title" msgid="8840386525787836381">"Remove account"</string>
+    <string name="really_remove_account_title" msgid="3555164432587924900">"Remove account?"</string>
+    <string name="really_remove_account_message" msgid="4296769280849579900">"Removing this account will delete all of its messages, contacts and other data from the device!"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Failed to remove account."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Account sync"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sync on for <xliff:g id="ID_1">%1$d</xliff:g> of <xliff:g id="ID_2">%2$d</xliff:g> items"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sync on for all items"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sync off for all items"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sync is OFF"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sync error"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Last synced <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Syncing now…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tap to sync now<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sync now"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel sync"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sync is currently experiencing problems. It will be back shortly."</string>
+    <string name="security_settings_title" msgid="6955331714774709746">"Security"</string>
+    <string name="security_settings_subtitle" msgid="2244635550239273229">"Screen lock"</string>
+    <string name="security_lock_none" msgid="1054645093754839638">"None"</string>
+    <string name="security_lock_pattern" msgid="1174352995619563104">"Pattern"</string>
+    <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
+    <string name="security_lock_password" msgid="4420203740048322494">"Password"</string>
+    <string name="lock_settings_picker_title" msgid="6590330165050361632">"Choose a lock type"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Lock options"</string>
+    <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Enter your pattern"</string>
+    <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirm"</string>
+    <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Redraw"</string>
+    <string name="continue_button_text" msgid="5129979170426836641">"Continue"</string>
+    <string name="lockscreen_retry_button_text" msgid="5314212350698701242">"Retry"</string>
+    <string name="lockscreen_skip_button_text" msgid="3755748786396198091">"Skip"</string>
+    <string name="set_screen_lock" msgid="5239317292691332780">"Set a screen lock"</string>
+    <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Choose your PIN"</string>
+    <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Choose your pattern"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Choose your password"</string>
+    <string name="current_screen_lock" msgid="637651611145979587">"Current screen lock"</string>
+    <string name="choose_lock_pattern_message" msgid="6242765203541309524">"For security, set a pattern"</string>
+    <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Clear"</string>
+    <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"Cancel"</string>
+    <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"Your new unlock pattern"</string>
+    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"Draw an unlock pattern"</string>
+    <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"Release finger when you\'ve finished"</string>
+    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"Pattern recorded"</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"Draw pattern again to confirm"</string>
+    <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"Connect at least four dots. Try again."</string>
+    <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"Wrong pattern"</string>
+    <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"How to draw an unlock pattern"</string>
+    <string name="error_saving_lockpattern" msgid="2933512812768570130">"Error saving pattern"</string>
+    <string name="okay" msgid="4589873324439764349">"OK"</string>
+    <string name="remove_screen_lock_title" msgid="1234382338764193387">"Remove screen lock?"</string>
+    <string name="remove_screen_lock_message" msgid="6675850371585564965">"This will allow anyone to access your account"</string>
+    <string name="lock_settings_enter_pin" msgid="1669172111244633904">"Enter your PIN"</string>
+    <string name="lock_settings_enter_password" msgid="2636669926649496367">"Enter your password"</string>
+    <string name="choose_lock_pin_message" msgid="2963792070267774417">"For security, set a PIN"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"Re-enter your PIN"</string>
+    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PIN must be at least 4 digits"</string>
+    <string name="lockpin_invalid_pin" msgid="2149191577096327424">"PIN invalid. Must be at least 4 digits."</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PINs don\'t match"</string>
+    <string name="error_saving_lockpin" msgid="9011960139736000393">"Error saving PIN"</string>
+    <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"Wrong PIN"</string>
+    <string name="lockscreen_wrong_password" msgid="5757087577162231825">"Wrong password"</string>
+    <string name="choose_lock_password_message" msgid="6124341145027370784">"For security, set a password"</string>
+    <string name="confirm_your_password_header" msgid="7052891840366724938">"Re-enter your password"</string>
+    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"Passwords don\'t match"</string>
+    <string name="lockpassword_clear_label" msgid="6363680971025188064">"Clear"</string>
+    <string name="lockpassword_cancel_label" msgid="5791237697404166450">"Cancel"</string>
+    <string name="lockpassword_confirm_label" msgid="5918463281546146953">"Confirm"</string>
+    <string name="choose_lock_password_hints" msgid="3903696950202491593">"Must be at least four characters"</string>
+    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"Must be at least <xliff:g id="COUNT">%d</xliff:g> characters"</string>
+    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN must be at least <xliff:g id="COUNT">%d</xliff:g> digits"</string>
+    <string name="lockpassword_password_too_long" msgid="7530214940279491291">"Must be fewer than <xliff:g id="NUMBER">%d</xliff:g> characters"</string>
+    <string name="lockpassword_pin_too_long" msgid="62957683396974404">"Must be fewer than <xliff:g id="NUMBER">%d</xliff:g> digits"</string>
+    <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"Must contain only digits 0-9."</string>
+    <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"Device admin doesn\'t allow using a recent PIN"</string>
+    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"Common PINs are blocked by your IT admin. Try a different PIN."</string>
+    <string name="lockpassword_illegal_character" msgid="1984970060523635618">"This can\'t include an invalid character."</string>
+    <string name="lockpassword_invalid_password" msgid="1690956113717418430">"Password invalid. Must be at least four characters."</string>
+    <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
+      <item quantity="other">Must contain at least <xliff:g id="COUNT">%d</xliff:g> letters</item>
+      <item quantity="one">Must contain at least one letter</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_lowercase" formatted="false" msgid="2267487180744744833">
+      <item quantity="other">Must contain at least <xliff:g id="COUNT">%d</xliff:g> lowercase letters</item>
+      <item quantity="one">Must contain at least one lowercase letter</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_uppercase" formatted="false" msgid="7999264563026517898">
+      <item quantity="other">Must contain at least <xliff:g id="COUNT">%d</xliff:g> uppercase letters</item>
+      <item quantity="one">Must contain at least 1 uppercase letter</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_numeric" formatted="false" msgid="7935079851855168646">
+      <item quantity="other">Must contain at least <xliff:g id="COUNT">%d</xliff:g> numerical digits</item>
+      <item quantity="one">Must contain at least 1 numerical digit</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_symbols" formatted="false" msgid="3994046435150094132">
+      <item quantity="other">Must contain at least <xliff:g id="COUNT">%d</xliff:g> special symbols</item>
+      <item quantity="one">Must contain at least 1 special symbol</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_nonletter" formatted="false" msgid="6878486326748506524">
+      <item quantity="other">Must contain at least <xliff:g id="COUNT">%d</xliff:g> non-letter characters</item>
+      <item quantity="one">Must contain at least 1 non-letter character</item>
+    </plurals>
+    <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"Device admin doesn\'t allow using a recent password"</string>
+    <string name="error_saving_password" msgid="8334882262622500658">"Error saving password"</string>
+    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
+    <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
+    <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Use the companion app to set up a trusted device. Once set up, you will be able to unlock your user profile when your phone is detected by the vehicle"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock can\'t detect security features of this device. To help protect your car, trusted device will only be able to keep your car unlocked once it\'s already unlocked by you. Your trusted device can keep your car unlocked when it\'s nearby, even if someone else is holding it."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Add <xliff:g id="DEVICE_NAME">%1$s</xliff:g> as a trusted device"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> successfully added as a trusted device"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrolment failed"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
+    <string name="forget" msgid="3971143908183848527">"Forget"</string>
+    <string name="connect" msgid="5861699594602380150">"Connect"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
+    <string name="delete_button" msgid="5840500432614610850">"Delete"</string>
+    <string name="remove_button" msgid="6664656962868194178">"Remove"</string>
+    <string name="cancel" msgid="750286395700355455">"Cancel"</string>
+    <string name="backspace_key" msgid="1545590866688979099">"Backspace key"</string>
+    <string name="enter_key" msgid="2121394305541579468">"Enter key"</string>
+    <string name="exit_retail_button_text" msgid="6093240315583384473">"Exit Demo"</string>
+    <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Exit demo mode"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"This will delete the demo account and factory data reset the system. All user data will be lost."</string>
+    <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Exit Demo"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISMISS"</string>
+    <string name="restricted_while_driving" msgid="6217369093121968299">"Feature not available while driving."</string>
+    <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Can\'t add user while driving."</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index db58240..ad3a983 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim screen, touchscreen, battery"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"dim screen, night, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Network &amp; internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Data warning limit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"App data usage cycle"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Set data warning"</string>
+    <string name="data_warning" msgid="116776633806885370">"Data warning"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Set data limit"</string>
+    <string name="data_limit" msgid="227338836292511425">"Data limit"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limiting data usage"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Your vehicle’s head unit will turn off mobile data once it reaches the limit that you set.\n\nSince data usage is measured by the head unit, and your operator may account for usage differently, consider setting a conservative limit."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Set up &amp; manage wireless access points"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Turning Wi‑Fi on…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Turning off Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Loading Wi‑Fi list"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi disabled"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Failed to forget network"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Failed to connect to network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Add network"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi disabled"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Show password"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Network name"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Enter the SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Security"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signal strength"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signal strength"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Link speed"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequency"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP Address"</string>
+    <string name="show_password" msgid="2074628020371139240">"Show password"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Enter network name"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Enter password"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Poor"</item>
-    <item msgid="2032262610626057081">"Fair"</item>
-    <item msgid="3859756017461098953">"Good"</item>
-    <item msgid="1521103743353335724">"Excellent"</item>
+    <item msgid="7683058295076342057">"Poor"</item>
+    <item msgid="1639222824821660744">"Fair"</item>
+    <item msgid="1838705897358163300">"Good"</item>
+    <item msgid="6067166649320533751">"Excellent"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Turn on Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth disabled"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Network details"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC address"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP address"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 addresses"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi preferences"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Turn on Wi‑Fi automatically"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi will turn back on near high‑quality saved networks, such as your home network"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Unavailable because location is turned off. Turn on "<annotation id="link">"location"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Turn on Wi‑Fi scanning?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Turn on"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi scanning turned on"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Switch to mobile data automatically"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Use mobile data when Wi‑Fi has no Internet access. Data usage charges may apply."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Learn more"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Manage connections, set device name &amp; discoverability"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Phone"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imaging"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Headphone"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Input Peripheral"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Paired devices"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Available devices"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"No paired devices"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"No available devices"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Paired device"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Name"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Use for"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Change the name of the Bluetooth device"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Unnamed device"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Paired devices"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Pair new device"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth will turn on to pair"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Disconnect device?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Your vehicle will disconnect from <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Vehicle\'s Bluetooth address: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Device\'s Bluetooth address: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Vehicle name"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Rename this vehicle"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Rename device"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Rename"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Available devices"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiles"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pairing request"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pair &amp; connect"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth pairing code"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN contains letters or symbols"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Type the pairing code then press Return or Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Usually 0000 or 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Pairing request"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tap to pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Languages"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Languages &amp; input"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Keyboard"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Manage keyboards"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Text to speech output"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Preferred engine"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Current engine"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Speech Rate"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Pitch"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Reset"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Sound"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Ring volume"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigation volume"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Set volume for music and videos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Phone ringtone"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Default notification sound"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default alarm sound"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps &amp; notifications"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Show all apps"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Default apps"</string>
     <string name="applications_settings" msgid="794261395191035632">"App info"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Force stop?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"If you force-stop an app, it may misbehave."</string>
     <string name="disable_text" msgid="4358165448648990820">"Disable"</string>
     <string name="enable_text" msgid="1794971777861881238">"Enable"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Uninstall"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"If you disable this app, Android and other apps may no longer function as intended."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disable app"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permission"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No permissions granted"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No permissions requested"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data usage"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"App data usage"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
     <string name="computing_size" msgid="5791407621793083965">"Computing…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> additional permissions</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> additional permission</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assist &amp; voice input"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assist app"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Use text from screen"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Allow the assist app to access the screen contents as text"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Use screenshot"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Allow the assist app to access an image of the screen"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Auto-fill service"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"None"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Selected"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"The assistant will be able to read information about apps that are in use on your system, including information visible on your screen or accessible within the apps."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Make sure that you trust this app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Auto-fill&gt;%1$s&lt;/xliff:g&gt; uses what\'s on your screen to determine what can be auto-filled."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Add service"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Location"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"App-level permissions"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Scanning"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Location Services"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi scanning"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Allow apps and services to scan for Wi‑Fi networks at any time, even when Wi‑Fi is off. This can be used, for example, to improve location-based features and services."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth scanning"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"System updates"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband version"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
     <string name="build_number" msgid="3997326631001009102">"Build number"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licence"</string>
     <string name="terms_title" msgid="5201471373602628765">"Terms and conditions"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"System WebView Licence"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"System WebView licences"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Wallpaper"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satellite imagery providers:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Third-party licences"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"There is a problem loading the licences."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Loading…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">You are now <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> steps away from being a developer.</item>
+      <item quantity="one">You are now <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> step away from being a developer.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"You are now a developer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"No need, you are already a developer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Developer options"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Reset options"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Network, apps or device reset"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Reset network"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"This will reset all network settings, including:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobile data"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Erase all vehicle eSIMs"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"This will not cancel your service plan."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Can’t reset eSIMs"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Select network"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Reset settings"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Reset?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Reset all network settings? You can\'t undo this action!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Reset settings"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Network settings have been reset"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Reset app preferences"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"This will reset all preferences for:\n\n"<li>"Disabled apps"</li>\n<li>"Disabled app notifications"</li>\n<li>"Default applications for actions"</li>\n<li>"Background data restrictions for apps"</li>\n<li>"Any permission restrictions"</li>\n\n"You will not lose any app data."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset apps"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App preferences have been reset"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Erase all data (factory reset)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"This will erase all data from your vehicle’s head unit, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"You are currently signed in to the following accounts:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"There are other users present on this vehicle."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset vehicle"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Reset?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Erase all your personal information and downloaded apps? You can\'t undo this action!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Erase everything"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Erasing"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Please wait..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date &amp; time"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Set date and time"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Set date, time, time zone, &amp; formats"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sort by time zone"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Date"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Time"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Add account"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Delete user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Guest"</string>
     <string name="user_admin" msgid="1535484812908584809">"Admin"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Signed in as admin"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"All admin permissions"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Make admin"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"The user will be able to delete users, including other admins, and factory reset the system."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"This action is not reversible."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Yes, make admin"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Create new users"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Make phone calls"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging via car\'s mobile data"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Install new apps"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uninstall apps"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"User limit reached"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
+      <item quantity="one">Only one user can be created.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Failed to create a new user"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Delete this user?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"All apps and data will be deleted."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Failed to delete user."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dismiss"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Retry"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Delete last user?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"After deleting the only remaining user for this car, a new admin user will be created."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"All data, settings and apps associated with this user will be deleted. You\'ll need to set up the system again."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Choose new admin"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"You need at least one admin. To delete this one, choose a replacement first."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Choose admin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Guest"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Guest"</string>
     <string name="user_switch" msgid="6544839750534690781">"Switch"</string>
     <string name="current_user_name" msgid="3813671533249316823">"You (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Not set up"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Edit user name"</string>
     <string name="users_list_title" msgid="770764290290240909">"Users"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permissions granted to %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Accounts"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"User"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Add account"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"No accounts added"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Accounts for <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatically sync data"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Let apps refresh data automatically"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Turn auto-sync data on?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Any changes that you make to your accounts on the web will be automatically copied to your device.\n\nSome accounts may also automatically copy any changes that you make on the phone to the web. A Google Account works this way."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Turn auto-sync data off?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"This will conserve data, but you’ll need to sync each account manually to collect recent information. And you won’t receive notifications when updates occur."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Account info"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Add account"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Add an account."</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Remove account"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Remove account?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Removing this account will delete all of its messages, contacts and other data from the device!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"This change isn\'t allowed by your admin"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Remove this user?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"All apps and data will be deleted."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Failed to remove user."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Try again?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Dismiss"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Retry"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Failed to remove account."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Account sync"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sync on for <xliff:g id="ID_1">%1$d</xliff:g> of <xliff:g id="ID_2">%2$d</xliff:g> items"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sync on for all items"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sync off for all items"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sync is OFF"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sync error"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Last synced <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Syncing now…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tap to sync now<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sync now"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel sync"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sync is currently experiencing problems. It will be back shortly."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Security"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Screen lock"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"None"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Password"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Choose a lock type"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Screen lock options"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Lock options"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Enter your pattern"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirm"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Redraw"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Set a screen lock"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Choose your PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Choose your pattern"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Choose your passowrd"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Choose your password"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Current screen lock"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"For security, set a pattern"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Clear"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Use the companion app to set up a trusted device. Once set up, you will be able to unlock your user profile when your phone is detected by the vehicle"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock can\'t detect security features of this device. To help protect your car, trusted device will only be able to keep your car unlocked once it\'s already unlocked by you. Your trusted device can keep your car unlocked when it\'s nearby, even if someone else is holding it."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Add <xliff:g id="DEVICE_NAME">%1$s</xliff:g> as a trusted device"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> successfully added as a trusted device"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrolment failed"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
     <string name="forget" msgid="3971143908183848527">"Forget"</string>
+    <string name="connect" msgid="5861699594602380150">"Connect"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
     <string name="delete_button" msgid="5840500432614610850">"Delete"</string>
     <string name="remove_button" msgid="6664656962868194178">"Remove"</string>
     <string name="cancel" msgid="750286395700355455">"Cancel"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Exit demo mode"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"This will delete the demo account and factory data reset the system. All user data will be lost."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Exit Demo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"finish setup"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"not now"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISMISS"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Feature not available while driving."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Can\'t add user while driving."</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index db58240..ad3a983 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim screen, touchscreen, battery"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"dim screen, night, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Network &amp; internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Data warning limit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"App data usage cycle"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Set data warning"</string>
+    <string name="data_warning" msgid="116776633806885370">"Data warning"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Set data limit"</string>
+    <string name="data_limit" msgid="227338836292511425">"Data limit"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limiting data usage"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Your vehicle’s head unit will turn off mobile data once it reaches the limit that you set.\n\nSince data usage is measured by the head unit, and your operator may account for usage differently, consider setting a conservative limit."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Set up &amp; manage wireless access points"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Turning Wi‑Fi on…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Turning off Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Loading Wi‑Fi list"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi disabled"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Failed to forget network"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Failed to connect to network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Add network"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi disabled"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Show password"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Network name"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Enter the SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Security"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signal strength"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signal strength"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Link speed"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequency"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP Address"</string>
+    <string name="show_password" msgid="2074628020371139240">"Show password"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Enter network name"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Enter password"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Poor"</item>
-    <item msgid="2032262610626057081">"Fair"</item>
-    <item msgid="3859756017461098953">"Good"</item>
-    <item msgid="1521103743353335724">"Excellent"</item>
+    <item msgid="7683058295076342057">"Poor"</item>
+    <item msgid="1639222824821660744">"Fair"</item>
+    <item msgid="1838705897358163300">"Good"</item>
+    <item msgid="6067166649320533751">"Excellent"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Turn on Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth disabled"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Network details"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC address"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP address"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 addresses"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi preferences"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Turn on Wi‑Fi automatically"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi will turn back on near high‑quality saved networks, such as your home network"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Unavailable because location is turned off. Turn on "<annotation id="link">"location"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Turn on Wi‑Fi scanning?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Turn on"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi scanning turned on"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Switch to mobile data automatically"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Use mobile data when Wi‑Fi has no Internet access. Data usage charges may apply."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Learn more"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Manage connections, set device name &amp; discoverability"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Phone"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imaging"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Headphone"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Input Peripheral"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Paired devices"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Available devices"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"No paired devices"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"No available devices"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Paired device"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Name"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Use for"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Change the name of the Bluetooth device"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Unnamed device"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Paired devices"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Pair new device"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth will turn on to pair"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Disconnect device?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Your vehicle will disconnect from <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Vehicle\'s Bluetooth address: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Device\'s Bluetooth address: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Vehicle name"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Rename this vehicle"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Rename device"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Rename"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Available devices"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiles"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pairing request"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pair &amp; connect"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth pairing code"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN contains letters or symbols"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Type the pairing code then press Return or Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Usually 0000 or 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Pairing request"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tap to pair with <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Languages"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Languages &amp; input"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Keyboard"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Manage keyboards"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Text to speech output"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Preferred engine"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Current engine"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Speech Rate"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Pitch"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Reset"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Sound"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Ring volume"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigation volume"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Set volume for music and videos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Phone ringtone"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Default notification sound"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default alarm sound"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps &amp; notifications"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Show all apps"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Default apps"</string>
     <string name="applications_settings" msgid="794261395191035632">"App info"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Force stop?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"If you force-stop an app, it may misbehave."</string>
     <string name="disable_text" msgid="4358165448648990820">"Disable"</string>
     <string name="enable_text" msgid="1794971777861881238">"Enable"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Uninstall"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"If you disable this app, Android and other apps may no longer function as intended."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disable app"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permission"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No permissions granted"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No permissions requested"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Data usage"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"App data usage"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Force stop"</string>
     <string name="computing_size" msgid="5791407621793083965">"Computing…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> additional permissions</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> additional permission</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assist &amp; voice input"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assist app"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Use text from screen"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Allow the assist app to access the screen contents as text"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Use screenshot"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Allow the assist app to access an image of the screen"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Auto-fill service"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"None"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Selected"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"The assistant will be able to read information about apps that are in use on your system, including information visible on your screen or accessible within the apps."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Make sure that you trust this app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Auto-fill&gt;%1$s&lt;/xliff:g&gt; uses what\'s on your screen to determine what can be auto-filled."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Add service"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Location"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"App-level permissions"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Scanning"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Location Services"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi scanning"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Allow apps and services to scan for Wi‑Fi networks at any time, even when Wi‑Fi is off. This can be used, for example, to improve location-based features and services."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth scanning"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"System updates"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband version"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
     <string name="build_number" msgid="3997326631001009102">"Build number"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licence"</string>
     <string name="terms_title" msgid="5201471373602628765">"Terms and conditions"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"System WebView Licence"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"System WebView licences"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Wallpaper"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satellite imagery providers:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Third-party licences"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"There is a problem loading the licences."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Loading…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">You are now <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> steps away from being a developer.</item>
+      <item quantity="one">You are now <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> step away from being a developer.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"You are now a developer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"No need, you are already a developer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Developer options"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Reset options"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Network, apps or device reset"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Reset network"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"This will reset all network settings, including:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobile data"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Erase all vehicle eSIMs"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"This will not cancel your service plan."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Can’t reset eSIMs"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Select network"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Reset settings"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Reset?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Reset all network settings? You can\'t undo this action!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Reset settings"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Network settings have been reset"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Reset app preferences"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"This will reset all preferences for:\n\n"<li>"Disabled apps"</li>\n<li>"Disabled app notifications"</li>\n<li>"Default applications for actions"</li>\n<li>"Background data restrictions for apps"</li>\n<li>"Any permission restrictions"</li>\n\n"You will not lose any app data."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reset apps"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App preferences have been reset"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Erase all data (factory reset)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"This will erase all data from your vehicle’s head unit, including:\n\n"<li>"Your Google Account"</li>\n<li>"System and app data and settings"</li>\n<li>"Downloaded apps"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"You are currently signed in to the following accounts:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"There are other users present on this vehicle."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Reset vehicle"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Reset?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Erase all your personal information and downloaded apps? You can\'t undo this action!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Erase everything"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Erasing"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Please wait..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date &amp; time"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Set date and time"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Set date, time, time zone, &amp; formats"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sort by time zone"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Date"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Time"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Add account"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Delete user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Guest"</string>
     <string name="user_admin" msgid="1535484812908584809">"Admin"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Signed in as admin"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"All admin permissions"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Make admin"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"The user will be able to delete users, including other admins, and factory reset the system."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"This action is not reversible."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Yes, make admin"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Create new users"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Make phone calls"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging via car\'s mobile data"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Install new apps"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uninstall apps"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Add user"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"New user"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"User limit reached"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
+      <item quantity="one">Only one user can be created.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Failed to create a new user"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Delete this user?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"All apps and data will be deleted."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Failed to delete user."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dismiss"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Retry"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Delete last user?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"After deleting the only remaining user for this car, a new admin user will be created."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"All data, settings and apps associated with this user will be deleted. You\'ll need to set up the system again."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Choose new admin"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"You need at least one admin. To delete this one, choose a replacement first."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Choose admin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Guest"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Guest"</string>
     <string name="user_switch" msgid="6544839750534690781">"Switch"</string>
     <string name="current_user_name" msgid="3813671533249316823">"You (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Name"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Not set up"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Edit user name"</string>
     <string name="users_list_title" msgid="770764290290240909">"Users"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permissions granted to %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Accounts"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"User"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Add account"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"No accounts added"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Accounts for <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatically sync data"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Let apps refresh data automatically"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Turn auto-sync data on?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Any changes that you make to your accounts on the web will be automatically copied to your device.\n\nSome accounts may also automatically copy any changes that you make on the phone to the web. A Google Account works this way."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Turn auto-sync data off?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"This will conserve data, but you’ll need to sync each account manually to collect recent information. And you won’t receive notifications when updates occur."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Account info"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Add account"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Add an account."</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Remove account"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Remove account?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Removing this account will delete all of its messages, contacts and other data from the device!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"This change isn\'t allowed by your admin"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Remove this user?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"All apps and data will be deleted."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Failed to remove user."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Try again?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Dismiss"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Retry"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Add new user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"When you add a new user, that person needs to set up their space."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Any user can update apps for all other users."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Failed to remove account."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Account sync"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sync on for <xliff:g id="ID_1">%1$d</xliff:g> of <xliff:g id="ID_2">%2$d</xliff:g> items"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sync on for all items"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sync off for all items"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sync is OFF"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sync error"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Last synced <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Syncing now…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tap to sync now<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sync now"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancel sync"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sync is currently experiencing problems. It will be back shortly."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Security"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Screen lock"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"None"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Password"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Choose a lock type"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Screen lock options"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Lock options"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Enter your pattern"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirm"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Redraw"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Set a screen lock"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Choose your PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Choose your pattern"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Choose your passowrd"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Choose your password"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Current screen lock"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"For security, set a pattern"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Clear"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Common passwords are blocked by your IT admin. Try a different password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Use the companion app to set up a trusted device. Once set up, you will be able to unlock your user profile when your phone is detected by the vehicle"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock can\'t detect security features of this device. To help protect your car, trusted device will only be able to keep your car unlocked once it\'s already unlocked by you. Your trusted device can keep your car unlocked when it\'s nearby, even if someone else is holding it."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Add <xliff:g id="DEVICE_NAME">%1$s</xliff:g> as a trusted device"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> successfully added as a trusted device"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrolment failed"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
     <string name="forget" msgid="3971143908183848527">"Forget"</string>
+    <string name="connect" msgid="5861699594602380150">"Connect"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
     <string name="delete_button" msgid="5840500432614610850">"Delete"</string>
     <string name="remove_button" msgid="6664656962868194178">"Remove"</string>
     <string name="cancel" msgid="750286395700355455">"Cancel"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Exit demo mode"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"This will delete the demo account and factory data reset the system. All user data will be lost."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Exit Demo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"finish setup"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"not now"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISMISS"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Feature not available while driving."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Can\'t add user while driving."</string>
 </resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
new file mode 100644
index 0000000..2b696a6
--- /dev/null
+++ b/res/values-en-rXC/strings.xml
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright 2018 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="settings_label" msgid="5147911978211079839">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‏‎‏‎‏‎‏‎‏‏‎‏‎‏‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎Settings‎‏‎‎‏‎"</string>
+    <string name="more_settings_label" msgid="3867559443480110616">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‏‎‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‎More‎‏‎‎‏‎"</string>
+    <string name="display_settings" msgid="5325515247739279185">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎Display‎‏‎‎‏‎"</string>
+    <string name="brightness" msgid="2919605130898772866">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‎‏‏‏‎‏‎‏‏‏‏‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎Brightness level‎‏‎‎‏‎"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎‏‎‏‏‎‎‎‏‎‎‎‏‏‎‎‏‎‏‏‎‏‎‏‎‏‎Adaptive brightness‎‏‎‎‏‎"</string>
+    <string name="auto_brightness_summary" msgid="4741887033140384352">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎Optimize brightness level for available light‎‏‎‎‏‎"</string>
+    <string name="condition_night_display_title" msgid="3777509730126972675">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎‎‏‎‎‎‏‎‏‎‏‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‏‎Night Light is on‎‏‎‎‏‎"</string>
+    <string name="keywords_display" msgid="3978416985146943922">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‏‏‎‏‎‎‏‎‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‎‏‏‎‎‏‎‎screen, touchscreen‎‏‎‎‏‎"</string>
+    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎dim screen, touchscreen, battery‎‏‎‎‏‎"</string>
+    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‎dim screen, touchscreen, battery‎‏‎‎‏‎"</string>
+    <string name="keywords_display_night_display" msgid="2922294576679769957">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‎‎‏‎‎‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‎dim screen, night, tint‎‏‎‎‏‎"</string>
+    <string name="night_mode_tile_label" msgid="6603597795502131664">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎Night mode‎‏‎‎‏‎"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‎‎‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‎‏‎‎‎‎‎‎‎‏‏‏‎‏‎‎Network &amp; internet‎‏‎‎‏‎"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‎‏‎Mobile network‎‏‎‎‏‎"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‎‎‏‏‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‎Mobile data‎‏‎‎‏‎"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‏‏‏‏‎‎‏‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎Access data using mobile network‎‏‎‎‏‎"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‎‎‎‏‎‎‏‎‏‏‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎Turn off mobile data?‎‏‎‎‏‎"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‏‎‏‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎‏‎‎‎‎‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‎‎‎‎Data usage‎‏‎‎‏‎"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‎‏‏‎‎‎‏‎‏‏‏‎‎‏‎‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‎‏‎Data warning &amp; limit‎‏‎‎‏‎"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‏‏‏‏‏‎‏‎‏‏‏‏‎‏‏‏‎‎‏‎‏‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‎App data usage cycle‎‏‎‎‏‎"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‎‏‎‏‎‎‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎Set data warning‎‏‎‎‏‎"</string>
+    <string name="data_warning" msgid="116776633806885370">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‎‎‎‎‎‏‎‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‏‏‎‏‎‎Data warning‎‏‎‎‏‎"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‏‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‎‎‎‏‎‏‏‎‎‏‏‏‏‎‏‎‎‎Set data limit‎‏‎‎‏‎"</string>
+    <string name="data_limit" msgid="227338836292511425">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‏‎‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‎‎‎‎‎‏‎Data limit‎‏‎‎‏‎"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‎‎‏‏‎‏‏‏‏‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‏‎Limiting data usage‎‏‎‎‏‎"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‏‎‏‏‎‎‎‎‎‏‎‎‏‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‎‎‎‏‎‏‎‎‎‎‏‎Your vehicle’s head unit will turn off mobile data once it reaches the limit you set.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Since data usage is measured by the head unit, and your carrier may account for usage differently, consider setting a conservative limit.‎‏‎‎‏‎"</string>
+    <string name="wifi_settings" msgid="7701477685273103841">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‎‎‏‎Wi‑Fi‎‏‎‎‏‎"</string>
+    <string name="wifi_starting" msgid="473253087503153167">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‏‏‏‎Turning Wi‑Fi on…‎‏‎‎‏‎"</string>
+    <string name="wifi_stopping" msgid="3534173972547890148">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‎‎‎Turning off Wi‑Fi…‎‏‎‎‏‎"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‎‏‎Loading Wi‑Fi list‎‏‎‎‏‎"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‎‏‎‏‎‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‎‏‏‎‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‎‎Wi‑Fi disabled‎‏‎‎‏‎"</string>
+    <string name="wifi_failed_forget_message" msgid="121732682699377206">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‎‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‏‏‎‏‎‏‏‎‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎‏‏‎‎Failed to forget network‎‏‎‎‏‎"</string>
+    <string name="wifi_failed_connect_message" msgid="4447498225022147324">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‎‎‎Failed to connect to network‎‏‎‎‏‎"</string>
+    <string name="wifi_setup_add_network" msgid="3660498520389954620">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‏‏‎‎‏‎‏‏‎‏‎‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‎Add network‎‏‎‎‏‎"</string>
+    <string name="wifi_setup_connect" msgid="3512399573397979101">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‏‎‏‎‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎Connect‎‏‎‎‏‎"</string>
+    <string name="wifi_password" msgid="5565632142720292397">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‎‏‎‎‎‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎‏‎Password‎‏‎‎‏‎"</string>
+    <string name="wifi_show_password" msgid="8423293211933521097">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎Show password‎‏‎‎‏‎"</string>
+    <string name="wifi_ssid" msgid="488604828159458741">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‎‎‏‎‏‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎Network name‎‏‎‎‏‎"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‎‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‎‏‎‎‏‏‎Enter the SSID‎‏‎‎‏‎"</string>
+    <string name="wifi_security" msgid="158358046038876532">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‏‏‎‎‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‎‏‎‏‏‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‏‎‏‎‎‎Security‎‏‎‎‏‎"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‏‏‎‏‏‎‏‏‎‏‏‎‎‎‏‏‎‏‎‏‎‎‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‎‎‏‎Signal strength‎‏‎‎‏‎"</string>
+    <string name="wifi_status" msgid="5688013206066543952">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‎‎‏‏‏‎‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎Status‎‏‎‎‏‎"</string>
+    <string name="wifi_speed" msgid="1650692446731850781">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‎‏‎Link speed‎‏‎‎‏‎"</string>
+    <string name="wifi_frequency" msgid="8951455949682864922">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‏‏‎‎‏‏‏‎‏‏‏‎‎‏‏‎‎‎‏‏‎‏‎‎Frequency‎‏‎‎‏‎"</string>
+    <string name="wifi_ip_address" msgid="3128140627890954061">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎‏‏‎‏‎‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‏‎‏‎IP address‎‏‎‎‏‎"</string>
+    <string name="show_password" msgid="2074628020371139240">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‏‎‏‏‎‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎Show password‎‏‎‎‏‎"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‎‏‎‏‎‎‏‎‏‏‎‎‏‎‏‎‎‎Enter network name‎‏‎‎‏‎"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‏‏‎‎‎‎‏‎‏‏‎‏‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‏‎‎‏‎‎‎‏‏‎‎Enter password‎‏‎‎‏‎"</string>
+    <string name="access_point_tag_key" msgid="1517143378973053337">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‎access_point_tag_key‎‏‎‎‏‎"</string>
+  <string-array name="wifi_signals">
+    <item msgid="4897376984576812606">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‏‎‎‏‏‎‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‏‏‏‏‎‎Poor‎‏‎‎‏‎"</item>
+    <item msgid="7683058295076342057">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‎‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‎‎‏‎‏‎‎‏‎Poor‎‏‎‎‏‎"</item>
+    <item msgid="1639222824821660744">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‏‎‎‏‎‏‏‎‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‎‎‎‏‎‎‏‎‎‎‎Fair‎‏‎‎‏‎"</item>
+    <item msgid="1838705897358163300">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‏‎‎‏‎‎‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎Good‎‏‎‎‏‎"</item>
+    <item msgid="6067166649320533751">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‏‏‏‎‏‏‎‎‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎Excellent‎‏‎‎‏‎"</item>
+  </string-array>
+    <string name="link_speed" msgid="7868861844075624445">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎%1$d Mbps‎‏‎‎‏‎"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‏‏‎‎‏‎‎‏‎‎‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‎‏‏‏‏‎‏‎‎‎2.4 GHz‎‏‎‎‏‎"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‎‎‏‎‎‏‏‏‎‎‎‎5 GHz‎‏‎‎‏‎"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‏‎‎‏‏‏‏‎‏‏‎‎‏‎‏‎‏‎‎‎‎‎‎‎‎Network details‎‏‎‎‏‎"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‏‎‎‏‎‏‏‎‏‎‏‎‎‏‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎MAC address‎‏‎‎‏‎"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎IP address‎‏‎‎‏‎"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‏‏‏‎‎‎‎‎‎‎‎Subnet mask‎‏‎‎‏‎"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎‎‏‎‎‎‎‎‎‏‏‏‎‎‏‎‎‎‎‎‎‏‎‎‎‎‎‏‎DNS‎‏‎‎‏‎"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎‎‏‎‎IPv6 addresses‎‏‎‎‏‎"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎Gateway‎‏‎‎‏‎"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‎‏‎‏‎‏‏‎‎‎‏‎‏‎‏‏‎‎‏‎‎‏‏‎‎Wi‑Fi preferences‎‏‎‎‏‎"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‏‎‎‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‎‎‎‎Turn on Wi‑Fi automatically‎‏‎‎‏‎"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‎‎‏‏‎‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎Wi‑Fi will turn back on near high‑quality saved networks, like your home network‎‏‎‎‏‎"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‏‏‎‏‏‎‎‎‎‎‎‏‏‏‎‏‏‎Unavailable because location is turned off. Turn on ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎location‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‎‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‏‏‎‎‎‎‏‏‎‎‎‎‎‎Turn on Wi‑Fi scanning?‎‏‎‎‏‎"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‎‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎‏‎‏‏‎‎‎‎‏‎‎Turn on‎‏‎‎‏‎"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‏‎‎‏‎Wi‑Fi scanning turned on‎‏‎‎‏‎"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‎‎Switch to mobile data automatically‎‏‎‎‏‎"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‏‎‏‏‏‎‎Use mobile data when Wi‑Fi has no internet access. Data usage charges may apply.‎‏‎‎‏‎"</string>
+    <string name="learn_more" msgid="8214605928933358604">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‏‎‎‏‎‎‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎Learn more‎‏‎‎‏‎"</string>
+    <string name="bluetooth_settings_title" msgid="3794688574569688649">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‎‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎‏‎Bluetooth‎‏‎‎‏‎"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‎‏‏‎‏‎‏‎‎‎‎Unnamed device‎‏‎‎‏‎"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‎‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎Paired devices‎‏‎‎‏‎"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎‏‏‏‎‏‏‏‎Pair new device‎‏‎‎‏‎"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‎‎‏‎‎‏‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‏‏‎Bluetooth will turn on to pair‎‏‎‎‏‎"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‏‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‏‎‎‎‏‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎Disconnect device?‎‏‎‎‏‎"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‎‎‏‎‎‏‎‎‏‏‏‏‎‎‎Your vehicle will disconnect from ‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‏‎Vehicle\'s Bluetooth address: ‎‏‎‎‏‏‎<xliff:g id="ADDRESS">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‎‎‏‏‏‏‎‎‏‏‎‏‎Device\'s Bluetooth address: ‎‏‎‎‏‏‎<xliff:g id="ADDRESS">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‎‏‏‎‎‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‎Vehicle name‎‏‎‎‏‎"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‎‎‎‏‏‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‎Rename this vehicle‎‏‎‎‏‎"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎‏‏‎‏‎‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‎‎Rename device‎‏‎‎‏‎"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‏‏‏‎‏‎‎‎‎‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‏‏‏‏‎Rename‎‏‎‎‏‎"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‏‏‎‎‎‏‎‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‎‏‎‎‎‏‎‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‎‎‎Available devices‎‏‎‎‏‎"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‎‏‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎Profiles‎‏‎‎‏‎"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
+    <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎Bluetooth pairing request‎‏‎‎‏‎"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‏‎‎‏‏‎‎‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‎‎Pair &amp; connect‎‏‎‎‏‎"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‏‎Bluetooth pairing code‎‏‎‎‏‎"</string>
+    <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎PIN contains letters or symbols‎‏‎‎‏‎"</string>
+    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‎‎‎‎‏‎‎‎‏‏‏‏‎‎‏‎Type the pairing code then press Return or Enter‎‏‎‎‏‎"</string>
+    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‎‎‎‏‎Pair with ‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
+    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‏‎‎‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‎‎‏‏‏‏‏‎‎‏‎‎‏‏‏‏‏‎‏‎‏‏‎‎Allow ‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ to access your contacts and call history‎‏‎‎‏‎"</string>
+    <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‏‏‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‏‎‎‎‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‎‎‎You may also need to type this PIN on the other device.‎‏‎‎‏‎"</string>
+    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‏‏‏‎‏‎‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‎‎‎‏‎‎You may also need to type this passkey on the other device.‎‏‎‎‏‎"</string>
+    <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‏‏‏‏‏‎‎‏‎‏‏‎‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎Must be 16 digits‎‏‎‎‏‎"</string>
+    <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‏‏‎‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‏‏‎‏‎‎‏‏‎‏‏‏‎Usually 0000 or 1234‎‏‎‎‏‎"</string>
+    <string name="bluetooth_notif_title" msgid="8374602799367803335">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‎‎‎‎‎‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‏‏‎‎‎‏‏‏‎Pairing request‎‏‎‎‏‎"</string>
+    <string name="bluetooth_notif_message" msgid="1060821000510108726">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‎‏‏‎‎‏‎‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‎‎‏‏‎‏‎‏‏‎‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‎‎Tap to pair with ‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
+    <string name="language_settings" msgid="2079258598337245546">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‎‎‎‎‏‎‏‎‏‎‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‏‎‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎Languages‎‏‎‎‏‎"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‏‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‎‎Languages &amp; input‎‏‎‎‏‎"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‎‏‎‏‎‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎Keyboard‎‏‎‎‏‎"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‎‏‎‎‎‏‎‎‎Manage keyboards‎‏‎‎‏‎"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‏‏‏‏‎Text-to-speech output‎‏‎‎‏‎"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‏‎‏‏‎‎‏‎‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‏‏‎‏‎‏‎‏‏‎‏‏‎‎‎‎‎‎Preferred engine‎‏‎‎‏‎"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‎‏‏‏‎‎‎‏‏‎‏‎‏‎Current engine‎‏‎‎‏‎"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‎‎‏‏‎‏‏‏‎‏‎‎‏‎‎‎‏‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‏‎‏‎Speech Rate‎‏‎‎‏‎"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‏‎‏‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‎‏‏‎Pitch‎‏‎‎‏‎"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‎‏‎Reset‎‏‎‎‏‎"</string>
+    <string name="sound_settings" msgid="3072423952331872246">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‎‏‎‏‎‎‏‏‏‎‎‏‏‎‎‏‏‎‎‎‏‎‎‏‎‎‏‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎Sound‎‏‎‎‏‎"</string>
+    <string name="ring_volume_title" msgid="3135241004980719442">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‏‎‎‏‏‏‎‏‎‎‎‏‎‏‎‏‎‎‏‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‎‎‏‏‏‏‎‏‎‏‎‎‏‎‎Ring volume‎‏‎‎‏‎"</string>
+    <string name="navi_volume_title" msgid="946292066759195165">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‏‎Navigation volume‎‏‎‎‏‎"</string>
+    <string name="incoming_call_volume_title" msgid="6972117872424656876">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎Ringtone‎‏‎‎‏‎"</string>
+    <string name="notification_volume_title" msgid="6749411263197157876">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎‏‏‏‎‎‏‎‎‎‏‎‏‏‎‎‎‏‏‏‏‎‎‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎‎Notification‎‏‎‎‏‎"</string>
+    <string name="media_volume_title" msgid="6697416686272606865">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‎Media‎‏‎‎‏‎"</string>
+    <string name="media_volume_summary" msgid="2961762827637127239">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‏‏‎‏‎‎‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎Set volume for music and videos‎‏‎‎‏‎"</string>
+    <string name="alarm_volume_title" msgid="840384014895796587">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‏‏‎‎‎‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‏‎‏‏‎Alarm‎‏‎‎‏‎"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‎‏‏‎‏‎‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‎‏‏‏‎‎‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎Phone ringtone‎‏‎‎‏‎"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‎‎Default notification sound‎‏‎‎‏‎"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎Default alarm sound‎‏‎‎‏‎"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎Apps &amp; notifications‎‏‎‎‏‎"</string>
+    <string name="all_applications" msgid="7798210477486822168">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎Show all apps‎‏‎‎‏‎"</string>
+    <string name="default_applications" msgid="1558183275638697087">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎Default apps‎‏‎‎‏‎"</string>
+    <string name="applications_settings" msgid="794261395191035632">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎App info‎‏‎‎‏‎"</string>
+    <string name="force_stop" msgid="2153183697014720520">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎Force stop‎‏‎‎‏‎"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎Force stop?‎‏‎‎‏‎"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‏‎‎‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‏‎‏‏‏‎If you force stop an app, it may misbehave.‎‏‎‎‏‎"</string>
+    <string name="disable_text" msgid="4358165448648990820">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‎‎Disable‎‏‎‎‏‎"</string>
+    <string name="enable_text" msgid="1794971777861881238">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‎‎Enable‎‏‎‎‏‎"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎Uninstall‎‏‎‎‏‎"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‎‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‏‎‎‏‎‎‏‎‎‏‎If you disable this app, Android and other apps may no longer function as intended.‎‏‎‎‏‎"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‏‎‏‎‏‎Disable app‎‏‎‎‏‎"</string>
+    <string name="permissions_label" msgid="2701446753515612685">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‏‏‎‏‎Permissions‎‏‎‎‏‎"</string>
+    <string name="application_version_label" msgid="8556889839783311649">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‎‏‎‎‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‎‎‏‎Version: %1$s‎‏‎‎‏‎"</string>
+    <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‏‎‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‎‎‏‎‎‎‎‎‎‏‏‎‎‏‏‏‏‎‎‎‏‏‎‎‎‏‎‎‎‏‎‎‏‎‏‎No permissions granted‎‏‎‎‏‎"</string>
+    <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‏‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‎No permissions requested‎‏‎‎‏‎"</string>
+    <string name="data_usage_summary_title" msgid="4368024763485916986">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‏‏‏‏‎‎‏‏‏‎‏‎‎Data usage‎‏‎‎‏‎"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‏‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‏‎‎‎App data usage‎‏‎‎‏‎"</string>
+    <string name="computing_size" msgid="5791407621793083965">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‎Computing…‎‏‎‎‏‎"</string>
+    <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="COUNT_1">%d</xliff:g>‎‏‎‎‏‏‏‎ additional permissions‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="COUNT_0">%d</xliff:g>‎‏‎‎‏‏‏‎ additional permission‎‏‎‎‏‎</item>
+    </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎Assist &amp; voice input‎‏‎‎‏‎"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‎‏‎‎‏‎‎‎‏‏‏‎‎‎‏‎‎‎‏‎‏‎‏‏‎‎‎‏‎Assist app‎‏‎‎‏‎"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‏‎Use text from screen‎‏‎‎‏‎"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‏‏‏‏‏‎‎Allow the assist app to access the screen contents as text‎‏‎‎‏‎"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‏‎‏‏‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‏‎‏‎‏‎‎‎Use screenshot‎‏‎‎‏‎"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‎‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‎‏‎‎‎‏‏‎‏‏‎‎Allow the assist app to access an image of the screen‎‏‎‎‏‎"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎Autofill service‎‏‎‎‏‎"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‎‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‎‏‎None‎‏‎‎‏‎"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‏‎Selected‎‏‎‎‏‎"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎‎‏‏‎‎‎‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎The assistant will be able to read information about apps in use on your system, including information visible on your screen or accessible within the apps.‎‏‎‎‏‎"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‎‎‎‏‎‏‏‎‎‏‎‎‏‎‎&lt;b&gt;Make sure you trust this app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; uses what\'s on your screen to determine what can be autofilled.‎‏‎‎‏‎"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‏‎‏‎‏‏‎‎‎‎‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‏‎Add service‎‏‎‎‏‎"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‏‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‏‏‏‏‏‏‎Location‎‏‎‎‏‎"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‎‎‏‏‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‎‎‎Recent Location Requests‎‏‎‎‏‎"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‎No recent location requests‎‏‎‎‏‎"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‏‏‏‎‎‎App-level permissions‎‏‎‎‏‎"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‎‎‏‏‏‎‏‎‏‏‏‏‎‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‎‏‎‏‎‎‎‎‏‎‎‎Scanning‎‏‎‎‏‎"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎Location Services‎‏‎‎‏‎"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‏‎‎‏‏‏‎Wi‑Fi scanning‎‏‎‎‏‎"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎‎‎‏‏‎‏‎‎‎‎‏‏‎‎‏‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‎‎‏‏‎‎‏‎‏‏‎‏‏‏‎‎‎Allow apps and services to scan for Wi‑Fi networks at any time, even when Wi‑Fi is off. This can be used, for example, to improve location-based features and services.‎‏‎‎‏‎"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‏‏‎‏‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‎Bluetooth scanning‎‏‎‎‏‎"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‎‏‎‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‎‏‎‎‎‏‎‏‏‎‎Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services.‎‏‎‎‏‎"</string>
+    <string name="system_setting_title" msgid="6864599341809463440">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‎‏‎‎‏‎‎‎‎‎System‎‏‎‎‏‎"</string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‎‎‏‎‎‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‎‏‏‏‎‎‎‎‎‏‏‎‎‏‏‏‎System updates‎‏‎‎‏‎"</string>
+    <string name="firmware_version" msgid="8491753744549309333">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‎‏‏‏‎‎‏‎‏‎‏‎Android version‎‏‎‎‏‎"</string>
+    <string name="security_patch" msgid="4794276590178386903">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‏‎‎‎‏‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎Android security patch level‎‏‎‎‏‎"</string>
+    <string name="model_info" msgid="4966408071657934452">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‎‏‏‏‎‎‏‏‏‎‎‏‏‏‎‏‎‎‎Model‎‏‎‎‏‎"</string>
+    <string name="baseband_version" msgid="2370088062235041897">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‎‏‎‎‏‎Baseband version‎‏‎‎‏‎"</string>
+    <string name="kernel_version" msgid="7327212934187011508">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‏‎‏‏‎‏‏‎‏‎‎‎Kernel version‎‏‎‎‏‎"</string>
+    <string name="build_number" msgid="3997326631001009102">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‏‎‎‎‏‎‏‎‏‏‏‏‎‎‏‏‏‎‎Build number‎‏‎‎‏‎"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‎‏‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎Bluetooth address‎‏‎‎‏‎"</string>
+    <string name="device_info_not_available" msgid="2095601973977376655">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‏‎‏‎‎‎‏‎‎‏‎‏‏‏‎‎‏‎‎‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‎‏‏‎‎‏‏‏‏‎‎‎‏‏‏‏‎Not available‎‏‎‎‏‎"</string>
+    <string name="device_status_activity_title" msgid="4083567497305368200">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‏‎‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‎‎Status‎‏‎‎‏‎"</string>
+    <string name="device_status" msgid="267298179806290920">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‏‏‏‎‏‎‎‎‎Status‎‏‎‎‏‎"</string>
+    <string name="device_status_summary" product="tablet" msgid="600543254608862075">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‎‏‎‏‏‎‎‎‏‏‏‎‏‏‏‎‏‎‎‎‏‎‎‎‎‎‏‏‎‎‏‏‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‏‎‏‏‎Status of the battery, network, and other information‎‏‎‎‏‎"</string>
+    <string name="device_status_summary" product="default" msgid="9130360324418117815">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‎‏‎‏‏‏‎‎‏‎‎‎‎‎‎‏‎‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎Phone number, signal, etc.‎‏‎‎‏‎"</string>
+    <string name="about_settings" msgid="4329457966672592345">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‏‎‏‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‎‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎About‎‏‎‎‏‎"</string>
+    <string name="about_summary" msgid="5374623866267691206">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‏‏‎‏‎‎‎‏‏‎‎‎‏‏‎‎Android ‎‏‎‎‏‏‎<xliff:g id="VERSION">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="about_settings_summary" msgid="7975072809083281401">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎View legal info, status, software version‎‏‎‎‏‎"</string>
+    <string name="legal_information" msgid="1838443759229784762">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‏‏‎‏‏‎‏‏‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‎‎Legal information‎‏‎‎‏‎"</string>
+    <string name="contributors_title" msgid="7698463793409916113">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‎‏‎‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎Contributors‎‏‎‎‏‎"</string>
+    <string name="manual" msgid="4819839169843240804">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‏‎‎‎‏‏‎‎‎‎‎‎‏‏‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎Manual‎‏‎‎‏‎"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‏‏‏‏‏‎‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎Regulatory labels‎‏‎‎‏‎"</string>
+    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‎‏‎‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‏‎‏‏‎‎Safety &amp; regulatory manual‎‏‎‎‏‎"</string>
+    <string name="copyright_title" msgid="4220237202917417876">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‎‎‏‎‏‎‎‏‎‏‏‎‏‏‎‎‎‎‎‎‏‎‏‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‎Copyright‎‏‎‎‏‎"</string>
+    <string name="license_title" msgid="936705938435249965">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‏‏‏‎‎‏‎‏‏‎‏‎License‎‏‎‎‏‎"</string>
+    <string name="terms_title" msgid="5201471373602628765">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎‏‎‎‏‏‏‎‏‎Terms and conditions‎‏‎‎‏‎"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎System WebView licenses‎‏‎‎‏‎"</string>
+    <string name="wallpaper_attributions" msgid="9201272150014500697">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‏‏‏‏‎‎‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‏‎‎‏‎Wallpapers‎‏‎‎‏‎"</string>
+    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‏‏‎‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‏‎Satellite imagery providers:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎©2014 CNES / Astrium, DigitalGlobe, Bluesky‎‏‎‎‏‎"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎Third-party licenses‎‏‎‎‏‎"</string>
+    <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‎‏‏‏‎‎There is a problem loading the licenses.‎‏‎‎‏‎"</string>
+    <string name="settings_license_activity_loading" msgid="6163263123009681841">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎Loading…‎‏‎‎‏‎"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎You are now ‎‏‎‎‏‏‎<xliff:g id="STEP_COUNT_1">%1$d</xliff:g>‎‏‎‎‏‏‏‎ steps away from being a developer.‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎You are now ‎‏‎‎‏‏‎<xliff:g id="STEP_COUNT_0">%1$d</xliff:g>‎‏‎‎‏‏‏‎ step away from being a developer.‎‏‎‎‏‎</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‏‏‏‏‏‎‎‎‎You are now a developer!‎‏‎‎‏‎"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‎‏‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎‎‎No need, you are already a developer.‎‏‎‎‏‎"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎Developer options‎‏‎‎‏‎"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‏‎‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‎‏‏‎‎‎Reset options‎‏‎‎‏‎"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‏‎Network, apps, or device reset‎‏‎‎‏‎"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎Reset network‎‏‎‎‏‎"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‏‎‎‏‎‎‎‎‏‎‏‏‎‏‎This will reset all network settings, including:‎‏‎‎‏‎"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‎‎‏‏‎‏‎‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Wi‑Fi‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Mobile data‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‎‎‎‎‏‎‏‏‎‎‏‎‏‎‏‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‎‏‎‎‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Bluetooth‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎‏‏‎Erase all vehicle eSIMs‎‏‎‎‏‎"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎‏‎‎‎This will not cancel your service plan.‎‏‎‎‏‎"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‎‏‎‏‎‏‎‏‎‎‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎Can’t reset eSIMs‎‏‎‎‏‎"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‎‏‎‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‏‎Select network‎‏‎‎‏‎"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‎‎‏‎Reset settings‎‏‎‎‏‎"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‏‏‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‏‏‏‏‎Reset?‎‏‎‎‏‎"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‏‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‏‏‏‏‏‎‎‏‎‎‎Reset all network settings? You can’t undo this action!‎‏‎‎‏‎"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‎‎‏‎‎‏‎‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‎‎‏‎‏‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‏‏‎Reset settings‎‏‎‎‏‎"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‎‎‎‎‏‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‎‎‏‎‎‎‎‏‎Network settings have been reset‎‏‎‎‏‎"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‎‎‎‎‎‎‏‎‎‎‏‎‎‎‎‏‏‎‏‏‎‎‎‎‏‏‎‎‎‏‏‏‏‏‏‎‎‎‎Reset app preferences‎‏‎‎‏‎"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎This will reset all preferences for:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Disabled apps‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Disabled app notifications‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Default applications for actions‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Background data restrictions for apps‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Any permission restrictions‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎You will not lose any app data.‎‏‎‎‏‎"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎Reset apps‎‏‎‎‏‎"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‏‎‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‎‏‏‎‏‏‎‎App preferences have been reset‎‏‎‎‏‎"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‎‎Erase all data (factory reset)‎‏‎‎‏‎"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎This will erase all data from your vehicle’s head unit, including:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Your Google account‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎System and app data and settings‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎"<li>"‎‏‎‎‏‏‏‎Downloaded apps‎‏‎‎‏‏‎"</li>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‏‏‎‎You are currently signed into the following accounts:‎‏‎‎‏‎"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‎‎‏‎There are other users present on this vehicle.‎‏‎‎‏‎"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‏‎‎‏‎‏‏‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‎‏‎‎‎‎Reset vehicle‎‏‎‎‏‎"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‎Reset?‎‏‎‎‏‎"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‏‎‎‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎Erase all your personal information and downloaded apps? You can’t undo this action!‎‏‎‎‏‎"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‎‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎Erase everything‎‏‎‎‏‎"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‏‏‏‎‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‎‏‏‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎Erasing‎‏‎‎‏‎"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‎‎‎‎Please wait...‎‏‎‎‏‎"</string>
+    <string name="date_and_time_settings_title" msgid="4058492663544475485">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎Date &amp; time‎‏‎‎‏‎"</string>
+    <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‏‎Set date and time‎‏‎‎‏‎"</string>
+    <string name="date_and_time_settings_summary" msgid="7669856855390804666">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‏‏‎‏‎‎Set date, time, time zone, &amp; formats‎‏‎‎‏‎"</string>
+    <string name="date_time_auto" msgid="3570339569471779767">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‎‏‏‎‏‏‏‎Automatic date &amp; time‎‏‎‎‏‎"</string>
+    <string name="date_time_auto_summary" msgid="3311706425095342759">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‎‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‎‏‎‏‎‏‎‏‎‎‏‏‏‎Use network-provided time‎‏‎‎‏‎"</string>
+    <string name="zone_auto" msgid="3701878581920206160">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‎‏‎‏‎‎‎‎‎Automatic time zone‎‏‎‎‏‎"</string>
+    <string name="zone_auto_summary" msgid="4345856882906981864">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‏‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‏‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‎Use network-provided time zone‎‏‎‎‏‎"</string>
+    <string name="date_time_24hour_title" msgid="3025576547136168692">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‎‏‎‏‏‎‏‏‏‎‎‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‏‏‎‏‎‎‎24‑hour format‎‏‎‎‏‎"</string>
+    <string name="date_time_24hour" msgid="1137618702556486913">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‏‎‏‎‎‎‎‎‎‎‏‎Use 24-hour format‎‏‎‎‏‎"</string>
+    <string name="date_time_set_time_title" msgid="5884883050656937853">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‎‏‎‏‏‎‏‎‎‏‏‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎Time‎‏‎‎‏‎"</string>
+    <string name="date_time_set_time" msgid="6449555153906058248">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‎‎‏‎‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‎‎‎‎‏‎‎‎‎Set time‎‏‎‎‏‎"</string>
+    <string name="date_time_set_timezone_title" msgid="3001779256157093425">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‎‏‏‏‎‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‏‎‎‏‏‏‏‏‎‎‎‏‏‎‎‎‏‎Time zone‎‏‎‎‏‎"</string>
+    <string name="date_time_set_timezone" msgid="4759353576185916944">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‎‎Select time zone‎‏‎‎‏‎"</string>
+    <string name="date_time_set_date_title" msgid="6834785820357051138">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎Date‎‏‎‎‏‎"</string>
+    <string name="date_time_set_date" msgid="2537494485643283230">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‏‏‏‏‎‎Set date‎‏‎‎‏‎"</string>
+    <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‏‏‏‏‏‎‏‎‎Sort alphabetically‎‏‎‎‏‎"</string>
+    <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‎‎‎‏‏‎‎‎‎Sort by time zone‎‏‎‎‏‎"</string>
+    <string name="date_picker_title" msgid="1533614225273770178">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎Date‎‏‎‎‏‎"</string>
+    <string name="time_picker_title" msgid="7436045944320504639">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‎‏‏‎‎‏‏‎‎‏‏‏‏‏‏‎Time‎‏‎‎‏‎"</string>
+    <string name="user_admin" msgid="1535484812908584809">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‎‏‎Admin‎‏‎‎‏‎"</string>
+    <string name="signed_in_admin_user" msgid="1267225622818673274">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‏‎‏‏‎‎‎‎‏‎‏‏‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‎Signed in as admin‎‏‎‎‏‎"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎All admin permissions‎‏‎‎‏‎"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‏‏‏‏‎‎‎‎‏‎Make Admin‎‏‎‎‏‎"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‏‎‎The user will be able to delete users, including other Admins, and factory reset the system.‎‏‎‎‏‎"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‏‎‏‎This action is not reversible.‎‏‎‎‏‎"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‎‎‎‎‎‏‎‎Yes, make admin‎‏‎‎‏‎"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‎‏‏‏‎‎‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎Create new users‎‏‎‎‏‎"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‏‎Make phone calls‎‏‎‎‏‎"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‎‏‏‎‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‎Messaging via car\'s mobile data‎‏‎‎‏‎"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎Install new apps‎‏‎‎‏‎"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‎‏‏‎Uninstall apps‎‏‎‎‏‎"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‎‎‎‏‎‏‏‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‏‎‎‎‎Add user‎‏‎‎‏‎"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‎‏‏‎‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‎‎New user‎‏‎‎‏‎"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎Add new user?‎‏‎‎‏‎"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎When you add a new user, that person needs to set up their space.‎‏‎‎‏‎"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‏‎‎‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎Any user can update apps for all other users.‎‏‎‎‏‎"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‎‏‏‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‏‎‎‎‏‏‎‏‏‎‎User limit reached‎‏‎‎‏‎"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‏‎You can create up to ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ users.‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‏‎Only one user can be created.‎‏‎‎‏‎</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‎‎Failed to create a new user‎‏‎‎‏‎"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎Delete this user?‎‏‎‎‏‎"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‏‎‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎All apps and data will be deleted.‎‏‎‎‏‎"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‎Failed to delete user.‎‏‎‎‏‎"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‎‎‎‏‎Dismiss‎‏‎‎‏‎"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‏‎Retry‎‏‎‎‏‎"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎Delete last user?‎‏‎‎‏‎"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎After deleting the only remaining user for this car, a new admin user will be created.‎‏‎‎‏‎"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‏‎‏‎‏‎‎‏‏‎‎‎‏‏‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎All data, settings, and apps associated with this user will be deleted. You\'ll need to set up the system again.‎‏‎‎‏‎"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‎Choose new admin‎‏‎‎‏‎"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‎You need at least one admin. To delete this one, first choose a replacement.‎‏‎‎‏‎"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‎Choose admin‎‏‎‎‏‎"</string>
+    <string name="user_guest" msgid="3465399481257448601">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‏‎‎‏‎‎‏‎‎‏‏‏‎‏‏‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎Guest‎‏‎‎‏‎"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‎‎‏‎‎‎‎‎‏‎Guest‎‏‎‎‏‎"</string>
+    <string name="user_switch" msgid="6544839750534690781">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‏‎‎‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎Switch‎‏‎‎‏‎"</string>
+    <string name="current_user_name" msgid="3813671533249316823">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‎You (%1$s)‎‏‎‎‏‎"</string>
+    <string name="user_name_label" msgid="3210832645046206845">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎‏‎‏‎‎‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎Name‎‏‎‎‏‎"</string>
+    <string name="user_summary_not_set_up" msgid="1473688119241224145">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‏‎‏‎‎‎‏‎Not set up‎‏‎‎‏‎"</string>
+    <string name="edit_user_name_title" msgid="6890782937520262478">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‏‎‏‎‏‎‎‏‏‏‎‎Edit user name‎‏‎‎‏‎"</string>
+    <string name="users_list_title" msgid="770764290290240909">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎Users‎‏‎‎‏‎"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‏‏‎‎‎‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‎‎‏‏‎Permissions granted to %1$s‎‏‎‎‏‎"</string>
+    <string name="accounts_settings_title" msgid="436190037084293471">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‏‏‎‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‏‎Accounts‎‏‎‎‏‎"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‎‏‎‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‎‏‎‏‏‏‏‎‎‏‎Add account‎‏‎‎‏‎"</string>
+    <string name="no_accounts_added" msgid="5148163140691096055">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‏‏‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎‎‏‏‎‏‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‎No accounts added‎‏‎‎‏‎"</string>
+    <string name="account_list_title" msgid="7631588514613843065">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎‎‏‏‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‏‎Accounts for ‎‏‎‎‏‏‎<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‎‏‏‎‏‏‏‎‎‏‎‏‏‎‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‏‎‎‎‎Automatically sync data‎‏‎‎‏‎"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‎‎‎‎‎Let apps refresh data automatically‎‏‎‎‏‎"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‎‏‎‎‎‎‏‎Turn auto-sync data on?‎‏‎‎‏‎"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‎‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‏‎‏‎‏‏‎‎‎Any changes you make to your accounts on the web will be automatically copied to your device.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Some accounts may also automatically copy any changes you make on the phone to the web. A Google Account works this way.‎‏‎‎‏‎"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‎‏‎‎‎‎‎‎‏‏‎‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‎Turn auto-sync data off?‎‏‎‎‏‎"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‎‎‎‎‏‎‎‏‏‎This will conserve data, but you’ll need to sync each account manually to collect recent information. And you won’t receive notifications when updates occur.‎‏‎‎‏‎"</string>
+    <string name="account_details_title" msgid="7529571432258448573">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‎‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎Account info‎‏‎‎‏‎"</string>
+    <string name="add_account_title" msgid="5988746086885210040">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‎‏‏‎‏‎‏‏‎‎‎‎‏‎‏‏‎‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‏‎‏‏‏‎‎‎‎Add account‎‏‎‎‏‎"</string>
+    <string name="add_an_account" msgid="1072285034300995091">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‏‎Add an account‎‏‎‎‏‎"</string>
+    <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‎‏‏‎‏‎Restricted profiles cannot add accounts‎‏‎‎‏‎"</string>
+    <string name="remove_account_title" msgid="8840386525787836381">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‏‎‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎Remove account‎‏‎‎‏‎"</string>
+    <string name="really_remove_account_title" msgid="3555164432587924900">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‎‏‏‏‏‎‏‏‎‎‏‏‎‏‏‏‎‎‏‎‎‎‏‎‏‎‎‎‎‎‎‏‏‎‏‎‎‏‎‏‏‎‏‎‎‏‎‎‎Remove account?‎‏‎‎‏‎"</string>
+    <string name="really_remove_account_message" msgid="4296769280849579900">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‎‏‎‎‎‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎‏‎‏‏‎‏‏‎‎‏‏‎‎‎‏‏‏‏‎‏‏‏‏‏‎‎‎Removing this account will delete all of its messages, contacts, and other data from the device!‎‏‎‎‏‎"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‎‏‏‏‏‎‏‎‏‎‎‎‏‎‏‏‎Failed to remove account.‎‏‎‎‏‎"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‎‏‎‏‎‎‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‎‏‏‎Account sync‎‏‎‎‏‎"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎Sync on for ‎‏‎‎‏‏‎<xliff:g id="ID_1">%1$d</xliff:g>‎‏‎‎‏‏‏‎ of ‎‏‎‎‏‏‎<xliff:g id="ID_2">%2$d</xliff:g>‎‏‎‎‏‏‏‎ items‎‏‎‎‏‎"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‏‎‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‏‎‏‎‏‎Sync on for all items‎‏‎‎‏‎"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎‎‏‏‏‎‎‎‏‏‏‏‎‎Sync off for all items‎‏‎‎‏‎"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‎‏‏‎‏‎‎‏‏‎‏‎‏‏‎‎‎‎‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‎Sync is OFF‎‏‎‎‏‎"</string>
+    <string name="sync_error" msgid="6698021343089247914">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‎‏‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‎‎Sync error‎‏‎‎‏‎"</string>
+    <string name="last_synced" msgid="4745124489150101529">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‎‏‏‎‎‏‎‏‎‏‎‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‎‎‏‏‎‎‏‎Last synced ‎‏‎‎‏‏‎<xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‎‏‎‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‎Syncing now…‎‏‎‎‏‎"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‎‏‏‏‎‎‏‎‏‎‎‎‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‏‏‎Tap to sync now‎‏‎‎‏‏‎<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‎‎‏‏‎‎‏‏‎‏‏‎‎‎‏‏‎‏‏‎‎‏‎‎‏‎‎‏‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎Sync now‎‏‎‎‏‎"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‏‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎Cancel sync‎‏‎‎‏‎"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎‏‏‎‏‏‏‏‎‎‏‏‎‏‎‏‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‎‎Sync is currently experiencing problems. It will be back shortly.‎‏‎‎‏‎"</string>
+    <string name="security_settings_title" msgid="6955331714774709746">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‎‎Security‎‏‎‎‏‎"</string>
+    <string name="security_settings_subtitle" msgid="2244635550239273229">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‎‎‏‏‎‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‏‎‏‎Screen lock‎‏‎‎‏‎"</string>
+    <string name="security_lock_none" msgid="1054645093754839638">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‏‎‎‎‏‎‏‏‎‏‏‎‏‎‎‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‏‎‎‎‏‎‎‏‎‏‎‏‏‎‎None‎‏‎‎‏‎"</string>
+    <string name="security_lock_pattern" msgid="1174352995619563104">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎‎‎‎‏‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎‎‎‎Pattern‎‏‎‎‏‎"</string>
+    <string name="security_lock_pin" msgid="4891899974369503200">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‎‎‎‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‎‎PIN‎‏‎‎‏‎"</string>
+    <string name="security_lock_password" msgid="4420203740048322494">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‎Password‎‏‎‎‏‎"</string>
+    <string name="lock_settings_picker_title" msgid="6590330165050361632">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‎‏‏‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‏‎‎‎‎‎‎Choose a lock type‎‏‎‎‏‎"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‏‏‎‏‎‏‎‏‎‎‏‎‎‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‎Lock options‎‏‎‎‏‎"</string>
+    <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‎‏‎‎‎‎Enter your pattern‎‏‎‎‏‎"</string>
+    <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‏‎Confirm‎‏‎‎‏‎"</string>
+    <string name="lockpattern_restart_button_text" msgid="9355771277617537">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎Redraw‎‏‎‎‏‎"</string>
+    <string name="continue_button_text" msgid="5129979170426836641">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‎‎‏‎Continue‎‏‎‎‏‎"</string>
+    <string name="lockscreen_retry_button_text" msgid="5314212350698701242">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‎‏‏‎‏‏‏‎‏‎‎Retry‎‏‎‎‏‎"</string>
+    <string name="lockscreen_skip_button_text" msgid="3755748786396198091">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‏‎‎‏‏‎‎‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎Skip‎‏‎‎‏‎"</string>
+    <string name="set_screen_lock" msgid="5239317292691332780">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‏‎‏‎‎‎‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎Set a screen lock‎‏‎‎‏‎"</string>
+    <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‎‎‎‏‏‎‏‎‏‏‎‎Choose your PIN‎‏‎‎‏‎"</string>
+    <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‏‏‎‏‏‏‏‏‎‎‎Choose your pattern‎‏‎‎‏‎"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‎‏‎‏‎‎‎‎‏‎‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‏‏‎‏‎‏‎Choose your password‎‏‎‎‏‎"</string>
+    <string name="current_screen_lock" msgid="637651611145979587">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎‏‎‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎‎‏‏‎Current screen lock‎‏‎‎‏‎"</string>
+    <string name="choose_lock_pattern_message" msgid="6242765203541309524">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎For security, set a pattern‎‏‎‎‏‎"</string>
+    <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‎‏‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‎‏‏‎Clear‎‏‎‎‏‎"</string>
+    <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‏‏‎‎‏‏‎‎‎‎‏‎‎‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎‎Cancel‎‏‎‎‏‎"</string>
+    <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‎‏‏‏‎‎‏‎Your new unlock pattern‎‏‎‎‏‎"</string>
+    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎‎‎‏‎‏‏‏‎‎‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‎‎Draw an unlock pattern‎‏‎‎‏‎"</string>
+    <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‎‎‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‎Release finger when done‎‏‎‎‏‎"</string>
+    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‏‎Pattern recorded‎‏‎‎‏‎"</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‎‎‎‏‏‎‎‎‏‏‎‏‏‏‎‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‏‎‏‏‎‏‏‏‏‎‎Draw pattern again to confirm‎‏‎‎‏‎"</string>
+    <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‎‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‏‎‎‏‎‏‎‎Connect at least 4 dots. Try again.‎‏‎‎‏‎"</string>
+    <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‎‎‏‎‎‎‏‏‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‎‎‎‏‏‎Wrong pattern‎‏‎‎‏‎"</string>
+    <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎How to draw an unlock pattern‎‏‎‎‏‎"</string>
+    <string name="error_saving_lockpattern" msgid="2933512812768570130">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‏‎‏‎‏‏‏‏‎‏‏‏‎‎‏‎‏‏‏‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‎‏‎‏‏‎‎‎‏‎‎‏‎‎Error saving pattern‎‏‎‎‏‎"</string>
+    <string name="okay" msgid="4589873324439764349">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‏‎OK‎‏‎‎‏‎"</string>
+    <string name="remove_screen_lock_title" msgid="1234382338764193387">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎Remove screen lock?‎‏‎‎‏‎"</string>
+    <string name="remove_screen_lock_message" msgid="6675850371585564965">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‎‎‏‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎This will allow anyone to access your account‎‏‎‎‏‎"</string>
+    <string name="lock_settings_enter_pin" msgid="1669172111244633904">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎Enter your PIN‎‏‎‎‏‎"</string>
+    <string name="lock_settings_enter_password" msgid="2636669926649496367">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎Enter your password‎‏‎‎‏‎"</string>
+    <string name="choose_lock_pin_message" msgid="2963792070267774417">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‎‎‎‏‎For security, set a PIN‎‏‎‎‏‎"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‏‏‎‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‏‏‎‎Re-enter your PIN‎‏‎‎‏‎"</string>
+    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‎‏‏‎‎‎PIN must be at least 4 digits‎‏‎‎‏‎"</string>
+    <string name="lockpin_invalid_pin" msgid="2149191577096327424">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‎‎‏‎‏‏‎‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‎‎Pin invalid, must be at least 4 digits.‎‏‎‎‏‎"</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‎‎‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‏‎‎‎‎‏‏‏‎‏‎‏‎‎‎‎‎PINs don\'t match‎‏‎‎‏‎"</string>
+    <string name="error_saving_lockpin" msgid="9011960139736000393">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‏‏‎‎‎‏‎‎‏‎Error saving PIN‎‏‎‎‏‎"</string>
+    <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‏‎‎‎‎‎‎‎‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‎‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎Wrong PIN‎‏‎‎‏‎"</string>
+    <string name="lockscreen_wrong_password" msgid="5757087577162231825">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‎‎‎‏‎Wrong password‎‏‎‎‏‎"</string>
+    <string name="choose_lock_password_message" msgid="6124341145027370784">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‎‎‏‎‏‏‎‎‎‎‎‎‏‎‏‎‏‎‏‎‎‏‎‏‏‏‏‏‎‎‏‎‎‎‎‎‎For security, set a password‎‏‎‎‏‎"</string>
+    <string name="confirm_your_password_header" msgid="7052891840366724938">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‎‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‎Re-enter your password‎‏‎‎‏‎"</string>
+    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎‏‏‎‎‏‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‎‎‏‎Passwords don\'t match‎‏‎‎‏‎"</string>
+    <string name="lockpassword_clear_label" msgid="6363680971025188064">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‎‎‎‎‏‎‏‎‏‏‎‎‎‏‎‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‎‎‎‎‎Clear‎‏‎‎‏‎"</string>
+    <string name="lockpassword_cancel_label" msgid="5791237697404166450">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‏‎‎‏‏‎‎‏‎‎Cancel‎‏‎‎‏‎"</string>
+    <string name="lockpassword_confirm_label" msgid="5918463281546146953">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‎‎‏‎‏‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎‎‎‏‎‎‏‎Confirm‎‏‎‎‏‎"</string>
+    <string name="choose_lock_password_hints" msgid="3903696950202491593">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‏‎‏‏‎‎‏‎‎‏‎Must be at least 4 characters‎‏‎‎‏‎"</string>
+    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‏‎‎‏‎‎‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‎‏‎‏‎Must be at least ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ characters‎‏‎‎‏‎"</string>
+    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‎‎‎‏‏‎‏‎‎PIN must be at least ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ digits‎‏‎‎‏‎"</string>
+    <string name="lockpassword_password_too_long" msgid="7530214940279491291">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‏‏‎Must be fewer than ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%d</xliff:g>‎‏‎‎‏‏‏‎ characters‎‏‎‎‏‎"</string>
+    <string name="lockpassword_pin_too_long" msgid="62957683396974404">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‎Must be fewer than ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%d</xliff:g>‎‏‎‎‏‏‏‎ digits‎‏‎‎‏‎"</string>
+    <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‏‎‏‎‎‏‏‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎Must contain only digits 0-9.‎‏‎‎‏‎"</string>
+    <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎‎‏‏‎‏‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎Device admin doesn\'t allow using a recent PIN‎‏‎‎‏‎"</string>
+    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎Common PINs are blocked by your IT admin. Try a different PIN.‎‏‎‎‏‎"</string>
+    <string name="lockpassword_illegal_character" msgid="1984970060523635618">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‎‎‏‏‎‏‎‎‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎This can\'t include an invalid character.‎‏‎‎‏‎"</string>
+    <string name="lockpassword_invalid_password" msgid="1690956113717418430">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‎‏‎‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎Password invalid, must be at least 4 characters.‎‏‎‎‏‎"</string>
+    <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‎Must contain at least ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ letters‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‎Must contain at least 1 letter‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_lowercase" formatted="false" msgid="2267487180744744833">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‎‎‎‎‏‎Must contain at least ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ lowercase letters‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‎‎‎‎‏‎Must contain at least 1 lowercase letter‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_uppercase" formatted="false" msgid="7999264563026517898">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‎‎Must contain at least ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ uppercase letters‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‏‏‎‎‎‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‎‎Must contain at least 1 uppercase letter‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_numeric" formatted="false" msgid="7935079851855168646">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‎‏‎‎‎‏‎‏‎‏‎‏‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‎‏‏‎‎Must contain at least ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ numerical digits‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‎‏‎‎‎‏‎‏‎‏‎‏‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‎‏‏‎‎Must contain at least 1 numerical digit‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_symbols" formatted="false" msgid="3994046435150094132">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎Must contain at least ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ special symbols‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎Must contain at least 1 special symbol‎‏‎‎‏‎</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_nonletter" formatted="false" msgid="6878486326748506524">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‏‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‎‏‏‏‎‎‏‏‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‎Must contain at least ‎‏‎‎‏‏‎<xliff:g id="COUNT">%d</xliff:g>‎‏‎‎‏‏‏‎ non-letter characters‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‏‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‎‏‏‏‎‎‏‏‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‎Must contain at least 1 non-letter character‎‏‎‎‏‎</item>
+    </plurals>
+    <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎Device admin doesn\'t allow using a recent password‎‏‎‎‏‎"</string>
+    <string name="error_saving_password" msgid="8334882262622500658">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‎Error saving password‎‏‎‎‏‎"</string>
+    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‏‏‎Common passwords are blocked by your IT admin. Try a different password.‎‏‎‎‏‎"</string>
+    <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‎‏‏‏‎‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‏‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎Ascending, descending, or repeated sequence of digits isn\'t allowed.‎‏‎‎‏‎"</string>
+    <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎‎‎Screen lock options‎‏‎‎‏‎"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="FINGERPRINT">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="DATE">%2$s</xliff:g>‎‏‎‎‏‏‏‎ : ‎‏‎‎‏‏‎<xliff:g id="NUM_DAYS">%3$s</xliff:g>‎‏‎‎‏‏‏‎ days ago‎‏‎‎‏‎"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‎‏‏‎‏‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‏‏‏‏‏‏‎‎‎‎Add trusted device‎‏‎‎‏‎"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‎‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‎Trusted devices‎‏‎‎‏‎"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="COUNT_1">%d</xliff:g>‎‏‎‎‏‏‏‎ devices‎‏‎‎‏‎</item>
+      <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="COUNT_0">%d</xliff:g>‎‏‎‎‏‏‏‎ device‎‏‎‎‏‎</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‎‏‎‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎Your ‎‏‎‎‏‏‎<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ will unlock this car when it\'s connected. If someone takes your ‎‏‎‎‏‏‎<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>‎‏‎‎‏‏‏‎, they may be able to access this device‎‏‎‎‏‎"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‏‎‎‏‏‏‎‎‎Confirm‎‏‎‎‏‎"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‏‎‎‏‎‏‏‎‏‎‏‎‏‎‏‏‏‎‏‎‎‎‏‎‏‎‎‏‏‎‎‎‏‏‏‏‏‎‎‎Remove trusted device‎‏‎‎‏‎"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎Done‎‏‎‎‏‎"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‎‏‎‏‎‎‏‎‏‎‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‏‎‏‎‎‎‏‏‏‎‎‏‏‎Use the companion app to set up a trusted device. Once set up, you will be able to unlock your user profile when your phone is detected by the vehicle‎‏‎‎‏‎"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‎‎‎‏‎‏‎‎‏‎‎‏‎‎‎‎‎‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‎1. Download the companion app on your phone‎‏‎‎‏‎"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‎2. Select ‎‏‎‎‏‏‎<xliff:g id="CAR_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ on your phone to pair the devices‎‏‎‎‏‎"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎Smart Lock can\'t detect security features of this device. To help protect your car, trusted device will only be able to keep your car unlocked once it\'s already unlocked by you. Your trusted device can keep your car unlocked when it\'s nearby, even if someone else is holding it.‎‏‎‎‏‎"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‏‏‎‎‎‎‎‏‏‏‎‏‏‎Add ‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ as a trusted device‎‏‎‎‏‎"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‎‏‏‎‏‏‎‏‎‎‎‏‎‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ successfully added as a trusted device‎‏‎‎‏‎"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="DEVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ enrollment failed‎‏‎‎‏‎"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‎‎‎‏‎‎‎‎‏‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‎‏‎‏‎‎‎‎‏‎Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile.‎‏‎‎‏‎"</string>
+    <string name="forget" msgid="3971143908183848527">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‏‎‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‏‎‎‏‏‏‏‎Forget‎‏‎‎‏‎"</string>
+    <string name="connect" msgid="5861699594602380150">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‏‏‏‎‏‏‎‎Connect‎‏‎‎‏‎"</string>
+    <string name="disconnect" msgid="6140789953324820336">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‏‏‎‏‏‏‎‎‎‎‎Disconnect‎‏‎‎‏‎"</string>
+    <string name="delete_button" msgid="5840500432614610850">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎‏‎‎Delete‎‏‎‎‏‎"</string>
+    <string name="remove_button" msgid="6664656962868194178">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‎‎‏‏‎‎‏‎‎‏‏‎‎‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎Remove‎‏‎‎‏‎"</string>
+    <string name="cancel" msgid="750286395700355455">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‏‎‎‏‏‎‎‎‏‏‎‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‏‏‏‏‎Cancel‎‏‎‎‏‎"</string>
+    <string name="backspace_key" msgid="1545590866688979099">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‏‎‎‏‏‎‎‎‎‏‎‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‎‎‏‎‎‎‏‎‏‎‏‏‎‏‏‎‎‎‎‏‎‎‏‏‎‏‏‎Backspace key‎‏‎‎‏‎"</string>
+    <string name="enter_key" msgid="2121394305541579468">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‏‏‎‎‎Enter key‎‏‎‎‏‎"</string>
+    <string name="exit_retail_button_text" msgid="6093240315583384473">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‎Exit Demo‎‏‎‎‏‎"</string>
+    <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‏‏‎‏‏‏‏‏‎‎‎‎‎Exit demo mode‎‏‎‎‏‎"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‎‎‎‎‏‏‎‎‏‎‏‎‎‎‏‎‏‎This will delete the demo account and factory data reset the system. All user data will be lost.‎‏‎‎‏‎"</string>
+    <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‎‎‏‎Exit Demo‎‏‎‎‏‎"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‎‎‎‏‎‎‎‏‎DISMISS‎‏‎‎‏‎"</string>
+    <string name="restricted_while_driving" msgid="6217369093121968299">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‏‎‎‎‏‎‎‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‎‎‎‏‎‎‎‏‎‏‎‏‎‏‏‎Feature not available while driving.‎‏‎‎‏‎"</string>
+    <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‏‎‎‎‏‎‎‎‏‎‏‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‏‎‎‎‏‎‎‎Can\'t add user while driving.‎‏‎‎‏‎"</string>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index b5f87e3..132041d 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"atenuar pantalla, pantalla táctil, batería"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"atenuar pantalla, noche, tono"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Internet y red"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Red móvil"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datos móviles"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Acceder a los datos mediante la red móvil"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"¿Desactivar los datos móviles?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Uso de datos"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Advertencia de límite de datos"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciclo de uso de datos de las apps"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Config. advertencia de datos"</string>
+    <string name="data_warning" msgid="116776633806885370">"Advertencia de datos"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Establecer límite de datos"</string>
+    <string name="data_limit" msgid="227338836292511425">"Límite de datos"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitar el uso de datos"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"La unidad principal del vehículo desactivará los datos móviles cuando llegue al límite que establezcas.\n\nComo es posible que la unidad principal y tu proveedor midan el uso de datos de manera distinta, te recomendamos establecer un límite prudente."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configurar y administrar puntos de acceso inalámbricos"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activando Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Desactivando Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Cargando lista de Wi-Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi inhabilitado"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Se produjo un error al olvidar la red"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Se produjo un error al establecer conexión con la red"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Agregar red"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi inhabilitado"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectar"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Contraseña"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar contraseña"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nombre de la red"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Ingresa el SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Seguridad"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Intensidad de la señal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Intensidad de la señal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Estado"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Velocidad del vínculo"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frecuencia"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Dirección IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Mostrar contraseña"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Ingresa el nombre de la red"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Ingresa la contraseña"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Baja"</item>
-    <item msgid="2032262610626057081">"Aceptable"</item>
-    <item msgid="3859756017461098953">"Buena"</item>
-    <item msgid="1521103743353335724">"Excelente"</item>
+    <item msgid="7683058295076342057">"Baja"</item>
+    <item msgid="1639222824821660744">"Aceptable"</item>
+    <item msgid="1838705897358163300">"Buena"</item>
+    <item msgid="6067166649320533751">"Excelente"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Activar Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth inhabilitado"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalles de la red"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Dirección MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Dirección IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Máscara de subred"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Direcciones IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Puerta de enlace"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferencias de Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Activar Wi-Fi automáticamente"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi se reactivará automáticamente cerca de redes guardadas"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"No disponible porque la ubicación está desactivada. "<annotation id="link">"Actívala"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"¿Quieres activar la búsqueda de redes Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Activar"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Se activó la búsqueda de redes Wi‑Fi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Cambiar a datos móviles automáticamente"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Si la conexión Wi-Fi no puede acceder a Internet, usa los datos móviles. Es posible que se apliquen cargos por el uso de datos."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Más información"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Administrar conexiones, y establecer nombre y visibilidad del dispositivo"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computadora"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Auriculares"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Teléfono"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imágenes"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Audífonos"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periférico de entrada"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Dispositivos sincronizados"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dispositivos disponibles"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"No hay dispositivos sincronizados"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"No hay dispositivos disponibles"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Dispositivo sincronizado"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nombre"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Usar para"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Renombra el dispositivo Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Dispositivo sin nombre"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositivos sincronizados"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Sincronizar dispositivo nuevo"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Se activará el Bluetooth para iniciar la sincronización"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"¿Desconectar dispositivo?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"El vehículo se desconectará de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Dirección Bluetooth del vehículo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Dirección Bluetooth del dispositivo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nombre del vehículo"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Cambiar nombre del vehículo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Cambiar nombre del dispositivo"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Cambiar nombre"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dispositivos disponibles"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Perfiles"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitud de sincronización mediante Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Vincular y conectar"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de sincronización mediante Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"El PIN contiene letras o símbolos"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Ingresa el código de sincronización y, luego, presiona Intro"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Por lo general, 0000 o 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Sincronizando solicitud"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Presiona para sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Idiomas"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Idiomas y entradas"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Teclado"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Administrar teclados"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Salida de texto a voz"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor preferido"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motor actual"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Velocidad de voz"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tono"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Restablecer"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Sonido"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volumen de tono"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volumen de navegación"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Multimedia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Establecer volumen para la música y los videos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarma"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Tono del teléfono"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Sonido de notificación predet."</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sonido de alarma predeterm."</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps y notificaciones"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Mostrar todas las apps"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Apps predeterminadas"</string>
     <string name="applications_settings" msgid="794261395191035632">"Información de apps"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Forzar detención"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"¿Deseas forzar la detención?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Si fuerzas la detención de una app, es posible que no funcione correctamente."</string>
     <string name="disable_text" msgid="4358165448648990820">"Inhabilitar"</string>
     <string name="enable_text" msgid="1794971777861881238">"Habilitar"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si inhabilitas esta app, es posible que Android y otras apps ya no funcionen correctamente."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Inhabilitar app"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisos"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versión: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No se otorgaron permisos"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No se solicitaron permisos"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Uso de datos"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uso de datos de la app"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Forzar detención"</string>
     <string name="computing_size" msgid="5791407621793083965">"Calculando…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> permisos adicionales</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> permiso adicional</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asistencia y entrada de voz"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplicación de asistencia"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Utilizar el texto de la pantalla"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Permitir que la aplicación de asistencia acceda al contenido de la pantalla como texto"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Utilizar la captura de pantalla"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Permitir que la aplicación de asistencia acceda a una imagen de la pantalla"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Servicio autocompletar"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ninguna"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Seleccionada"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"El Asistente podrá leer información sobre las apps en uso en el sistema, incluida la información visible en la pantalla o accesible en las apps."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Asegúrate de que esta app sea confiable&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; y de que use el contenido de la pantalla para determinar qué se puede autocompletar."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Agregar servicio"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Ubicación"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitudes de ubicación recientes"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No hay solicitudes de ubicación recientes"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisos en las apps"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Búsqueda"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Servicios de ubicación"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Búsqueda de redes Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Permite que las apps y los servicios busquen redes Wi-Fi en cualquier momento, aunque la conexión Wi-Fi esté desactivada. Puede usarse, por ejemplo, para mejorar las funciones y los servicios basados en la ubicación."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Búsqueda de dispositivos Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permite que apps y servicios busquen dispositivos cercanos en cualquier momento, aunque la conexión Bluetooth esté desactivada. Puede usarse, por ejemplo, para mejorar las funciones y los servicios basados en la ubicación."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Actualizaciones del sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Actualizaciones del sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Parche de seguridad de Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modelo"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versión de banda base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versión de kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Número de compilación"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Dirección de Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"No disponible"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Estado"</string>
     <string name="device_status" msgid="267298179806290920">"Estado"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licencia"</string>
     <string name="terms_title" msgid="5201471373602628765">"Términos y condiciones"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licencia de WebView del sistema"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licencias de WebView del sistema"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Fondos de pantalla"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Proveedores de imágenes satelitales:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licencias de terceros"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Se produjo un error al cargar las licencias."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Cargando…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Ahora estás a <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> pasos de convertirte en desarrollador.</item>
+      <item quantity="one">Ahora estás a <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> paso de convertirte en desarrollador.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"¡Ya eres desarrollador!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"No es necesario, ya eres desarrollador."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opciones para desarrolladores"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opciones de restablecimiento"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Restablecer red, apps o dispositivo"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Restablecer red"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Esta acción restablecerá todas las opciones de configuración de red, incluidas las siguientes:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Datos móviles"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Borrar todas las eSIM del vehículo"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Esta acción no cancelará tu plan de servicio."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"No se pueden restablecer las eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Seleccionar red"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Restablecer configuración"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"¿Restablecer configuración?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"¿Quieres restablecer la configuración de red? No podrás deshacer esta acción."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Restablecer configuración"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Se restableció la configuración de red"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Restablecer preferencias de apps"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Se restablecerán todas las preferencias de lo sigueinte:\n\n"<li>"Apps inhabilitadas"</li>\n<li>"Notificaciones de apps inhabilitadas"</li>\n<li>"Apps predeterminadas para realizar acciones"</li>\n<li>"Restricciones de datos en segundo plano para apps"</li>\n<li>"Restricciones de permisos"</li>\n\n"No perderás los datos de las apps."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Restablecer apps"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Se restablecieron las preferencias de las apps"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Borrar todos los datos (restablecer)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Esta acción borrará todos los datos de la unidad principal del vehículo, entre lo que se incluye:\n\n"<li>"Tu Cuenta de Google"</li>\n<li>"La configuración y los datos de las apps y el sistema"</li>\n<li>"Las apps descargadas"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Accediste a las siguientes cuentas:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Hay otros usuarios presentes en este vehículo."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Restablecer vehículo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"¿Restablecer?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"¿Deseas borrar toda tu información personal y las apps descargadas? No podrás deshacer esta acción."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Borrar todo"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Borrando"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Espera un momento…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Fecha y hora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Establecer fecha y hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Establecer fecha, hora, zona horaria y formatos"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Ordenar por zona horaria"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Fecha"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Hora"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Agregar usuario"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Agregar cuenta"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Borrar usuario"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Usuario nuevo"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Invitado"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrador"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Accediste como administrador"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todos los permisos de administrador"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Convertir en administrador"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"El usuario podrá borrar usuarios, incluidos otros administradores, y restablecer el sistema a la configuración de fábrica."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Esta acción no se puede deshacer."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Sí, convertir en administrador"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Crear nuevos usuarios"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Hacer llamadas telefónicas"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mensajes por datos móviles del auto"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar nuevas apps"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar apps"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Agregar usuario"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Usuario nuevo"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"¿Agregar un usuario?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Cuando agregues un nuevo usuario, esa persona deberá configurar su espacio."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Cualquier usuario podrá actualizar las apps de otras personas."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Alcanzaste el límite de usuarios"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Puedes crear hasta <xliff:g id="COUNT">%d</xliff:g> usuarios.</item>
+      <item quantity="one">Solo se puede crear un usuario.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"No se pudo crear el usuario nuevo"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"¿Borrar este usuario?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Se borrarán todas las apps y los datos."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"No se pudo borrar el usuario"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Descartar"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Reintentar"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"¿Borrar último usuario?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Una vez que borres el último usuario del auto, se creará un nuevo usuario administrador."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Se borrarán todos los datos, las apps y la configuración que asociaste con este usuario. Deberás volver a configurar el sistema."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Elige un nuevo administrador"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Necesitas al menos un administrador. Debes elegir un reemplazo para poder borrar el actual."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Elegir administrador"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Invitado"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Invitado"</string>
     <string name="user_switch" msgid="6544839750534690781">"Cambiar"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Tú (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nombre"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"No configurado"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Editar el nombre de usuario"</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuarios"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permisos otorgados a %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Cuentas"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Usuario"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Agregar cuenta"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"No se agregó ninguna cuenta"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Cuentas de <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronizar datos automáticamente"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permitir que las apps actualicen datos automáticamente"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"¿Activar sinc. automática?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Los cambios que realices en tus cuentas en la Web se copiarán automáticamente al dispositivo.\n\nAlgunas cuentas también podrían copiar automáticamente los cambios que hagas en el teléfono a la Web. Las Cuentas de Google funcionan de esa manera."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"¿Desactivar sinc. automática?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Esta acción conservará los datos, pero deberás sincronizar cada cuenta de forma manual para recopilar la información reciente. Además, no recibirás notificaciones cuando se realicen actualizaciones."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Información de la cuenta"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Agregar cuenta"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Agregar cuenta"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Quitar cuenta"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"¿Quitar la cuenta?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Si quitas esta cuenta, se borrarán todos sus mensajes, contactos y otros datos del dispositivo."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Tu administrador no permite este cambio"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"¿Quitar este usuario?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Se borrarán todas las apps y los datos."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"No se pudo quitar el usuario"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"¿Reintentar?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Descartar"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Reintentar"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"¿Agregar un usuario?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Cuando agregues un nuevo usuario, esa persona deberá configurar su espacio."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Cualquier usuario podrá actualizar las apps de otras personas."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"No se pudo borrar la cuenta"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronización de la cuenta"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sincronización activada para <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g> elementos"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronización activada para todos los elementos"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronización desactivada para todos los elementos"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sincronización desactivada"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Error de sincronización"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Última sincronización: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sincronizando…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Presiona para sincronizar ahora<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronizar ahora"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronización"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"En este momento la sincronización experimenta problemas. Volverá en breve."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguridad"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueo de pantalla"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ninguno"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Contraseña"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Selecciona un bloqueo"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opciones de bloqueo de pantalla"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opciones de bloqueo"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Ingresa tu patrón"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirmar"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Volver a dibujar"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Establece un bloqueo de pantalla"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Elige un PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Elige un patrón"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Elige una contraseña"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Elige una contraseña"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Bloqueo de pantalla actual"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Por seguridad, establece un patrón"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Borrar"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Tu administrador de TI bloquea las contraseñas comunes. Prueba con otra."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No se permiten secuencias de dígitos ascendentes, descendentes ni repetidas."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opciones de bloqueo de pantalla"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> (hace <xliff:g id="NUM_DAYS">%3$s</xliff:g> días)"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Agregar disp. de confianza"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Disp. de confianza"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Tu <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> desbloqueará este vehículo cuando esté conectado. Si otra persona toma tu <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, es posible que pueda acceder a este dispositivo"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Quitar dispositivo de confianza"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Listo"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Usa la aplicación complementaria para configurar un dispositivo de confianza. Una vez que lo hagas, podrás desbloquear tu perfil de usuario cuando el vehículo detecte tu teléfono."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Descarga la aplicación complementaria en el teléfono."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecciona <xliff:g id="CAR_NAME">%1$s</xliff:g> en el teléfono para sincronizar los dispositivos."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock no puede detectar las funciones de seguridad de este dispositivo. Para ayudarte a proteger tu auto, dispositivos de confianza solo podrá mantener el auto desbloqueado una vez que tú lo desbloquees. Tu dispositivo de confianza puede mantener el auto desbloqueado cuando se encuentra cerca, incluso si alguien más lo tiene."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Agregar <xliff:g id="DEVICE_NAME">%1$s</xliff:g> como dispositivo de confianza"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Se agregó correctamente <xliff:g id="DEVICE_NAME">%1$s</xliff:g> como dispositivo de confianza"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Se ha producido un error al registrar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Después de agregar un dispositivo de confianza, deberás establecer un método de autenticación. Ese método te permitirá acceder a tu perfil cuando no lleves contigo el dispositivo de confianza."</string>
     <string name="forget" msgid="3971143908183848527">"Olvidar"</string>
+    <string name="connect" msgid="5861699594602380150">"Conectar"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Desconectar"</string>
     <string name="delete_button" msgid="5840500432614610850">"Borrar"</string>
     <string name="remove_button" msgid="6664656962868194178">"Quitar"</string>
     <string name="cancel" msgid="750286395700355455">"Cancelar"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Salir del modo de demostración"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Esta acción borrará la cuenta de demostración y restablecerá el sistema a la configuración de fábrica. Se perderán todos los datos del usuario."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Salir de la demostración"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"terminar de configurar"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ahora no"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DESCARTAR"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Esta función no está disponible mientras conduces."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"No puedes agregar usuarios mientras conduces."</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 937cda0..855c3ff 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"atenuar pantalla, pantalla táctil, batería"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"atenuar pantalla, nocturno, tono"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Redes e Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Red móvil"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datos móviles"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Acceder a los datos con la red móvil"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"¿Desactivar los datos móviles?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Uso de datos"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Límite y advertencia de datos"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciclo de uso de datos de aplicaciones"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Definir advertencia de datos"</string>
+    <string name="data_warning" msgid="116776633806885370">"Advertencia de datos"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Establecer límite de datos"</string>
+    <string name="data_limit" msgid="227338836292511425">"Límite de datos"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitando uso de datos"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"La unidad principal de tu vehículo desactivará los datos móviles cuando se alcance el límite establecido.\n\nSe tiene en cuenta el uso de datos medido por la unidad principal, aunque tu operador podría registrarlo de forma diferente. Por tanto, debes ser prudente al establecer un límite."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configurar y administrar puntos de acceso inalámbricos"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activando Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Desactivando Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Cargando lista de redes Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi inhabilitado"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"No se ha podido olvidar la red"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"No se ha podido conectar a la red"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Añadir red"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi inhabilitado"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectar"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Contraseña"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar contraseña"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nombre de red"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Introduce el SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Seguridad"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Intensidad de la señal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Intensidad de la señal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Estado"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Velocidad de enlace"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frecuencia"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Dirección IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Mostrar contraseña"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Introduce un nombre de red"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Introduce la contraseña"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Mala"</item>
-    <item msgid="2032262610626057081">"Aceptable"</item>
-    <item msgid="3859756017461098953">"Buena"</item>
-    <item msgid="1521103743353335724">"Excelente"</item>
+    <item msgid="7683058295076342057">"Mala"</item>
+    <item msgid="1639222824821660744">"Aceptable"</item>
+    <item msgid="1838705897358163300">"Buena"</item>
+    <item msgid="6067166649320533751">"Excelente"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Activar Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth inhabilitado"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalles de la red"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Dirección MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Dirección IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Máscara de subred"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Direcciones IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Pasarela"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferencias de Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Activar Wi‑Fi automáticamente"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi se activará cerca de redes alta calidad guardadas (p. ej., la de casa)"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"No disponible porque ubicación no está activada. "<annotation id="link">"Actívala"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"¿Quieres activar la búsqueda de redes Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Activar"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Se ha activado la búsqueda de redes Wi‑Fi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Cambiar a datos móviles automáticamente"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Utiliza la conexión de datos móviles cuando no haya acceso a Internet a través de la red Wi‑Fi. Podrían aplicarse cargos por el uso de datos."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Más información"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Administrar conexiones, establecer el nombre del dispositivo y la visibilidad"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Ordenador"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Auriculares con micrófono"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Teléfono"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Escáner"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Auriculares"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periférico de entrada"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Dispositivos vinculados"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dispositivos disponibles"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"No hay dispositivos vinculados"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"No hay dispositivos disponibles"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Dispositivo vinculado"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nombre"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Usar para"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Cambiar nombre de dispositivo Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Dispositivo sin nombre"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositivos vinculados"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Vincular nuevo dispositivo"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"El Bluetooth se activará para vincular el dispositivo"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"¿Desconectar dispositivo?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Tu vehículo se desconectará de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Dirección de Bluetooth del vehículo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Dirección de Bluetooth del dispositivo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nombre del vehículo"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Cambiar nombre de este vehículo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Cambiar nombre del dispositivo"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Cambiar nombre"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dispositivos disponibles"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Perfiles"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitud de vinculación de Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sincronizar y conectar"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de vinculación por Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"El PIN contiene letras o símbolos"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Escribe el código de vinculación y, a continuación, pulsa Intro"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Normalmente: 0000 o 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Solicitud de vinculación"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Toca para vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Idiomas"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Idiomas e introducción de texto"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Teclado"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Gestionar teclados"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Síntesis de voz"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor preferido"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motor actual"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Velocidad de la voz"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tono"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Restablecer"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Sonido"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volumen del tono"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volumen de navegación"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Multimedia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Establecer volumen para música y vídeos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarma"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Tono de llamada del teléfono"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Sonido notificación predeterm."</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sonido alarma predeterminado"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplicaciones y notificaciones"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Mostrar todas las aplicaciones"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplicaciones predeterminadas"</string>
     <string name="applications_settings" msgid="794261395191035632">"Información de la aplicación"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Forzar detención"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"¿Quieres forzar la detención?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Si se fuerza la detención una aplicación, es posible que no funcione correctamente."</string>
     <string name="disable_text" msgid="4358165448648990820">"Inhabilitar"</string>
     <string name="enable_text" msgid="1794971777861881238">"Habilitar"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si inhabilitas esta aplicación, es posible que Android y otras aplicaciones no funcionen correctamente."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Inhabilitar aplicación"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisos"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versión: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"No se han concedido permisos"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"No se han solicitado permisos"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Uso de datos"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uso de datos de la app"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Forzar detención"</string>
     <string name="computing_size" msgid="5791407621793083965">"Calculando…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> permisos adicionales</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> permiso adicional</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asistencia y entrada de voz"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplicación de asistencia"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Usar texto de la pantalla"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Permitir que la aplicación de asistencia acceda a los contenidos de la pantalla (como texto)"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Usar captura de pantalla"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Permitir que la aplicación de asistencia acceda a una imagen de la pantalla"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Servicio Autocompletar"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ninguna"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Seleccionada"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"El asistente podrá consultar información sobre las aplicaciones en uso del sistema, como la que aparezca en pantalla o a la que se pueda acceder a través de las aplicaciones."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Asegúrate de que confías en esta aplicación&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Autocompletar de Google&gt;%1$s&lt;/xliff:g&gt; utiliza el contenido que se muestra en la pantalla para determinar el texto que se puede autocompletar."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Añadir servicio"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Ubicación"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitudes de ubicación recientes"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ninguna solicitud de ubicación reciente"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisos de las aplicaciones"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Búsqueda"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Servicios de ubicación"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Búsqueda de redes Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Permite que las aplicaciones y los servicios busquen redes Wi‑Fi en cualquier momento aunque la conexión Wi‑Fi esté desactivada. Se utiliza, por ejemplo, para mejorar los servicios y funciones basados en la ubicación."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Búsqueda de dispositivos Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permite que las aplicaciones y los servicios busquen dispositivos cercanos en cualquier momento aunque la conexión Bluetooth esté desactivada. Se utiliza, por ejemplo, para mejorar los servicios y funciones basados en la ubicación."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Actualizaciones del sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Actualizaciones del sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivel del parche de seguridad de Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modelo"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versión de banda base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versión de kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Número de compilación"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Dirección de Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"No disponible"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Estado"</string>
     <string name="device_status" msgid="267298179806290920">"Estado"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licencia"</string>
     <string name="terms_title" msgid="5201471373602628765">"Términos y condiciones"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licencia de WebView del sistema"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licencias de WebView del sistema"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Fondos de pantalla"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Proveedores de imágenes de satélite:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licencias de terceros"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"No se han podido cargar las licencias."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Cargando…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Solo te quedan <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> pasos para habilitar las opciones para desarrolladores.</item>
+      <item quantity="one">Solo te queda <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> paso para habilitar las opciones para desarrolladores.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"¡Ya están activadas las opciones para desarrolladores!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Las opciones para desarrolladores ya están activadas."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opciones para desarrolladores"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opciones de recuperación"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Restablecer dispositivo, aplicaciones y red"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Restablecer red"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Se restablecerán todos los ajustes de red, incluidas las siguientes opciones:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Datos móviles"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Borrar todas las eSIM del vehículo"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"No se cancelará tu plan de servicios."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"No se puede recuperar el estado de las tarjetas eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Seleccionar red"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Restablecer ajustes"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"¿Restablecer?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"¿Quieres restablecer todos los ajustes de red? Esta acción no se puede deshacer."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Restablecer ajustes"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Se han restablecido los ajustes de red"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Restablecer preferencias de aplicaciones"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Se restablecerán todas las preferencias de:\n\n"<li>"Aplicaciones desactivadas"</li>\n<li>"Notificaciones de aplicaciones desactivadas"</li>\n<li>"Aplicaciones para acciones predeterminadas"</li>\n<li>"Restricciones de datos en segundo plano de aplicaciones"</li>\n<li>"Restricciones de permisos"</li>\n\n"No se perderán los datos de las aplicaciones."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Restablecer aplicaciones"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Se han restablecido las preferencias de las aplicaciones"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Borrar todos los datos (restablecer)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Se borrarán todos los datos de la unidad principal de tu vehículo, como:\n\n"<li>"Tu cuenta de Google"</li>\n<li>"Los ajustes y datos de aplicaciones y del sistema"</li>\n<li>"Las aplicaciones descargadas"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Has iniciado sesión en estas cuentas:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Hay otros usuarios presentes en este vehículo."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Restablecer vehículo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"¿Restablecer?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"¿Quieres borrar toda tu información personal y todas las aplicaciones descargadas? Esta acción no se puede deshacer."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Borrar todo"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Borrando"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Espera..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Fecha y hora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Establecer fecha y hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Establecer fecha, hora, zona horaria y formatos"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Ordenar por zona horaria"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Fecha"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Hora"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Añadir usuario"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Añadir cuenta"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Eliminar usuario"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nuevo usuario"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Invitado"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrador"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sesión iniciada como administrator"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todos los permisos de administrador"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Convertir en administrador"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"El usuario podrá eliminar usuarios, incluidos otros administradores, y restablecer el sistema al estado de fábrica."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Esta acción no se puede deshacer."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Sí, convertir en administrador"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Crear usuarios"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Hacer llamadas"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mensajes por datos móviles de coche"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar aplicaciones nuevas"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar aplicaciones"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Añadir usuario"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nuevo usuario"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"¿Añadir nuevo usuario?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Al añadir un nuevo usuario, este debe configurar su espacio."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Cualquier usuario puede actualizar las aplicaciones del resto de los usuarios."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Has alcanzado el límite de usuarios"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Puedes crear hasta <xliff:g id="COUNT">%d</xliff:g> usuarios.</item>
+      <item quantity="one">Solo se puede crear un usuario.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"No se ha podido crear el usuario"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"¿Eliminar este usuario?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Se eliminarán los datos y las aplicaciones."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"No se ha podido eliminar al usuario."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Cerrar"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Reintentar"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"¿Eliminar último usuario?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Después de eliminar el único usuario que queda de este coche, se creará un nuevo administrador."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Se eliminarán las aplicaciones, los datos y los ajustes asociados a este usuario, y tendrás que volver a configurar el sistema."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Elegir nuevo administrador"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Necesitas al menos un administrador. Para eliminar este, primero debes elegir otro."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Elegir administrador"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Invitado"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Invitado"</string>
     <string name="user_switch" msgid="6544839750534690781">"Cambiar"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Tú (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nombre"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Sin configurar"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Cambiar el nombre de usuario"</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuarios"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permisos concedidos a %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Cuentas"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Usuario"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Añadir cuenta"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"No se ha añadido ninguna cuenta"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Cuentas de <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronizar datos automáticamente"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permitir que las apps actualicen los datos automáticamente"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"¿Activar sincronización autom.?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Los cambios que hagas en tus cuentas en la Web se reflejarán automáticamente en el dispositivo.\n\nAlgunas cuentas como, por ejemplo, las cuentas de Google, también reflejarán en la Web los cambios que hagas en el teléfono. A continuación, puedes ver cómo funciona  una cuenta de Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"¿Desactivar sincronización aut.?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Esto te permitirá ahorrar datos, pero tendrás que sincronizar cada cuenta de forma manual para obtener información reciente y no recibirás notificaciones cuando haya actualizaciones."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Información de la cuenta"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Añadir cuenta"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Añadir una cuenta"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Quitar cuenta"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"¿Quitar la cuenta?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Si quitas esta cuenta, se eliminarán todos sus mensajes, contactos y otros datos del dispositivo."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"El administrador no permite realizar este cambio"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"¿Quitar este usuario?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Se eliminarán los datos y las aplicaciones."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"No se ha podido quitar el usuario."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"¿Reintentar?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Ignorar"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Reintentar"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"¿Añadir nuevo usuario?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Al añadir un nuevo usuario, este debe configurar su espacio."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Cualquier usuario puede actualizar las aplicaciones del resto de los usuarios."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"No se ha podido eliminar la cuenta."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronización"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Elementos con la sincronización activada: <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronización activada para todos los elementos"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronización desactivada para todos los elementos"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sincronización desactivada"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Error de sincronización"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Última sincronización: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sincronizando…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Toca para sincronizar ahora (<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronizar"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronización"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"No se puede sincronizar el dispositivo en este momento. Se restablecerá en breve."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguridad"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueo de pantalla"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ninguno"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Contraseña"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Elegir tipo de bloqueo"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opciones de bloqueo de pantalla"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opciones de bloqueo"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Introduce tu patrón"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirmar"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Crear un patrón nuevo"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Definir un bloqueo de pantalla"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Elige un PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Elige un patrón"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Elige una contraseña"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Elige tu contraseña"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Bloqueo de pantalla actual"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Por seguridad, establece un patrón"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Borrar"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"El administrador de TI bloquea las contraseñas comunes. Prueba a utilizar otra contraseña."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No se permite utilizar una secuencia ascendente, descendente ni repetida de dígitos."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opciones de bloqueo de pantalla"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : hace <xliff:g id="NUM_DAYS">%3$s</xliff:g> días"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Añadir dispositivo de confianza"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Dispositivos de confianza"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Tu <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> desbloqueará este coche cuando esté conectado. Si alguien coge tu <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, es posible que pueda acceder a este dispositivo"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Quitar dispositivo de confianza"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Listo"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Usa la aplicación complementaria para configurar un dispositivo de confianza. Una vez que lo hagas, podrás desbloquear tu perfil de usuario cuando el vehículo detecte el teléfono."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Descarga la aplicación complementaria en el teléfono"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecciona <xliff:g id="CAR_NAME">%1$s</xliff:g> en el teléfono para vincular los dispositivos"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock no puede detectar las funciones de seguridad de este dispositivo. Para proteger el coche, el dispositivo de confianza solo podrá mantenerlo desbloqueado una vez que lo hayas desbloqueado tú. El dispositivo de confianza puede mantener el coche desbloqueado si está cerca, aunque lo esté sujetado otra persona."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Añadir <xliff:g id="DEVICE_NAME">%1$s</xliff:g> como dispositivo de confianza"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> se ha añadido correctamente como dispositivo de confianza"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> no se ha podido registrar"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Para añadir un dispositivo de confianza, debes definir un método de autenticación. Si no tienes el dispositivo de confianza a mano, tendrás que realizar el proceso de autenticación para acceder a tu perfil."</string>
     <string name="forget" msgid="3971143908183848527">"Olvidar"</string>
+    <string name="connect" msgid="5861699594602380150">"Conectar"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Desconectar"</string>
     <string name="delete_button" msgid="5840500432614610850">"Eliminar"</string>
     <string name="remove_button" msgid="6664656962868194178">"Quitar"</string>
     <string name="cancel" msgid="750286395700355455">"Cancelar"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Salir del modo demostración"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Se eliminará la cuenta de demostración y se recuperarán los ajustes de fábrica del sistema. Se perderán todos los datos de usuario."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Salir de demostración"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"finalizar configuración"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ahora no"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"CERRAR"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Esta función no está disponible mientras conduces."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"No puedes añadir usuarios mientras conduces."</string>
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 00d4b77..f83a74b 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ekraani hämardamine, puuteekraan, aku"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ekraani hämardamine, öö, toon"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Öörežiim"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Võrk ja Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobiilsidevõrk"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiilne andmeside"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Andmesideühendus mobiilsidevõrgu abil"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Kas lülitada mobiilne andmeside välja?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Andmekasutus"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Andmekasutuse hoiatus ja piirang"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Rakenduse andmekasutuse tsükkel"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Määra andmekasutuse hoiatus"</string>
+    <string name="data_warning" msgid="116776633806885370">"Andmekasutuse hoiatus"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Määra andmekasutuse piirang"</string>
+    <string name="data_limit" msgid="227338836292511425">"Andmekasutuse piirang"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Andmekasutuse piiramine"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Kui määratud limiit on täis, lülitab sõiduki keskseade mobiilse andmeside välja.\n\nKuna andmekasutust mõõdab keskseade ja teie operaator võib kasutust teisiti arvestada, võiksite määrata konservatiivse limiidi."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"WiFi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Juhtmeta pääsupunktide seadistamine ja haldamine"</string>
     <string name="wifi_starting" msgid="473253087503153167">"WiFi sisselülitamine …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"WiFi väljalülitamine …"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"WiFi-võrkude loendi laadimine"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"WiFi on keelatud"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Võrgu unustamine ebaõnnestus"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Võrguühenduse loomine ebaõnnestus"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Lisa võrk"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"WiFi on keelatud"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Ühenda"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parool"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Kuva parool"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Võrgu nimi"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Sisestage SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Turvalisus"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signaali tugevus"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signaali tugevus"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Olek"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Lingi kiirus"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Sagedus"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-aadress"</string>
+    <string name="show_password" msgid="2074628020371139240">"Kuva parool"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Sisestage võrgu nimi"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Sisestage parool"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Kehv"</item>
-    <item msgid="2032262610626057081">"Rahuldav"</item>
-    <item msgid="3859756017461098953">"Hea"</item>
-    <item msgid="1521103743353335724">"Suurepärane"</item>
+    <item msgid="7683058295076342057">"Kehv"</item>
+    <item msgid="1639222824821660744">"Rahuldav"</item>
+    <item msgid="1838705897358163300">"Hea"</item>
+    <item msgid="6067166649320533751">"Suurepärane"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Lülita Bluetooth sisse"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth on keelatud"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbit/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Võrgu üksikasjad"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-aadress"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-aadress"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Alamvõrgu mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-aadressid"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Lüüs"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"WiFi-eelistused"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Lülita WiFi automaatselt sisse"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"WiFi lül. sisse kval. salv. võrkude, nt koduvõrgu läheduses"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Pole saadaval: asukoht on v. lülitatud. Lül. "<annotation id="link">"asukoht"</annotation>" sisse."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Kas lülitada WiFi-võrkude otsimine sisse?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Lülita sisse"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"WiFi-võrkude otsimine on sisse lülitatud"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Lülita automaatselt mobiilsele andmesidele"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Kui WiFi-l puudub Internetile juurdepääs, kasutatakse mobiilset andmesidet. Rakenduda võivad andmekasutustasud."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Lisateave"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Halda ühendusi, määra seadme nimi ja leitavus"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Arvuti"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Peakomplekt"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Pildindus"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Kõrvaklapid"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Sisestatud välisseade"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Seotud seadmed"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Saadaolevad seadmed"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Seotud seadmeid pole"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Saadaolevaid seadmeid pole"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Seotud seade"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nimi"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Kasutus:"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Muutke Bluetoothi seadme nime"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Nimetu seade"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Seotud seadmed"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Uue seadme sidumine"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth lülitatakse sidumiseks sisse"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Kas katkestada seadme ühendus?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Teie sõiduk katkestab ühenduse seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Sõiduki Bluetoothi aadress: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Seadme Bluetoothi aadress: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Sõiduki nimi"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Sõiduki ümbernimetamine"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Seadme ümbernimetamine"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Muuda nime"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Saadaolevad seadmed"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiilid"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetoothi sidumistaotlus"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Seo ja ühenda"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetoothi sidumiskood"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN-kood sisaldab tähti või sümboleid"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Sisestage sidumiskood ja vajutage seejärel sisestusklahvi"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Tavaliselt 0000 või 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Sidumistaotlus"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Puudutage seadmega <xliff:g id="DEVICE_NAME">%1$s</xliff:g> sidumiseks."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Keeled"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Keeled ja sisend"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Klaviatuur"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Klaviatuuride haldamine"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Kõnesünteesi väljund"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Eelistatud mootor"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Praegune mootor"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Kõne kiirus"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Helikõrgus"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Lähtesta"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Heli"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Helina helitugevus"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigatsiooni helitugevus"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Meedia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Määra muusika ja videote helitugevus"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Telefonihelin"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Märguande vaikeheli"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Alarmi vaikeheli"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Rakendused ja märguanded"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Kuva kõik rakendused"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Vaikerakendused"</string>
     <string name="applications_settings" msgid="794261395191035632">"Rakenduse teave"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Sundpeata"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Kas sundpeatada?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Kui sundpeatate rakenduse, võib see valesti käituda."</string>
     <string name="disable_text" msgid="4358165448648990820">"Keela"</string>
     <string name="enable_text" msgid="1794971777861881238">"Luba"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Desinstalli"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Selle rakenduse keelamisel ei pruugi Android ja muud rakendused enam ootuspäraselt töötada."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Keela rakendus"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Load"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versioon: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Lube ei antud"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Lube ei taotletud"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Andmekasutus"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Rakenduste andmekasutus"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Sundpeata"</string>
     <string name="computing_size" msgid="5791407621793083965">"Arvutamine …"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> täiendavat luba</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> täiendav luba</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Abirakendus ja häälsisend"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Abirakendus"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Ekraanil oleva teksti kasutamine"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Abirakendusele lubatakse ekraani sisule juurdepääs tekstina"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Ekraanipildi kasutamine"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Abirakendusele lubatakse juurdepääs ekraanipildile"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Automaattäite teenus"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Puudub"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Valitud"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Assistent saab teie süsteemis kasutatavate rakenduste kohta teavet (sh teie ekraanil kuvatud või rakendustes juurdepääsetavat teavet) lugeda."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Veenduge, et rakendus oleks usaldusväärne&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google\'i automaatne täitmine&gt;%1$s&lt;/xliff:g&gt; kasutab automaatse täitmise sisestuse määramiseks ekraanil kuvatut."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Lisa teenus"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Asukoht"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Hiljutised asukohapäringud"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ühtegi hiljutist asukohapäringut pole"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Rakendusetasemel load"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Skannimine"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Asukohateenused"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"WiFi-võrkude otsimine"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Lubage rakendustel ja teenustel alati otsida WiFi-võrke isegi siis, kui WiFi on väljas. Seda saab kasutada näiteks asukohapõhiste funktsioonide ja teenuste täiustamiseks."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetoothi otsimine"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Lubage rakendustel ja teenustel alati otsida läheduses olevaid seadmeid isegi siis, kui Bluetooth on väljas. Seda saab kasutada näiteks asukohapõhiste funktsioonide ja teenuste täiustamiseks."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Süsteem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Süsteemivärskendused"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Süsteemivärskendused"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Androidi versioon"</string>
     <string name="security_patch" msgid="4794276590178386903">"Androidi turvapaiga tase"</string>
     <string name="model_info" msgid="4966408071657934452">"Mudel"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Põhiribaversioon"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Tuuma versioon"</string>
     <string name="build_number" msgid="3997326631001009102">"Järgunumber"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetoothi aadress"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Pole saadaval"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Olek"</string>
     <string name="device_status" msgid="267298179806290920">"Olek"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Autoriõigus"</string>
     <string name="license_title" msgid="936705938435249965">"Litsents"</string>
     <string name="terms_title" msgid="5201471373602628765">"Nõuded ja tingimused"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Süsteemi WebView\' litsents"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Süsteemi WebView\' litsentsid"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Taustapildid"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satelliidipiltide pakkujad:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Kolmanda osapoole litsentsid"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Litsentside laadimisega on probleem."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Laadimine …"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> toimingut veel ja olete arendaja.</item>
+      <item quantity="one"><xliff:g id="STEP_COUNT_0">%1$d</xliff:g> toiming veel ja olete arendaja.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Olete nüüd arendaja!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Ei ole vaja, olete juba arendaja."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Arendaja valikud"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Valikute lähtestamine"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Võrgu, rakenduste või seadme lähtestamine"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Võrgu taastamine"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"See lähtestab kõik võrguseaded, sh järgmised:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"WiFi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobiilne andmeside"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Sõiduki kõigi eSIM-kaartide tühjendamine"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"See ei tühista teie teenusepaketti."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM-e ei saa lähtestada"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Võrgu valimine"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Lähtesta seaded"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Kas soovite lähtestada?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Kas lähtestada kõik võrguseaded? Seda toimingut ei saa tagasi võtta."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Lähtesta seaded"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Võrguseaded on lähtestatud"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Lähtesta rakenduse eelistused"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"See lähtestab kõik järgmised eelistused.\n\n"<li>"Keelatud rakendused"</li>\n<li>"Keelatud rakenduste märguanded"</li>\n<li>"Toimingute vaikerakendused"</li>\n<li>"Rakenduste taustaandmete piirangud"</li>\n<li>"Mis tahes lubade piirangud"</li>\n\n"Rakenduste andmed säilivad."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Lähtesta rakendused"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Rakenduse eelistused on lähtestatud"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Kustuta kõik andmed (tehases. lähtest.)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"See kustutab teie sõiduki keskseadmest kõik andmed, sh:\n\n"<li>"teie Google\'i konto;"</li>\n<li>"süsteemi ja rakenduste andmed ning seaded;"</li>\n<li>"allalaaditud rakendused."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Olete praegu sisse logitud järgmistele kontodele:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Selles sõidukis on teisi kasutajaid."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Lähtesta seade"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Kas soovite lähtestada?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Kas kustutada kõik teie isiklikud andmed ja allalaaditud rakendused? Seda toimingut ei saa tagasi võtta."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Kustuta kõik"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Kustutamine"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Oodake …"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Kuupäev ja kellaaeg"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Kuupäeva ja kellaaja määramine"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Määra kuupäev, kellaaeg, ajavöönd ja vormingud"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sordi ajavööndi järgi"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Kuupäev"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Aeg"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Kasutaja lisamine"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Lisa konto"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Kasutaja kustutamine"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Uus kasutaja"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Külaline"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administraator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sisse logitud administraatorina"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Kõik administraatoriload"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Määra administraatoriks"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Kasutaja saab kustutada teisi kasutajaid, sh administraatoreid, ja lähtestada süsteemi tehaseseadetele."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Seda toimingut ei saa tagasi võtta."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Jah, määra administraatoriks"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Uute kasutajate loomine"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefonikõnede tegemine"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Sõnumside auto mob. andmeside kaudu"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Uute rakenduste installimine"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Rakenduste desinstallimine"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Kasutaja lisamine"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Uus kasutaja"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Kas lisada uus kasutaja?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kui lisate uue kasutaja, siis peab ta seadistama oma ruumi."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Iga kasutaja saab rakendusi värskendada kõigi teiste kasutajate jaoks."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Kasutajate limiit on täis"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Luua saab kuni <xliff:g id="COUNT">%d</xliff:g> kasutajat.</item>
+      <item quantity="one">Luua saab ainult ühe kasutaja.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Uue kasutaja loomine ebaõnnestus"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Kas kustutada kasutaja?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Kõik rakendused ja andmed kustutatakse."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Kasutaja kustutamine ebaõnnestus."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Loobu"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Proovi uuesti"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Kas kustutada viimane kasutaja?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Pärast selle auto viimase allesjäänud kasutaja kustutamist luuakse uus administratiivkasutaja."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Kõik selle kasutajaga seotud andmed, seaded ja rakendused kustutatakse. Peate süsteemi uuesti seadistama."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Valige uus administraator"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Vajate vähemalt ühte administraatorit. Selle kustutamiseks valige mõni teine administraator."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Valige administraator"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Külaline"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Külaline"</string>
     <string name="user_switch" msgid="6544839750534690781">"Lüliti"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Teie (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nimi"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Pole seadistatud"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Kasutajanime muutmine"</string>
     <string name="users_list_title" msgid="770764290290240909">"Kasutajad"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Kasutajale %1$s antud load"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Kontod"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Kasutaja"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Lisa konto"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Kontosid pole lisatud"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Kasutaja <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> kontod"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sünkrooni andmed automaatselt"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Luba rakendustel andmeid automaatselt värskendada"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Kas lülitan sünkroonimise sisse?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Veebis kontodel tehtud muudatused kopeeritakse automaatselt teie tahvelarvutisse.\n\nMõned kontod võivad ka kõik tahvelarvutis tehtud muudatused automaatselt veebi kopeerida. Ka Google\'i konto töötab sel moel."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Kas lülitan sünkroonimise välja?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"See säästab andmemahtu, ent teil tuleb uusima teabe hankimiseks iga kontot käsitsi sünkroonida. Samuti ei saa te värskenduste korral märguandeid."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Konto teave"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Konto lisamine"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Konto lisamine"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Eemalda konto"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Kas eemaldada konto?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Selle konto eemaldamisel kustutatakse kõik seal olevad sõnumid, kontaktid ja muud seadmes olevad andmed."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Administraator on selle muudatuse keelanud"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Kas eemaldada kasutaja?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Kõik rakendused ja andmed kustutatakse."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Kasutaja eemaldamine ebaõnnestus."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Kas soovite veel proovida?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Loobu"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Proovi uuesti"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Kas lisada uus kasutaja?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kui lisate uue kasutaja, siis peab ta seadistama oma ruumi."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Iga kasutaja saab rakendusi värskendada kõigi teiste kasutajate jaoks."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Konto eemaldamine ebaõnnestus."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Konto sünkroonimine"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sünkroonimine on sisse lülitatud <xliff:g id="ID_1">%1$d</xliff:g> üksuse jaoks <xliff:g id="ID_2">%2$d</xliff:g>-st"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sünkroonimine on kõigi üksuste jaoks sisse lülitatud"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sünkroonimine on kõigi üksuste jaoks välja lülitatud"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sünkroonimine on VÄLJAS"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sünkroonimise viga"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Viimati sünkroonitud: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sünkroonimine …"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Puudutage nüüd sünkroonimiseks<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sünkrooni kohe"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Tühista sünkroonimine"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sünkroonimisega on praegu probleeme. See on varsti tagasi."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Turvalisus"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekraanilukk"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Puudub"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-kood"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Parool"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Luku tüübi valimine"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Ekraaniluku valikud"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Luku valikud"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Sisestage muster"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Kinnita"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Joonista uuesti"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ekraaniluku seadistamine"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Valige PIN-kood"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Mustri valimine"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Valige parool"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Valige parool"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Praegune ekraanilukk"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Turvalisuse huvides määrake muster"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Kustuta"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-administraator on levinud paroolid blokeerinud. Proovige muud parooli."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Kasvavad, kahanevad või korduvad numbrijadad on keelatud."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekraaniluku valikud"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> päeva tagasi"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Lisa usaldusväärne seade"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Usaldusv. seadmed"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> seadet</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> seade</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Teie <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> avab selle auto, kui need on omavahel ühendatud. Kui keegi võtab teie telefoni <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, on tal võimalik sellele seadmele juurde pääseda"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Kinnita"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Eemalda usaldusväärne seade"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Valmis"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Kasutage usaldusväärse seadme seadistamiseks kaasrakendust. Kui see on seadistatud, on teil võimalik avada oma kasutajaprofiil, kui sõiduk tuvastab teie telefoni"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Laadige oma telefonis alla kaasrakendus."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Tehke seadmete sidumiseks oma telefonis valik <xliff:g id="CAR_NAME">%1$s</xliff:g>."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ei suuda tuvastada selle seadme turvafunktsioone. Teie auto kaitsmiseks saab usaldusväärne seade teie auto avatuna hoida vaid siis, kui olete ise lukustuse tühistanud. Teie usaldusväärne seade võib hoida teie auto avatuna, kui see on läheduses, isegi kui see on kellegi teise käes."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> lisamine usaldusväärse seadmena"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> lisamine usaldusväärse seadmena õnnestus"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> registreerimine ebaõnnestus"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Usaldusväärse seadme lisamiseks peate hiljem määrama autentimismeetodi. Kui usaldusväärne seade pole teie käes, nõutakse teie profiilile juurdepääsemiseks autentimist."</string>
     <string name="forget" msgid="3971143908183848527">"Unusta"</string>
+    <string name="connect" msgid="5861699594602380150">"Ühenda"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Katkesta  ühendus"</string>
     <string name="delete_button" msgid="5840500432614610850">"Kustuta"</string>
     <string name="remove_button" msgid="6664656962868194178">"Eemalda"</string>
     <string name="cancel" msgid="750286395700355455">"Tühista"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demorežiimist väljumine"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"See kustutab demokonto ja lähtestab süsteemi tehaseandmetele. Kõik kasutajaandmed lähevad kaotsi."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Välju demorežimist"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"vii seadistus lõpule"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"mitte praegu"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"LOOBU"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funktsioon pole sõidu ajal saadaval."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Sõidu ajal ei saa kasutajat lisada."</string>
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 32f2ffb..7a71909 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ilundu pantaila, ukipen-pantaila, bateria"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"pantaila iluna, gaua, tonalitatea"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Gau modua"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Sareak eta Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Sare mugikorra"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datu-konexioa"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Atzitu datuak datu-konexioaren bidez"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Datu-konexioa desaktibatu nahi duzu?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Datuen erabilera"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Datuen erabileraren abisua eta muga"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Aplikazioen datuen erabilera-zikloa"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Ezarri datuen erabileraren abisua"</string>
+    <string name="data_warning" msgid="116776633806885370">"Datuen erabileraren abisua"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Ezarri datuen muga"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datuen muga"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Datuen erabilera mugatzea"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Ibilgailua ezarri duzun datuen mugara heltzen denean, ibilgailuaren gailu nagusiak datu-konexioa desaktibatuko du.\n\nIbilgailuaren gailu nagusiak datuen erabilera neurtzen du, baina baliteke operadoreak erabilera hori beste era batera neurtzea. Horregatik, muga zuhurra ezartzea gomendatzen dugu."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Konfiguratu eta kudeatu hari gabeko sarbide-puntuak"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi konexioa aktibatzen…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi konexioa desaktibatzen…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi sareen zerrenda kargatzen"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Desgaituta dago Wi‑Fi konexioa"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Ezin izan da ahaztu sarea"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Ezin izan da konektatu sarera"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Gehitu sarea"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Desgaituta dago Wi‑Fi konexioa"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Konektatu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Pasahitza"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Erakutsi pasahitza"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Sarearen izena"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Idatzi SSIDa"</string>
     <string name="wifi_security" msgid="158358046038876532">"Segurtasuna"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Seinalearen indarra"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Seinalearen indarra"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Egoera"</string>
-    <string name="wifi_speed" msgid="1650692446731850781">"Esteken abiadura"</string>
+    <string name="wifi_speed" msgid="1650692446731850781">"Lotura-abiadura"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Maiztasuna"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP helbidea"</string>
+    <string name="show_password" msgid="2074628020371139240">"Erakutsi pasahitza"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Idatzi sarearen izena"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Idatzi pasahitza"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Txarra"</item>
-    <item msgid="2032262610626057081">"Hala-holakoa"</item>
-    <item msgid="3859756017461098953">"Ona"</item>
-    <item msgid="1521103743353335724">"Bikaina"</item>
+    <item msgid="7683058295076342057">"Txarra"</item>
+    <item msgid="1639222824821660744">"Hala-holakoa"</item>
+    <item msgid="1838705897358163300">"Ona"</item>
+    <item msgid="6067166649320533751">"Bikaina"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth konexioa"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Aktibatu Bluetooth konexioa"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth konexioa"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth konexioa desgaituta dago"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Sarearen xehetasunak"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC helbidea"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP helbidea"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Azpisarearen maskara"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 helbideak"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Atebidea"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi hobespenak"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Aktibatu Wi-Fi konexioa automatikoki"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Gordetako kalitate handiko sare batetik (adibidez, etxeko saretik) gertu zaudenean aktibatuko da berriro Wi‑Fi konexioa"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Ez dago erabilgarri kokapena desaktibatuta dagoelako. Aktibatu "<annotation id="link">"kokapena"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi-Fi sareak bilatzeko aukera aktibatu nahi al duzu?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktibatu"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Aktibatu da Wi‑Fi sareak bilatzeko aukera"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Aldatu datu-konexiora automatikoki"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi bidez ezin denean, erabili datu-konexioa Internetera konektatzeko. Agian datuen erabilera ordaindu beharko duzu."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Lortu informazio gehiago"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth konexioa"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Kudeatu konexioak, eta ezarri gailuaren izena eta ikusgaitasuna"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Ordenagailua"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Entzungailua"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefonoa"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Irudietarako gailua"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Aurikularra"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Idazteko gailua"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth konexioa"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Parekatutako gailuak"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Gailu erabilgarriak"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Ez dago parekatutako gailurik"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Ez dago gailu erabilgarririk"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Parekatutako gailua"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Izena"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Erabilera"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Aldatu Bluetooth gailuaren izena"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Izenik gabeko gailua"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Parekatutako gailuak"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Parekatu beste gailu batekin"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth konexioa aktibatuko da parekatu ahal izateko"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Gailua deskonektatu nahi duzu?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailutik deskonektatuko da ibilgailua."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Ibilgailuaren Bluetooth helbidea: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Gailuaren Bluetooth helbidea: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Ibilgailuaren izena"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Aldatu ibilgailuaren izena"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Aldatu gailuaren izena"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Aldatu izena"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Gailu erabilgarriak"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profilak"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth bidez parekatzeko eskaera"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Parekatu eta konektatu"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth konexioa"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth parekatze-kodea"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN kodeak hizkiak edo ikurrak ditu"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Idatzi parekatze-kodea eta sakatu Itzuli edo Sartu"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Normalean 0000 edo 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Parekatzeko eskaera"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Sakatu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuarekin parekatzeko."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Hizkuntzak"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Hizkuntzak eta idazketa"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Teklatua"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Kudeatu teklatuak"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Testua ahots bihurtzeko eginbidearen emaitza"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor hobetsia"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Uneko motorra"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Hizketaren abiadura"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tonua"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Berrezarri"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Soinua"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Tonuaren bolumena"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Nabigazio-bolumena"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Multimedia-edukia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Ezarri musikaren eta bideoen bolumena"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarma"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Telefonoaren tonua"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Jakinarazpenen soinu lehenetsia"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Alarmen soinu lehenetsia"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikazioak eta jakinarazpenak"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Erakutsi aplikazio guztiak"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplikazio lehenetsiak"</string>
     <string name="applications_settings" msgid="794261395191035632">"Aplikazioaren informazioa"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Behartu gelditzera"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Gelditzera behartu nahi duzu?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Aplikazioak gelditzera behartzen badituzu, baliteke behar bezala ez funtzionatzea."</string>
     <string name="disable_text" msgid="4358165448648990820">"Desgaitu"</string>
     <string name="enable_text" msgid="1794971777861881238">"Gaitu"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Desinstalatu"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Aplikazioa desgaitzen baduzu, baliteke Android-ek eta beste aplikazio batzuek behar bezala ez funtzionatzea."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desgaitu aplikazioa"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Baimenak"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Bertsioa: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ez du baimenik"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ez du eskatu baimenik"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datuen erabilera"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Aplikazioen datuen erabilera"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Behartu gelditzera"</string>
     <string name="computing_size" msgid="5791407621793083965">"Kalkulatzen…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> baimen gehigarri</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> baimen gehigarri</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Laguntza eta ahozko idazketa"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Laguntza-aplikazioa"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Erabili pantailako testua"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Eman pantailako edukia testu gisa atzitzeko baimena laguntza-aplikazioari"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Erabili pantaila-argazkia"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Eman pantailako irudia atzitzeko baimena laguntza-aplikazioari"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Betetze automatikoaren zerbitzua"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Bat ere ez"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Hautatuta"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Zure sistemak darabiltzan aplikazioei buruzko informazioa irakurri ahal izango du laguntzaileak, besteak beste, pantailan ikusgai duzun edo aplikazioetatik atzi daitekeen informazioa."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Ziurtatu aplikazioa fidagarria dela&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google-ren betetze automatikoak&gt;%1$s&lt;/xliff:g&gt; pantailan dagoena erabiltzen du automatikoki bete daitekeena zehazteko."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Gehitu zerbitzua"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Kokapena"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Azken kokapen-eskaerak"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ez da egin kokapen-eskaerarik azkenaldian"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Aplikazio-mailako baimenak"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Bilaketa"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Kokapen-zerbitzuak"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi sareak bilatzea"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Baimendu aplikazioei eta zerbitzuei Wi-Fi sareak edozein unetan bilatzea, baita Wi‑Fi konexioa desaktibatuta dagoenean ere. Kokapenean oinarritutako eginbideak eta zerbitzuak hobetzeko erabil daiteke hori, besteak beste."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth gailuak bilatzea"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Baimendu aplikazioei eta zerbitzuei inguruko gailuak edozein unetan bilatzea, baita Bluetooth konexioa desaktibatuta dagoenean ere. Kokapenean oinarritutako eginbideak eta zerbitzuak hobetzeko erabil daiteke hori, besteak beste."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Sistemaren eguneratzeak"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Sistemaren eguneratzeak"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android bertsioa"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android segurtasun-adabakiaren maila"</string>
     <string name="model_info" msgid="4966408071657934452">"Modeloa"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Oinarri-bandaren bertsioa"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel bertsioa"</string>
     <string name="build_number" msgid="3997326631001009102">"Konpilazio-zenbakia"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth helbidea"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Ez dago erabilgarri"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Egoera"</string>
     <string name="device_status" msgid="267298179806290920">"Egoera"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyrighta"</string>
     <string name="license_title" msgid="936705938435249965">"Lizentzia"</string>
     <string name="terms_title" msgid="5201471373602628765">"Zehaztapenak eta baldintzak"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Sistemaren WebView lizentzia"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Sistemaren WebView lizentziak"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Horma-paperak"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satelite-irudien hornitzaileak:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Hirugarrenen lizentziak"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Arazo bat gertatu da lizentziak kargatzean."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Kargatzen…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> urrats falta zaizkizu garatzaile izateko.</item>
+      <item quantity="one"><xliff:g id="STEP_COUNT_0">%1$d</xliff:g> urrats falta zaizu garatzaile izateko.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Garatzailea zara!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Ez dago zertan, dagoeneko zara garatzaile."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Garatzaileentzako aukerak"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Berrezartzeko aukerak"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Sarea, aplikazioak edo gailua berrezartzea"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Berrezarri sarea"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Sareko ezarpen guztiak berrezarriko dira; besteak beste:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi konexioa"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Datu-konexioa"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth konexioa"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Ezabatu ibilgailuaren eSIM txarteletako eduki guztia"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Ez da utziko bertan behera daukazun zerbitzu-plana."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Ezin dira berrezarri eSIM txartelak"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Hautatu sarea"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Berrezarri ezarpenak"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Berrezarri egin nahi dituzu?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Sareko ezarpen guztiak berrezarri nahi dituzu? Ezin da desegin ekintza hori."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Berrezarri ezarpenak"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Berrezarri dira sareko ezarpenak"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Berrezarri aplikazioen hobespenak"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Hauen hobespen guztiak berrezarriko dira:\n\n"<li>"desgaitutako aplikazioak,"</li>\n<li>"desgaitutako aplikazio-jakinarazpenak,"</li>\n<li>"ekintza jakinetarako aplikazio lehenetsiak,"</li>\n<li>"aplikazioen atzeko planoko datuen murriztapenak eta"</li>\n<li>"baimen-murriztapenak."</li>\n\n"Ez dituzu galduko aplikazioen datuak."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Berrezarri aplikazioak"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Berrezarri dira aplikazioen hobespenak"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Ezabatu datuak (berrezarri jatorrizkoak)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Ibilgailuaren gailu nagusiko datu guztiak ezabatuko dira, honako hauek barne:\n\n"<li>"Google kontua,"</li>\n<li>"sistemaren eta aplikazioen datuak eta ezarpenak,"</li>\n<li>"deskargatutako aplikazioak."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Kontu hauetan hasi duzu saioa:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Beste erabiltzaile batzuk daude ibilgailu honetan."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Berrezarri ibilgailua"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Berrezarri egin nahi dituzu?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Informazio pertsonal guztia eta deskargatutako aplikazioak ezabatu nahi dituzu? Ekintza hori ezin da desegin."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Ezabatu eduki guztia"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Eduki guztia ezabatzen"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Itxaron, mesedez…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data eta ordua"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Ezarri data eta ordua"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Ezarri data, ordua, ordu-zona eta formatuak"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Ordenatu ordu-zonaren arabera"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Ordua"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Gehitu erabiltzailea"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Gehitu kontua"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Ezabatu erabiltzailea"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Erabiltzaile berria"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gonbidatua"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administratzailea"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Administratzaile gisa hasi da saioa"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Administratzaile-baimen guztiak"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Egin administratzaile"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Erabiltzaile horrek beste erabiltzaileak ezabatu ahal izango ditu (beste administratzaileak barne), eta sistemako jatorrizko datuak berrezarri."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Ekintza hau ezingo da desegin."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Bai, egin administratzaile"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Erabiltzaile berriak sortu"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefono-deiak egin"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Autoko datu-konexioa mezuetarako"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Aplikazio berriak instalatu"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Aplikazioak desinstalatu"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Gehitu erabiltzailea"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Erabiltzaile berria"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Beste erabiltzaile bat gehitu?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Erabiltzaile bat gehitzen duzunean, bere eremua konfiguratu beharko du."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Edozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Erabiltzaile-mugara iritsi zara"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Gehienez, <xliff:g id="COUNT">%d</xliff:g> erabiltzaile sor ditzakezu.</item>
+      <item quantity="one">Erabiltzaile bakarra sor dezakezu.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Ezin izan da sortu erabiltzailea"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Erabiltzaile hau ezabatu?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Aplikazio eta datu guztiak ezabatuko dira."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Ezin izan da ezabatu erabiltzailea."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Baztertu"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Saiatu berriro"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Azken erabiltzailea ezabatu?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Auto honetako azken erabiltzailea ezabatu ondoren, beste administratzaile bat sortuko da."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Erabiltzaile honekin erlazionatutako datu, ezarpen eta aplikazio guztiak ezabatu egingo dira. Berriro konfiguratu beharko duzu sistema."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Aukeratu beste administratzaile bat"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Gutxienez administratzaile bat behar duzu. Honako hau ezabatzeko, aukeratu ordezko bat."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Aukeratu administratzailea"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gonbidatua"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gonbidatua"</string>
     <string name="user_switch" msgid="6544839750534690781">"Aldatu"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Zu (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Izena"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Konfiguratu gabe"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Editatu erabiltzaile-izena"</string>
     <string name="users_list_title" msgid="770764290290240909">"Erabiltzaileak"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s erabiltzailearen baimenak"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Kontuak"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Erabiltzailea"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Gehitu kontua"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Ez da gehitu konturik"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> erabiltzailearen kontuak"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sinkronizatu datuak automatikoki"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Utzi aplikazioei datuak automatikoki freskatzen"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Sinkronizazio automatikoa aktibatu nahi duzu?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Kontuei sarean egiten dizkiezun aldaketa guztiak automatikoki kopiatuko dira gailuan.\n\nHorrez gain, baliteke kontu batzuek sarean kopiatzea telefonoan egiten dituzun aldaketak. Google kontuek horrela funtzionatzen dute."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Sinkronizazio automatikoa desaktibatu nahi duzu?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Datuak aurrezten lagunduko dizu, baina kontu bakoitza eskuz sinkronizatu beharko duzu informazio berriena biltzeko. Gainera, ez duzu jasoko berritasunen jakinarazpenik."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Kontuaren informazioa"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Gehitu kontua"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Gehitu kontu bat"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Kendu kontua"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Kontua kendu nahi duzu?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Kontua kentzen baduzu, bertako mezu, kontaktu eta bestelako datu guztiak ezabatuko dira gailutik."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Administratzaileak ez du eman aldaketa egiteko baimena"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Erabiltzaile hau kendu?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Aplikazio eta datu guztiak ezabatuko dira."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Ezin izan da kendu erabiltzailea."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Berriro saiatu?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Baztertu"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Saiatu berriro"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Beste erabiltzaile bat gehitu?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Erabiltzaile bat gehitzen duzunean, bere eremua konfiguratu beharko du."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Edozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Ezin izan da kendu kontua."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Kontuaren sinkronizazioa"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g> elementuk aktibatuta dute sinkronizazioa"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Elementu guztiek aktibatuta dute sinkronizazioa"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Elementu guztiek desaktibatuta dute sinkronizazioa"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinkroniz. DESAKTIBATUTA"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sinkronizazio-errorea"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Azken sinkronizazioa: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sinkronizatzen…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Sakatu sinkronizatzeko (<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinkronizatu"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Utzi sinkronizazioa"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sinkronizazioak arazoak ditu. Laster egongo da berriro erabilgarri."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Segurtasuna"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Pantailaren blokeoa"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Bat ere ez"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN kodea"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Pasahitza"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Aukeratu blokeo mota"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Pantaila blokeatzeko aukerak"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Blokeatzeko aukerak"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Marraztu eredua"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Berretsi"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Marraztu berriro"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ezarri pantailaren blokeo bat"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Aukeratu PIN kodea"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Aukeratu eredu bat"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Aukeratu pasahitza"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Aukeratu pasahitza"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Uneko pantailaren blokeoa"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Babestuta egoteko, ezarri eredu bat"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Garbitu"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IKT administratzaileak blokeatu egiten ditu asmatzen errazak diren pasahitzak. Erabili beste pasahitz bat."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ezin da erabili goranzko, beheranzko edo errepikatutako digitu-sekuentziarik."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Pantaila blokeatzeko aukerak"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: duela <xliff:g id="NUM_DAYS">%3$s</xliff:g> egun"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Gehitu gailu fidagarria"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Gailu fidagarriak"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> gailu</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> gailu</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> gailuak autoa desblokeatuko du konektatzen denean. Beste norbaitek <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> autoa hartzen badu, agian gailua atzitu ahal izango du."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Berretsi"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Kendu gailu fidagarria"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Eginda"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Erabili aplikazio osagarria gailu fidagarri bat konfiguratzeko. Konfiguratu ondoren, erabiltzaile-profila desblokeatu ahalko duzu ibilgailuak zure telefonoa hautematen duenean"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Deskargatu aplikazio osagarria telefonoan"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Gailuak parekatzeko, hautatu <xliff:g id="CAR_NAME">%1$s</xliff:g> telefonoan"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock eginbideak ezin ditu hauteman gailu honen segurtasun-eginbideak. Autoa babesteko, zeuk desblokeatzen baduzu bakarrik mantendu ahal izango du gailu fidagarriak autoa desblokeatuta. Gailu fidagarria gai da autoa desblokeatuta mantentzeko elkarrengandik hurbil daudenean, baita gailua darabilena zeu ez bazara ere."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Gehitu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailu fidagarri gisa"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gehitu da gailu fidagarri gisa"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuaren harpidetzeak huts egin du"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Gailu fidagarri bat gehitzen baduzu, autentifikazio-metodo bat ezartzea izango da hurrengo urratsa. Ez badaukazu gailu fidagarririk gertu, sistemak autentifikatzeko eskatuko dizu profila atzitzen duzunean."</string>
     <string name="forget" msgid="3971143908183848527">"Ahaztu"</string>
+    <string name="connect" msgid="5861699594602380150">"Konektatu"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Deskonektatu"</string>
     <string name="delete_button" msgid="5840500432614610850">"Ezabatu"</string>
     <string name="remove_button" msgid="6664656962868194178">"Kendu"</string>
     <string name="cancel" msgid="750286395700355455">"Utzi"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Irten demo modutik"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Demo kontua ezabatuko da eta sistemaren jatorrizko datuak berrezarriko dira. Erabiltzaile-datu guztiak galdu egingo dira."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Irten demo modutik"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"amaitu konfiguratzen"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"orain ez"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"BAZTERTU"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Eginbide hau ezin da erabili gidatu bitartean."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Gidatu bitartean ezin da gehitu erabiltzailerik."</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index c9d726c..f1cef7a 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"صفحه کم‌نور، صفحه لمسی، باتری"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"صفحه کم‌نور، شب، سایه‌رنگ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"حالت شب"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"شبکه و اینترنت"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"شبکه تلفن همراه"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"داده تلفن همراه"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"دسترسی به داده‌ها با استفاده از شبکه تلفن همراه"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"داده تلفن همراه خاموش شود؟"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"مصرف داده"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"محدودیت و هشدار داده"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"دوره مصرف داده برنامه"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"تنظیم هشدار داده"</string>
+    <string name="data_warning" msgid="116776633806885370">"هشدار داده"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"تنظیم محدودیت داده"</string>
+    <string name="data_limit" msgid="227338836292511425">"محدودیت داده"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"محدود کردن مصرف داده"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"وقتی داده تلفن همراهتان به محدودیتی که تنظیم کرده‌اید برسد، سیستم صوتی خودروی شما خاموش خواهد شد.\n\nاز آنجایی‌که سیستم صوتی شما مصرف داد‌ه را محاسبه می‌کند و ممکن است شرکت مخابراتی‌تان مصرف داده را به روش دیگری محاسبه کند، سعی کنید محدودیت محافظه‌کارانه‌ای تنظیم کنید."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"تنظیم و مدیریت نقاط دسترسی بی‌سیم"</string>
     <string name="wifi_starting" msgid="473253087503153167">"روشن کردن Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"خاموش کردن Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"درحال بارگیری فهرست Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi غیرفعال شد"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"شبکه فراموش نشد"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"اتصال به شبکه برقرار نشد"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"افزودن شبکه"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi غیرفعال شد"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"اتصال"</string>
     <string name="wifi_password" msgid="5565632142720292397">"گذرواژه"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"نمایش گذرواژه"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"نام شبکه"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID را وارد کنید"</string>
     <string name="wifi_security" msgid="158358046038876532">"امنیت"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"قدرت سیگنال"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"قدرت سیگنال"</string>
     <string name="wifi_status" msgid="5688013206066543952">"وضعیت"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"سرعت پیوند"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"فرکانس"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"نشانی IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"نمایش گذرواژه"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"نام شبکه را وارد کنید"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"گذرواژه را وارد کنید"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ضعیف"</item>
-    <item msgid="2032262610626057081">"متوسط"</item>
-    <item msgid="3859756017461098953">"خوب"</item>
-    <item msgid="1521103743353335724">"عالی"</item>
+    <item msgid="7683058295076342057">"ضعیف"</item>
+    <item msgid="1639222824821660744">"متوسط"</item>
+    <item msgid="1838705897358163300">"خوب"</item>
+    <item msgid="6067166649320533751">"عالی"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"بلوتوث"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"روشن کردن بلوتوث"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"بلوتوث"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"بلوتوث غیرفعال است"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d مگابیت در ثانیه"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"۲٫۴ گیگاهرتز"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"۵ گیگاهرتز"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"جزئیات شبکه"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"نشانی MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"نشانی IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"پوشش زیرشبکه"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"نشانی‌های IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"دروازه"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"اولویت‌های Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"روشن شدن خودکار Wi-Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi درنزدیکی شبکه‌های با کیفیت بالای ذخیره‌شده (ازجمله شبکه خانه‌تان) دوباره روشن می‌شود"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"در دسترس نیست چون «مکان» خاموش است. "<annotation id="link">"مکان"</annotation>" را روشن کنید."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"اسکن کردن Wi‑Fi روشن شود؟"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"روشن کردن"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"اسکن کردن Wi-Fi روشن شد"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"تغییر وضعیت خودکار به داده تلفن همراه"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"وقتی Wi-Fi به اینترنت دسترسی ندارد، از داده تلفن همراه استفاده شود. ممکن است هزینه مصرف داده اعمال شود."</string>
+    <string name="learn_more" msgid="8214605928933358604">"بیشتر بدانید"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"بلوتوث"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"مدیریت اتصال‌ها، تنظیم نام دستگاه و قابلیت شناسایی"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"رایانه"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"هدست"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"تلفن"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"تصویربرداری"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"هدفون"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ورودی محیطی"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"بلوتوث"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"دستگاه‌های مرتبط‌شده"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"دستگاه‌های در دسترس"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"دستگاه مرتبطی وجود ندارد"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"دستگاهی در دسترس نیست"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"دستگاه مرتبط‌شده"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"نام"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"استفاده برای"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"نام دستگاه بلوتوث را تغییر دهید"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"دستگاه بی‌نام"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"دستگاه‌های مرتبط‌شده"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"مرتبط‌ کردن دستگاه جدید"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"بلوتوث برای مرتبط شدن روشن خواهد شد"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ارتباط دستگاه قطع شود؟"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"ارتباط خودرو از <xliff:g id="DEVICE_NAME">%1$s</xliff:g> قطع می‌شود."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"نشانی بلوتوث خودرو: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"نشانی بلوتوث دستگاه: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"نام خودرو"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"تغییر نام این خودرو"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"تغییر نام دستگاه"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"تغییر نام"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"دستگاه‌های دردسترس"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"نمایه‌ها"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"درخواست مرتبط‌سازی بلوتوث"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"مرتبط‌ کردن و اتصال"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"بلوتوث"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"کد مرتبط‌سازی بلوتوث"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"پین شامل حروف یا نماد است"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"کد مرتبط‌سازی را وارد کنید سپس بازگشت یا Enter را فشار دهید"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"معمولا ۰۰۰۰ یا ۱۲۳۴"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"درخواست مرتبط‌سازی"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"برای مرتبط‌سازی با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ضربه بزنید."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"زبان‌ها"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"زبان‌ها و ورودی"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"صفحه‌کلید"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"مدیریت صفحه‌کلیدها"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"خروجی تبدیل نوشتار به گفتار"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"موتور ترجیحی"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"موتور کنونی"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"سرعت گفتار"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"زیر و بمی صدا"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"بازنشانی"</string>
     <string name="sound_settings" msgid="3072423952331872246">"صدا"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"بلندی صدای زنگ"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"میزان صدای مسیریابی"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"رسانه"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"تنظیم میزان صدا برای موسیقی و ویدیو"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"هشدار"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"آهنگ زنگ تلفن"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"صدای اعلان پیش‌فرض"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"صدای زنگ پیش‌فرض"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"برنامه‌ها و اعلان‌ها"</string>
+    <string name="all_applications" msgid="7798210477486822168">"نمایش همه برنامه‌ها"</string>
+    <string name="default_applications" msgid="1558183275638697087">"برنامه‌های پیش‌فرض"</string>
     <string name="applications_settings" msgid="794261395191035632">"اطلاعات برنامه"</string>
+    <string name="force_stop" msgid="2153183697014720520">"توقف اجباری"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"توقف اجباری؟"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"توقف اجباری یک برنامه ممکن است باعث عملکرد نادرست آن شود."</string>
     <string name="disable_text" msgid="4358165448648990820">"غیرفعال کردن"</string>
     <string name="enable_text" msgid="1794971777861881238">"فعال کردن"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"حذف نصب"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"اگر این برنامه را غیرفعال کنید، ممکن است Android و سایر برنامه‌ها دیگر عملکرد موردانتظار را نداشته باشند."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"غیرفعال کردن برنامه"</string>
     <string name="permissions_label" msgid="2701446753515612685">"مجوزها"</string>
     <string name="application_version_label" msgid="8556889839783311649">"نسخه: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"اجازه‌ای داده نشده"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"اجازه‌ای درخواست نشده"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"مصرف داده"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"مصرف داده برنامه"</string>
-    <string name="force_stop" msgid="2153183697014720520">"توقف اجباری"</string>
     <string name="computing_size" msgid="5791407621793083965">"درحال محاسبه..."</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> مجوز دیگر</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> مجوز دیگر</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"همیار و ورودی گفتاری"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"برنامه همیار"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"استفاده از نوشتار صفحه"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"اجازه به برنامه همیار برای دسترسی به محتوای صفحه به‌عنوان نوشتار"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"استفاده از عکس صفحه‌نمایش"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"اجازه به برنامه همیار برای دسترسی به تصویری از صفحه"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"سرویس تکمیل خودکار"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"هیچ‌کدام"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"انتخاب‌شده"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"دستیار می‌تواند اطلاعات مربوط به برنامه‌های در حال استفاده در سیستم شما را بخواند، ازجمله اطلاعاتی که در صفحه‌نمایش شما قابل مشاهده است یا در برنامه‌ها قابل دسترسی است."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;مطمئن شوید به این برنامه اطمینان دارید&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=تکمیل خودکار Google‏&gt;%1$s&lt;/xliff:g&gt; برای تعیین مواردی که می‌توانند به‌طور خودکار تکمیل شوند، از آنچه روی صفحه‌نمایش شما است استفاده می‌کند."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"افزودن سرویس"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"مکان"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"درخواست‌های اخیر مکان"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"درخواست مکان جدیدی وجود ندارد"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"مجوزهای سطح برنامه"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"اسکن کردن"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"خدمات مکان"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"اسکن کردن Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"به برنامه‌ها و سرویس‌ها اجازه دهید درهر زمانی (حتی وقتی Wi‑Fi خاموش است) شبکه‌های Wi‑Fi را اسکن کنند. برای مثال این مورد مي‌تواند برای بهبود ویژگی‌ها و سرویس‌های مکان‌مبنا استفاده شود."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"اسکن کردن بلوتوث"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"به برنامه‌ها و سرویس‌ها اجازه دهید درهر زمانی (حتی وقتی «بلوتوث» خاموش است) دستگاه‌های اطراف را اسکن کنند. برای مثال این مورد مي‌تواند برای بهبود ویژگی‌ها و سرویس‌های مکان‌مبنا استفاده شود."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"سیستم"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"به‌روزرسانی‌های سیستم"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"به‌روزرسانی‌های سیستم"</string>
     <string name="firmware_version" msgid="8491753744549309333">"نسخه Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"سطح وصله امنیتی Android"</string>
     <string name="model_info" msgid="4966408071657934452">"مدل"</string>
     <string name="baseband_version" msgid="2370088062235041897">"نسخه باند پایه"</string>
     <string name="kernel_version" msgid="7327212934187011508">"نسخهٔ اصلی"</string>
     <string name="build_number" msgid="3997326631001009102">"شمارهٔ ساخت"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"نشانی بلوتوث"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"در دسترس نیست"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"وضعیت"</string>
     <string name="device_status" msgid="267298179806290920">"وضعیت"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"حق نسخه‌برداری"</string>
     <string name="license_title" msgid="936705938435249965">"مجوز"</string>
     <string name="terms_title" msgid="5201471373602628765">"شرایط و مقررات"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"مجوز وب‌نمای سیستم"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"مجوزهای «وب‌نمای» سیستم"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"کاغذدیواری"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ارائه‌دهندگان تصویر ماهواره‌ای:\n©2014 CNES / Astrium،‏ DigitalGlobe،‏ Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"مجوزهای شخص ثالث"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"مشکلی در بارگیری مجوزها وجود دارد."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"درحال بار کردن…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">اکنون <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> قدم تا برنامه‌نویس شدن فاصله دارید.</item>
+      <item quantity="other">اکنون <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> قدم تا برنامه‌نویس شدن فاصله دارید.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"شما اکنون یک برنامه‌نویس هستید!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"نیازی نیست، شما اکنون برنامه‌نویس هستید."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"گزینه‌های تولیدکننده"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"بازنشانی گزینه‌ها"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"شبکه، برنامه‌ها یا بازنشانی دستگاه"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"بازنشانی شبکه"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"با این کار همه تنظیمات شبکه بازنشانی می‌شود، ازجمله:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"داده تلفن همراه"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"بلوتوث"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"پاک کردن همه سیم‌کارت‌های داخلی خودرو"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"با این کار طرح سرویستان لغو نمی‌شود."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"نمی‌توان سیم‌کارت‌های داخلی را بازنشانی کرد"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"انتخاب شبکه"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"بازنشانی تنظیمات"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"بازنشانی شود؟"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"همه تنظیمات شبکه بازنشانی شود؟ امکان واگرد این کار وجود ندارد!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"بازنشانی تنظیمات"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"تنظیمات شبکه بازنشانی شد"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"بازنشانی تنظیمات برگزیده برنامه"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"با این کار همه اولویت‌های مربوط به موارد زیر بازنشانی می‌شود:\n\n"<li>"برنامه‌های غیرفعال‌شده"</li>\n<li>"اعلان‌های برنامه غیرفعال‌شده"</li>\n<li>"برنامه‌های پیش‌فرض برای عملکردها"</li>\n<li>"محدودیت‌های داده پس‌زمینه برای برنامه‌ها"</li>\n<li>"هرگونه محدودیت مجوز"</li>\n\n"هیچ داده برنامه‌ای را از دست نخواهید داد."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"بازنشانی برنامه‌ها"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"تنظیمات برگزیده برنامه بازنشانی شده است"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"پاک کردن همه داده‌ها (بازنشانی کارخانه‌ای)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"با این کار، همه داده‌های سیستم صوتی خودرو، ازجمله موارد زیر پاک می‌شود:\n\n"<li>"حساب Google شما"</li>\n<li>"تنظیمات و داده‌های برنامه و سیستم"</li>\n<li>"برنامه‌های بارگیری‌شده"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"شما درحال‌حاضر به حساب های زیر وارد شده‌اید:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"کاربرانی دیگری هم در این خودرو حضور دارند."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"بازنشانی خودرو"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"بازنشانی شود؟"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"همه اطلاعات شخصی و برنامه‌های بارگیری‌شده پاک شود؟ این کار قابل‌واگرد نیست!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"پاک کردن همه موارد"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"درحال پاک‌سازی"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"لطفاً صبر کنید..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"تاریخ و زمان"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"تنظیم تاریخ و زمان"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"تنظیم تاریخ، ساعت، منطقه زمانی و قالب‌ها"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"به ترتیب منطقه زمانی"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"تاریخ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"زمان"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"افزودن کاربر"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"افزودن حساب"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"حذف کاربر"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"کاربر جدید"</string>
-    <string name="user_guest" msgid="3465399481257448601">"مهمان"</string>
     <string name="user_admin" msgid="1535484812908584809">"سرپرست"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"به‌عنوان سرپرست به سیستم وارد شدید"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"همه مجوزهای سرپرست"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"انتخاب به‌عنوان سرپرست"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"این کاربر می‌تواند کاربران (ازجمله سرپرستان دیگر) را حذف کند و سیستم را بازنشانی کارخانه‌ای کند."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"این اقدام برگشت‌پذیر نیست."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"بله، سرپرست شود"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"ایجاد کاربران جدید"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"برقراری تماس‌های تلفنی"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"پیام‌رسانی با داده تلفن همراه خودرو"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"نصب برنامه‌های جدید"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"حذف نصب برنامه‌ها"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"افزودن کاربر"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"کاربر جدید"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"کاربر جدیدی اضافه می‌کنید؟"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"وقتی کاربر جدیدی اضافه می‌کنید آن فرد باید فضای خودش را تنظیم کند."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"هر کاربری می‌تواند برنامه‌ها را برای همه کاربران دیگر به‌روزرسانی کند."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"به حداکثر کاربر مجاز رسیده است"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">می‌توانید تا <xliff:g id="COUNT">%d</xliff:g> کاربر ایجاد کنید.</item>
+      <item quantity="other">می‌توانید تا <xliff:g id="COUNT">%d</xliff:g> کاربر ایجاد کنید.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"کاربر جدید ایجاد نشد"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"این کاربر حذف شود؟"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"همه برنامه‌ها و داده‌ها حذف خواهد شد."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"کاربر حذف نشد."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"نپذیرفتن"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"امتحان مجدد"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"آخرین کاربر حذف شود؟"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"بعد از حذف تنها کاربر باقی‌ماندهٔ این خودرو، کاربرِ سرپرست جدیدی ایجاد خواهد شد."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"همه داده‌ها، تنظیمات، و برنامه‌های مرتبط با این کاربر حذف می‌شود. باید سیستم را دوباره راه‌‌اندازی کنید."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"انتخاب سرپرست جدید"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"حداقل یک سرپرست لازم دارید. برای حذف این سرپرست، ابتدا جایگزینی انتخاب کنید."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"انتخاب سرپرست"</string>
+    <string name="user_guest" msgid="3465399481257448601">"مهمان"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"مهمان"</string>
     <string name="user_switch" msgid="6544839750534690781">"جابه‌جایی"</string>
     <string name="current_user_name" msgid="3813671533249316823">"شما (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"نام"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"تنظیم نشده"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"ویرایش نام کاربر"</string>
     <string name="users_list_title" msgid="770764290290240909">"کاربران"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"مجوزها به %1$s داده شد"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"حساب‌ها"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"کاربر"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"افزودن حساب"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"حسابی اضافه نشده است"</string>
     <string name="account_list_title" msgid="7631588514613843065">"حساب‌های <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"همگام‌سازی خودکار داده‌ها"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"اجازه دادن به برنامه‌ها برای بازخوانی خودکار داده‌ها"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"همگام‌سازی خودکار داده روشن شود؟"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"هر تغییری که در حساب‌هایتان در وب بدهید، به‌طور خودکار در دستگاهتان کپی می‌شود.\n\nبرخی حساب‌ها هم ممکن است به‌طور خودکار هر تغییری را که در تلفنتان می‌دهید در وب کپی کنند. حساب Google به‌این‌صورت کار می‌کند."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"همگام‌سازی خودکار داده خاموش شود؟"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"با این کار از داده‌ها محافظت می‌شود، اما برای جمع‌آوری اطلاعات اخیر باید همه حساب‌ها را به‌طور دستی همگام‌سازی کنید. درصورت به‌روزرسانی نیز اعلان دریافت نمی‌کنید."</string>
     <string name="account_details_title" msgid="7529571432258448573">"اطلاعات حساب"</string>
     <string name="add_account_title" msgid="5988746086885210040">"افزودن حساب"</string>
     <string name="add_an_account" msgid="1072285034300995091">"افزودن حساب"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"حذف حساب"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"حساب برداشته شود؟"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"با پاک کردن این حساب، همه پیام‌ها، مخاطبین و داده‌های دیگر از دستگاه حذف خواهد شد!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"سرپرست سیستم شما این تغییر را مجاز نمی‌داند"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"این کاربر حذف شود؟"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"همه برنامه‌ها و اطلاعات حذف خواهند شد."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"کاربر حذف نشد."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"امتحان مجدد؟"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"نپذیرفتن"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"امتحان مجدد"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"کاربر جدیدی اضافه می‌کنید؟"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"وقتی کاربر جدیدی اضافه می‌کنید آن فرد باید فضای خودش را تنظیم کند."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"هر کاربری می‌تواند برنامه‌ها را برای همه کاربران دیگر به‌روزرسانی کند."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"حساب برداشته نشد."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"همگام‌سازی حساب"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"همگام‌سازی <xliff:g id="ID_1">%1$d</xliff:g> مورد از <xliff:g id="ID_2">%2$d</xliff:g> مورد روشن است"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"همگام‌سازی همه موارد روشن است"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"همگام‌سازی همه موارد خاموش است"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"همگام‌سازی خاموش است"</string>
+    <string name="sync_error" msgid="6698021343089247914">"خطای همگام‌سازی"</string>
+    <string name="last_synced" msgid="4745124489150101529">"تاریخ آخرین همگام‌سازی: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"در حال همگام‌سازی…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"برای اینکه اکنون همگام‌سازی کنید، ضربه بزنید<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"اکنون همگام‌سازی شود"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"لغو همگام‌سازی"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"همگام‌سازی درحال حاضر با مشکلی روبرو است. به‌زودی درست خواهد شد."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"امنیت"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"قفل صفحه"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"هیچ‌کدام"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"پین"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"گذرواژه"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"انتخاب نوع قفل"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"گزینه‌های قفل صفحه"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"گزینه‌های قفل"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"الگویتان را وارد کنید"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"تأیید"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"کشیدن مجدد"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"تنظیم قفل صفحه"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"پین خودتان را انتخاب کنید"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"انتخاب الگو"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"گذرواژه‌تان را انتخاب کنید"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"انتخاب گذرواژه"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"قفل صفحه فعلی"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"برای حفظ امنیت، الگو تنظیم کنید"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"پاک کردن"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"گذرواژه‌های رایج توسط سرپرست فناوری اطلاعات شما مسدود شده‌اند. گذرواژه متفاوتی را امتحان کنید."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ترتیب صعودی، نزولی یا تکراری ارقام مجاز نیست."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"گزینه‌های قفل صفحه"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> روز پیش"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"افزودن دستگاه مطمئن"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"دستگاه‌های مطمئن"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> دستگاه</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> دستگاه</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> شما وقتی متصل شود، قفل این خودرو را باز می‌کند. اگر کسی <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> شما را بردارد، ممکن است بتواند به این دستگاه دسترسی پیدا کند"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"تأیید"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"حذف دستگاه مطمئن"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"تمام"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"از برنامه همراه برای راه‌اندازی دستگاه مطمئن استفاده کنید. زمانی‌که تنظیم انجام شد، درصورت شناسایی تلفن توسط وسیله نقلیه، می‌توانید قفل نمایه کاربری‌تان را باز کنید."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"۱. برنامه همراه را در تلفنتان بارگیری کنید"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"۲. برای مرتبط‌سازی دستگاه‌ها، <xliff:g id="CAR_NAME">%1$s</xliff:g> را در تلفنتان انتخاب کنید"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock نمی‌تواند ویژگی‌های امنیتی این دستگاه را شناسایی کند. برای کمک به محافظت از خودرو، دستگاه مطمئن تنها زمانی که از قبل قفل تلفنتان را باز کرده باشید می‌تواند قفل آن را باز نگه‌دارد. دستگاه مطمئن شما می‌تواند هنگامی‌که خودرویتان در اطراف است قفل آن را باز نگه‌دارد، حتی اگر تلفن در دست شخص دیگری باشد."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"افزودن <xliff:g id="DEVICE_NAME">%1$s</xliff:g> به‌عنوان دستگاه مطمئن"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> باموفقیت به‌عنوان دستگاه مطمئن اضافه شد"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"ثبت‌نام <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ناموفق بود"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"افزودن دستگاه مطمئن مستلزم تنظیم روش احراز هویت در مرحله بعد است. اگر دستگاه مطمئن‌تان را با خود حمل نمی‌کنید، برای دسترسی به نمایه‌تان باید احراز هویت کنید."</string>
     <string name="forget" msgid="3971143908183848527">"فراموش کردن"</string>
+    <string name="connect" msgid="5861699594602380150">"اتصال"</string>
+    <string name="disconnect" msgid="6140789953324820336">"قطع اتصال"</string>
     <string name="delete_button" msgid="5840500432614610850">"حذف"</string>
     <string name="remove_button" msgid="6664656962868194178">"حذف"</string>
     <string name="cancel" msgid="750286395700355455">"لغو"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"خروج از حالت نمایشی"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"با این کار حساب نمایشی حذف و سیستم به داده‌های کارخانه بازنشانی می‌شود. همه داده‌های کاربر از بین می‌روند."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"خروج از حالت نمایشی"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"اتمام راه‌اندازی"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"الان نه"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"رد کردن"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"هنگام رانندگی، این ویژگی در دسترس نیست."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"نمی‌توان هنگام رانندگی، کاربر اضافه کرد."</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index bc6b733..ae4cfbe 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"näytön himmennys, kosketusnäyttö, akku"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"näytön himmennys, yö, sävytys"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Yötila"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Verkko ja internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobiiliverkko"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiilidata"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Käytä mobiiliverkon dataa"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Poistetaanko mobiilidata käytöstä?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Datan käyttö"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Datavaroitus ja käyttöraja"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Sovellustietojen käyttösykli"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Aseta datankäyttövaroitus"</string>
+    <string name="data_warning" msgid="116776633806885370">"Datavaroitus"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Aseta dataraja"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datankäyttöraja"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Datan käytön rajoittaminen"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Pääyksikkö poistaa mobiilidatan käytöstä, kun asetettu raja saavutetaan.\n\nPääyksikkö mittaa tiedonsiirron. Operaattorisi voi kuitenkin käyttää eri mittaustapaa, joten suosittelemme määrittämään rajan todellista ylärajaa tiukemmaksi."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Ota käyttöön ja hallinnoi langattomia yhteyspisteitä."</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi-yhteyttä otetaan käyttöön…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Poistetaan Wi-Fi-yhteyttä käytöstä…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Ladataan Wi‑Fi-luetteloa"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi ei käytössä"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Verkon unohtaminen epäonnistui."</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Verkkoyhteyden muodostaminen epäonnistui."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Lisää verkko"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi ei käytössä"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Yhdistä"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Salasana"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Näytä salasana"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Verkon nimi"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Anna SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Suojaus"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signaalin vahvuus"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signaalin vahvuus"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Tila"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Yhteyden nopeus"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Taajuus"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-osoite"</string>
+    <string name="show_password" msgid="2074628020371139240">"Näytä salasana"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Lisää verkon nimi"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Syötä salasana"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Heikko"</item>
-    <item msgid="2032262610626057081">"Kohtalainen"</item>
-    <item msgid="3859756017461098953">"Hyvä"</item>
-    <item msgid="1521103743353335724">"Erinomainen"</item>
+    <item msgid="7683058295076342057">"Heikko"</item>
+    <item msgid="1639222824821660744">"Kohtalainen"</item>
+    <item msgid="1838705897358163300">"Hyvä"</item>
+    <item msgid="6067166649320533751">"Erinomainen"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Ota Bluetooth käyttöön"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth pois käytöstä"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbit/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Verkon tiedot"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-osoite"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-osoite"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Aliverkon maski"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-osoitteet"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Yhdyskäytävä"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi-Fi-asetukset"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Ota Wi-Fi käyttöön automaattisesti"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi otetaan käyttöön kotiverkon tai muun laadukkaan tallennetun verkon lähellä"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Ei saatavilla, koska sijaintia ei käytetä. Käytä "<annotation id="link">"sijaintia"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Otetaanko Wi-Fi-haku käyttöön?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Ota käyttöön"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi-Fi-haku on käytössä"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Vaihda mobiilidataan automaattisesti"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Vaihda mobiilidataan, jos Wi-Fi-yhteyttä ei voi muodostaa. Datan käytöstä voi aiheutua maksuja."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Lue lisää"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Hallinnoi yhteyksiä, määritä laitteen nimi ja tunnistettavuus"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Tietokone"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Kuulokemikrofoni"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Puhelin"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Kuvannuslaite"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Kuulokkeet"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Syöttölisälaite"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Laiteparit"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Saatavilla olevat laitteet"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Ei laitepareja"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Ei laitteita saatavilla"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Laitepari"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nimi"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Käyttö:"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Vaihda Bluetooth-laitteen nimi"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Nimetön laite"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Laiteparit"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Muodosta laitepari uuden laitteen kanssa"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth käynnistetään parinmuodostusta varten"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Katkaistaanko laitteen yhteys?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Ajoneuvo ja <xliff:g id="DEVICE_NAME">%1$s</xliff:g> erotetaan."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Ajoneuvon Bluetooth-osoite: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Laitteen Bluetooth-osoite: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Ajoneuvon nimi"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Nimeä ajoneuvo uudelleen"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Nimeä laite uudelleen"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Nimeä uudelleen"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Saatavilla olevat laitteet"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiilit"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-laiteparipyyntö"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Muodosta laitepari ja yhdistä"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-laiteparikoodi"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN-koodi sisältää kirjaimia tai symboleja"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Kirjoita yhdistämiskoodi ja valitse sitten Return tai Enter."</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Yleensä 0000 tai 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Laiteparipyyntö"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Napauta muodostaaksesi laiteparin: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Kielet"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Kielet ja syöttötapa"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Näppäimistö"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Ylläpidä näppäimistöjä"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Tekstistä puheeksi ‑toisto"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Ensisijainen moottori"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Nykyinen moottori"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Puheen nopeus"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Äänenkorkeus"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Nollaa"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Ääni"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Soittoäänen voimakkuus"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigoinnin äänenvoimakkuus"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Aseta musiikin ja videoiden äänenvoimakkuus"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Hälytys"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Puhelimen soittoääni"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Ilmoituksen oletusääni"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Herätyksen oletusääni"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Sovellukset ja ilmoitukset"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Näytä kaikki sovellukset"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Oletussovellukset"</string>
     <string name="applications_settings" msgid="794261395191035632">"Sovellustiedot"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Pakota sulkeutumaan"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Pakotetaanko lopetus?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Jos pakotat sovelluksen pysähtymään, se ei välttämättä enää toimi oikein."</string>
     <string name="disable_text" msgid="4358165448648990820">"Poista käytöstä"</string>
     <string name="enable_text" msgid="1794971777861881238">"Käytä"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Poista"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jos poistat sovelluksen käytöstä, Android ja muut sovellukset eivät välttämättä enää toimi oikein."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Poista sovellus käytöstä"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Käyttöoikeudet"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versio: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Käyttöoikeuksia ei ole myönnetty."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Käyttöoikeuksia ei ole pyydetty."</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datan käyttö"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Sovelluksen datan käyttö"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Pakota sulkeutumaan"</string>
     <string name="computing_size" msgid="5791407621793083965">"Lasketaan…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> lisäkäyttölupaa</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> lisäkäyttölupa</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistant ja äänisyöte"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Avustajasovellus"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Käytä näytön tekstiä"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Salli avustajasovelluksen käsitellä näytön sisältöä tekstinä"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Käytä kuvakaappausta"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Salli avustajasovelluksen käsitellä näytön kuvaa"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Automaattinen täyttö ‑palvelu"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ei mitään"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Valittu"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Avustaja voi lukea tietoja järjestelmäsi käyttämistä sovelluksista, mukaan lukien tietoja, jotka näkyvät näytöllä tai jotka ovat käytettävissä sovelluksissa."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Varmista, että luotat tähän sovellukseen&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; päättelee näytöllä olevien kohteiden perusteella, mitä voidaan täyttää automaattisesti."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Lisää palvelu"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Sijainti"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Viimeisimmät sijaintipyynnöt"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ei viimeaikaisia sijaintipyyntöjä"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Sovellustason käyttöoikeudet"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Hakeminen"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Sijaintipalvelut"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi-haku"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Salli sovellusten ja palvelujen hakea Wi‑Fi-verkkoja aina, vaikka Wi-Fi olisi pois käytöstä. Näin voidaan esimerkiksi kehittää sijaintiin perustuvia ominaisuuksia ja palveluja."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-haku"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Salli sovellusten ja palvelujen hakea lähellä olevia laitteita aina, vaikka Bluetooth olisi pois käytöstä. Näin voidaan esimerkiksi kehittää sijaintiin perustuvia ominaisuuksia ja palveluja."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Järjestelmä"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Järjestelmäpäivitykset"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Järjestelmäpäivitykset"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-versio"</string>
     <string name="security_patch" msgid="4794276590178386903">"Androidin tietoturvakorjauksen taso"</string>
     <string name="model_info" msgid="4966408071657934452">"Malli"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband-versio"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel-versio"</string>
     <string name="build_number" msgid="3997326631001009102">"Koontiversion numero"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-osoite"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Ei saatavilla"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Tila"</string>
     <string name="device_status" msgid="267298179806290920">"Tila"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Tekijänoikeudet"</string>
     <string name="license_title" msgid="936705938435249965">"Käyttölupa"</string>
     <string name="terms_title" msgid="5201471373602628765">"Käyttöehdot"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"WebView-järjestelmälisenssi"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Järjestelmän WebView-lisenssit"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Taustakuvat"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satelliittikuvat:\n© 2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Kolmannen osapuolen lisenssit"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Ongelma ladattaessa lisenssejä"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Ladataan…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Enää <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> vaihetta, niin sinusta tulee kehittäjä.</item>
+      <item quantity="one">Enää <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> vaihe, niin sinusta tulee kehittäjä.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Olet nyt kehittäjä."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Ei tarvitse jatkaa, olet jo kehittäjä."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Kehittäjäasetukset"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Palautusvalinnat"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Verkon, sovellusten tai laitteen palautus"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Nollaa verkko"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Tämä nollaa kaikki verkkoasetukset, myös nämä:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobiilidata"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Tyhjennä kaikki ajoneuvon eSIMit"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Tämä ei peruuta palvelupakettiasi."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIMien nollaus epäonnistui"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Valitse verkko"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Nollaa asetukset"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Nollataanko?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Nollataanko kaikki verkkoasetukset? Toimintoa ei voi peruuttaa."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Nollaa asetukset"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Verkkoasetukset on nollattu"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Nollaa sovellusasetukset"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Kaikki seuraavien asetukset nollataan:\n\n"<li>"Käytöstä poistetut sovellukset"</li>\n<li>"Käytöstä poistetut sovellusilmoitukset"</li>\n<li>"Toimintojen oletussovellukset"</li>\n<li>" Sovellusten taustadatan käyttörajoitukset"</li>\n<li>"Käyttöoikeusrajoitukset"</li>\n\n"Et menetä mitään sovellusten dataa."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Nollaa sovellukset"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Sovellusasetukset on nollattu"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Poista data (tehdasasetusten palautus)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Tämä poistaa ajoneuvon pääyksiköstä kaiken datan, esimerkiksi\n\n"<li>"Google-tilisi"</li>\n<li>"järjestelmän ja sovellusten datan ja asetukset"</li>\n<li>"ladatut sovellukset"</li>"."</string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Olet kirjautuneena sisään seuraaville tileille:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Tällä ajoneuvolla on muita paikalla olevia käyttäjiä."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Nollaa ajoneuvo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Nollataanko?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Haluatko poistaa kaikki henkilötiedot ja ladatut sovellukset? Tätä ei voi peruuttaa."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Poista kaikki"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Poistetaan"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Odota…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Päivämäärä ja aika"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Aseta päivämäärä ja aika"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Aseta päivämäärä, aika, aikavyöhyke ja formaatit"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Lajittele aikavyöhykkeen mukaan"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Päivämäärä"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Aika"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Lisää käyttäjä"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Lisää tili"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Poista käyttäjä"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Uusi käyttäjä"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Vieras"</string>
     <string name="user_admin" msgid="1535484812908584809">"Järjestelmänvalvoja"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Järjestelmänvalvoja kirjautuneena"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Kaikki järjestelmänvalvojan käyttöoikeudet"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Muuta järjestelmänvalvojaksi"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Käyttäjä voi poistaa käyttäjiä, mukaan lukien muita järjestelmänvalvojia, ja palauttaa järjestelmän tehdasasetukset."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Tätä toimintoa ei voi kumota."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Kyllä, muuta järjestelmänvalvojaksi"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Uusien käyttäjien luominen"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Puheluiden soittaminen"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Viestit auton mobiilidatalla"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Uusien sovellusten asennus"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Sovellusten poistaminen"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Lisää käyttäjä"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Uusi käyttäjä"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Lisätäänkö uusi käyttäjä?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Kaikki käyttäjät voivat päivittää muiden käyttäjien sovelluksia."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Käyttäjäraja saavutettu"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Voit lisätä korkeintaan <xliff:g id="COUNT">%d</xliff:g> käyttäjää.</item>
+      <item quantity="one">Käyttäjiä voi olla vain yksi.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Uuden käyttäjän luominen epäonnistui"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Poistetaanko käyttäjä?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Kaikki sovellukset ja data poistetaan."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Käyttäjän poistaminen epäonnistui."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ohita"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Yritä uudelleen"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Poistetaanko käyttäjä?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Uusi ylläpitäjä luodaan, jos poistat auton ainoan käyttäjän."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Kaikki käyttäjään liittyvä data, asetukset ja sovellukset poistetaan. Järjestelmä on määritettävä uudelleen."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Valitse uusi ylläpitäjä"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Ylläpitäjiä on oltava vähintään yksi. Valitse uusi ylläpitäjä, jotta voit poistaa aiemman."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Valitse ylläpitäjä"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Vieras"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Vieras"</string>
     <string name="user_switch" msgid="6544839750534690781">"Vaihda"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Sinä (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nimi"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Ei määritetty"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Käyttäjätunnuksen muokkaus"</string>
     <string name="users_list_title" msgid="770764290290240909">"Käyttäjät"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Käyttöoikeudet myönnetty: %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Tilit"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Käyttäjä"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Lisää tili"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Tilejä ei lisätty"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Tilit: <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Synkronoi data automaattisesti"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Salli sovellusten päivittää dataa automaattisesti"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Autom. synkronointi päälle?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Kaikki tileihisi verkossa tekemäsi muutokset kopioidaan laitteellesi automaattisesti.\n\nJotkin tilit voivat myös automaattisesti kopioida puhelimella tehdyt muutokset verkkoon. Google-tili toimii näin."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Autom. synkronointi pois päältä?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Tämän vähentää datansiirtomäärä, mutta jokainen tili on synkronoitava manuaalisesti, jos haluat niiden viimeisimmät tiedot käyttöösi. Et myöskään saa ilmoituksia, jos tietoja päivitetään."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Tilitiedot"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Lisää tili"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Lisää tili"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Poista tili"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Poistetaanko tili?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Poistamalla tämän tilin poistat kaikki sen viestit, yhteystiedot ja muut tiedot laitteelta."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Järjestelmänvalvoja ei salli tätä muutosta."</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Poistetaanko käyttäjä?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Kaikki sovellukset ja data poistetaan."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Käyttäjän poistaminen epäonnistui."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Uusi yritys?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Hylkää"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Yritä uudelleen"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Lisätäänkö uusi käyttäjä?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Kaikki käyttäjät voivat päivittää muiden käyttäjien sovelluksia."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Tilin poistaminen epäonnistui."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Tilin synkronointi"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synkronointi käytössä <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g> kohteella"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synkronointi käytössä kaikilla kohteilla"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synkronointi pois käytöstä kaikilla kohteilla"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synkronointi EI KÄYTÖSSÄ"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Synkronointivirhe"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Viimeksi synkronoitu: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synkronoidaan…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Synkronoi nyt napauttamalla – <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synkronoi nyt"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Peruuta synkronointi"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Synkronoinnissa on tällä hetkellä ongelmia. Palvelu palaa pian takaisin käyttöön."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Tietoturva"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Näytön lukitus"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"–"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-koodi"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Salasana"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Valitse lukitustyyppi"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Näytön lukitusvaihtoehdot"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Lukitusasetukset"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Piirrä kuvio"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Vahvista"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Piirrä uudelleen"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Näytön lukituksen valinta"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Valitse PIN-koodi"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Valitse kuvio"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Valitse salasana"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Valitse salasana"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Nykyinen näytön lukitus"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Aseta kuvio tietoturvasyistä"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Tyhjennä"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-järjestelmänvalvoja on estänyt yleiset salasanat. Kokeile eri salasanaa."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nousevat, laskevat tai toistuvat numerosarjat on kielletty."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Näytön lukitusvaihtoehdot"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> päivää sitten"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Lisää luotettu laite"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Luotetut laitteet"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> laitetta</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> laite</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> avaa auton lukituksen, kun yhteys on muodostettu. Jos <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> päätyy jonkun muun käsiin, kyseinen henkilö voi ehkä käyttää laitetta"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Vahvista"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Poista luotettu laite"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Valmis"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Määritä luotettu laite kumppanisovelluksen avulla. Voit poistaa käyttäjäprofiilisi lukituksen määrityksen jälkeen, kun ajoneuvo on havainnut puhelimen."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Lataa kumppanisovellus puhelimelle"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Muodosta laitepari valitsemalla <xliff:g id="CAR_NAME">%1$s</xliff:g> puhelimella"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ei tunnistanut tämän laitteen suojausominaisuuksia. Autosi suojaamiseksi luotettu laite voi pitää auton lukituksen avoinna vasta avattuasi lukituksen itse. Luotettu laite voi pitää auton lukituksen avoinna ollessaan sen lähellä, vaikka laite olisi jonkun muun käsissä."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Lisää <xliff:g id="DEVICE_NAME">%1$s</xliff:g> luotetuksi laitteeksi"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> lisätty luotetuksi laitteeksi"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Liittyminen epäonnistui: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Kun olet lisännyt luotetun laitteen, sinun on määritettävä todennustapa. Jos luotetut laitteet eivät ole mukanasi, pääset käyttämään profiilia todennustavan avulla."</string>
     <string name="forget" msgid="3971143908183848527">"Unohda"</string>
+    <string name="connect" msgid="5861699594602380150">"Yhdistä"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Katkaise yhteys"</string>
     <string name="delete_button" msgid="5840500432614610850">"Poista"</string>
     <string name="remove_button" msgid="6664656962868194178">"Poista"</string>
     <string name="cancel" msgid="750286395700355455">"Peruuta"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Poistu esittelytilasta"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tämä poistaa esittelytilin ja palauttaa järjestelmän tehdasasetukset. Kaikki käyttäjätiedot poistetaan."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Sulje esittely"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"viimeistele asennus"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ei nyt"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"OHITA"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Ominaisuus ei ole käytettävissä ajon aikana."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Käyttäjää ei voi lisätä ajon aikana."</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 3202415..4d0eddb 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"assombrir l\'écran, écran tactile, pile"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"assombrir l\'écran, nuit, teinte"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mode Nuit"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Réseau et Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Réseau cellulaire"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Données mobiles"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accéder aux données sur réseau cellulaire"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Désactiver les données mobiles?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Utilisation de données"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Avertissement et limites de données"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cycle d\'util. données d\'appli."</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Définir avertiss. de données"</string>
+    <string name="data_warning" msgid="116776633806885370">"Avertiss. utilisation données"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Définir. lim. d\'util. données"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limite de données"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitation de l\'util. de données mobiles"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"L\'unité principale de votre véhicule désactivera les données mobiles lorsque la limite que vous définissez sera atteinte.\n\nComme c\'est l\'unité principale qui mesure l\'utilisation de données, et que votre fournisseur de services peut utiliser un système de mesure différent, nous vous conseillons de faire preuve de prudence en définissant votre limite."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configurer et gérer les points d\'accès sans fil"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activation du Wi-Fi en cours…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Désactivation du Wi-Fi en cours…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Chargement de la liste de connexions Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi désactivé"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Impossible de supprimer le réseau"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Échec de la connexion au réseau"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ajouter un réseau"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi désactivé"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Associer"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Mot de passe"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Afficher le mot de passe"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nom du réseau"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Entrer le SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sécurité"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Force du signal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Force du signal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"État"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Vitesse de connexion"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Fréquence"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Adresse IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Afficher le mot de passe"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Entrez le nom du réseau"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Entrez le mot de passe"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Faible"</item>
-    <item msgid="2032262610626057081">"Passable"</item>
-    <item msgid="3859756017461098953">"Bonne"</item>
-    <item msgid="1521103743353335724">"Excellente"</item>
+    <item msgid="7683058295076342057">"Faible"</item>
+    <item msgid="1639222824821660744">"Passable"</item>
+    <item msgid="1838705897358163300">"Bonne"</item>
+    <item msgid="6067166649320533751">"Excellente"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Activer le Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth désactivé"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Détails du réseau"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Adresse MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Adresse IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Masque de sous-réseau"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adresses IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Passerelle"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Préférences Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Activer le Wi-Fi automatiquement"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Connex. auto. aux réseaux haute qualité enregistrés (ex. à la maison)"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Indisponible (service désactivé). Activez la "<annotation id="link">"localisation"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Voulez-vous activer la recherche de réseaux Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Activer"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"La recherche de réseaux Wi-Fi est activée"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Passer automatiquement au réseau cellulaire"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Utiliser le réseau de données cellulaires lorsque le réseau Wi-Fi n\'a pas accès à Internet. Des frais de transmission de données peuvent s\'appliquer."</string>
+    <string name="learn_more" msgid="8214605928933358604">"En savoir plus"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Gérer les connexions, configurer le nom et l\'identification de l\'appareil"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Ordinateur"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Écouteurs"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Téléphone"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imagerie"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Écouteurs"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Périphérique d\'entrée"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Appareils associés"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Appareils détectés"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Aucun appareil associé"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Aucun appareil à proximité"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Appareil associé"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nom"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Utiliser pour"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Changez le nom de l\'appareil Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Appareil sans nom"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Appareils associés"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Associer un autre appareil"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Le Bluetooth s\'activera pour l\'association"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Voulez-vous déconnecter l\'appareil?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Votre véhicule se déconnectera de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Adresse Bluetooth du véhicule : <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Adresse Bluetooth de l\'appareil : <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nom du véhicule"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Renommer ce véhicule"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Renommer l\'appareil"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Renommer"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Appareils détectés"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profils"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Demande d\'association Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Associer et connecter"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Code d\'association Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Le NIP contient des lettres ou des symboles"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Entrez le code d\'association, puis appuyez sur Retour ou Entrée"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Habituellement 0000 ou 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Demande d\'association"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Touchez pour associer à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Langues"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Langues et modes d\'entrée"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Clavier"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Gérer les claviers"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Sortie de synthèse vocale"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Moteur préféré"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Moteur actuel"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Vitesse de la voix"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Ton"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Réinitialiser"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Son"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volume de la sonnerie"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volume de navigation"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Médias"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Régler le volume pour la musique et les vidéos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarme"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Sonnerie du téléphone"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Son de notification par défaut"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Son d\'alarme par défaut"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Applications et notifications"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Afficher toutes les applications"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Applications par défaut"</string>
     <string name="applications_settings" msgid="794261395191035632">"Détails de l\'application"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Forcer l\'arrêt"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Voulez-vous forcer l\'arrêt?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"L\'arrêt forcé d\'une application peut provoquer un fonctionnement instable."</string>
     <string name="disable_text" msgid="4358165448648990820">"Désactiver"</string>
     <string name="enable_text" msgid="1794971777861881238">"Activer"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Désinstaller"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si vous désactivez cette application, Android et d\'autres applications risquent de ne plus fonctionner correctement."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Désactiver l\'application"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Autorisations"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version : %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Aucune autorisation accordée"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Aucune autorisation demandée"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Utilisation des données"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Util. données applications"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Forcer l\'arrêt"</string>
     <string name="computing_size" msgid="5791407621793083965">"Traitement en cours…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> autorisation supplémentaire</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorisations supplémentaires</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistance et entrée vocale"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Application d\'assistance"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Utiliser le texte affiché à l\'écran"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Autoriser l\'application d\'assistance à accéder aux contenus affichés à l\'écran sous forme de texte"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Utiliser la capture d\'écran"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Autoriser l\'application d\'assistance à accéder à une image affichée à l\'écran"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Service de remplissage automatique"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Aucun"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Sélectionnée"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"L\'Assistant Google pourra accéder aux données des applications en cours d\'utilisation sur votre système, y compris les données visibles à l\'écran ou accessibles au sein des applications."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Assurez-vous de faire confiance à cette application&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Le remplissage automatique de Google&gt;%1$s&lt;/xliff:g&gt; utilise les éléments affichés à l\'écran pour déterminer les champs qui peuvent bénéficier de l\'entrée automatique."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Ajouter un service"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lieu"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Récentes demandes de localisation"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Aucune demande de localisation récente"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorisations à l\'échelle des applications"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Recherche"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Services de localisation"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Recherche de réseaux Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Autorisez les applications et les services à rechercher les réseaux Wi-Fi en tout temps, même lorsque le Wi-Fi est désactivé. Cette option peut, par exemple, être utilisée pour améliorer les fonctionnalités et les services qui utilisent la localisation."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Recherche d\'appareils Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Autorisez les applications et les services à rechercher les appareils à proximité en tout temps, même lorsque le Bluetooth est désactivé. Cette option peut, par exemple, être utilisée pour améliorer les fonctionnalités et les services qui utilisent la localisation."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Système"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Mises à jour système"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Mises à jour système"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Version d\'Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Niveau du correctif de sécurité Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modèle"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Version de bande de base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Version du noyau"</string>
     <string name="build_number" msgid="3997326631001009102">"Numéro de version"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresse Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Indisponible"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"État"</string>
     <string name="device_status" msgid="267298179806290920">"État"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Droits d\'auteur"</string>
     <string name="license_title" msgid="936705938435249965">"Licence"</string>
     <string name="terms_title" msgid="5201471373602628765">"Conditions d\'utilisation"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licence WebView du système"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licences système WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Fonds d\'écran"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Fournisseurs d\'images satellites :\n© 2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licences tierces"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Problème lors du chargement des licences."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Chargement en cours…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Plus que <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> étape pour devenir un concepteur.</item>
+      <item quantity="other">Plus que <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> étapes pour devenir un concepteur.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Vous êtes désormais un concepteur!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Inutile, vous êtes déjà un concepteur."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Options pour concepteurs"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Options de réinitialisation"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Réseau, applications ou réinitialisation de l\'appareil"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Réinitialiser le réseau"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Cette opération réinitialisera tous les paramètres réseau, y compris les suivants :"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Données cellulaires"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Effacer toutes les cartes eSIM du véhicule"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Cette action n\'annulera pas votre forfait."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Impossible de réinitialiser les cartes eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Sélectionner un réseau"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Réinitialiser les paramètres"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Réinitialiser?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Réinitialiser tous les paramètres réseau? Cette action est irréversible."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Réinitialiser les paramètres"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Les paramètres réseau ont été réinitialisés"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Réinitial. préférences des applications"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Cette opération réinitialise toutes les préférences relatives aux éléments suivants :\n\n"<li>"Applications désactivées"</li>\n<li>"Notifications associées aux applications désactivées"</li>\n<li>"Applications par défaut pour les actions"</li>\n<li>"Restrictions de données en arrière-plan pour les applications"</li>\n<li>"Toutes les restrictions d\'autorisations"</li>\n\n"Vous ne perdrez aucune donnée liée aux applications."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Réinitialiser les applications"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Les préférences des applications ont été réinitialisées"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Effacer toutes les données (réinitial.)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Cette action effacera toutes les données de l\'unité principale de votre véhicule, y compris :\n\n"<li>"Votre compte Google"</li>\n<li>"Les données et les paramètres du système et de l\'application"</li>\n<li>"Les applications téléchargées"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Vous êtes actuellement connecté aux comptes suivants :"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"D\'autres personnes utilisent ce véhicule."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Réinitialiser le véhicule"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Effectuez la réinitialisation?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Voulez-vous effacer toutes vos données personnelles et les applications que vous avez téléchargées? Cette action est irréversible!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Tout effacer"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Suppression en cours…"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Veuillez patienter…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date et heure"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Régler la date et l\'heure"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Configurer la date, l\'heure, le fuseau horaire et les formats"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Trier par fuseau horaire"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Date"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Heure"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Ajouter un utilisateur"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Ajouter un compte"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Supprimer l\'utilisateur"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nouvel utilisateur"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Invité"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrateur"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Connecté comme administrateur"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Toutes les autorisations d\'administrateur"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Rendre administrateur"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"L\'utilisateur pourra supprimer des utilisateurs, y compris d\'autres administrateurs, et réinitialiser le système."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Cette action ne peut pas être annulée."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Oui, rendre administrateur"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Créer des utilisateurs"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Faire des appels téléphoniques"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mess. avec connex. donn. de voiture"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Installer des applications"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Désinstaller des applications"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Ajouter un utilisateur"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nouvel utilisateur"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Ajouter un utilisateur?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Tout utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite d\'utilisateurs atteinte"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> utilisateur.</item>
+      <item quantity="other">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> utilisateurs.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Impossible de créer un utilisateur"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Supprimer cet utilisateur?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"L\'ensemble des applications et des données seront supprimées."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Impossible de supprimer l\'utilisateur."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Fermer"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Réessayer"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Suppr. dernier utilisateur?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Après avoir supprimé le seul utilisateur restant pour cette voiture, un nouvel utilisateur administrateur sera créé."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Tous les paramètres, les données et les applications associés à cet utilisateur seront supprimés. Vous devrez configurer le système à nouveau."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Choisissez un nouvel administrateur"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Vous avez besoin d\'au moins un administrateur. Pour supprimer celui-ci, choisissez d\'abord un remplacement."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Choisir un administrateur"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Invité"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Invité"</string>
     <string name="user_switch" msgid="6544839750534690781">"Changer"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Vous (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nom"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Non configuré"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Modifier le nom d\'utilisateur"</string>
     <string name="users_list_title" msgid="770764290290240909">"Utilisateurs"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Autorisations accordées à %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Comptes"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Utilisateur"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Ajouter un compte"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Aucun compte ajouté"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Comptes pour <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Synchronisation automatique des données"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Autoriser applications à actualiser données automatiquement"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Activer synchro auto données?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Les modifications que vous apportez à vos comptes sur le Web seront automatiquement copiées sur votre appareil.\n\nCertains comptes peuvent également copier automatiquement sur le Web toutes les modifications que vous effectuez sur le téléphone. C\'est le cas des comptes Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Désactiver synchro auto données?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Cette action limite la consommation de données, mais vous devrez synchroniser manuellement chaque compte pour effectuer la collecte de renseignements récents. Vous ne recevrez en outre aucune notification lors des mises à jour."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Renseignements sur le compte"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Ajouter un compte"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Ajouter un compte"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Supprimer le compte"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Supprimer le compte?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"La suppression de ce compte entraînera la suppression de tous les messages, les contacts et les autres données de l\'appareil."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Cette modification n\'est pas autorisée par votre administrateur"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Supprimer cet utilisateur?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"L\'ensemble des applications et des données seront supprimées."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Échec de la suppression de l\'utilisateur."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Réessayer?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Fermer"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Réessayer"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Ajouter un utilisateur?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Tout utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Impossible de supprimer le compte."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Synchronisation du compte"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"La synchronisation est activée pour <xliff:g id="ID_1">%1$d</xliff:g> éléments sur <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"La synchronisation est activée pour tous les éléments"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"La synchronisation est désactivée pour tous les éléments"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synchronisation désactivée"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Erreur de synchronisation"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Dernière synchronisation : <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synchronisation en cours…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Touchez ici pour lancer la synchronisation<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synchroniser maintenant"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Annuler la synchronisation"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"La synchronisation rencontre actuellement des problèmes. Elle sera rétablie sous peu."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sécurité"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Verrouill. de l\'écran"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Aucun"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"NIP"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Mot de passe"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Choisissez un type de verrouillage"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Options de verrouillage de l\'écran"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Options de verrouillage"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Entrez votre schéma"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirmer"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Redessiner"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Configurer le verrouillage de l\'écran"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Choisissez votre NIP"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Choisissez votre schéma"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Choisissez votre mot de passe"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Choisissez votre mot de passe"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Verrouillage actuel de l\'écran"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Pour votre sécurité, déf. un sch. de verr."</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Effacer"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Les mots de passe communs sont bloqués par l\'administrateur de votre service informatique. Essayez un mot de passe différent."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Les suites croissantes, décroissantes ou répétitives de chiffres ne sont pas autorisées."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Options de verrouillage de l\'écran"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : il y a <xliff:g id="NUM_DAYS">%3$s</xliff:g> jours"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Ajouter un appareil de confiance"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Appareils fiables"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> appareil</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> appareils</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Votre <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> déverrouillera votre voiture lorsqu\'il sera connecté. Si une personne prend votre <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, elle pourrait être en mesure d\'accéder à cet appareil."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmer"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Supprimer l\'appareil de confiance"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"OK"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Utilisez l\'application compagnon pour configurer un appareil de confiance. Une fois la configuration terminée et que votre téléphone est détecté par le véhicule, vous pourrez déverrouiller votre profil utilisateur"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Téléchargez l\'application compagnon sur votre téléphone"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Sélectionnez <xliff:g id="CAR_NAME">%1$s</xliff:g> sur votre téléphone pour associer les appareils"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ne peut détecter aucune fonctionnalité de sécurité sur cet appareil. Dans le but de protéger votre voiture, l\'appareil de confiance ne pourra la garder déverrouillée que lorsque vous l\'aurez déverrouillé vous-même au préalable. Votre appareil de confiance peut garder votre voiture déverrouillée lorsqu\'elle se trouve à proximité, même si une autre personne le tient dans sa main."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Ajouter <xliff:g id="DEVICE_NAME">%1$s</xliff:g>comme appareil de confiance"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"L\'appareil <xliff:g id="DEVICE_NAME">%1$s</xliff:g> a bien été ajouté comme appareil de confiance"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Échec de l\'inscription de l\'appareil <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"L\'ajout d\'un appareil de confiance nécessite ensuite la configuration d\'une méthode d\'authentification. Si vous n\'avez pas votre appareil de confiance avec vous, un processus d\'authentification sera nécessaire pour accéder à votre profil."</string>
     <string name="forget" msgid="3971143908183848527">"Oublier"</string>
+    <string name="connect" msgid="5861699594602380150">"Connexion"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Déconnexion"</string>
     <string name="delete_button" msgid="5840500432614610850">"Supprimer"</string>
     <string name="remove_button" msgid="6664656962868194178">"Supprimer"</string>
     <string name="cancel" msgid="750286395700355455">"Annuler"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Quitter le mode démo"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Cette action supprimera le compte de démonstration et réinitialisera le système. Toutes les données de l\'utilisateur seront perdues."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Quitter le mode démo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"terminer la configuration"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"pas maintenant"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORER"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Cette fonction n\'est pas accessible durant la conduite."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Impossible d\'ajouter un utilisateur pendant la conduite."</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f315f4e..18c25bf 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"assombrir l\'écran, écran tactile, batterie"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"assombrir l\'écran, nuit, coloration"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mode Nuit"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Réseau et Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Réseau mobile"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Données mobiles"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accéder aux données via le réseau mobile"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Désactiver les données mobiles ?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Consommation des données"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Avertissement et limite pour les données"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cycle de consommation des données"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Définir une alerte données"</string>
+    <string name="data_warning" msgid="116776633806885370">"Avertissement de conso données"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Définir la limite des données"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limite de données"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitation de la consommation de données mobiles"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Les données mobiles sont désactivées par l\'unité principale du véhicule lorsque la limite de consommation des données que vous avez définie est atteinte.\n\nLa consommation mesurée par l\'unité principale pouvant différer de celle mesurée par votre opérateur, nous vous recommandons de définir une limite stricte."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configurer et gérer les points d\'accès sans fil"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activation du Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Désactivation du Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Chargement de la liste Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi désactivé"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Échec de la suppression du réseau"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Échec de la connexion au réseau"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ajouter un réseau"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi désactivé"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connexion"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Mot de passe"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Afficher le mot de passe"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nom du réseau"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Saisissez le SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sécurité"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Intensité du signal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Intensité du signal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"État"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Vitesse de la connexion"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Fréquence"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Adresse IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Afficher le mot de passe"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Saisissez le nom du réseau"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Saisissez le mot de passe"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"légende_balise_point_accès"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Faible"</item>
-    <item msgid="2032262610626057081">"Satisfaisante"</item>
-    <item msgid="3859756017461098953">"Bonne"</item>
-    <item msgid="1521103743353335724">"Excellente"</item>
+    <item msgid="7683058295076342057">"Faible"</item>
+    <item msgid="1639222824821660744">"Satisfaisante"</item>
+    <item msgid="1838705897358163300">"Bonne"</item>
+    <item msgid="6067166649320533751">"Excellente"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Activer le Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth désactivé"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbit/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Détails du réseau"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Adresse MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Adresse IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Masque de sous-réseau"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adresses IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Passerelle"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Préférences Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Activation automatique du Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Réactiver Wi‑Fi près réseaux haute qualité déjà enregistrés, comme réseau domestique"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Indisponible, car "<annotation id="link">"localisation"</annotation>" désactivée. Activez-la."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Activer la recherche de réseaux Wi-Fi ?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Activer"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Recherche Wi-Fi activée"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Se connecter automatiquement au réseau de données mobiles"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Les données mobiles sont utilisées si vous n\'avez pas accès à Internet via le réseau Wi‑Fi. Des frais liés à la consommation des données peuvent s\'appliquer."</string>
+    <string name="learn_more" msgid="8214605928933358604">"En savoir plus"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Gérer les connexions, et configurer le nom et la visibilité de l\'appareil"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Ordinateur"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Casque"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Téléphone"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imagerie"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Casque audio"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Périphérique d\'entrée"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Appareils associés"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Appareils disponibles"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Aucun appareil associé"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Aucun appareil disponible"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Appareil associé"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nom"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Utiliser pour"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Changez nom de l\'appareil Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Appareil sans nom"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Appareils associés"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Associer un nouvel appareil"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Le Bluetooth sera activé pour permettre l\'association"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Déconnecter l\'appareil ?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Votre véhicule va se déconnecter de \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Adresse Bluetooth du véhicule : <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Adresse Bluetooth de l\'appareil : <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nom du véhicule"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Renommer ce véhicule"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Renommer l\'appareil"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Renommer"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Appareils disponibles"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profils"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Demande d\'association Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Associer et connecter"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Code d\'association Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Le code contient des lettres ou des symboles"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Saisissez le code d\'association, puis appuyez sur \"Retour\" ou \"Entrée\""</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Habituellement 0000 ou 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Demande d\'association"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Appuyez pour associer l\'appareil à \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Langues"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Langues et saisie"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Clavier"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Gérer les claviers"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Synthèse vocale"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Moteur préféré"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Moteur actuel"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Cadence"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Ton"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Réinitialiser"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Son"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volume de la sonnerie"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volume de la navigation"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Médias"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Régler le volume pour la musique et les vidéos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarme"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Sonnerie du téléphone"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Son de notification par défaut"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Son de l\'alarme par défaut"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Applications et notifications"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Afficher toutes les applications"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Applications par défaut"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informations sur les applications"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Forcer l\'arrêt"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Forcer l\'arrêt ?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"L\'arrêt forcé d\'une application peut provoquer un fonctionnement instable."</string>
     <string name="disable_text" msgid="4358165448648990820">"Désactiver"</string>
     <string name="enable_text" msgid="1794971777861881238">"Activer"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Désinstaller"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Si vous désactivez cette application, il est possible qu\'Android et d\'autres applications ne fonctionnent plus comme prévu."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Désactiver l\'application"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Autorisations"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Aucune autorisation accordée"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Aucune autorisation demandée"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Consommation des données"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Conso des données applis"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Forcer l\'arrêt"</string>
     <string name="computing_size" msgid="5791407621793083965">"Calcul…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> autorisation supplémentaire</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorisations supplémentaires</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistance et saisie vocale"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Application d\'assistance"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Utiliser le texte affiché à l\'écran"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Autoriser l\'application d\'assistance à accéder au contenu affiché à l\'écran sous forme de texte"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Utiliser une capture d\'écran"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Autoriser l\'application d\'assistance à accéder au contenu affiché à l\'écran sous forme d\'image"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Service de saisie automatique"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Aucune"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Sélectionnée"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"L\'Assistant pourra accéder aux informations relatives aux applications en cours d\'utilisation sur votre système, y compris aux informations visibles à l\'écran ou accessibles dans les applications."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Assurez-vous de faire confiance à cette application&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; utilise les éléments affichés à l\'écran pour déterminer les champs qui peuvent bénéficier de la saisie automatique."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Ajouter un service"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Position"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Demandes de localisation récentes"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Aucune demande de localisation récente"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorisations de l\'application"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Recherche"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Services de localisation"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Recherche Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Autoriser les applications et les services à rechercher des réseaux Wi-Fi à tout moment, même si le Wi-Fi est désactivé. Cette autorisation peut permettre, par ex., d\'améliorer les fonctionnalités et les services basés sur la localisation."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Recherche Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Autoriser les applications et les services à rechercher des appareils à proximité à tout moment, même si le Bluetooth est désactivé. Cette autorisation peut, par ex., améliorer les fonctionnalités et les services basés sur la localisation."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Système"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Mises à jour du système"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Mises à jour du système"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Version d\'Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Mise à jour du correctif de sécurité Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modèle"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Version de la bande de base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Version du noyau"</string>
     <string name="build_number" msgid="3997326631001009102">"Numéro de build"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresse Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Indisponible"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"État"</string>
     <string name="device_status" msgid="267298179806290920">"État"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licence"</string>
     <string name="terms_title" msgid="5201471373602628765">"Conditions d\'utilisation"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licence WebView du système"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licences système WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Fonds d\'écran"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Fournisseurs d\'images satellite :\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licences tierces"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Problème lors du chargement des licences."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Chargement…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Plus que <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> étape pour devenir un développeur.</item>
+      <item quantity="other">Plus que <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> étapes pour devenir un développeur.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Vous êtes désormais un développeur !"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Inutile, vous êtes déjà développeur."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Options pour développeurs"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Options de réinitialisation"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Réinitialisation du réseau, des applications ou de l\'appareil"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Réinitialiser le réseau"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Cette action réinitialisera tous les paramètres réseau, y compris les suivants :"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Données mobiles"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Effacer toutes les cartes eSIM du véhicule"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Cela n\'entraînera pas la résiliation de votre forfait."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Impossible de réinitialiser les cartes eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Sélectionner un réseau"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Réinitialiser paramètres"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Réinitialiser ?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Réinitialiser tous les paramètres réseau ? Cette action est irréversible."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Réinitialiser paramètres"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Les paramètres réseau ont bien été réinitialisés"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Réinitialiser les préférences des applis"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Toutes les préférences relatives aux éléments suivants seront réinitialisées :\n\n"<li>"Applications désactivées"</li>\n<li>"Notifications associées aux applications désactivées"</li>\n<li>"Applications par défaut pour les actions"</li>\n<li>"Restrictions de données en arrière-plan pour les applications"</li>\n<li>"Toutes les restrictions d\'autorisations"</li>\n\n"Vous ne perdrez aucune donnée liée aux applications."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Réinitialiser les applications"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Les préférences relatives aux applications ont été réinitialisées"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Effacer données (rétablir config. d\'usine)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Cette action effacera toutes les données de l\'unité principale du véhicule, y compris :\n\n"<li>"Votre compte Google"</li>\n<li>"Les données et paramètres du système et des applications"</li>\n<li>"Les applications téléchargées"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Vous êtes actuellement connecté aux comptes suivants :"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"D\'autres personnes utilisent ce véhicule."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Réinitialiser le véhicule"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Réinitialiser ?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Effacer toutes vos informations personnelles et les applications téléchargées ? Cette action est irréversible."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Tout effacer"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Suppression en cours"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Veuillez patienter..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Date et heure"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Définir la date et l\'heure"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Configurer la date, l\'heure, le fuseau horaire et les formats"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Trier par fuseau horaire"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Date"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Heure"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Ajouter un utilisateur"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Ajouter un compte"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Supprimer un compte utilisateur"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nouvel utilisateur"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Invité"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrateur"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Connecté en tant qu\'administrateur"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tous les droits d\'administrateur"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Changer en administrateur"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"L\'utilisateur pourra supprimer des profils utilisateur, y compris ceux d\'autres administrateurs, et rétablir la configuration d\'usine du système."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Cette action est irréversible."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Oui, changer en administrateur"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Créer des utilisateurs"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Passer des appels"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Envoyer des SMS via les données mobiles du véhicule"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Installer des applications"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Désinstaller des applications"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Ajouter un utilisateur"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nouvel utilisateur"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Ajouter un utilisateur ?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"N\'importe quel utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite nombre utilisateurs atteinte"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> profil utilisateur.</item>
+      <item quantity="other">Vous pouvez créer jusqu\'à <xliff:g id="COUNT">%d</xliff:g> profils utilisateur.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Échec de création profil utilisateur"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Supprimer l\'utilisateur ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Toutes les applications et les données seront supprimées."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Échec de la suppression de l\'utilisateur."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignorer"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Réessayer"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Suppr. dernier utilis. ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Après la suppression du seul utilisateur restant pour cette voiture, un nouveau profil d\'administrateur sera créé."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Tous les paramètres, données et applications associés à cet utilisateur seront supprimés. Vous devrez configurer à nouveau le système."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Sélectionner un nouvel administrateur"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Vous devez disposer d\'au moins un administrateur. Pour supprimer ce profil, choisissez d\'abord un autre administrateur."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Sélect. administrateur"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Invité"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Invité"</string>
     <string name="user_switch" msgid="6544839750534690781">"Changer"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Vous (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nom"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Non configuré"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Modifier le nom d\'utilisateur"</string>
     <string name="users_list_title" msgid="770764290290240909">"Utilisateurs"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Autorisations accordées à %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Comptes"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Utilisateur"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Ajouter un compte"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Aucun compte ajouté"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Comptes de <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Synchronisation automatique des données"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Autoriser applis à actualiser les données automatiquement"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Activer synchro auto données ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Les modifications que vous apportez à vos comptes sur le Web sont automatiquement copiées sur votre appareil.\n\nCertains comptes permettent également de copier automatiquement sur le Web toutes les modifications que vous effectuez sur le téléphone. C\'est le cas des comptes Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Désactiver synchro auto données ?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Cette action limite la consommation des données, mais vous devrez synchroniser manuellement chaque compte pour obtenir les dernières informations. Vous ne recevrez pas non plus de notifications en cas de mise à jour."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Infos sur le compte"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Ajouter un compte"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Ajouter un compte"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Supprimer le compte"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Supprimer le compte ?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"La suppression de ce compte entraînera la suppression de tous les messages, contacts et autres données de l\'appareil."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Votre administrateur n\'autorise pas cette modification"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Supprimer l\'utilisateur ?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"L\'ensemble des applications et des données seront supprimées."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Échec de la suppression de l\'utilisateur."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Réessayer ?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Ignorer"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Réessayer"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Ajouter un utilisateur ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"N\'importe quel utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Échec de la suppression du compte."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Synchronisation du compte"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synchronisation activée pour <xliff:g id="ID_1">%1$d</xliff:g> élément(s) sur <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synchronisation activée pour tous les éléments"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synchronisation désactivée pour tous les éléments"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synchronisation DÉSACTIVÉE"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Erreur de synchronisation"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Dernière synchronisation : <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synchronisation…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Appuyer pour synchroniser maintenant<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synchroniser"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Annuler la synchronisation"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"La synchronisation rencontre des problèmes et sera bientôt rétablie."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sécurité"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Verrouillage d\'écran"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Aucun"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Code"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Mot de passe"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Choisir verrouillage"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Options de verrouillage de l\'écran"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Options verrouillage"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Tracez le schéma"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirmer"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Redessiner"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Configurer le verrouillage de l\'écran"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Sélectionner un code"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Choisir votre schéma"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Sélectionner un mot de passe"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Sélectionner un mot de passe"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Verrouillage de l\'écran actuel"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Pour la sécurité, définissez un schéma"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Effacer"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Les mots de passe courants sont bloqués par votre administrateur informatique. Choisissez un autre mot de passe."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Les suites de chiffres croissantes, décroissantes ou répétitives ne sont pas autorisées."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Options de verrouillage de l\'écran"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : il y a <xliff:g id="NUM_DAYS">%3$s</xliff:g> jours"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Ajouter un appareil vérifié"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Appareils vérifiés"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> appareil</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> appareils</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Votre <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> déverrouille cette voiture lorsqu\'il y est connecté. Si une personne saisit votre <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, il est possible qu\'elle puisse accéder à cet appareil"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmer"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Supprimer l\'appareil vérifié"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"OK"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Utilisez l\'application associée pour configurer un appareil vérifié. Une fois cette opération effectuée, vous pourrez déverrouiller votre profil utilisateur lorsque votre téléphone sera détecté par le véhicule"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Téléchargez l\'application associée sur votre téléphone"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Sélectionnez <xliff:g id="CAR_NAME">%1$s</xliff:g> sur votre téléphone pour associer les appareils"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ne parvient pas à détecter les fonctionnalités de sécurité de cet appareil. Dans le but de protéger votre voiture, l\'appareil vérifié ne pourra la maintenir déverrouillée que lorsque vous l\'aurez déjà vous-même déverrouillée. Votre appareil vérifié peut maintenir la voiture déverrouillée lorsqu\'elle se trouve à proximité, même si une autre personne le tient dans sa main."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Ajouter <xliff:g id="DEVICE_NAME">%1$s</xliff:g> comme appareil vérifié"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"L\'appareil <xliff:g id="DEVICE_NAME">%1$s</xliff:g> a bien été ajouté en tant qu\'appareil vérifié"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Échec de l\'inscription de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Pour ajouter un appareil vérifié, vous devez définir une méthode d\'authentification à l\'étape suivante. Si vous n\'avez pas votre appareil vérifié avec vous, vous devrez obligatoirement passer par l\'étape d\'authentification pour accéder à votre profil."</string>
     <string name="forget" msgid="3971143908183848527">"Supprimer"</string>
+    <string name="connect" msgid="5861699594602380150">"Connecter"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Déconnecter"</string>
     <string name="delete_button" msgid="5840500432614610850">"Supprimer"</string>
     <string name="remove_button" msgid="6664656962868194178">"Supprimer"</string>
     <string name="cancel" msgid="750286395700355455">"Annuler"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Quitter le mode de démo"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Le compte de démonstration sera supprimé et la configuration d\'usine du système sera rétablie. Toutes les données utilisateur seront perdues."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Quitter la démo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"terminer la configuration"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"pas maintenant"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORER"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Fonctionnalité non disponible lorsque vous conduisez."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Impossible d\'ajouter un utilisateur pendant la conduite."</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index e374aaa..f5a4a27 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"atenuar pantalla, pantalla táctil, batería"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"atenuar pantalla, noite, ton"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Rede de telefonía móbil"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datos móbiles"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Acceder aos datos cunha rede de telefonía móbil"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Queres desactivar os datos móbiles?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Uso de datos"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Aviso e límite de uso de datos"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciclo de uso de datos das aplicacións"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Definir aviso de uso de datos"</string>
+    <string name="data_warning" msgid="116776633806885370">"Aviso de uso de datos"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Definir límite de uso de datos"</string>
+    <string name="data_limit" msgid="227338836292511425">"Límite de uso de datos"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitar o uso de datos"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Desactivaranse os datos móbiles na unidade principal do vehículo unha vez que se acade o límite que estableceses.\n\nPosto que a unidade principal mide o uso de datos e que posiblemente o teu operador contabilice o uso de forma diferente, considera a posibilidade de configurar un límite conservador."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wifi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configura e xestiona puntos de acceso sen fíos"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Activando a wifi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Desactivando a wifi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Cargando lista de wifi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"A wifi está desactivada"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Produciuse un erro ao esquecer a rede"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Produciuse un erro ao conectar coa rede"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Engadir rede"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"A wifi está desactivada"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectar"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Contrasinal"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar contrasinal"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nome da rede"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Introduce o SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Seguranza"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Intensidade do sinal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Intensidade do sinal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Estado"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Velocidade de vinculación"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frecuencia"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Enderezo IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Mostrar contrasinal"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Introduce o nome da rede"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Introduce o contrasinal"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Baixa"</item>
-    <item msgid="2032262610626057081">"Aceptable"</item>
-    <item msgid="3859756017461098953">"Boa"</item>
-    <item msgid="1521103743353335724">"Excelente"</item>
+    <item msgid="7683058295076342057">"Baixa"</item>
+    <item msgid="1639222824821660744">"Aceptable"</item>
+    <item msgid="1838705897358163300">"Boa"</item>
+    <item msgid="6067166649320533751">"Excelente"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Activar Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Desactivouse o Bluetooth"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalles da rede"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Enderezo MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Enderezo IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Máscara de subrede"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Enderezos IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Pasarela"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferencias da Wifi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Activar a wifi automaticamente"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wifi activada preto de redes de alta calidade gardadas, como a rede doméstica"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Non-dispoñible ao estar a localización desactivada. "<annotation id="link">"Actívaa"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Queres activar a busca de redes wifi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Activar"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Activouse a busca de redes wifi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Cambiar aos datos móbiles automaticamente"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Utiliza datos móbiles cando a Wifi non ten acceso a Internet. É posible que se apliquen cargos polo uso de datos."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Máis información"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Xestiona as conexións e ademais define o nome e a detectabilidade do dispositivo"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Ordenador"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Auriculares"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Teléfono"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Dispositivo de imaxe"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Auriculares"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periférico de entrada"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Dispositivos sincronizados"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dispositivos dispoñibles"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Non hai dispositivos sincronizados"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Non hai dispositivos dispoñibles"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Dispositivo sincronizado"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nome"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Usar para"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Cambia o nome do dispositivo Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Dispositivo sen nome"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositivos vinculados"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Vincular dispositivo novo"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Activarase o Bluetooth para realizar a vinculación"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Desconectar dispositivo?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"O teu vehículo desconectarase do dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Enderezo Bluetooth do vehículo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Enderezo Bluetooth do dispositivo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nome do vehículo"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Cambiar o nome deste vehículo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Cambiar o nome do dispositivo"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Cambiar nome"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dispositivos dispoñibles"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Perfís"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitude de sincronización por Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sincronizar e conectar"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de sincronización por Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"O PIN contén letras ou símbolos"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Escribe o código de sincronización e, a continuación, preme Intro"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Normalmente 0000 ou 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Solicitude de sincronización"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Toca para sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Idiomas"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Idiomas e introdución de texto"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Teclado"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Xestionar teclados"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Saída da síntese de voz"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor preferido"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motor actual"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Velocidade da fala"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Ton"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Restablecer"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Son"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volume do timbre"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volume de navegación"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Contido multimedia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Define o volume da música e dos vídeos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarma"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Ton de chamada do teléfono"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Son de notificación predeterm."</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Son de alarma predeterminado"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplicacións e notificacións"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Mostrar todas as aplicacións"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplicacións predeterminadas"</string>
     <string name="applications_settings" msgid="794261395191035632">"Información da aplicación"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Forzar parada"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Queres forzar a parada?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Se forzas a parada dunha aplicación, é posible que non funcione correctamente."</string>
     <string name="disable_text" msgid="4358165448648990820">"Desactivar"</string>
     <string name="enable_text" msgid="1794971777861881238">"Activar"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Se desactivas esta aplicación, é posible que Android e outras aplicacións deixen de funcionar segundo o previsto."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desactivar aplicación"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisos"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versión %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Non se outorgou ningún permiso"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Non se solicitou ningún permiso"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Uso de datos"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uso de datos da aplicación"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Forzar parada"</string>
     <string name="computing_size" msgid="5791407621793083965">"Calculando…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> permisos adicionais</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> permiso adicional</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asistente e entrada de voz"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplicación de asistencia"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Usar o texto da pantalla"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Permite que a aplicación de asistencia acceda aos contidos da pantalla en forma de texto"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Usar a captura de pantalla"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Permite que a aplicación de asistencia acceda ás imaxes presentes na pantalla"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Servizo de autocompletar"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ningunha aplicación"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Aplicación seleccionada"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"O asistente poderá ler información sobre as aplicacións en uso no teu sistema, incluídos os datos visibles na túa pantalla ou aos que se pode acceder desde as aplicacións."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Asegúrate de que confías nesta aplicación&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Autocompletar de Google&gt;%1$s&lt;/xliff:g&gt; utiliza o contido da pantalla para determinar o que se pode completar."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Engadir servizo"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Localización"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitudes de localización recentes"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Non hai solicitudes de localización recentes"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisos para as aplicacións"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Busca de localizacións"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Servizos de localización"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Busca de redes wifi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Permite ás aplicacións e aos servizos buscar redes wifi en calquera momento, mesmo cando a wifi está desactivada. Esta opción pode utilizarse, por exemplo, para mellorar as funcións e os servizos baseados na localización."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Busca de dispositivos Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permite ás aplicacións e aos servizos buscar dispositivos próximos en calquera momento, mesmo cando o Bluetooth está desactivado. Esta opción pode utilizarse, por exemplo, para mellorar as funcións e os servizos baseados na localización."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Actualizacións do sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Actualizacións do sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivel de parche de seguranza de Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modelo"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versión de banda base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versión de kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Número de compilación"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Enderezo de Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Non dispoñible"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Estado"</string>
     <string name="device_status" msgid="267298179806290920">"Estado"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licenza"</string>
     <string name="terms_title" msgid="5201471373602628765">"Termos e condicións"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licenza WebView do sistema"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licenzas de WebView do sistema"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Fondos de pantalla"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Provedores de imaxes por satélite:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licenzas de terceiros"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Hai un problema para cargar as licenzas."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Cargando…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Agora estás a <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> pasos de converterte en programador.</item>
+      <item quantity="one">Agora estás a <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> paso de converterte en programador</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Agora es programador."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Non é necesario, xa es programador."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opcións de programador"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opcións de restablecemento"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Restablecemento do dispositivo, das aplicacións ou da rede"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Restablecer rede"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Con esta acción restablecerase toda a configuración da rede, incluso:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wifi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Datos móbiles"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Borrar todas as eSIM do vehículo"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Non se cancelará o teu plan de servizo."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Non se puideron restablecer as eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Seleccionar rede"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Restablecer configuración"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Restablecer?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Queres restablecer toda a configuración da rede? Esta acción non se pode desfacer."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Restablecer configuración"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Restableceuse a configuración da rede"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Restablecer preferencias das aplicacións"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Con esta acción, restableceranse todas as preferencias de:\n\n"<li>"Aplicacións desactivadas"</li>\n<li>"Notificacións de aplicacións desactivadas"</li>\n" "<li>"Aplicacións predeterminadas para accións"</li>\n<li>"Restricións de datos en segundo plano para aplicacións"</li>\n<li>"Calquera restrición de permisos"</li>\n\n" Non perderás datos de ningunha aplicación."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Restablecer aplicacións"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Restablecéronse as preferencias das aplicacións"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Borrar todos os datos"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Ao realizar esta acción, borraranse todos os datos da unidade principal do teu vehículo, entre os que se inclúen os seguintes:\n\n"<li>"A túa Conta de Google"</li>\n<li>"Os datos e a configuración do sistema e das aplicacións"</li>\n<li>"As aplicacións descargadas"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Actualmente tes a sesión iniciada nas seguintes contas:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Hai outros usuarios neste vehículo."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Restablecer vehículo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Queres restablecer?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Queres borrar toda a túa información persoal e as aplicacións descargadas? Esta acción non se pode desfacer."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Borrar todo"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Borrando"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Agarda..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data e hora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Definir data e hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Define a data, a hora, o fuso horario e os formatos"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Ordenar por fuso horario"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Hora"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Engadir usuario"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Engadir conta"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Eliminar usuario"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novo usuario"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Convidado"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrador"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Iniciouse sesión como administrador"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todos os permisos de administrador"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Converter en administrador"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"O usuario poderá eliminar usuarios, incluídos outros administradores, e facer un restablecemento de fábrica do sistema."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Esta acción non se pode desfacer."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Si, converter en administrador"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Crear novos usuarios"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Facer chamadas"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS por datos móbiles do coche"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar novas aplicacións"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar aplicacións"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Engadir usuario"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Novo usuario"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Engadir un usuario novo?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Cando engades un usuario novo, este deberá configurar o seu espazo."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Calquera usuario pode actualizar as aplicacións para o resto dos usuarios."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Alcanzouse o límite de usuarios"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Pódense crear <xliff:g id="COUNT">%d</xliff:g> usuarios como máximo.</item>
+      <item quantity="one">Só se pode crear un usuario.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Non se puido crear un novo usuario"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Eliminar este usuario?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Eliminaranse todas as aplicacións e os datos."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Houbo un erro ao eliminar o usuario."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignorar"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Tentar de novo"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Eliminar último usuario?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Despois de eliminar o único usuario restante deste coche, crearase un novo administrador."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Eliminaranse todos os datos, a configuración e as aplicacións asociados con este usuario. Ademais, terás que configurar de novo o sistema."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Escolle un novo administrador"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Necesitas polo menos un administrador. Para eliminar este, primeiro escolle outro."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Escoller administrador"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Convidado"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Convidado"</string>
     <string name="user_switch" msgid="6544839750534690781">"Cambiar"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Ti (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nome"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Sen configurar"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Editar nome de usuario"</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuarios"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permisos concedidos a %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Contas"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Usuario"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Engadir conta"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Non se engadiron contas"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Contas de <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronizar datos automaticamente"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permite ás aplicacións actualizar os datos automaticamente"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Activar sincronización aut.?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Todos os cambios que efectúes nas túas contas na Web copiaranse automaticamente no teu dispositivo.\n\nAlgunhas contas tamén poden copiar automaticamente na Web os cambios que realices no teléfono. As Contas de Google funcionan desta última forma."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Desactivar sincronización aut.?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Desta forma aforraranse datos, pero terás que sincronizar cada conta manualmente para recompilar a información recente. Non recibirás notificacións cando se realicen actualizacións."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Información da conta"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Engadir conta"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Engadir unha conta"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Quitar conta"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Queres quitar a conta?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Se quitas esta conta, eliminaranse todas as súas mensaxes, contactos e demais datos do dispositivo."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"O administrador non admite este cambio"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Queres quitar o usuario?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Eliminaranse todas as aplicacións e os datos."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Non se puido quitar o usuario"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Queres tentalo de novo?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Ignorar"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Tentar de novo"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Engadir un usuario novo?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Cando engades un usuario novo, este deberá configurar o seu espazo."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Calquera usuario pode actualizar as aplicacións para o resto dos usuarios."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Produciuse un erro ao eliminar a conta."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronización da conta"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"A sincronización está activada para <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g> elementos"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"A sincronización está activada para todos os elementos"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"A sincronización está desactivada para todos os elementos"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sen sincronización"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Erro de sincronización"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Última sincronización: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sincronizando agora…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Toca para sincronizar agora<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronizar agora"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronización"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Neste momentos hai problemas coa sincronizacións, pero restablecerase en breve."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguranza"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueo de pantalla"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ningún"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Contrasinal"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Escolle un tipo de bloqueo"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opcións de bloqueo de pantalla"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opcións de bloqueo"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Introduce o teu padrón"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirmar"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Volver debuxar"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Definir un bloqueo de pantalla"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Escolle o teu PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Seleccionar o teu padrón"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Escolle o teu contrasinal"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Escoller o teu contrasinal"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Bloqueo de pantalla actual"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Por cuestións de seguranza, define un padrón"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Borrar"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"O teu administrador de TI bloqueou os contrasinais comúns. Proba cun contrasinal diferente."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Non se permite unha secuencia de díxitos ascendente, descendente nin repetida."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcións de bloqueo de pantalla"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: hai <xliff:g id="NUM_DAYS">%3$s</xliff:g> días"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Eng. dispositivo de confianza"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Disposit. confianza"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Cando o <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> estea conectado, poderase utilizar para desbloquear este coche. Se outra persoa colle o <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> pode acceder a este dispositivo"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Quitar dispositivo de confianza"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Feito"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Utiliza a aplicación complementaria para configurar un dispositivo de confianza. Unha vez configurado, poderás desbloquear o perfil de usuario cando o vehículo detecte o teléfono"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Descarga a aplicación complementaria no teléfono"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecciona <xliff:g id="CAR_NAME">%1$s</xliff:g> no teléfono para vincular os dispositivos"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock non pode detectar as funcións de seguranza deste dispositivo. Para axudar a protexer o teu coche, o dispositivo de confianza só poderá manter o coche desbloqueado despois de que o desbloquees ti. O teu dispositivo de confianza pode manter o coche desbloqueado cando está cerca, aínda que o estea sostendo outra persoa."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Engadir <xliff:g id="DEVICE_NAME">%1$s</xliff:g> como dispositivo de confianza"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> engadiuse correctamente como un dispositivo de confianza"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Produciuse un erro durante a inscrición de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Se engades un dispositivo de confianza, despois terás que definir un método de autenticación. Se non tes á man o dispositivo de confianza, deberás verificar a túa identidade para acceder ao teu perfil."</string>
     <string name="forget" msgid="3971143908183848527">"Borrar"</string>
+    <string name="connect" msgid="5861699594602380150">"Conectar"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Desconectar"</string>
     <string name="delete_button" msgid="5840500432614610850">"Eliminar"</string>
     <string name="remove_button" msgid="6664656962868194178">"Quitar"</string>
     <string name="cancel" msgid="750286395700355455">"Cancelar"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Sae do modo de demostración"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Con esta acción eliminarase a conta de demostración e restableceranse os datos de fábrica do sistema. Perderanse todos os datos do usuario."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Saír da demostración"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"finalizar configuración"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"agora non"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORAR"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Esta función non está dispoñible mentres conduces."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Non se poden engadir usuarios mentres se conduce."</string>
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 38e0676..ed305a3 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ઝાંખી સ્ક્રીન, ટચસ્ક્રીન, બૅટરી"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ઝાંખી સ્ક્રીન, રાત્રિ, રંગછટા"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"રાત્રિ મોડ"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"નેટવર્ક અને ઇન્ટરનેટ"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"મોબાઇલ નેટવર્ક"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"મોબાઇલ ડેટા"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"મોબાઇલ નેટવર્કનો ઉપયોગ કરીને ડેટા ઍક્સેસ કરો"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"મોબાઇલ ડેટા બંધ કરીએ?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ડેટા વપરાશ"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ડેટા સંબંધી ચેતવણી અને મર્યાદા"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ઍપ ડેટા વપરાશનું ચક્ર"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ડેટા વિશેની ચેતવણી સેટ કરો"</string>
+    <string name="data_warning" msgid="116776633806885370">"ડેટા વિશે ચેતવણી"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ડેટાની મર્યાદા સેટ કરો"</string>
+    <string name="data_limit" msgid="227338836292511425">"ડેટાની મર્યાદા"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ડેટાના વપરાશને મર્યાદિત કરો"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"તમે સેટ કરેલી મર્યાદાએ, તમારા વાહનનું હેડ એકમ મોબાઇલનો ડેટા બંધ કરી દેશે.\n\nવાહનના હેડ એકમ અને તમારા કૅરિઅર દ્વારા થતી ડેટા વપરાશની ગણતરીમાં ફરક હોઈ શકવાને કારણે માફકસરની મર્યાદા સેટ કરવાનું વિચારો."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"વાઇ-ફાઇ"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"વાયરલેસ ઍક્સેસ પૉઇન્ટને સેટ અને મેનેજ કરો"</string>
     <string name="wifi_starting" msgid="473253087503153167">"વાઇ-ફાઇ ચાલુ કરી રહ્યાં છીએ…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"વાઇ-ફાઇ બંધ કરી રહ્યાં છીએ…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"વાઇ-ફાઇની સૂચિ લોડ કરી રહ્યું છે"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"વાઇ-ફાઇ બંધ કર્યું"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"નેટવર્ક ભૂલવામાં નિષ્ફળ થયાં"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"નેટવર્ક સાથે કનેક્ટ કરવામાં નિષ્ફળ થયાં"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"નેટવર્ક ઉમેરો"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"વાઇ-ફાઇ બંધ કર્યું"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"કનેક્ટ કરો"</string>
     <string name="wifi_password" msgid="5565632142720292397">"પાસવર્ડ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"પાસવર્ડ બતાવો"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"નેટવર્કનું નામ"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID દાખલ કરો"</string>
     <string name="wifi_security" msgid="158358046038876532">"સુરક્ષા"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"સિગ્નલ પ્રબળતા"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"સિગ્નલ પ્રબળતા"</string>
     <string name="wifi_status" msgid="5688013206066543952">"સ્ટેટસ"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"લિંક ઝડપ"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"આવર્તન"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP ઍડ્રેસ"</string>
+    <string name="show_password" msgid="2074628020371139240">"પાસવર્ડ બતાવો"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"નેટવર્કનું નામ દાખલ કરો"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"પાસવર્ડ દાખલ કરો"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"નબળી"</item>
-    <item msgid="2032262610626057081">"ઠીક"</item>
-    <item msgid="3859756017461098953">"સારી"</item>
-    <item msgid="1521103743353335724">"ઉત્તમ"</item>
+    <item msgid="7683058295076342057">"નબળું"</item>
+    <item msgid="1639222824821660744">"ઠીક"</item>
+    <item msgid="1838705897358163300">"સારું"</item>
+    <item msgid="6067166649320533751">"ઉત્તમ"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"બ્લૂટૂથ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"બ્લૂટૂથ ચાલુ કરો"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"બ્લૂટૂથ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"બ્લૂટૂથ બંધ છે"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"નેટવર્કની વિગતો"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ઍડ્રેસ"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ઍડ્રેસ"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"સબનેટ માસ્ક"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ઍડ્રેસ"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ગેટવે"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"વાઇ-ફાઇ પસંદગીઓ"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"વાઇ-ફાઇ ઑટોમૅટિક રીતે ચાલુ કરો"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"તમારા હોમ નેટવર્ક જેવા ઉચ્ચ ક્વૉલિટીના સાચવેલા નેટવર્કની નજીકમાં વાઇ-ફાઇ ઑટોમૅટિક રીતે ફરી ચાલુ થશે"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"સ્થાન બંધ હોવાને કારણે અનુપલબ્ધ છે. "<annotation id="link">"સ્થાન"</annotation>" ચાલુ કરો."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"વાઇ-ફાઇ સ્કૅનિંગ ચાલુ કરીએ?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ચાલુ કરો"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"વાઇ-ફાઇ માટે સ્કૅનિંગ ચાલુ કરી છે"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"મોબાઇલ ડેટા પર ઑટોમૅટિક રીતે સ્વિચ કરો"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"જ્યારે વાઇ-ફાઇ પાસે ઇન્ટરનેટનો ઍક્સેસ ન હોય, ત્યારે મોબાઇલ ડેટાનો ઉપયોગ કરો. ડેટા વપરાશ શુલ્ક લાગુ થઈ શકે છે."</string>
+    <string name="learn_more" msgid="8214605928933358604">"વધુ જાણો"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"બ્લૂટૂથ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"કનેક્શન મેનેજ કરો, ઉપકરણનું નામ અને શોધક્ષમતા સેટ કરો"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"કમ્પ્યુટર"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"હેડસેટ"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ફોન"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ઇમેજિંગ"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"હેડફોન"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ઇનપુટ પેરિફેરલ"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"બ્લૂટૂથ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"જોડાણ કરેલા ઉપકરણો"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"ઉપલબ્ધ ઉપકરણો"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"કોઈ જોડાયેલ ઉપકરણો નથી"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"કોઈ ઉપકરણ ઉપલબ્ધ નથી"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"જોડાણ કરેલ ઉપકરણ"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"નામ"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"આના માટે ઉપયોગ કરો"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"બ્લૂટૂથ ઉપકરણનું નામ બદલો"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"અનામાંકિત ડિવાઇસ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"જોડાણ કરેલા ડિવાઇસ"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"નવા ડિવાઇસ સાથે જોડાણ બનાવો"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"બ્લૂટૂથ જોડી બનાવવાનું ચાલુ કરશે"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ડિવાઇસને ડિસ્કનેક્ટ કરીએ?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"તમારું વાહન <xliff:g id="DEVICE_NAME">%1$s</xliff:g>થી ડિસ્કનેક્ટ થઈ જશે."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"વાહનનું બ્લૂટૂથ ઍડ્રેસ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ડિવાઇસનું Bluetooth ઍડ્રેસ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"વાહનનું નામ"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"આ વાહનનું નામ બદલો"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ડિવાઇસનું નામ બદલો"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"નામ બદલો"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ઉપલબ્ધ ડિવાઇસ"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"પ્રોફાઇલ"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"બ્લૂટૂથ જોડાણ બનાવવાની વિનંતી"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"જોડાણ બનાવો અને કનેક્ટ કરો"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"બ્લૂટૂથ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"બ્લૂટૂથનો જોડાણ કરવાનો કોડ"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"પિનમાં અક્ષરો અથવા પ્રતીકોનો સમાવેશ થાય છે"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"જોડાણ કરવાનો કોડ ટાઇપ કરો, પછી Return અથવા Enter દબાવો"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"સામાન્ય રીતે 0000 અથવા 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"જોડાણ બનાવવાની વિનંતી"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> સાથે જોડાણ બનાવવા માટે ટૅપ કરો."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ભાષાઓ"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ભાષા અને ઇનપુટ"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"કીબોર્ડ"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"કીબોર્ડ મેનેજ કરો"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"ટેક્સ્ટ ટુ સ્પીચ આઉટપુટ"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"મનપસંદ એન્જિન"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"વર્તમાન એન્જિન"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"બોલવાની ઝડપ"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"પિચ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"રીસેટ કરો"</string>
     <string name="sound_settings" msgid="3072423952331872246">"સાઉન્ડ"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"રિંગ વૉલ્યૂમ"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"નૅવિગેશન વૉલ્યૂમ"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"મીડિયા"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"સંગીત અને વીડિઓ માટે વૉલ્યૂમ સેટ કરો"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"એલાર્મ"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ફોન રિંગટોન"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"ડિફૉલ્ટ નોટિફિકેશન સાઉન્ડ"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"ડિફૉલ્ટ અલાર્મ સાઉન્ડ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ઍપ અને નોટિફિકેશન"</string>
+    <string name="all_applications" msgid="7798210477486822168">"બધી ઍપ બતાવો"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ડિફૉલ્ટ ઍપ"</string>
     <string name="applications_settings" msgid="794261395191035632">"ઍપની માહિતી"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ફરજિયાત બંધ કરો"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"ફરજિયાત બંધ કરીએ?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"જો તમે કોઈ ઍપને ફરજિયાત બંધ કરો છો, તો તે બરાબર ચાલશે નહીં."</string>
     <string name="disable_text" msgid="4358165448648990820">"બંધ કરો"</string>
     <string name="enable_text" msgid="1794971777861881238">"ચાલુ કરો"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"અનઇન્સ્ટૉલ કરો"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"જો તમે આ ઍપ બંધ કરો છો, તો Android અને અન્ય ઍપ અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ઍપ બંધ કરો"</string>
     <string name="permissions_label" msgid="2701446753515612685">"પરવાનગીઓ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"વર્ઝન: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"કોઈ પરવાનગીઓ આપેલ નથી"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"કોઈ પરવાનગીઓની વિનંતી કરેલ નથી"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ડેટા વપરાશ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ઍપ ડેટા વપરાશ"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ફરજિયાત બંધ કરો"</string>
     <string name="computing_size" msgid="5791407621793083965">"ગણતરી કરી રહ્યાં છીએ…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> વધારાની પરવાનગીઓ</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> વધારાની પરવાનગીઓ</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"સહાય અને વૉઇસ ઇનપુટ"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"સહાયક ઍપ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"સ્ક્રીન પરની ટેક્સ્ટનો ઉપયોગ કરો"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"સહાયક ઍપને સ્ક્રીન કન્ટેન્ટને ટેક્સ્ટ તરીકે ઍક્સેસ કરવાની મંજૂરી આપો"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"સ્ક્રીનશૉટનો ઉપયોગ કરો"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"સહાયક ઍપને સ્ક્રીનની છબીને ઍક્સેસ કરવાની મંજૂરી આપો"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"આપમેળે ભરાવાની સેવા"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"એકપણ નહીં"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"પસંદ કરેલી"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"તમારી સ્ક્રીન પર જોઈ શકાતી અથવા ઍપમાંથી ઍક્સેસ કરી શકાય તેવી માહિતી સહિતની તમારી સિસ્ટમમાં ઉપયોગમાં લેવાતી ઍપ વિશેની માહિતી આસિસ્ટંટ વાંચી શકશે."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ખાતરી કરો કે તમે આ ઍપનો વિશ્વાસ કરો છો&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google આપમેળે ભરાવાની સુવિધા&gt;%1$s&lt;/xliff:g&gt; તમારી સ્ક્રીન પર શું છે તેનો ઉપયોગ એ નક્કી કરવા કરે છે કે આપમેળે શું ભરાઈ શકે."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"સેવા ઉમેરો"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"સ્થાન"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"સ્થાન માટે તાજેતરની વિનંતીઓ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"સ્થાન માટે તાજેતરમાં કોઈ વિનંતી નથી"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ઍપ લેવલની પરવાનગીઓ"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"સ્કૅનિંગ"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"જગ્યાની સેવાઓ"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"વાઇ-ફાઇ સ્કૅનિંગ"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"જ્યારે વાઇ-ફાઇ બંધ હોય ત્યારે પણ ગમે ત્યારે ઍપ અને સેવાઓને વાઇ-ફાઇ નેટવર્ક સ્કૅન કરવાની મંજૂરી આપો. ઉદાહરણ તરીકે, આનો ઉપયોગ સ્થાન આધારિત સુવિધાઓ અને સેવાઓને વધુ સારી બનાવવા માટે કરી શકાય છે."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"બ્લૂટૂથ સ્કૅનિંગ"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"જ્યારે બ્લૂટૂથ બંધ હોય ત્યારે પણ ગમે ત્યારે ઍપ અને સેવાઓને નજીકનાં ડિવાઇસ સ્કૅન કરવાની મંજૂરી આપો. ઉદાહરણ તરીકે, આનો ઉપયોગ સ્થાન આધારિત સુવિધાઓ અને સેવાઓને વધુ સારી બનાવવા માટે કરી શકાય છે."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"સિસ્ટમ"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"સિસ્ટમ અપડેટ"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"સિસ્ટમ અપડેટ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android વર્ઝન"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android સુરક્ષા પૅચ લેવલ"</string>
     <string name="model_info" msgid="4966408071657934452">"મૉડલ"</string>
     <string name="baseband_version" msgid="2370088062235041897">"બેઝબૅન્ડ વર્ઝન"</string>
     <string name="kernel_version" msgid="7327212934187011508">"કર્નલ વર્ઝન"</string>
     <string name="build_number" msgid="3997326631001009102">"બિલ્ડ નંબર"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"બ્લૂટૂથ ઍડ્રેસ"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"ઉપલબ્ધ નથી"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"સ્ટેટસ"</string>
     <string name="device_status" msgid="267298179806290920">"સ્ટેટસ"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"કૉપિરાઇટ"</string>
     <string name="license_title" msgid="936705938435249965">"લાઇસન્સ"</string>
     <string name="terms_title" msgid="5201471373602628765">"નિયમો અને શરતો"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"સિસ્ટમ WebView લાઇસન્સ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"સિસ્ટમ WebView લાઇસન્સ"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"વૉલપેપર"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ઉપગ્રહ છબી પ્રદાતાઓ:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"તૃતીય-પક્ષ લાઇસન્સ"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"લાઇસન્સ લોડ કરવામાં સમસ્યા છે."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"લોડ કરી રહ્યાં છીએ…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">હવે તમે ડેવલપર બનવાથી <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> પગલું દૂર છો.</item>
+      <item quantity="other">હવે તમે ડેવલપર બનવાથી <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> પગલાં દૂર છો.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"તમે હવે ડેવલપર છો!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"કોઈ જરૂર નથી, તમે પહેલાંથી જ ડેવલપર છો."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ડેવલપરના વિકલ્પો"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"રીસેટ કરવાના વિકલ્પો"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"નેટવર્ક, ઍપ અથવા ઉપકરણ રીસેટ કરો"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"નેટવર્ક રીસેટ કરો"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"આ બધા નેટવર્ક સેટિંગ રીસેટ કરશે, જેમાં આનો સમાવેશ છે:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"વાઇ-ફાઇ"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"મોબાઇલ ડેટા"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"બ્લૂટૂથ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"બધા વાહન ઇ-સિમ કાઢી નાખો"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"આમ કરવાથી તમારો સેવા પ્લાન રદ થશે નહીં."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"ઇ-સિમ રીસેટ કરી શકાતા નથી"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"નેટવર્ક પસંદ કરો"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"સેટિંગ રીસેટ કરો"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"રીસેટ કરીએ?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"બધા નેટવર્ક સેટિંગ રીસેટ કરીએ? તમે આ ક્રિયામાં થયેલો છેલ્લો ફેરફાર રદ કરી શકતાં નથી!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"સેટિંગ રીસેટ કરો"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"નેટવર્ક સેટિંગ રીસેટ કરવામાં આવ્યું છે"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ઍપ પસંદગીઓને રીસેટ કરો"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"આમ કરવાથી આ બધી પસંદગીઓ રીસેટ થઈ જશે:\n\n"<li>"બંધ કરેલી ઍપ"</li>\n<li>"ઍપના બંધ કરેલા નોટિફિકેશન"</li>\n<li>"ક્રિયાઓ માટેની ડિફૉલ્ટ ઍપ્લિકેશનો"</li>\n<li>"ઍપ માટે બૅકગ્રાઉન્ડ ડેટાના પ્રતિબંધો"</li>\n<li>"કોઈપણ પરવાનગીના પ્રતિબંધો"</li>\n\n"તમે કોઈપણ ઍપનો ડેટા ગુમાવશો નહીં."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ઍપને રીસેટ કરો"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ઍપ પસંદગીઓ રીસેટ કરવામાં આવી છે"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"બધો ડેટા કાઢી નાખો (ફેક્ટરી રીસેટ)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"આ ક્રિયા તમારા વાહનના હેડ યુનિટમાંથી બધો ડેટા કાઢી નાખશે, જેમાં આનો સમાવેશ થાય છે:\n\n"<li>"તમારું Google એકાઉન્ટ"</li>\n<li>"સિસ્ટમ અને ઍપ ડેટા અને સેટિંગ"</li>\n<li>"ડાઉનલોડ કરેલ ઍપ"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"હાલમાં તમે નીચે જણાવેલા બધા એકાઉન્ટમાં સાઇન ઇન થયા છો:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"આ વાહન પર અન્ય વપરાશકર્તા હાજર છે."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"વાહન રીસેટ કરો"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"રીસેટ કરીએ?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"તમારી બધી વ્યક્તિગત માહિતી અને ડાઉનલોડ કરેલી એપ્લિકેશન્સને કાઢી નાખીએ? તમે આ ક્રિયાને પૂર્વવત્ કરી શકતા નથી!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"દરેક વસ્તુ કાઢી નાંખો"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"કાઢી નાંખી રહ્યું છે"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"કૃપા કરીને રાહ જુઓ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"તારીખ અને સમય"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"તારીખ અને સમય સેટ કરો"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"તારીખ, સમય, સમય ઝોન અને ફૉર્મેટ સેટ કરો"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"સમય ઝોન પ્રમાણે સૉર્ટ કરો"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"તારીખ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"સમય"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"વપરાશકર્તા ઉમેરો"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"એકાઉન્ટ ઉમેરો"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"વપરાશકર્તા ડિલીટ કરો"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"નવા વપરાશકર્તા"</string>
-    <string name="user_guest" msgid="3465399481257448601">"અતિથિ"</string>
     <string name="user_admin" msgid="1535484812908584809">"વ્યવસ્થાપક"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"વ્યવસ્થાપક તરીકે સાઇન ઇન થયા"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"વ્યવસ્થાપક માટેની બધી પરવાનગીઓ"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"વ્યવસ્થાપક બનાવો"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"આ વપરાશકર્તા, અન્ય વ્યવસ્થાપકો સહિત અન્ય વપરાશકર્તાઓને ડિલીટ કરી શકશે અને સિસ્ટમને ફેક્ટરી રીસેટ પણ કરી શકશે."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"આ ક્રિયા ઉલટાવી શકવા યોગ્ય નથી."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"હા, આમને વ્યવસ્થાપક બનાવો"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"નવા વપરાશકર્તાઓ બનાવો"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ફોન કૉલ કરો"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"કારના મોબાઇલ ડેટા મારફતે મેસેજિંગ"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"નવી ઍપ ઇન્સ્ટૉલ કરો"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ઍપ અનઇન્સ્ટૉલ કરો"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"વપરાશકર્તા ઉમેરો"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"નવા વપરાશકર્તા"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"નવા વપરાશકર્તાને ઉમેરીએ?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"જ્યારે તમે કોઈ નવા વપરાશકર્તાને ઉમેરો છો, ત્યારે તે વ્યક્તિને તેમની સ્પેસ સેટ કરવાની જરૂર પડે છે."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"કોઈપણ વપરાશકર્તા બધા અન્ય વપરાશકર્તાઓ માટે ઍપને અપડેટ કરી શકે છે."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"વપરાશકર્તાની મર્યાદા સુધી પહોંચ્યાં"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">તમે <xliff:g id="COUNT">%d</xliff:g> વપરાશકર્તા સુધી મંજૂરી આપી શકશો.</item>
+      <item quantity="other">તમે <xliff:g id="COUNT">%d</xliff:g> વપરાશકર્તા સુધી મંજૂરી આપી શકશો.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"નવો વપરાશકર્તા બનાવવામાં નિષ્ફળ"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"આ યુઝરને ડિલીટ કરીએ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"બધી ઍપ અને ડેટા ડિલીટ કરવામાં આવશે."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"વપરાશકર્તાને ડિલીટ કરવામાં નિષ્ફળ થયાં."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"છોડી દો"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ફરી પ્રયાસ કરો"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"છેલ્લા યુઝરને ડિલીટ કરીએ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"આ કાર માટેના બચેલા એકમાત્ર વપરાશકર્તાને ડિલીટ કર્યા પછી, નવા વ્યવસ્થાપકની રચના થશે."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"આ વપરાશકર્તા સાથે સંબંધિત બધો ડેટા, સેટિંગ અને ઍપ ડિલીટ થશે. તમારે સિસ્ટમને ફરીથી સેટ કરવી જરૂરી થશે."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"નવા વ્યવસ્થાપકની પસંદગી કરો"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"તમારી પાસે એક વ્યવસ્થાપકનું હોવું જરૂરી છે. આને ડિલીટ કરવા માટે, પહેલા નવાની પસંદગી કરો."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"વ્યવસ્થાપક પસંદ કરો"</string>
+    <string name="user_guest" msgid="3465399481257448601">"અતિથિ"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"અતિથિ"</string>
     <string name="user_switch" msgid="6544839750534690781">"સ્વિચ કરો"</string>
     <string name="current_user_name" msgid="3813671533249316823">"તમે (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"નામ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"સેટ કરેલ નથી"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"વપરાશકર્તાના નામમાં ફેરફાર કરો"</string>
     <string name="users_list_title" msgid="770764290290240909">"વપરાશકર્તાઓ"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$sને આપેલી પરવાનગીઓ"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"એકાઉન્ટ"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"વપરાશકર્તા"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"એકાઉન્ટ ઉમેરો"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"કોઈ એકાઉન્ટ ઉમેરવામાં આવ્યા નથી"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> માટેના એકાઉન્ટ"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ડેટાને ઑટોમૅટિક રીતે સિંક કરો"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ઍપને ઑટોમૅટિક રીતે ડેટાને રિફ્રેશ કરવા દો"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ડેટા ઑટો સિંક કરો ચાલુ કરીએ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"તમે વેબ પર તમારા એકાઉન્ટમાં કરો તે કોઈપણ ફેરફારોને ઑટોમૅટિક રીતે તમારા ડિવાઇસ પર કૉપિ કરાશે.\n\nઅમુક એકાઉન્ટ પણ તમે ડિવાઇસ પર કરો તે ફેરફારોને વેબ પર ઑટોમૅટિક રીતે કૉપિ કરશે. Google એકાઉન્ટ આ પ્રમાણે કાર્ય કરે છે."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ડેટા ઑટો સિંક કરો બંધ કરીએ?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"આમ કરવું તે ડેટા બચાવશે, પરંતુ તાજેતરની માહિતી એકત્રિત કરવા માટે તમને દરેક એકાઉન્ટને મેન્યુઅલી સિંક કરવાની જરૂર પડશે. અને જ્યારે અપડેટ આવશે ત્યારે તમને નોટિફિકેશન પ્રાપ્ત થશે નહીં."</string>
     <string name="account_details_title" msgid="7529571432258448573">"એકાઉન્ટની માહિતી"</string>
     <string name="add_account_title" msgid="5988746086885210040">"એકાઉન્ટ ઉમેરો"</string>
     <string name="add_an_account" msgid="1072285034300995091">"એક એકાઉન્ટ ઉમેરો"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"એકાઉન્ટ કાઢી નાખો"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"એકાઉન્ટ કાઢી નાખીએ?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"આ એકાઉન્ટને કાઢી નાખવાથી તેમાંના બધા સંદેશા, સંપર્કો તેમજ ઉપકરણમાંનો અન્ય ડેટા ડિલીટ થઈ જશે!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"તમારા વ્યવસ્થાપકે આ ફેરફારની મંજૂરી આપી નથી"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"આ વપરાશકર્તા કાઢી નાખીએ?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"બધી ઍપ અને ડેટા ડિલીટ કરવામાં આવશે."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"વપરાશકર્તા કાઢી નાખવામાં નિષ્ફળ રહ્યાં."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"ફરી પ્રયાસ કરીએ?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"છોડી દો"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ફરી પ્રયાસ કરો"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"નવા વપરાશકર્તાને ઉમેરીએ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"જ્યારે તમે કોઈ નવા વપરાશકર્તાને ઉમેરો છો, ત્યારે તે વ્યક્તિને તેમની સ્પેસ સેટ કરવાની જરૂર પડે છે."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"કોઈપણ વપરાશકર્તા બધા અન્ય વપરાશકર્તાઓ માટે ઍપને અપડેટ કરી શકે છે."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"એકાઉન્ટ કાઢી નાખવામાં નિષ્ફળ થયાં."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"એકાઉન્ટ સિંક કરો"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> માંથી <xliff:g id="ID_1">%1$d</xliff:g> આઇટમ માટે સિંક ચાલુ છે"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"બધી આઇટમ માટે સિંક ચાલુ છે"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"બધી આઇટમ માટે સિંક બંધ છે"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"સિંક બંધ છે"</string>
+    <string name="sync_error" msgid="6698021343089247914">"સિંકમાં ભૂલ"</string>
+    <string name="last_synced" msgid="4745124489150101529">"છેલ્લે સિંક કરેલ <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"હમણાં સિંક કરી રહ્યાં છીએ…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"હમણાં સિંક કરવા માટે ટૅપ કરો<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"હમણાં સિંક કરો"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"સિંક કરવાનું રદ કરો"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"સિંકમાં હાલ સમસ્યા આવી રહી છે. ટૂંક સમયમાં તે ફરીથી કાર્યરત થઈ જશે."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"સુરક્ષા"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"સ્ક્રીન લૉક"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"કોઈ લૉક નથી"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"પિન"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"પાસવર્ડ"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"લૉકનો પ્રકાર પસંદ કરો"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"સ્ક્રીન લૉકના વિકલ્પો"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"લૉક માટે વિકલ્પો"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"તમારી પૅટર્ન દાખલ કરો"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"કન્ફર્મ કરો"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"ફરીથી દોરો"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"સ્ક્રીન લૉક સેટ કરો"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"તમારો પિન પસંદ કરો"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"તમારી પૅટર્ન પસંદ કરો"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"તમારો પાસવર્ડ પસંદ કરો"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"તમારો પાસવર્ડ પસંદ કરો"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"વર્તમાન સ્ક્રીન લૉક"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"સુરક્ષા માટે, એક પૅટર્ન સેટ કરો"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"સાફ કરો"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"સામાન્ય પાસવર્ડ તમારા IT વ્યવસ્થાપક દ્વારા બ્લૉક કરવામાં આવે છે. એક અલગ પાસવર્ડ અજમાવી જુઓ."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"અંકોના ચઢતા ક્રમની, ઉતરતા ક્રમની અથવા પુનરાવર્તિત અનુક્રમની મંજૂરી નથી."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"સ્ક્રીન લૉકના વિકલ્પો"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> દિવસ પહેલાં"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"વિશ્વસનીય ડિવાઇસ ઉમેરો"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"વિશ્વસનીય ડિવાઇસ"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ડિવાઇસ</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ડિવાઇસ</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"જ્યારે તમારું <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> કનેક્ટ થયેલું હશે, ત્યારે આ કારને અનલૉક કરી શકશે જો કોઈ તમારી <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>કાર લઈ જશે, તો તેઓ આ ડિવાઇસને ઍક્સેસ કરી શકશે"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"કન્ફર્મ કરો"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"વિશ્વસનીય ડિવાઇસ કાઢી નાખો"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"થઈ ગયું"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"વિશ્વસનીય ડિવાઇસનું સેટઅપ કરવા માટે સાથી ઍપનો ઉપયોગ કરો. એકવાર સેટઅપ થઈ જાય પછી, જ્યારે વાહનને તમારા ફોનની જાણ થાય ત્યારે તમે તમારી વપરાશકર્તા પ્રોફાઇલ અનલૉક કરી શકશો"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. તમારા ફોન પર સાથી ઍપને ડાઉનલોડ કરો"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. ડિવાઇસને તમારા ફોન સાથે જોડાણ કરવા માટે <xliff:g id="CAR_NAME">%1$s</xliff:g>ને પસંદ કરો"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock આ ડિવાઇસની સુરક્ષા સુવિધાઓ શોધી શકતા નથી. તમારા કારને સુરક્ષિત રાખવામાં સહાય કરવા માટે, એકવાર તમે તમારી કાર પહેલેથી અનલૉક કરી દો, માત્ર પછીથી જ વિશ્વસનીય ડિવાઇસ તમારી કારને અનલૉક કરેલી રાખી શકશે. જો અન્ય કોઈ વ્યક્તિએ તમારું વિશ્વસનીય ડિવાઇસ પકડી રાખ્યું હોય, તો પણ જ્યારે તે નજીકમાં હશે ત્યારે તમારી કારને અનલૉક કરેલી રાખી શકશે."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ને વિશ્વસનીય ડિવાઇસ તરીકે ઉમેરો"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ને સફળતાપૂર્વક વિશ્વસનીય ડિવાઇસ તરીકે ઉમેર્યું"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ની નોંધણી નિષ્ફળ રહી"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"કોઈ વિશ્વસનીય ડિવાઇસ ઉમેરવા માટે, તમારે પહેલાં કોઈ પ્રમાણીકરણ પદ્ધતિ સેટ કરવી આવશ્યક છે. જો તમારી પાસે તમારું વિશ્વસનીય ડિવાઇસ ન હોય, તો તમારી પ્રોફાઇલને ઍક્સેસ કરવા માટે પ્રમાણીકરણ આવશ્યક રહેશે."</string>
     <string name="forget" msgid="3971143908183848527">"ભૂલી જાઓ"</string>
+    <string name="connect" msgid="5861699594602380150">"કનેક્ટ કરો"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ડિસ્કનેક્ટ કરો"</string>
     <string name="delete_button" msgid="5840500432614610850">"ડિલીટ કરો"</string>
     <string name="remove_button" msgid="6664656962868194178">"કાઢી નાખો"</string>
     <string name="cancel" msgid="750286395700355455">"રદ કરો"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ડેમો મોડમાંથી બહાર નીકળો"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"આ ક્રિયા ડેમો એકાઉન્ટ ડિલીટ કરશે અને સિસ્ટમને ફેક્ટરી ડેટા પર રીસેટ કરશે. વપરાશકર્તાનો બધો ડેટા ગુમ થશે."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ડેમોમાંથી બહાર નીકળો"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"સેટઅપ સમાપ્ત કરો"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"હમણાં નહીં"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"છોડી દો"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ડ્રાઇવિંગ કરતી વખતે આ સુવિધા ઉપલબ્ધ રહેશે નહીં."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ડ્રાઇવ કરતી વખતે વપરાશકર્તાને ઉમેરી શકાતા નથી."</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index b814e6d..8565440 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"हल्की रोशनी वाली स्क्रीन, टचस्‍क्रीन, बैटरी"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"हल्की रोशनी वाली स्क्रीन, नाइट, टिंट"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"रात वाला मोड"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क और इंटरनेट"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"मोबाइल डेटा"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"मोबाइल नेटवर्क का इस्तेमाल करके डेटा एक्सेस करें"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"मोबाइल डेटा बंद करना चाहते हैं?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"डेटा खर्च"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"डेटा खर्च की चेतावनी और तय सीमा"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ऐप्लिकेशन के डेटा खर्च की साइकिल"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"डेटा चेतावनी सेट करें"</string>
+    <string name="data_warning" msgid="116776633806885370">"डेटा खर्च की चेतावनी"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"डेटा सीमा सेट करें"</string>
+    <string name="data_limit" msgid="227338836292511425">"डेटा सीमा"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"डेटा खर्च को सीमित करना"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"आपकी तय की हुई सीमा तक पहुंचते ही आपकी गाड़ी की हेड यूनिट मोबाइल डेटा को बंद कर देगी.\n\nडेटा इस्तेमाल का हिसाब हेड यूनिट लगाती है. ऐसा हो सकता है कि आपकी मोबाइल और इंटरनेट सेवा देने वाली कंपनी अलग तरह से डेटा खर्च का हिसाब लगाए. इसलिए, इस फ़र्क को ध्यान में रखते हुए सीमा तय करें."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"वाई-फ़ाई"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"वायरलेस एक्सेस पॉइंट सेट और प्रबंधित करें"</string>
     <string name="wifi_starting" msgid="473253087503153167">"वाई-फ़ाई चालू हो रहा है…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"वाई-फ़ाई बंद हो रहा है…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"वाई-फ़ाई सूची लोड हो रही है"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"वाई-फ़ाई बंद किया गया"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"मौजूदा नेटवर्क की जानकारी हटाई नहीं जा सकी"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"नेटवर्क से कनेक्ट नहीं हो पाया"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"नेटवर्क जोड़ें"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"वाई-फ़ाई बंद किया गया"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"जोड़ें"</string>
     <string name="wifi_password" msgid="5565632142720292397">"पासवर्ड"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"पासवर्ड दिखाएं"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"नेटवर्क का नाम"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID डालें"</string>
     <string name="wifi_security" msgid="158358046038876532">"सुरक्षा"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"सिग्‍नल कितना अच्छा है"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"सिग्नल कितना अच्छा है"</string>
     <string name="wifi_status" msgid="5688013206066543952">"स्थिति"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"कनेक्शन की रफ़्तार"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"फ़्रीक्वेंसी"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"आईपी पता"</string>
+    <string name="show_password" msgid="2074628020371139240">"पासवर्ड दिखाएं"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"नेटवर्क का नाम डालें"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"पासवर्ड डालें"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"खराब"</item>
-    <item msgid="2032262610626057081">"ठीक"</item>
-    <item msgid="3859756017461098953">"अच्छा"</item>
-    <item msgid="1521103743353335724">"बेहतरीन"</item>
+    <item msgid="7683058295076342057">"खराब"</item>
+    <item msgid="1639222824821660744">"ठीक"</item>
+    <item msgid="1838705897358163300">"अच्छा"</item>
+    <item msgid="6067166649320533751">"बेहतरीन"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ब्लूटूथ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ब्लूटूथ चालू करें"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ब्लूटूथ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ब्लूटूथ बंद कर दिया गया"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d एमबीपीएस"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 गीगाहर्ट्ज़"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 गीगाहर्ट्ज़"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"नेटवर्क के बारे में जानकारी"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC पता"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"आईपी पता"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"सबनेट मास्क"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"डीएनएस"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 पते"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"गेटवे"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"वाई-फ़ाई से जुड़ी पसंद"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"वाई-फ़ाई अपने आप चालू करें"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"सेव किए गए अच्छी क्वालिटी के नेटवर्क पास होने पर वाई-फ़ाई अपने आप चालू हो जाएगा, जैसे कि आपके घर का नेटवर्क"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"\'जगह की जानकारी\' बंद होने से यह सुविधा उपलब्ध नहीं है. "<annotation id="link">"जगह की जानकारी"</annotation>" चालू करें."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"वाई-फ़ाई नेटवर्क ढूंंढने की सुविधा चालू करें?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"चालू करें"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"वाई-फ़ाई नेटवर्क ढूंढने की सुविधा चालू हो गई है"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"मोबाइल डेटा पर अपने आप जाएं"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"जब वाई-फ़ाई के ज़रिए इंटरनेट की सुविधा न हो, तो मोबाइल डेटा इस्तेमाल करें. डेटा के लिए पैसे चुकाने पड़ सकते हैं."</string>
+    <string name="learn_more" msgid="8214605928933358604">"ज़्यादा जानें"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ब्लूटूथ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"कनेक्‍शन प्रबंधित करें, डिवाइस का नाम सेट करें और उसे खोजने लायक बनाएं"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"कंप्यूटर"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"हेडसेट"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"फ़ोन"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"फ़ोटो या वीडियो बनाने वाले डिवाइस"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"हेडफ़ोन"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"इनपुट पेरिफ़ेरल"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ब्लूटूथ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"जुड़े हुए डिवाइस"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"उपलब्ध डिवाइस"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"कोई भी डिवाइस जुड़ा हुआ नहीं है"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"कोई ब्लूटूथ डिवाइस उपलब्ध नहीं है"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"जुड़ा हुआ डिवाइस"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"नाम"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"इन चीज़ों के लिए इस्तेमाल करें"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"ब्लूटूथ डिवाइस का नाम बदलें"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"बिना नाम वाला डिवाइस"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"जुड़े हुए डिवाइस"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"नया डिवाइस जोड़ें"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"दूसरे डिवाइस से जुड़ने के लिए ब्लूटूथ चालू हो जाएगा"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"डिवाइस डिसकनेक्ट करना चाहते हैं?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"आपका वाहन <xliff:g id="DEVICE_NAME">%1$s</xliff:g> से डिसकनेक्ट हो जाएगा."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"वाहन का ब्लूटूथ पता: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"डिवाइस का ब्लूटूथ पता: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"वाहन का नाम"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"इस वाहन का नाम बदलें"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"डिवाइस का नाम बदलें"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"नाम बदलें"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"उपलब्ध डिवाइस"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"प्रोफ़ाइल"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ब्लूटूथ के ज़रिए जोड़ने का अनुरोध किया गया"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"दूसरे डिवाइस से जोड़ें और कनेक्‍ट करें"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ब्लूटूथ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ब्‍लूटूथ के ज़रिए जोड़ने वाला कोड"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"पिन में अक्षर या चिह्न शामिल होते हैं"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"दूसरे डिवाइस से जोड़ने वाला कोड लिखें और फिर Return या Enter दबाएं"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"आम तौर पर, 0000 या 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"दूसरे डिवाइस से जोड़ने का अनुरोध किया गया"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> से जोड़ने के लिए टैप करें."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"भाषाएं"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"भाषाएं और इनपुट"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"कीबोर्ड"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"कीबोर्ड प्रबंधित करें"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"\'लिख को बोली में बदलना\' आउटपुट"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"पसंदीदा इंजन"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"मौजूदा इंजन"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"बोलने की गति"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"पिच"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"रीसेट करें"</string>
     <string name="sound_settings" msgid="3072423952331872246">"आवाज़"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"घंटी बजने की आवाज़"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"नेविगेशन की आवाज़"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"मीडिया"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"संगीत और वीडियो के लिए आवाज़ कम या ज़्यादा करें"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"अलार्म"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"फ़ोन की रिंगटोन"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"सूचना की डिफ़ॉल्ट आवाज़"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"अलार्म की डिफ़ॉल्ट आवाज़"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ऐप्लिकेशन और सूचनाएं"</string>
+    <string name="all_applications" msgid="7798210477486822168">"सभी ऐप्लिकेशन दिखाएं"</string>
+    <string name="default_applications" msgid="1558183275638697087">"डिफ़ॉल्ट ऐप्लिकेशन"</string>
     <string name="applications_settings" msgid="794261395191035632">"ऐप्लिकेशन की जानकारी"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ज़बरदस्ती रोकें"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"ज़बरदस्ती रोकें?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"अगर आप किसी ऐप्लिकेशन को ज़बरदस्ती रोकते हैं, तो हो सकता है वह ठीक से काम न करे."</string>
     <string name="disable_text" msgid="4358165448648990820">"बंद करें"</string>
     <string name="enable_text" msgid="1794971777861881238">"चालू करें"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"अनइंस्टॉल करें"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"अगर आप इस ऐप्लिकेशन को बंद कर देते हैं, तो हो सकता है कि अब Android और दूसरे ऐप्लिकेशन मनमुताबिक काम न कर पाएं."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ऐप्लिकेशन बंद करें"</string>
     <string name="permissions_label" msgid="2701446753515612685">"अनुमतियां"</string>
     <string name="application_version_label" msgid="8556889839783311649">"वर्शन: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"कोई अनुमति नहीं दी गई"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"किसी अनुमति का अनुरोध नहीं किया गया"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"डेटा खर्च"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ऐप्लिकेशन का डेटा खर्च"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ज़बरदस्ती रोकें"</string>
     <string name="computing_size" msgid="5791407621793083965">"गिनती की जा रही है…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> अतिरिक्त अनुमतियां</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> अतिरिक्त अनुमतियां</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"असिस्ट और बोलकर फ़ोन को निर्देश"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"सहायक ऐप्लिकेशन"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"स्क्रीन के टेक्स्ट का इस्तेमाल करना"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"सहायक ऐप्लिकेशन को टेक्स्ट के रूप में स्क्रीन की सामग्री एक्सेस करने दें"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"स्क्रीनशॉट का इस्तेमाल करना"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"सहायक ऐप्लिकेशन को स्क्रीन की इमेज एक्सेस करने दें"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"ऑटोमैटिक भरने की सेवा"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"कोई नहीं"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"चुना हुआ ऐप्लिकेशन"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Assistant आपके सिस्टम पर इस्तेमाल किए जा रहे ऐप्लिकेशन की जानकारी पढ़ सकेगी. इसमें आपकी स्क्रीन पर दिखाई देने वाली या ऐप्लिकेशन में से एक्सेस करने लायक जानकारी शामिल होगी."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;पक्का कर लें कि आप इस ऐप्लिकेशन पर भरोसा करते हैं&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; आपकी स्क्रीन पर मौजूद चीज़ों का इस्तेमाल करता है ताकि ऑटोमैटिक भरी जाने वाली जानकारी तय कर सके."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"सेवा जोड़ें"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"जगह"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"हाल ही में किए गए जगह के अनुरोध"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"हाल ही में जगह का कोई अनुरोध नहीं है"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ऐप्लिकेशन-स्तर की अनुमतियां"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"स्‍कैन करना"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"जगह की जानकारी की सेवाएं"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"वाई-फ़ाई स्कैन करना"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"ऐप्लिकेशन और सेवाओं को किसी भी समय वाई-फ़ाई नेटवर्क स्कैन करने की मंज़ूरी दें, भले ही वाई-फ़ाई बंद हो. इसका इस्तेमाल करके, जगह की जानकारी जैसी सुविधाओं और सेवाओं में सुधार किया जा सकता है."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ब्लूटूथ स्कैन करना"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ऐप्लिकेशन और सेवाओं को किसी भी समय आस-पास के डिवाइस स्कैन करने की मंज़ूरी दें, भले ही ब्लूटूथ बंद हो. इसका इस्तेमाल करके, जगह की जानकारी जैसी सुविधाओं और सेवाओं में सुधार किया जा सकता है."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"सिस्टम"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"सिस्‍टम अपडेट"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"सिस्टम अपडेट"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android का वर्शन"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android सुरक्षा पैच लेवल"</string>
     <string name="model_info" msgid="4966408071657934452">"मॉडल"</string>
     <string name="baseband_version" msgid="2370088062235041897">"मोबाइल रेडियो (बेसबैंड वर्शन)"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel का वर्शन"</string>
     <string name="build_number" msgid="3997326631001009102">"बिल्‍ड नबंर"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ब्लूटूथ का पता"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"उपलब्ध नहीं है"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"स्थिति"</string>
     <string name="device_status" msgid="267298179806290920">"स्थिति"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"कॉपीराइट"</string>
     <string name="license_title" msgid="936705938435249965">"लाइसेंस"</string>
     <string name="terms_title" msgid="5201471373602628765">"नियम और शर्तें"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"सिस्टम वेबव्यू लाइसेंस"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"सिस्‍टम वेबव्यू लाइसेंस"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"वॉलपेपर"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"सैटेलाइट के ज़रिए इमेज उपलब्ध कराने वाली संस्थाएं:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"तीसरे पक्ष के लाइसेंस"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"लाइसेंस लोड करने में कोई समस्‍या है."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"लोड हो रहा है…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">अब आप डेवलपर बनने से <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> कदम दूर हैं.</item>
+      <item quantity="other">अब आप डेवलपर बनने से <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> कदम दूर हैं.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"अब आप डेवलपर बन गए हैं!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"ज़रूरत नहीं है, आप पहले से ही डेवलपर हैं."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"डेवलपर के लिए सेटिंग और टूल"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"डिवाइस को रीसेट करने के विकल्प"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"नेटवर्क, ऐप्लिकेशन या डिवाइस को रीसेट करने के विकल्प"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"नेटवर्क रीसेट करें"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"इससे सभी नेटवर्क सेटिंग रीसेट हो जाएंगी, जिनमें शामिल हैं:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"वाई-फ़ाई"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"मोबाइल डेटा"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ब्लूटूथ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"वाहन से सभी eSIM हमेशा के लिए मिटाएं"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"इससे आपका सेवा प्लान रद्द नहीं होगा."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM रीसेट नहीं किए जा सकते"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"नेटवर्क चुनें"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"सेटिंग रीसेट करें"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"रीसेट करें?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"सभी नेटवर्क सेटिंग रीसेट करें? आप इस कार्रवाई को पहले जैसा नहीं कर सकते!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"सेटिंग रीसेट करें"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"नेटवर्क सेटिंग रीसेट कर दी गई हैं"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ऐप्लिकेशन की सेटिंग रीसेट करें"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"इससे इन सबके लिए प्राथमिकताएं रीसेट हो जाएंगी:\n\n"<li>"बंद किए गए ऐप्लिकेशन"</li>\n<li>"बंद की गई ऐप्लिकेशन सूचनाएं"</li>\n<li>"कार्रवाइयों के लिए डिफ़ॉल्ट ऐप्लिकेशन"</li>\n<li>"ऐप्लिकेशन के लिए बैकग्राउंड डेटा पाबंदियां"</li>\n<li>"अनुमति से जुड़ी सभी पाबंदियां"</li>\n\n"आपका सारा ऐप्लिकेशन डेटा बना रहेगा."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ऐप्लिकेशन रीसेट करें"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ऐप्लिकेशन की सेटिंग रीसेट कर दी गई हैं"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"पूरा डेटा हमेशा के लिए मिटाएं (फ़ैक्ट्री रीसेट)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"इससे आपके वाहन की हेड यूनिट से सारा डेटा हमेशा के लिए मिटा दिया जाएगा, जिसमें शामिल हैं:\n\n"<li>"आपका Google खाता"</li>\n<li>"सिस्टम, ऐप्लिकेशन का डेटा और सेटिंग"</li>\n<li>"डाउनलोड किए गए ऐप्लिकेशन"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"आपने इस समय नीचे दिए गए खातों में साइन इन कर रखा है:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"इस वाहन पर दूसरे उपयोगकर्ता मौजूद हैं."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"वाहन रीसेट करें"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"रीसेट करें?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"अपनी सारी निजी जानकारी और डाउनलोड किए गए ऐप्लिकेशन हमेशा के लिए मिटाना चाहते हैं? आप इस कार्रवाई को पहले जैसा नहीं कर सकते!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"सब कुछ हमेशा के लिए मिटाएं"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"हमेशा के लिए मिटाया जा रहा है"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"कृपया इंतज़ार करें..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"तारीख और समय"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"तारीख और समय सेट करें"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"तारीख, समय, समय क्षेत्र और फ़ॉर्मैट सेट करें"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"समय क्षेत्र के मुताबिक क्रम में लगाएं"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"तारीख"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"समय"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"उपयोगकर्ता जोड़ें"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"खाता जोड़ें"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"उपयोगकर्ता (का नाम) मिटाएं"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"नया उपयोगकर्ता"</string>
-    <string name="user_guest" msgid="3465399481257448601">"मेहमान"</string>
     <string name="user_admin" msgid="1535484812908584809">"एडमिन"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"एडमिन के तौर पर साइन-इन किया है"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"एडमिन के सभी अधिकार"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"एडमिन बनाएं"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"एडमिन बनने वाला उपयोगकर्ता, दूसरे उपयोगकर्ताअों और एडमिन के नाम मिटा सकता है और सिस्टम को फ़ैक्ट्री रीसेट कर सकता है."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"दूसरे उपयोगकर्ता को एडमिन के अधिकार देने के बाद वापस नहीं लिए जा सकते."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"हां, एडमिन बना दें"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"नए उपयोगकर्ता बनाएं"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"फ़ोन कॉल करें"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"कार के मोबाइल डेटा से मैसेज भेजना"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"नए ऐप्लिकेशन इंस्टॉल करें"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ऐप्लिकेशन अनइंस्टॉल करें"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"उपयोगकर्ता जोड़ें"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"नया उपयोगकर्ता"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"नया उपयोगकर्ता जोड़ें?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं तो, उस व्यक्ति को अपनी जगह सेट करनी होती है."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"कोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकते हैं."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"अब और उपयोगकर्ता नहीं जोड़े जा सकते"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">आप <xliff:g id="COUNT">%d</xliff:g> उपयोगकर्ता जोड़ सकते हैं.</item>
+      <item quantity="other">आप <xliff:g id="COUNT">%d</xliff:g> उपयोगकर्ता जोड़ सकते हैं.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"नया उपयोगकर्ता नहीं जोड़ पाए"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"इस उपयोगकर्ता को हटाएं?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"पूरा डेटा और सभी ऐप्लिकेशन मिटा दिए जाएंगे."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"उपयोगकर्ता को नहीं हटाया जा सका."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"खारिज करें"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"फिर से कोशिश करें"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"आखिरी उपयोगकर्ता हटाएं?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"इस कार के आखिरी उपयोगकर्ता को हटाने के बाद, आपको एडमिन के अधिकारों वाला नया उपयोगकर्ता खाता बनाना होगा."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"इस उपयोगकर्ता का पूरा डेटा, सभी सेटिंग और ऐप्लिकेशन मिटा दिए जाएंगे. आपको सिस्टम फिर से सेट अप करना होगा."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"नया एडमिन चुनें"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"कम से कम एक एडमिन का होना ज़रूरी है. मौजूदा एडमिन को हटाने से पहले कोई दूसरा एडमिन चुनें."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"एडमिन चुनें"</string>
+    <string name="user_guest" msgid="3465399481257448601">"मेहमान"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"मेहमान"</string>
     <string name="user_switch" msgid="6544839750534690781">"स्विच करें"</string>
     <string name="current_user_name" msgid="3813671533249316823">"आप (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"नाम"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"सेट नहीं है"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"\'उपयोगकर्ता नाम\' में बदलाव करें"</string>
     <string name="users_list_title" msgid="770764290290240909">"उपयोगकर्ता"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s को अनुमतियां दी गईं"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"खाते"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"उपयोगकर्ता"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"खाता जोड़ें"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"कोई खाता जोड़ा नहीं गया है"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> के खाते"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"डेटा को अपने आप सिंक करें"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ऐप्लिकेशन को डेटा अपने आप रीफ़्रेश करने दें"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"अपने आप डेटा सिंक होना चालू करें?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"आपने वेब पर अपने खातों में जो भी बदलाव किए हैं, उनकी कॉपी आपके डिवाइस में अपने आप बन जाएगी.\n\nआपने जो भी बदलाव फ़ोन पर किए हैं, उन्हें कुछ खाते वेब पर भी कॉपी कर सकते हैं. Google खाता इसी तरह काम करता है."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"अपने आप डेटा सिंक होना बंद करें?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"इससे डेटा की बचत होगी, लेकिन हाल ही की जानकारी इकट्ठा करने के लिए आपको हर खाते को मैन्युअल रूप से सिंक करना होगा. अपडेट आने पर आपको सूचनाएं नहीं मिलेंगी."</string>
     <string name="account_details_title" msgid="7529571432258448573">"खाते की जानकारी"</string>
     <string name="add_account_title" msgid="5988746086885210040">"खाता जोड़ें"</string>
     <string name="add_an_account" msgid="1072285034300995091">"कोई खाता जोड़ें"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"खाता हटाएं"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"खाता हटाएं?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"यह खाता हटाने से इसके सभी मैसेज, संपर्क और दूसरा डेटा डिवाइस से मिट जाएगा!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"आपका एडमिन इस बदलाव की अनुमति नहीं देता"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"इस उपयोगकर्ता को हटाएं?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"सभी ऐप्लिकेशन और डेटा मिटा दिए जाएंगे."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"उपयोगकर्ता को हटाया नहीं जा सका."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"फिर से कोशिश करें?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"खारिज करें"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"फिर से कोशिश करें"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"नया उपयोगकर्ता जोड़ें?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं तो, उस व्यक्ति को अपनी जगह सेट करनी होती है."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"कोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकते हैं."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"खाता नहीं हटाया जा सका."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"खाता सिंक करें"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> में से <xliff:g id="ID_1">%1$d</xliff:g> आइटम के लिए सिंक करना चालू है"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"सभी आइटम के लिए सिंक करना चालू है"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"सभी आइटम के लिए सिंक करना बंद है"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"सिंक की सुविधा बंद है"</string>
+    <string name="sync_error" msgid="6698021343089247914">"सिंक करने में गड़बड़ी"</string>
+    <string name="last_synced" msgid="4745124489150101529">"आखिरी बार <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g> बजे सिंक किया गया"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"अभी सिंक हो रहा है…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"अभी सिंक करने के लिए टैप करें<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"अभी सिंक करें"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"सिंक करना रद्द करें"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"सिंक करने में फ़िलहाल समस्याएं आ रही हैं. यह जल्द ही वापस काम करने लगेगा."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"सुरक्षा"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"स्क्रीन लॉक"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"कोई नहीं"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"पिन"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"पासवर्ड"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"स्क्रीन लॉक करने का तरीका चुनें"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"स्क्रीन लॉक के विकल्प"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"लॉक करने के विकल्प"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"अपना पैटर्न डालें"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"पुष्टि करें"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"फिर से बनाएं"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"स्क्रीन लॉक सेट करना"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"अनलॉक करने के लिए पिन चुनें"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"अनलॉक करने के लिए पैटर्न चुनें"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"अनलॉक करने के लिए पासवर्ड चुनें"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"अनलॉक करने के लिए पासवर्ड चुनें"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"मौजूदा स्क्रीन लॉक"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"सुरक्षा के लिए पैटर्न सेट करें"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"हटाएं"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"आपके आईटी एडमिन ने आम तौर पर इस्तेमाल होने वाले पासवर्ड पर रोक लगा रखी है. कोई दूसरा पासवर्ड बनाएं."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अंकों को बढ़ते, घटते या दोहराए गए क्रम में लिखने की मंज़ूरी नहीं है."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रीन लॉक विकल्प"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"भरोसेमंद डिवाइस जोड़ें"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"भरोसेमंद डिवाइस"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> डिवाइस</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> डिवाइस</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"कनेक्ट होने पर आपका <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> इस कार को अनलॉक कर देगा. अगर किसी के पास आपका <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> है, तो वह इस डिवाइस को एक्सेस कर सकता है"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"पुष्टि करें"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"भरोसेमंद डिवाइस हटाएं"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"हो गया"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"भरोसेमंद डिवाइस सेट अप करने के लिए साथी ऐप्लिकेशन का इस्तेमाल करें. इसके सेट अप हो जाने पर, जब गाड़ी आपके फ़ोन को पहचान लेगी तब आप अपनी उपयोगकर्ता प्रोफ़ाइल अनलॉक कर पाएंगे"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. अपने फ़ोन पर साथी ऐप्लिकेशन डाउनलोड करें"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. डिवाइसों को जोड़ने के लिए अपने फ़ोन पर <xliff:g id="CAR_NAME">%1$s</xliff:g> चुनें"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock इस डिवाइस की सुरक्षा सुविधाओं को नहीं पहचान पा रहा है. आपकी कार की सुरक्षा के लिए, भरोसेमंद डिवाइस उसे तभी अनलॉक रख पाएगा जब आपने कार को पहले अनलॉक किया हो. कार आस-पास होने पर आपका भरोसेमंद डिवाइस उसे अनलॉक रख सकता है, भले ही वह डिवाइस किसी और व्यक्ति के पास हो."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> को भरोसेमंद डिवाइस के रूप में जोड़ें"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> को भरोसेमंद डिवाइस के रूप में जोड़ लिया गया है"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> का नाम दर्ज नहीं हो सका"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"इसके बाद एक भरोसेमंद डिवाइस जोड़ने के लिए आपको पुष्टि करने का तरीका सेट करना होगा. अगर भरोसेमंद डिवाइस आपके पास नहीं है, तो आपकी प्रोफ़ाइल एक्सेस करने के लिए पुष्टि करना ज़रूरी होगा."</string>
     <string name="forget" msgid="3971143908183848527">"भूल जाएं"</string>
+    <string name="connect" msgid="5861699594602380150">"कनेक्शन जोड़ें"</string>
+    <string name="disconnect" msgid="6140789953324820336">"कनेक्शन हटाएं"</string>
     <string name="delete_button" msgid="5840500432614610850">"मिटाएं"</string>
     <string name="remove_button" msgid="6664656962868194178">"हटाएं"</string>
     <string name="cancel" msgid="750286395700355455">"अभी नहीं"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"डेमो मोड से बाहर निकलें"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"डेमो मोड से बाहर निकलने पर, डेमो खाता मिट जाएगा और सिस्टम का डेटा फ़ैक्ट्री रीसेट हो जाएगा. साथ ही, उपयोगकर्ता का पूरा डेटा भी मिट जाएगा."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"डेमो मोड से बाहर निकलें"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"सेटअप पूरा करें"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"अभी नहीं"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"खारिज करें"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"गाड़ी चलाते समय इस सुविधा का इस्तेमाल नहीं किया जा सकता."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"गाड़ी चलाते समय उपयोगकर्ता को जोड़ा नहीं जा सकता."</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index d8f0a22..48f4101 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zatamnjenje zaslona, dodirni zaslon, baterija"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"zatamnjenje zaslona, noć, preljev"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni način rada"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilni podaci"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Pristupi podacima pomoću mobilne mreže"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Isključiti mobilne podatke?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Potrošnja podataka"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Upozorenje o podacima i ograničenje"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciklus potrošnje podatkovnog prometa"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Postavi upozorenje o potrošnji"</string>
+    <string name="data_warning" msgid="116776633806885370">"Upozorenje o podatkov. prometu"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Postavi ograničenje prometa"</string>
+    <string name="data_limit" msgid="227338836292511425">"Ograničenje podatkov. prometa"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ograničavanje potrošnje podatkovnog prometa"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Glavna jedinica vozila isključit će mobilne podatke kad dosegne ograničenje koje ste postavili.\n\nBudući da potrošnju podatkovnog prometa mjeri glavna jedinica i da se obračun mobilnog operatera može razlikovati, možda biste trebali postaviti strože ograničenje."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Postavljanje i upravljanje bežičnim pristupnim točkama"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Uključivanje Wi-Fija…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Isključivanje Wi-Fija…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Učitavanje popisa Wi‑Fija"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi je onemogućen"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Zaboravljanje mreže nije uspjelo"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Povezivanje s mrežom nije uspjelo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj mrežu"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi je onemogućen"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Poveži"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Zaporka"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Prikaži zaporku"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Naziv mreže"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Unesite SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sigurnost"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Jačina signala"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Jačina signala"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"brzina veze"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvencija"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP adresa"</string>
+    <string name="show_password" msgid="2074628020371139240">"Prikaži zaporku"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Unesite naziv mreže"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Unesite zaporku"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Loša"</item>
-    <item msgid="2032262610626057081">"Solidna"</item>
-    <item msgid="3859756017461098953">"Dobra"</item>
-    <item msgid="1521103743353335724">"Izvrsna"</item>
+    <item msgid="7683058295076342057">"Loša"</item>
+    <item msgid="1639222824821660744">"Solidna"</item>
+    <item msgid="1838705897358163300">"Dobra"</item>
+    <item msgid="6067166649320533751">"Izvrsna"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Uključi Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth onemogućen"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Pojedinosti o mreži"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC adresa"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP adresa"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Maska podmreže"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 adrese"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Pristupnik"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Postavke Wi‑Fija"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Automatski uključi Wi-Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi se opet uključuje blizu spremljenih kvalitetnih mreža"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nije dostupno jer je lokacija isključena. Uključite "<annotation id="link">"lokaciju"</annotation></string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Uključiti traženje Wi-Fija?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Uključi"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Uključeno je traženje Wi‑Fi-ja"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automatski prijeđi na mobilne podatke"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Koristite mobilne podatke kada Wi-Fi nema pristup internetu. Moguća je naplata potrošnje podatkovnog prometa."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Saznajte više"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Upravljajte vezama, postavite uređaj i mogućnost otkrivanja"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Računalo"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Slušalice"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Snimanje"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Slušalice"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periferni uređaj za unos"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Upareni uređaji"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dostupni uređaji"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nema uparenih uređaja"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nema dostupnih uređaja"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Upareni uređaj"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Ime"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Upotrijebi za"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Promijenite naziv Bluetooth uređaja"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Uređaj bez naziva"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Upareni uređaji"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Uparite novi uređaj"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth će se uključiti radi uparivanja"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Prekinuti vezu uređaja?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Vaše vozilo i <xliff:g id="DEVICE_NAME">%1$s</xliff:g> više neće biti povezani."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth adresa vozila: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth adresa uređaja: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Naziv vozila"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Promijenite naziv vozila"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Promijenite naziv uređaja"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Promijeni naziv"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dostupni uređaji"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profili"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Zahtjev za Bluetooth uparivanje"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Upari i poveži"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetoothov kôd za uparivanje"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN sadrži slova ili simbole"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Unesite kôd za uparivanje pa pritisnite Return ili Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Obično 0000 ili 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Zahtjev za uparivanje"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Dodirnite za uparivanje s uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Jezici"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Jezici i unos"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tipkovnica"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Upravljajte tipkovnicama"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Pretvaranje teksta u govor"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Željeni alat"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Trenutačni alat"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Brzina govora"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Visina glasa"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Vrati na zadano"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Zvuk"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Glasnoća zvona"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Glasnoća navigacije"</string>
@@ -100,31 +140,66 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Mediji"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Postavite glasnoću za glazbu i videozapise"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Melodija zvona telefona"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Zadani zvuk obavijesti"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Zadani zvuk alarma"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikacije i obavijesti"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Pokaži sve aplikacije"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Zadane aplikacije"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacije o aplikaciji"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Prisilno zaustavi"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Prisilno zaustaviti?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ako prisilno zaustavite aplikaciju, možda će se ponašati nepredviđeno."</string>
     <string name="disable_text" msgid="4358165448648990820">"Onemogući"</string>
     <string name="enable_text" msgid="1794971777861881238">"Omogući"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Deinstaliraj"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ako onemogućite tu aplikaciju, Android i druge aplikacije možda više neće funkcionirati pravilno."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Onemogući aplikaciju"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Dopuštenja"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nije odobreno nijedno dopuštenje"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nije zatraženo nijedno dopuštenje"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Potrošnja podataka"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Potrošnja podatkovnog prometa za aplikacije"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Prisilno zaustavi"</string>
     <string name="computing_size" msgid="5791407621793083965">"Izračunavanje..."</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dodatno dopuštenje</item>
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dodatna dopuštenja</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dodatnih dopuštenja</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Pomoćnik i glasovni unos"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplikacija pomoćnik"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Koristi tekst sa zaslona"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Dopustite aplikaciji pomoćniku da pristupi sadržaju zaslona kao tekstu"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Koristi snimku zaslona"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Dopustite aplikaciji pomoćniku da pristupi slici na zaslonu"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Usluga automatskog popunjavanja"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Nijedna"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Odabrano"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Pomoćnik će moći čitati podatke o aplikacijama koje se upotrebljavaju u vašem sustavu, uključujući podatke vidljive na zaslonu ili podatke kojima se može pristupiti u aplikacijama."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Provjerite je li ova aplikacija pouzdana&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google automatsko popunjavanje&gt;%1$s&lt;/xliff:g&gt; upotrebljava sadržaj na zaslonu za procjenu onoga što se može automatski popuniti."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Dodaj uslugu"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lokacija"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedavni zahtjevi za lokaciju"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahtjeva za lokaciju"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Dopuštenja na razini aplikacije"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Traženje"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Usluge lokacije"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Traženje Wi‑Fija"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Dopustite aplikacijama i uslugama da traže Wi‑Fi mreže u bilo kojem trenutku, čak i kada je Wi‑Fi isključen. Na taj se način mogu, na primjer, poboljšati značajke i usluge koje se temelje na lokaciji."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Traženje Bluetootha"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Dopustite aplikacijama i uslugama da traže uređaje u blizini u bilo kojem trenutku, čak i kada je Bluetooth isključen. Na taj se način mogu, na primjer, poboljšati značajke i usluge koje se temelje na lokaciji."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sustav"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Ažuriranja sustava"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sustava"</string>
     <string name="firmware_version" msgid="8491753744549309333">"verziju Androida"</string>
     <string name="security_patch" msgid="4794276590178386903">"Razina Androidove sigurnosne zakrpe"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Osnovna verzija"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Verzija jezgre"</string>
     <string name="build_number" msgid="3997326631001009102">"Broj međuverzije"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adresa"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nije dostupno"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -141,12 +216,50 @@
     <string name="copyright_title" msgid="4220237202917417876">"Autorska prava"</string>
     <string name="license_title" msgid="936705938435249965">"Licenca"</string>
     <string name="terms_title" msgid="5201471373602628765">"Uvjeti i odredbe"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"WebView licenca sustava"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licence web-prikaza sustava"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Pozadine"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Davatelji satelitskih slika:\n©2014. CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licence trećih strana"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Došlo je do problema s učitavanjem licenci."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Učitavanje..."</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> korak i postat ćete razvojni programer.</item>
+      <item quantity="few">Još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> koraka i postat ćete razvojni programer.</item>
+      <item quantity="other">Još <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> koraka i postat ćete razvojni programer.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Sad ste razvojni programer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nema potrebe, već ste razvojni programer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opcije za razvojne programere"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Poništavanje opcija"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Vraćanje mreže, aplikacija ili uređaja na zadano"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Poništi mrežu"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Time će se na zadano vratiti sve postavke mreže, uključujući:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobilni podaci"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Izbriši sve eSIM-ove vozila"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Time se neće otkazati vaš paket usluge."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Poništavanje eSIM-ova nije uspjelo"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Odaberite mrežu"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Vrati postavke na zadano"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Vratiti na zadano?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Želite li vratiti sve postavke mreže na zadano? Tu radnju nije moguće poništiti!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Vrati postavke na zadano"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Postavke mreže vraćene su na zadano"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Vrati postavke aplikacija na zadano"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Time će se poništiti sve postavke za sljedeće:\n\n"<li>"onemogućene aplikacije"</li>\n<li>"onemogućene obavijesti aplikacija"</li>\n<li>"zadane aplikacije za radnje"</li>\n<li>"ograničenja pozadinskih podataka za aplikacije"</li>\n<li>"sva ograničenja dozvola."</li>\n\n"Nećete izgubiti podatke nijedne aplikacije."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Vrati aplikacije na zadano"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Postavke aplikacija vraćene su na zadano"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Izbriši sve podatke (vrati na tvorničke)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Time će se izbrisati svi podaci s glavne jedinice vozila, uključujući:\n\n"<li>"vaš Google račun"</li>\n<li>"podatke i postavke sustava i aplikacija"</li>\n<li>"preuzete aplikacije"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Trenutačno ste prijavljeni na sljedeće račune:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Na ovom vozilu postoje i drugi korisnici."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Vrati vozilo na zadano"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vratiti na zadano?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Želite li izbrisati sve osobne podatke i preuzete aplikacije? Radnju nije moguće poništiti!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Izbriši sve"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Brisanje"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Pričekajte..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum i vrijeme"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Postavljanje datuma i vremena"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Postavljanje datuma, vremena, vremenske zone i formata"</string>
@@ -166,23 +279,60 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Poredaj po vremenskoj zoni"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Vrijeme"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodavanje korisnika"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj račun"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Brisanje korisnika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gost"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prijavljeni ste kao administrator"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Sva administratorska dopuštenja"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Dodijeli status administratora"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Korisnik će moći brisati korisnike, uključujući druge administratore, i vratiti sustav na tvorničke postavke."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Ta se radnja ne može poništiti."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, dodijeli status administratora"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Izrada novih korisnika"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Upućivanje telefonskih poziva"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Poruke putem mobilnih podataka auta"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instaliranje novih aplikacija"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Deinstaliranje aplikacija"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodavanje korisnika"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Novi korisnik"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Dodati novog korisnika?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba mora postaviti vlastiti prostor."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može ažurirati aplikacije za ostale korisnike."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Dosegnuto je ograničenje korisnika"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Možete izraditi najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+      <item quantity="few">Možete izraditi najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+      <item quantity="other">Možete izraditi najviše <xliff:g id="COUNT">%d</xliff:g> korisnika.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Izrada novog korisnika nije uspjela"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Izbrisati ovog korisnika?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Izbrisat će se sve aplikacije i podaci."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Brisanje korisnika nije uspjelo."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Odbaci"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Pokušaj opet"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Brisati zadnjeg korisnika?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Nakon brisanja jedinog preostalog korisnika ovog automobila, izradit će se novi admin. korisnik."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Izbrisat će se svi podaci, postavke i aplikacije povezane s tim korisnikom. Morat ćete ponovo postaviti sustav."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Odaberite novog administratora"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Potreban vam je barem jedan administrator. Da biste izbrisali ovoga, najprije odaberite zamjenu."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Odaberite administratora"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gost"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gost"</string>
     <string name="user_switch" msgid="6544839750534690781">"Prebaci"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Vi (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ime"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nije postavljen"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Uređivanje korisničkog imena"</string>
     <string name="users_list_title" msgid="770764290290240909">"Korisnici"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Dopušteno korisniku %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Računi"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Korisnik"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj račun"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nije dodan nijedan račun"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Računi za korisnika <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatski sinkroniziraj podatke"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Dopusti aplikacijama da automatski osvježavaju podatke"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Uključiti auto. sinkronizaciju?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Sve promjene koje napravite na svojim računima na webu automatski će se kopirati na vaš uređaj.\n\nNeki računi također mogu automatski kopirati na web sve promjene koje napravite na telefonu. Google račun funkcionira na taj način."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Isključiti auto. sinkronizaciju?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Time će se uštedjeti na podatkovnom prometu, ali svaki ćete račun morati ručno sinkronizirati kako biste dobili najnovije podatke. Nećete primati ni obavijesti o njihovom ažuriranju."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Podaci o računu"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Dodaj račun"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Dodajte račun"</string>
@@ -190,16 +340,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Ukloni račun"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Ukloniti račun?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Ako uklonite taj račun, s uređaja će se izbrisati sve njegove poruke, kontakti i ostali podaci!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Vaš administrator ne dopušta tu promjenu"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Ukloniti korisnika?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Izbrisat će se sve aplikacije i podaci."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Uklanjanje korisnika nije uspjelo."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Želite li pokušati ponovo?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Odbaci"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Pokušaj ponovo"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodati novog korisnika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kada dodate novog korisnika, ta osoba mora postaviti vlastiti prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Svaki korisnik može ažurirati aplikacije za ostale korisnike."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Uklanjanje računa nije uspjelo."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sinkronizacija računa"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinkronizacija uključena za sljedeći broj stavki: <xliff:g id="ID_1">%1$d</xliff:g> od <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinkronizacija uključena za sve stavke"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinkronizacija isključena za sve stavke"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinkronizacija isključena"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Pogreška sinkronizacije"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Posljednja sinkronizacija: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sinkronizacija u tijeku…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Dodirnite da biste sinkronizirali odmah <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinkroniziraj sada"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Otkaži sinkronizaciju"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sinkronizacija trenutačno ima problema. Uskoro će nastaviti s radom."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sigurnost"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zaključavanje zaslona"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ništa"</string>
@@ -207,7 +361,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Zaporka"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Odaberite vrstu zaklj."</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opcije zaključavanja zaslona"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opcije zaključavanja"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Unesite uzorak"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Potvrdi"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Iscrtajte ponovo"</string>
@@ -217,7 +371,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Postavljanje zaključavanja zaslona"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Odaberite PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Odaberite uzorak"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Odaberite zaporku"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Odaberite zaporku"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Trenutačno zaključavanje zaslona"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Radi sigurnosti postavite uzorak"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Ukloni"</string>
@@ -295,7 +449,29 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Vaš je IT administrator blokirao uobičajene zaporke. Pokušajte s nekom drugom zaporkom."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Uzastopno rastući ili padajući slijed brojeva ili ponavljanje brojeva nisu dopušteni."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja zaslona"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : prije <xliff:g id="NUM_DAYS">%3$s</xliff:g> dana"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Dodaj pouzdani uređaj"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Pouzdani uređaji"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> uređaj</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Vaš uređaj <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> otključat će ovaj automobil kad se poveže. Ako vam netko uzme vaš uređaj <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, možda će moći pristupiti ovom uređaju"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdi"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ukloni pouzdani uređaj"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Gotovo"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Pouzdani uređaj postavite pomoću popratne aplikacije. Nakon postavljanja moći ćete otključavati svoj korisnički profil kad vozilo otkrije vaš telefon"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Preuzmite popratnu aplikaciju na telefon"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Odaberite automobil <xliff:g id="CAR_NAME">%1$s</xliff:g> na telefonu da biste uparili uređaje"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ne može otkriti sigurnosne značajke na ovom uređaju. Radi zaštite vašeg automobila pouzdani uređaj moći će zadržati automobil otključanim samo nakon što ga otključate sami. Vaš pouzdani uređaj može zadržati vaš automobil otključanim kad je u blizini, čak i ako ga drži netko drugi."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Dodajte uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kao pouzdani"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Uređaj <xliff:g id="DEVICE_NAME">%1$s</xliff:g> uspješno je dodan kao pouzdani"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Upis uređaja <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije uspio"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Nakon što dodate pouzdani uređaj, morate postaviti način autentifikacije. Ako nemate pouzdani uređaj sa sobom, morat ćete se autentificirati da biste pristupili svojem profilu."</string>
     <string name="forget" msgid="3971143908183848527">"Zaboravi"</string>
+    <string name="connect" msgid="5861699594602380150">"Poveži"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Prekini vezu"</string>
     <string name="delete_button" msgid="5840500432614610850">"Izbriši"</string>
     <string name="remove_button" msgid="6664656962868194178">"Ukloni"</string>
     <string name="cancel" msgid="750286395700355455">"Otkaži"</string>
@@ -305,8 +481,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Napustite demo-način"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Time će se izbrisati demo-račun, a sustav će se vratiti na tvorničko stanje. Svi će se podaci korisnika izgubiti."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Napustite demo-način"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"dovršite postavljanje"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ne sada"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ODBACI"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Značajka nije dostupna tijekom vožnje."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Nije moguće dodati korisnika tijekom vožnje."</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 2ffd429..a5ab2b9 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"képernyő halványítása, érintőképernyő, akkumulátor"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"képernyő halványítása, éjszaka, árnyalás"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Éjszakai mód"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Hálózat és internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilhálózat"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiladat"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Adathozzáférés a mobilhálózaton keresztül"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Kikapcsolja a mobiladatokat?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Adathasználat"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Adatfigyelmeztetés és -korlát"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Alkalmazások adatforgalmi ciklusa"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Figyelmeztetés beállítása"</string>
+    <string name="data_warning" msgid="116776633806885370">"Adatforgalmi figyelmeztetés"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Adatkorlát megadása"</string>
+    <string name="data_limit" msgid="227338836292511425">"Adatforgalmi korlátozás"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Adatforgalom korlátozása"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"A jármű fejegysége kikapcsolja a mobiladat-kapcsolatot, amint eléri a beállított korlátot.\n\nMivel az adatforgalmat a fejegység méri, és a szolgáltató mérései ettől eltérhetnek, érdemes lehet szigorúbb korlátot megadnia."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Vezeték nélküli hozzáférési pontok beállítása és kezelése"</string>
     <string name="wifi_starting" msgid="473253087503153167">"A Wi-Fi bekapcsolása…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"A Wi-Fi kikapcsolása…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi-lista betöltése folyamatban"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi kikapcsolva"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Nem sikerült elfelejteni a hálózatot."</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Nem sikerült hálózathoz csatlakozni."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Hálózat hozzáadása"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi kikapcsolva"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Csatlakozás"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Jelszó"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Jelszó megjelenítése"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Hálózat neve"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Adja meg az SSID-t"</string>
     <string name="wifi_security" msgid="158358046038876532">"Biztonság"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Jelerősség"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Jelerősség"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Állapot"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Kapcsolódás sebessége"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvencia"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-cím"</string>
+    <string name="show_password" msgid="2074628020371139240">"Jelszó megjelenítése"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Adja meg a hálózat nevét"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Írja be a jelszót"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Gyenge"</item>
-    <item msgid="2032262610626057081">"Közepes"</item>
-    <item msgid="3859756017461098953">"Jó"</item>
-    <item msgid="1521103743353335724">"Kiváló"</item>
+    <item msgid="7683058295076342057">"Gyenge"</item>
+    <item msgid="1639222824821660744">"Közepes"</item>
+    <item msgid="1838705897358163300">"Jó"</item>
+    <item msgid="6067166649320533751">"Kiváló"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth bekapcsolása"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth kikapcsolva"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Hálózati információk"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-cím"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-cím"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Alhálózati maszk"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-címek"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Átjáró"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi-beállítások"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi automatikus bekapcsolása"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"A Wi‑Fi újra bekapcsol jó minőségű mentett hálózatok (például az otthoni hálózat) közelében"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nem áll rendelkezésre, mert a helyszolgáltatás ki van kapcsolva. "<annotation id="link">"Helyszolgáltatás"</annotation>" bekapcsolása."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Bekapcsolja a Wi‑Fi-alapú keresést?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Bekapcsolás"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi-keresés bekapcsolva"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automatikus váltás mobiladat-kapcsolatra"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Mobilhálózat használata, ha nincs Wi-Fi-kapcsolat. A szolgáltató adatforgalmi díjat számíthat fel."</string>
+    <string name="learn_more" msgid="8214605928933358604">"További információ"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Kapcsolatok kezelése, eszköz nevének és felfedezhetőségének beállítása"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Számítógép"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Képalkotó"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Fejhallgató"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Beviteli periféria"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Párosított eszközök"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Rendelkezésre álló eszközök"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nincsenek párosított eszközök"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nincsenek rendelkezésre álló eszközök"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Párosított eszköz"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Név"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Használat módja:"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Módosítsa a Bluetooth-eszköz nevét"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Név nélküli eszköz"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Párosított eszközök"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Új eszköz párosítása"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"A Bluetooth bekapcsol a párosítás végrehajtása érdekében"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Leválasztja az eszközt?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Járműve le lesz választva a következőről: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"A jármű Bluetooth-címe: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Az eszköz Bluetooth-címe: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Jármű neve"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Jármű átnevezése"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Eszköz átnevezése"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Átnevezés"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Rendelkezésre álló eszközök"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profilok"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth párosítási kérelem"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Párosítás és csatlakozás"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-párosítókód"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"A PIN-kód betűket vagy szimbólumokat tartalmaz"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Gépelje be a párosítókódot, majd nyomja meg az Enter vagy a Return gombot"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Általában 0000 vagy 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Párosítási kérelem"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Koppintson a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszközzel való párosításhoz."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Nyelvek"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Nyelvek és bevitel"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Billentyűzet"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Billentyűzetek kezelése"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Szövegfelolvasás"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Elsődleges motor"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Jelenlegi motor"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Beszéd sebessége"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Hangmagasság"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Visszaállítás"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Hang"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Csengés hangereje"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigáció hangereje"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Média"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Zenék és videók hangerejének beállítása"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Ébresztő"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Telefon csengőhangja"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Alapértelmezett értesítőhang"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Alapértelmezett ébresztőhang"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Alkalmazások és értesítések"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Összes alkalmazás mutatása"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Alapértelmezett alkalmazások"</string>
     <string name="applications_settings" msgid="794261395191035632">"Alkalmazásinformáció"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Kényszerített leállítás"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Kényszeríti a leállítást?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ha leállásra kényszeríti az alkalmazást, lehetséges, hogy hibásan fog működni."</string>
     <string name="disable_text" msgid="4358165448648990820">"Letiltás"</string>
     <string name="enable_text" msgid="1794971777861881238">"Engedélyezés"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Eltávolítás"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ha letiltja ezt az alkalmazást, akkor előfordulhat, hogy az Android- és más alkalmazások nem működnek majd megfelelően."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Alkalmazás letiltása"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Engedélyek"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzió: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nincsenek megadott engedélyek"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nincsenek kért engedélyek"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Adathasználat"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Alkalmazás adathasználata"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Kényszerített leállítás"</string>
     <string name="computing_size" msgid="5791407621793083965">"Számítás…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> további engedély</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> további engedély</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Segédalkalmazás és hangbevitel"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Segédalkalmazás"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Képernyő szövegének használata"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"A segédalkalmazás hozzáférhet a képernyőn megjelenő tartalmakhoz szövegként"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Képernyőkép használata"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"A segédalkalmazás hozzáférhet az aktuális képernyőképhez"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Automatikus kitöltés"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Nincs"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Kijelölve"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"A segéd hozzáfér majd a rendszer éppen használatban lévő alkalmazásainak információihoz, beleértve a képernyőn megjelenő vagy az alkalmazásokban hozzáférhető információkat is."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Győződjön meg arról, hogy az alkalmazás megbízható.&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; A(z) &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; az Ön képernyőjén szereplő információk alapján határozza meg, hogy mit lehet automatikusan kitölteni."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Szolgáltatás hozzáadása"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Hely"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Legutóbbi helylekérdezések"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nincsenek friss helylekérdezések"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Alkalmazásszintű engedélyek"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Keresés"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Helyszolgáltatások"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi-alapú keresés"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Engedélyezi az alkalmazásoknak és szolgáltatásoknak, hogy Wi-Fi-hálózatokat keressenek még akkor is, ha ki van kapcsolva a Wi-Fi. Ez például a helyalapú funkciók és szolgáltatások javítására használható."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-alapú keresés"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Engedélyezi az alkalmazásoknak és szolgáltatásoknak, hogy közeli eszközöket keressenek még akkor is, ha ki van kapcsolva a Bluetooth. Ez például a helyalapú funkciók és szolgáltatások javítására használható."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Rendszer"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Rendszerfrissítések"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Rendszerfrissítések"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-verzió"</string>
     <string name="security_patch" msgid="4794276590178386903">"Androidos biztonsági hibajavító csomag szintje"</string>
     <string name="model_info" msgid="4966408071657934452">"Modell"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Alapsáv verziója"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel verziója"</string>
     <string name="build_number" msgid="3997326631001009102">"Buildszám"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-cím"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nem hozzáférhető"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Állapot"</string>
     <string name="device_status" msgid="267298179806290920">"Állapot"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Szerzői jog"</string>
     <string name="license_title" msgid="936705938435249965">"Licenc"</string>
     <string name="terms_title" msgid="5201471373602628765">"Általános Szerződési Feltételek"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"WebView-rendszerlicenc"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"A rendszer WebView-licencei"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Háttérképek"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"A műholdképek szolgáltatói:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Harmadik felek licencei"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Probléma adódott a licencek betöltésekor."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Betöltés…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> lépésre van attól, hogy fejlesztő legyen.</item>
+      <item quantity="one"><xliff:g id="STEP_COUNT_0">%1$d</xliff:g> lépésre van attól, hogy fejlesztő legyen.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Ön mostantól már fejlesztő!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nincs rá szükség, Ön már fejlesztő."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Fejlesztői beállítások"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Beállítások visszaállítása"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Hálózat, alkalmazások vagy eszköz visszaállítása"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Hálózati adatok visszaállítása"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Ez visszaállítja az összes hálózati beállítást, beleértve a következőket:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobiladat"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"A jármű összes eSIM-jének törlése"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Ezzel előfizetése nem szűnik meg."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Nem lehet visszaállítani az eSIM-eket"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Hálózat kiválasztása"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Beállítások visszaállítása"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Visszaállítja?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Visszaállítja az összes hálózati beállítást? Ezt a műveletet nem lehet visszavonni."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Beállítások visszaállítása"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"A hálózati beállítások vissza lettek állítva."</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Alkalmazásbeállítások visszaállítása"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Ez visszaállítja a következőkre vonatkozó összes beállítást:\n\n"<li>"Letiltott alkalmazások"</li>\n<li>"Letiltott alkalmazásértesítések"</li>\n<li>"Alapértelmezett alkalmazások adott műveletekhez"</li>\n<li>"Az alkalmazások háttéradataira vonatkozó korlátozások"</li>\n<li>"Minden engedélykorlátozás"</li>\n\n"Az alkalmazásadatok nem vesznek el."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Alkalmazások visszaállítása"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Az alkalmazásbeállítások vissza lettek állítva"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Minden adat törlése (visszaállítás)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Ez minden adatot töröl a jármű fejegységéből, beleértve a következőket:\n\n"<li>"Az Ön Google-fiókja"</li>\n<li>"A rendszer- és alkalmazásadatok, illetve beállítások"</li>\n<li>"A letöltött alkalmazások"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Jelenleg a következő fiókokba van bejelentkezve:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Más felhasználók is vannak a járművön."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Jármű visszaállítása"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Visszaállítja?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Törli az összes személyes adatot és letöltött alkalmazást? A műveletet nem lehet visszavonni."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Minden törlése"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Törlés"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Kérjük, várjon…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dátum és idő"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Dátum és idő beállítása"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Dátum, idő, időzóna és formátumok beállítása"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Rendezés időzóna szerint"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Dátum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Idő"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Felhasználó felvétele"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Fiók hozzáadása"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Felhasználó törlése"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Új felhasználó"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Vendég"</string>
     <string name="user_admin" msgid="1535484812908584809">"Rendszergazda"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Rendszergazdaként bejelentkezve"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Összes adminisztrátori engedély"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Rendszergazdai jogosultság megadása"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"A felhasználó képes lesz más felhasználókat törölni, beleértve a többi rendszergazdát is, és vissza tudja majd állítani a rendszer gyári beállításait."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"A művelet nem vonható vissza."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Igen, tegye rendszergazdává"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Új felhasználók létrehozása"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefonhívások"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS-ezés az autó mobiladatából"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Új alkalmazások telepítése"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Alkalmazások eltávolítása"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Felhasználó felvétele"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Új felhasználó"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Hozzáad új felhasználót?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ha új felhasználót ad hozzá, az illetőnek be kell állítania saját felületét."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Maximális felhasználószám elérve"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Legfeljebb <xliff:g id="COUNT">%d</xliff:g> felhasználót lehet létrehozni.</item>
+      <item quantity="one">Csak egy felhasználót lehet létrehozni.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Az új felhasználó létrehozása sikertelen"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Törli a felhasználót?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Az összes alkalmazás és adat törlődik."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Nem sikerült törölni a felhasználót."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Bezárás"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Újra"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Törli az utolsót?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Az autó utolsó felhasználójának törlése után új adminisztrátort hoz létre a rendszer."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"A felhasználóhoz társított minden adat, beállítás és alkalmazás törlődik. Újra be kell majd állítania a rendszert."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Új adminisztrátor kiválasztása"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Legalább egy adminisztrátorra szükség van. Ha törölni szeretné a jelenlegit, előbb válassza ki azt, akivel helyettesítené."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Adminisztrátor választása"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Vendég"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Vendég"</string>
     <string name="user_switch" msgid="6544839750534690781">"Váltás"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Ön (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Név"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nincs beállítva"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Felhasználónév szerkesztése"</string>
     <string name="users_list_title" msgid="770764290290240909">"Felhasználók"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s megkapta az engedélyeket"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Fiókok"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Felhasználó"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Fiók hozzáadása"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nincs hozzáadott fiók"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> fiókjai"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Adatok automatikus szinkronizálása"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Az adatok automatikus frissítésének engedélyezése"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Bekapcsolja a szinkronizálást?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Az interneten végrehajtott fiókmódosítások automatikusan megjelennek az eszközén is.\n\nEgyes fiókok esetében ez fordítva is igaz. A Google-fiók így működik."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Kikapcsolja a szinkronizálást?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Ez mérsékli az adathasználatot, de minden egyes fiókot manuálisan kell majd szinkronizálnia a legfrissebb információk begyűjtéséhez. Emellett a frissítésekről sem kap értesítéseket."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Fiókadatok"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Fiók hozzáadása"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Fiók hozzáadása"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Fiók eltávolítása"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Eltávolítja a fiókot?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"A fiók eltávolításával az összes üzenetet, névjegyet és egyéb adatot is törli az eszközről."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Ezt a módosítást nem engedélyezi a rendszergazda"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Törli a felhasználót?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Az összes alkalmazás és adat törlődik."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"A felhasználó eltávolítása sikertelen."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Újrapróbálja?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Elvetés"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Újra"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Hozzáad új felhasználót?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ha új felhasználót ad hozzá, az illetőnek be kell állítania saját felületét."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Nem sikerült eltávolítani a fiókot."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Fiók szinkronizálása"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Szinkronizálás bekapcsolva <xliff:g id="ID_2">%2$d</xliff:g>/<xliff:g id="ID_1">%1$d</xliff:g> elemnél"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Szinkronizálás bekapcsolva minden elemnél"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Szinkronizálás kikapcsolva minden elemnél"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Szinkronizálás: KI"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Szinkronizálási hiba"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Utolsó szinkronizálás: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Szinkronizálás…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Koppintson az azonnali szinkronizáláshoz<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Szinkronizálás most"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Szinkronizálás megszakítása"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"A szinkronizálással problémák vannak. Hamarosan helyreáll."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Biztonság"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Képernyőzár"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Egyik sem"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-kód"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Jelszó"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Lezárás típusa"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"A képernyőzár beállításai"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Zárolási lehetőségek"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Adja meg a mintáját"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Megerősítés"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Újrarajzolás"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Képernyőzár beállítása"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN-kód kiválasztása"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Válassza ki a mintát"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Jelszó kiválasztása"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Jelszó kiválasztása"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Jelenlegi képernyőzár"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"A biztonság érdekében állítson be mintát"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Törlés"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Rendszergazdája letiltotta a gyakran használt jelszavakat. Próbálkozzon másik jelszóval."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Növekvő, csökkenő vagy ismétlődő számsor megadása nem engedélyezett."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"A képernyőzár beállításai"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> nappal ezelőtt"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Megbízható eszköz hozzáadása"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Megbízható eszközök"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> eszköz</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> eszköz</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"A(z) <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> kapcsolódáskor feloldja az autózárat. Ha valaki elveszi a(z) <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> eszközét, akkor az illető hozzáférhet az eszközhöz"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Megerősítés"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Megbízható eszköz eltávolítása"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Kész"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Állítson be megbízható eszközt a társalkalmazással. A beállítás után feloldhatja felhasználói profilját, amikor a jármű érzékeli telefonját"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Töltse le telefonjára a társalkalmazást."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Az eszközök párosításához válassza a(z) <xliff:g id="CAR_NAME">%1$s</xliff:g> elemet a telefonon."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"A Smart Lock nem észleli az eszköz biztonsági funkcióit. Az autó védelme érdekében a megbízható eszköz csak akkor tarthatja feloldott állapotban az autót, ha Ön előtte elvégezte a feloldást. A megbízható eszköz feloldott állapotban tarthatja az autót, ha a közelében van, még akkor is, ha valaki más tartja az eszközt."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> hozzáadása megbízható eszközként"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Sikerült a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> eszközt megbízhatóként hozzáadni"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Nem sikerült a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> regisztrációja"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ha megbízható eszközt szeretne hozzáadni, akkor a következő lépésben hitelesítési módot kell megadnia. Ha nincs Önnél megbízható eszköze, hitelesítésre lesz szükség a profiljához való hozzáféréshez."</string>
     <string name="forget" msgid="3971143908183848527">"Elfelejtés"</string>
+    <string name="connect" msgid="5861699594602380150">"Csatlakozás"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Leválasztás"</string>
     <string name="delete_button" msgid="5840500432614610850">"Törlés"</string>
     <string name="remove_button" msgid="6664656962868194178">"Eltávolítás"</string>
     <string name="cancel" msgid="750286395700355455">"Mégse"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Kilépés a demó módból"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ez törli a demófiókot, és visszaállítja a rendszer gyári adatait. Az összes felhasználói adat elveszik."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Kilépés a demóból"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"beállítás befejezése"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"most nem"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ELVETÉS"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Vezetés közben nem áll rendelkezésre a funkció."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Vezetés közben nem lehet hozzáadni felhasználót."</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 8529553..fba0362 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"խամրեցված էկրան, հպէկրան, մարտկոց"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"խամրեցված էկրան, գիշեր, երանգ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Գիշերային ռեժիմ"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Ցանց և ինտերնետ"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Բջջային ցանց"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Բջջային ինտերնետ"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Օգտվել բջջային ինտերնետից"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Անջատե՞լ բջջային ինտերնետը"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Թրաֆիկի օգտագործում"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Զգուշացումներ և սահմանաչափ"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Վիճակագրության ժամանակահատվածը"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Երբ զգուշացնել"</string>
+    <string name="data_warning" msgid="116776633806885370">"Զգուշացում թրաֆիկի մասին"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Սահմանել թրաֆիկի սահմանաչափը"</string>
+    <string name="data_limit" msgid="227338836292511425">"Թրաֆիկի սահմանաչափը"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Տվյալների օգտագործման սահմանափակում"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Նշված սահմանաչափն անցնելու դեպքում մեքենայի գլխավոր վահանակը կանջատի բջջային ինտերնետը։\n\nՕպերատորի վիճակագրությունը կարող է տարբերվել գլխավոր վահանակի տվյալներից, ուստի խորհուրդ ենք տալիս նշել նախատեսվածից ցածր սահմանաչափ։"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Կարգավորել և կառավարել անլար միացման կետերը"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi-ը միանում է…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi-ն անջատվում է…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi-ի ցանկի բեռնում"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi-ն անջատած է"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Չհաջողվեց հեռացնել ցանցը"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Չհաջողվեց միանալ ցանցին"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ավելացնել ցանց"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi-ն անջատած է"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Միանալ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Գաղտնաբառ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Ցուցադրել գաղտնաբառը"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Ցանցի անունը"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Մուտքագրեք SSID-ն"</string>
     <string name="wifi_security" msgid="158358046038876532">"Անվտանգություն"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Ազդանշանի հզորությունը"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Ազդանշանի հզորությունը"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Կարգավիճակ"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Կապի արագությունը"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Հաճախականություն"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP հասցե"</string>
+    <string name="show_password" msgid="2074628020371139240">"Ցուցադրել գաղտնաբառը"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Մուտքագրեք ցանցի անունը"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Մուտքագրեք գաղտնաբառը"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Թույլ"</item>
-    <item msgid="2032262610626057081">"Բավարար"</item>
-    <item msgid="3859756017461098953">"Լավ"</item>
-    <item msgid="1521103743353335724">"Գերազանց"</item>
+    <item msgid="7683058295076342057">"Թույլ"</item>
+    <item msgid="1639222824821660744">"Միջին"</item>
+    <item msgid="1838705897358163300">"Լավ"</item>
+    <item msgid="6067166649320533751">"Գերազանց"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Միացնել Bluetooth-ը"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth-ն անջատած է"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Մբիթ/վ"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 ԳՀց"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ԳՀց"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Ցանցի տվյալներ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC հասցե"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP հասցե"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Ենթացանցի դիմակ"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 հասցեներ"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Անցախուց"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi-ի կարգավորումներ"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Ավտոմատ միացնել Wi‑Fi-ը"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi-ը կրկին կմիանա պահված բարձր որակի ցանցերի (օր.՝ ձեր տան ցանցի) մոտակայքում"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Անհասանելի է, քանի որ տեղորոշումն անջատված է։ Միացրեք "<annotation id="link">"այն"</annotation>"։"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Միացնե՞լ Wi-Fi ցանցերի որոնումը"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Միացնել"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi-Fi ցանցերի որոնումը միացված է"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Ավտոմատ կերպով անցնել բջջային ինտերնետի"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Օգտագործել բջջային ինտերնետը, եթե չի հաջողվում միանալ համացանցին Wi-Fi-ի միջոցով։ Կարող են կիրառվել գանձումներ։"</string>
+    <string name="learn_more" msgid="8214605928933358604">"Մանրամասն"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Կարգավորել միացումները, սարքի անունը և հայտնաբերելիությունը"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Համակարգիչ"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Ականջակալ-խոսափող"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Հեռախոս"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Տեսախցիկ"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Ականջակալ"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Ներածման արտաքին սարք"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Զուգակցված սարքեր"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Հասանելի սարքեր"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Զուգակցված սարքեր չկան"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Հասանելի սարքեր չկան"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Զուգակցված սարք"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Անուն"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Օգտագործել հետևյալի համար՝"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Փոխեք Bluetooth սարքի անունը"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Անանուն սարք"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Զուգակցված սարքեր"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Զուգակցել նոր սարք"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth-ը կմիանա"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Անջատե՞լ սարքը"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Ձեր մեքենան կանջատվի <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքից:"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Ավտոմեքենայի Bluetooth հասցեն՝ <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Սարքի Bluetooth հասցեն՝ <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Ավտոմեքենայի անունը"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Ավտոմեքենայի վերանվանում"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Սարքի վերանվանում"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Վերանվանել"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Հասանելի սարքեր"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Պրոֆիլներ"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-ով զուգակցման հարցում"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Զուգակցել և միանալ"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-ով զուգակցման կոդ"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN կոդը տառեր և նշաններ է պարունակում"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Մուտքագրեք զուգակցման կոդը, ապա սեղմեք Վերադառնալ կամ Մտնել"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Սովորաբար 0000 կամ 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Զուգակցման հարցում"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Հպեք` <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ի հետ զուգակցելու համար:"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Լեզուներ"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Լեզուներ և մուտքագրում"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Ստեղնաշար"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Կառավարել ստեղնաշարերը"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Տեքստի հնչեցում"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Կանխադրված սինթեզատոր"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Ընթացիկ սինթեզատոր"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Խոսքի արագություն"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Ձայներանգ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Զրոյացնել"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Ձայն"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Զանգի ձայնը"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Նավիգացիայի ձայնը"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Մեդիա"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Կարգավորել երաժշտության և տեսանյութերի ձայնը"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Զարթուցիչ"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Հեռախոսի զանգերանգը"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Ծանուցման կանխադրված ազդանշանը"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Զարթուցիչի կանխադրված ազդանշանը"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Հավելվածներ և ծանուցումներ"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Ցուցադրել բոլոր հավելվածները"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Կանխադրված հավելվածներ"</string>
     <string name="applications_settings" msgid="794261395191035632">"Հավելվածի մասին"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Ստիպողաբար դադարեցնել"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Ստիպողաբար դադարեցնե՞լ"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Հավելվածի ստիպողաբար դադարեցումը կարող է ազդել դրա աշխատանքի վրա։"</string>
     <string name="disable_text" msgid="4358165448648990820">"Անջատել"</string>
     <string name="enable_text" msgid="1794971777861881238">"Միացնել"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Ապատեղադրել"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Եթե անջատեք այս հավելվածը, Android-ը և այլ հավելվածներ հնարավոր է՝ սխալներով աշխատեն:"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Անջատել հավելվածը"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Թույլտվություններ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Տարբերակ՝ %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Թույլտվություններ չեն տրվել"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Թույլտվությունների հարցում չի արվել"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Թրաֆիկի օգտագործում"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Հավելվածի թրաֆիկ"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Ստիպողաբար դադարեցնել"</string>
     <string name="computing_size" msgid="5791407621793083965">"Հաշվարկում…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> լրացուցիչ թույլտվություն</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> լրացուցիչ թույլտվություն</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Հուշումներ և ձայնային ներածում"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Օգնական հավելված"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Օգտագործել էկրանի տեքստը"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Թույլ տալ օգնական հավելվածին օգտագործել էկրանի տեքստը"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Օգտագործել սքրինշոթը"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Թույլ տալ օգնական հավելվածին օգտագործել էկրանի պատկերները"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Ինքնալրացման ծառայություն"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ոչ մի"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Նշված"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Օգնականը կկարողանա կարդալ համակարգում օգտագործվող հավելվածների մասին տվյալները, այդ թվում՝ էկրանին ցուցադրվող կամ հավելվածներից ստացվող տեղեկությունները:"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Համոզվեք, որ այս հավելվածը վստահելի է&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google-ի ինքնալրացման ծառայությունը&gt;%1$s&lt;/xliff:g&gt; վերլուծում է էկրանի պարունակությունը և գտնում է դաշտերը, որոնք կարող են ինքնալրացվել:"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Ավելացնել ծառայություն"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Տեղորոշում"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Տեղադրության տվյալների վերջին հարցումները"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Վերջերս տեղորոշման տվյալների հարցումներ չեն արվել"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Հավելվածի թույլտվություններ"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Որոնում"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Տեղորոշման ծառայություններ"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi ցանցերի որոնում"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Թույլ տալ հավելվածներին և ծառայություններին որոնել Wi‑Fi ցանցեր ցանկացած ժամանակ, նույնիսկ եթե Wi-Fi-ն անջատած է: Դա կարող է լավացնել տեղորոշում օգտագործող գործառույթներն ու ծառայությունները:"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth սարքերի որոնում"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Թույլ տալ հավելվածներին և ծառայություններին որոնել մոտակայքում գտնվող սարքեր ցանկացած ժամանակ, նույնիսկ եթե Bluetooth-ն անջատած է: Դա կարող է լավացնել տեղորոշում օգտագործող գործառույթներն ու ծառայությունները:"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Համակարգ"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Համակարգի թարմացումներ"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Համակարգի թարմացումներ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-ի տարբերակը"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-ի խոցելիության շտկման մակարդակը"</string>
     <string name="model_info" msgid="4966408071657934452">"Մոդել"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband-ի տարբերակը"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Միջուկի տարբերակը"</string>
     <string name="build_number" msgid="3997326631001009102">"Տարբերակի համարը"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-ի հասցե"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Հասանելի չէ"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Կարգավիճակ"</string>
     <string name="device_status" msgid="267298179806290920">"Կարգավիճակ"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Հեղինակային իրավունք"</string>
     <string name="license_title" msgid="936705938435249965">"Արտոնագիր"</string>
     <string name="terms_title" msgid="5201471373602628765">"Օգտագործման պայմաններ"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Համակարգի WebView լիցենզիա"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Համակարգի WebView արտոնագրեր"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Պաստառներ"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Արբանյակային լուսանկարներ՝\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Այլ արտոնագրեր"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Չհաջողվեց բեռնել արտոնագրերը:"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Բեռնում…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Մշակող դառնալու համար ձեզ մնացել է <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> քայլ</item>
+      <item quantity="other">Մշակող դառնալու համար ձեզ մնացել է <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> քայլ</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Դուք արդեն մշակող եք:"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Կարիք չկա, դուք արդեն իսկ մշակող եք:"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Մշակողների համար"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Կարգավորումների վերակայում"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Ցանցի, հավելվածների և սարքի վերակայում"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Զրոյացնել ցանցի կարգավորումները"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Ցանցի բոլոր կարգավորումները կվերակայվեն, այդ թվում՝"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi-Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Բջջային ինտերնետ"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Ջնջել մեքենայի բոլոր eSIM քարտերը"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Ձեր սակագնային պլանը չի չեղարկվի:"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Չհաջողվեց վերակայել eSIM քարտերը"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Ընտրեք ցանց"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Վերակայել կարգավորումները"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Վերակայե՞լ"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Վերակայե՞լ ցանցի բոլոր կարգավորումները: Այս գործողությունը հնարավոր չի լինի հետարկել:"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Վերակայել կարգավորումները"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Ցանցի կարգավորումները վերակայվել են"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Վերակայել հավելվածների կարգավորումները"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Հետևյալ կարգավորումները կզրոյանան՝\n\n"<li>"անջատված հավելվածները,"</li>\n<li>"հավելվածների անջատված ծանուցումները,"</li>\n<li>"կանխադրված հավելվածները,"</li>\n<li>"ֆոնային ռեժիմում տվյալների փոխանցման սահմանափակումները,"</li>\n<li>"թույլտվությունների բոլոր սահմանափակումները։"</li>\n\n"Հավելվածների տվյալները կպահպանվեն։"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Վերակայել կարգավորումները"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Հավելվածների կարգավորումները վերակայվեցին"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Ջնջել բոլոր տվյալները (գործ. վերակայում)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Մեքենայի գլխավոր վահանակից կջնջվեն բոլոր տվյալները, այդ թվում՝\n\n"<li>"Ձեր Google հաշիվը"</li>\n<li>"Համակարգի և հավելվածների տվյալներն ու կարգավորումները"</li>\n<li>"Ներբեռնված հավելվածները"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Դուք մտել եք հետևյալ հաշիվներ՝"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Այս մեքենայում այլ օգտատերեր կան:"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Զրոյացնել կարգավորումները"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Զրոյացնե՞լ"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Ջնջե՞լ բոլոր անձնական տեղեկությունները և ներբեռնված հավելվածները: Դուք այլևս չեք կարողանա հետարկել այս գործողությունը:"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Ջնջել ամեն ինչ"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Ջնջում"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Խնդրում ենք սպասել..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Ամսաթիվ և ժամ"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Սահմանել ամսաթիվը և ժամը"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Սահմանել ամսաթիվը, ժամը, ժամային գոտին և ձևաչափերը"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Տեսակավորել ըստ ժամային գոտու"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Ամսաթիվ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Ժամանակ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Ավելացնել օգտատեր"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Ավելացնել հաշիվ"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Ջնջել օգտատիրոջը"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Նոր օգտատեր"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Հյուր"</string>
     <string name="user_admin" msgid="1535484812908584809">"Ադմինիստրատոր"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Դուք մտել եք որպես ադմինիստրատոր"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Ադմինիստրատորի բոլոր թույլտվությունները"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Դարձնել ադմինիստրատոր"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Օգտատերը կկարողանա ջնջել այլ օգտատերերի և ադմինիստրատորների, ինչպես նաև վերակայել համակարգի գործարանային կարգավորումները:"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Այս գործողությունը hնարավոր չէ հետարկել:"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Այո, դարձնել ադմինիստրատոր"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Ստեղծել նոր օգտատերեր"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Զանգել"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS-ներ մեքենայի ինտերնետի միջոցով"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Տեղադրել նոր հավելվածներ"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Ապատեղադրել հավելվածներ"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Ավելացնել օգտատեր"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Նոր օգտատեր"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Ավելացնե՞լ նոր օգտատեր"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Երբ դուք նոր օգտատեր եք ավելացնում, նա պետք է կարգավորի իր պրոֆիլը:"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Ցանկացած օգտատեր կարող է թարմացնել հավելվածները բոլոր մյուս հաշիվների համար:"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Սահմանաչափը սպառված է"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Դուք կարող եք ստեղծել մինչև <xliff:g id="COUNT">%d</xliff:g> օգտատեր:</item>
+      <item quantity="other">Դուք կարող եք ստեղծել մինչև <xliff:g id="COUNT">%d</xliff:g> օգտատեր:</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Չհաջողվեց ստեղծել նոր օգտատեր"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Հեռացնե՞լ պրոֆիլը"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Բոլոր հավելվածներն ու տվյալները կջնջվեն:"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Չհաջողվեց հեռացնել օգտատիրոջը"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Փակել"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Նորից փորձել"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Հեռացնե՞լ վերջին օգտատիրոջը"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Համակարգում վերջին օգտատիրոջը հեռացնելուց հետո ձեզ կառաջարկվի ընտրել ադմինիստրատորի նոր պրոֆիլ։"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Բոլոր տվյալները, կարգավորումներն ու հավելվածները, որոնք կապված են այս օգտատիրոջ հետ, կջնջվեն։ Հարկավոր կլինի նորից կարգավորել համակարգը։"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Ընտրեք նոր ադմինիստրատոր"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Հարկավոր է ընտրել առնվազն մեկ ադմինիստրատոր։ Այս ադմինիստրատորին հեռացնելուց առաջ ընտրեք նրան փոխարինողին։"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Ընտրել ադմինիստրատոր"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Հյուր"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Հյուր"</string>
     <string name="user_switch" msgid="6544839750534690781">"Փոխել օգտատիրոջը"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Դուք (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Անուն"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Կարգավորված չէ"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Օգտատիրոջ անվան փոփոխում"</string>
     <string name="users_list_title" msgid="770764290290240909">"Օգտատերեր"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s-ի թույլտվությունները"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Հաշիվներ"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Օգտատեր"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Ավելացնել հաշիվ"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Հաշիվներ չեն ավելացվել"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>-ի հաշիվներ"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Ավտոմատ համաժամեցնել տվյալները"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Թույլ տալ հավելվածներին ավտոմատ թարմացնել տվյալները"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Միացնե՞լ ավտոմատ համաժամեցումը"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Համացանցում կատարած ցանկացած փոփոխություն ավտոմատ կպատճենվի ձեր սարքում:\n\nՈրոշ հաշիվներ կարող են հեռախոսով կատարած փոփոխություններն ավտոմատ պատճենել համացանցում: Google հաշիվն աշխատում է հենց այդպես:"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Անջատե՞լ ավտոմատ համաժամեցումը"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Դա կկրճատի թրաֆիկի օգտագործումը, բայց դուք պետք է ձեռքով համաժամեցնեք բոլոր հաշիվների տվյալները։ Թարմացումների մասին ծանուցումներ չեն ցուցադրվի։"</string>
     <string name="account_details_title" msgid="7529571432258448573">"Հաշվի մասին"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Ավելացրեք հաշիվ"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Ավելացրեք հաշիվ"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Հեռացնել հաշիվը"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Հեռացնե՞լ հաշիվը"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Սարքից կջնջվեն նաև հաշվի բոլոր հաղորդագրությունները, կոնտակտներն ու մյուս տվյալները:"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Ձեր ադմինիստրատորը չի թույլատրում այս փոփոխությունը"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Հեռացնե՞լ այս օգտատիրոջը"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Բոլոր հավելվածներն ու տվյալները կջնջվեն:"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Չհաջողվեց հեռացնել օգտատիրոջը"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Կրկին փորձե՞լ:"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Փակել"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Կրկնել"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Ավելացնե՞լ նոր օգտատեր"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Երբ դուք նոր օգտատեր եք ավելացնում, նա պետք է կարգավորի իր պրոֆիլը:"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Ցանկացած օգտատեր կարող է թարմացնել հավելվածները բոլոր մյուս հաշիվների համար:"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Չհաջողվեց հեռացնել հաշիվը"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Հաշվի համաժամեցում"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Համաժամեցումը միացված է <xliff:g id="ID_2">%2$d</xliff:g> տարրերից <xliff:g id="ID_1">%1$d</xliff:g>-ի համար"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Համաժամեցումը միացված է բոլոր տարրերի համար"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Համաժամեցումն անջատված է բոլոր տարրերի համար"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Համաժամեցումն անջատված է"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Համաժամեցման սխալ"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Վերջին համաժամեցումը` <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Համաժամեցումը ընթացքի մեջ է…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Հպեք` համաժամեցնելու համար<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Համաժամացնել հիմա"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Չեղարկել համաժամեցումը"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Համաժամեցման ընթացքում խնդիրներ են առաջացել: Կարճ ժամանակ անց այն կվերականգնվի:"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Անվտանգություն"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Էկրանի կողպում"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ոչ մեկը"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN կոդ"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Գաղտնաբառ"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Ընտրեք կողպման եղանակ"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Էկրանի կողպման տարբերակներ"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Կողպման տարբերակներ"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Մուտքագրեք նախշը"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Հաստատել"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Նորից գծել"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Էկրանի կողպման կարգավորում"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Ընտրեք ձեր PIN-ը"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Ընտրեք ձեր նախշը"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Ընտրեք ձեր գաղտնաբառը"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Ընտրեք ձեր գաղտնաբառը"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Կողպման ընթացիկ եղանակը"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Անվտանգության համար ավելացրեք նախշ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Մաքրել"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ՏՏ ադմինիստրատորն արգելափակել է պարզ գաղտնաբառերը: Փորձեք մեկ այլ գաղտնաբառ:"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Թվանշանների աճող, նվազող կամ կրկնվող հաջորդականությունն արգելված է:"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Էկրանի կողպման տարբերակներ"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> – <xliff:g id="NUM_DAYS">%3$s</xliff:g> օր առաջ"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Ավելացնել վստահելի սարք"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Վստահելի սարքեր"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> սարք</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> սարք</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Միացված լինելու դեպքում ձեր <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> սարքը կկարողանա ապակողպել այս մեքենան: Եթե ձեր <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>-ը ինչ-որ մեկի մոտ հայտնվի, նա կկարողանա մտնել այս սարք:"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Հաստատել"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Հեռացնել վստահելի սարքը"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Փակել"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Ուղեկցող հավելվածի օգնությամբ կարգավորեք վստահելի սարքը։ Վերջինիս միջոցով դուք կկարողանաք ապակողպել օգտատիրոջ ձեր պրոֆիլը, երբ հեռախոսը միանա մեքենային։"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Ներբեռնեք ուղեկցող հավելվածը հեռախոսում։"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Սարքերը զուգակցելու համար ընտրեք «<xliff:g id="CAR_NAME">%1$s</xliff:g>» մեքենան հեռախոսում։"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock-ը չի կարողանում հայտնաբերել այս սարքի անվտանգության գործառույթները: Մեքենայի պաշտպանության համար վստահելի սարքը կկարողանա ապակողպված պահել մեքենան, միայն երբ այն արդեն ապակողպվել է ձեր կողմից։ Մեքենան կարող է ապակողպված մնալ, երբ այն գտնվում է ձեր վստահելի սարքի մոտակայքում՝ նույնիսկ մեկ այլ անձի ձեռքում:"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Ավելացրեք <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքը վստահելիների ցանկում"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքն ավելացվեց վստահելիների ցանկում"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Չհաջողվեց գրանցել «<xliff:g id="DEVICE_NAME">%1$s</xliff:g>» սարքը"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Վստահելի սարք ավելացնելու համար ընտրեք նույնականացման եղանակ: Եթե վստահելի սարքը ձեզ մոտ չէ, պրոֆիլ մուտք գործելու համար կպահանջվի նույնականացում:"</string>
     <string name="forget" msgid="3971143908183848527">"Հեռացնել"</string>
+    <string name="connect" msgid="5861699594602380150">"Միանալ"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Անջատել"</string>
     <string name="delete_button" msgid="5840500432614610850">"Ջնջել"</string>
     <string name="remove_button" msgid="6664656962868194178">"Հեռացնել"</string>
     <string name="cancel" msgid="750286395700355455">"Չեղարկել"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Ելք դեմո ռեժիմից"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Դեմո հաշիվը կջնջվի, և համակարգում կվերականգնվեն գործարանային տվյալները։ Օգտատիրոջ բոլոր տվյալները կկորչեն։"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Անջատել դեմո ռեժիմը"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"ավարտել կարգավորումը"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ոչ հիմա"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ՓԱԿԵԼ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Վարելու ընթացքում գործառույթը հասանելի չէ:"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Վարելու ժամանակ հնարավոր չէ օգտատեր ավելացնել:"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 6eca0bb..20502a2 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"layar redup, layar sentuh, baterai"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"layar redup, malam, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mode malam"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Jaringan &amp; internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Jaringan seluler"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Kuota"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Akses data menggunakan jaringan seluler"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Nonaktifkan kuota?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Penggunaan data"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Peringatan &amp; batas data"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Siklus penggunaan data aplikasi"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Setel peringatan data"</string>
+    <string name="data_warning" msgid="116776633806885370">"Peringatan data"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Setel batas data"</string>
+    <string name="data_limit" msgid="227338836292511425">"Batas data"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Membatasi penggunaan data"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Head unit kendaraan akan menonaktifkan kuota jika mencapai batas yang disetel.\n\nKarena penggunaan data diukur oleh head unit, dan operator dapat menghitung penggunaan secara berbeda, pertimbangkan untuk menyetel batas yang konservatif."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Siapkan &amp; kelola titik akses nirkabel"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Mengaktifkan Wi-Fi..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Menonaktifkan Wi-Fi..."</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Memuat daftar Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi dinonaktifkan"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Gagal melupakan jaringan"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Gagal menyambung ke jaringan"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Tambahkan jaringan"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi dinonaktifkan"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Sambungkan"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Sandi"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Tampilkan sandi"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nama jaringan"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Masukkan SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Keamanan"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Kekuatan sinyal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Kekuatan sinyal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Kecepatan link"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekuensi"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Alamat IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Tampilkan sandi"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Masukkan nama jaringan"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Masukkan sandi"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Buruk"</item>
-    <item msgid="2032262610626057081">"Sedang"</item>
-    <item msgid="3859756017461098953">"Bagus"</item>
-    <item msgid="1521103743353335724">"Sangat bagus"</item>
+    <item msgid="7683058295076342057">"Buruk"</item>
+    <item msgid="1639222824821660744">"Sedang"</item>
+    <item msgid="1838705897358163300">"Baik"</item>
+    <item msgid="6067166649320533751">"Sangat bagus"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Aktifkan Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth dinonaktifkan"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detail jaringan"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Alamat MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Alamat IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Alamat IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferensi Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Aktifkan Wi‑Fi secara otomatis"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi aktif lagi dekat jaringan tersimpan berkualitas tinggi, mis. jaringan rumah"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Tidak tersedia karena lokasi dinonaktifkan. Aktifkan "<annotation id="link">"lokasi"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Aktifkan pemindaian Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktifkan"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Pemindaian Wi-Fi diaktifkan"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Beralih ke kuota secara otomatis"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Gunakan kuota saat Wi-Fi tidak memiliki akses internet. Mungkin dikenakan biaya penggunaan data."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Pelajari lebih lanjut"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Mengelola sambungan, menyetel nama perangkat &amp; visibilitas"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Komputer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Ponsel"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Pencitraan"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Headphone"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periferal Masukan"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Perangkat yang tersambung"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Perangkat yang tersedia"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Tidak ada perangkat yang tersambung"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Perangkat tidak tersedia"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Perangkat yang tersambung"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nama"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Gunakan untuk"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Ubah nama perangkat Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Perangkat tanpa nama"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Perangkat yang tersambung"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Sambungkan perangkat baru"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth akan diaktifkan untuk menyambungkan"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Putuskan sambungan perangkat?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Kendaraan Anda akan diputuskan sambungannya dari <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Alamat Bluetooth kendaraan: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Alamat Bluetooth perangkat: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nama kendaraan"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Ganti nama kendaraan ini"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Ganti nama perangkat"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Ganti nama"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Perangkat yang tersedia"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profil"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Permintaan penyambungan Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sambungkan &amp; hubungkan"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kode penyambungan Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN berisi huruf atau simbol"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Ketik kode penghubung, lalu tekan Kembali atau Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Biasanya 0000 atau 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Permintaan penyambungan"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tap untuk menyambungkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Bahasa"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Bahasa &amp; masukan"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Keyboard"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Kelola keyboard"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Keluaran text-to-speech"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Mesin yang dipilih"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Mesin saat ini"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Laju Bicara"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tinggi nada"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Setel ulang"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Suara"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volume dering"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volume navigasi"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Menyetel volume musik dan video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Nada dering ponsel"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Suara notifikasi default"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Suara alarm default"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikasi &amp; notifikasi"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Tampilkan semua aplikasi"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplikasi default"</string>
     <string name="applications_settings" msgid="794261395191035632">"Info aplikasi"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Paksa berhenti"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Paksa berhenti?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Jika aplikasi dihentikan secara paksa, mungkin fungsinya akan terganggu."</string>
     <string name="disable_text" msgid="4358165448648990820">"Nonaktifkan"</string>
     <string name="enable_text" msgid="1794971777861881238">"Aktifkan"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Uninstal"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jika Anda menonaktifkan aplikasi ini, Android dan aplikasi lain mungkin tidak berfungsi lagi sesuai harapan."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Nonaktifkan aplikasi"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Izin"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versi: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Tidak ada izin yang diberikan"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Tidak ada izin yang diminta"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Penggunaan data"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Penggunaan data aplikasi"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Paksa berhenti"</string>
     <string name="computing_size" msgid="5791407621793083965">"Menghitung..."</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> izin tambahan</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> izin tambahan</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Bantuan &amp; masukan suara"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplikasi bantuan"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Gunakan teks dari layar"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Izinkan aplikasi bantuan mengakses konten layar sebagai teks"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Gunakan screenshot"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Izinkan aplikasi bantuan mengakses gambar layar"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Layanan IsiOtomatis"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Tidak Ada"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Dipilih"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Asisten dapat membaca informasi tentang aplikasi yang sedang digunakan di sistem, termasuk informasi yang terlihat di layar atau dapat diakses dalam aplikasi."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Pastikan Anda memercayai aplikasi ini&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google IsiOtomatis&gt;%1$s&lt;/xliff:g&gt; menggunakan item yang ada di layar untuk menentukan item apa saja yang dapat diisi otomatis."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Tambahkan layanan"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lokasi"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Permintaan Lokasi Terbaru"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Tidak ada permintaan lokasi terbaru"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Izin tingkat aplikasi"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Pemindaian"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Layanan Lokasi"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Pemindaian Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Izinkan aplikasi dan layanan memindai jaringan Wi-Fi kapan saja, meskipun Wi-Fi nonaktif. Hal ini dapat dilakukan, misalnya, untuk menyempurnakan fitur dan layanan berbasis lokasi."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Pemindaian Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Izinkan aplikasi dan layanan memindai perangkat di sekitar kapan saja, meskipun Bluetooth nonaktif. Hal ini dapat dilakukan, misalnya, untuk menyempurnakan fitur dan layanan berbasis lokasi."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Update sistem"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Update sistem"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versi Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Tingkat patch keamanan Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versi pita basis"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versi kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Nomor versi"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Alamat bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Tidak tersedia"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Hak Cipta"</string>
     <string name="license_title" msgid="936705938435249965">"Lisensi"</string>
     <string name="terms_title" msgid="5201471373602628765">"Persyaratan dan ketentuan"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Lisensi WebView Sistem"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Lisensi WebView sistem"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Wallpaper"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Penyedia citra satelit:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Lisensi pihak ketiga"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Ada masalah saat memuat lisensi."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Memuat…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Tinggal <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> langkah untuk menjadi developer.</item>
+      <item quantity="one">Tinggal <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> langkah untuk menjadi developer.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Sekarang Anda adalah seorang developer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Tidak perlu, Anda sudah menjadi developer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opsi developer"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opsi setel ulang"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Menyetel ulang jaringan, aplikasi, atau perangkat"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Setel ulang jaringan"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Tindakan ini akan menyetel ulang semua setelan jaringan, termasuk:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Kuota"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Hapus semua eSIM kendaraan"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Tindakan ini tidak akan membatalkan paket layanan Anda."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Tidak dapat menyetel ulang eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Pilih jaringan"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Setel ulang setelan"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Setel ulang?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Setel ulang semua setelan jaringan? Tindakan ini tidak dapat diurungkan!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Setel ulang setelan"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Setelan jaringan telah disetel ulang"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Setel ulang preferensi aplikasi"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Tindakan ini akan menyetel ulang semua preferensi untuk:\n\n"<li>"Aplikasi yang dinonaktifkan"</li>\n<li>"Notifikasi aplikasi yang dinonaktifkan"</li>\n<li>"Aplikasi default untuk tindakan"</li>\n<li>"Batasan data latar belakang untuk aplikasi"</li>\n<li>"Batasan izin apa pun"</li>\n\n"Data aplikasi Anda tidak akan hilang."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Setel ulang aplikasi"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Preferensi aplikasi telah disetel ulang"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Hapus semua (reset ke setelan pabrik)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Tindakan ini akan menghapus semua data dari head unit kendaraan, termasuk:\n\n"<li>"Akun Google Anda"</li>\n<li>"Data sistem dan aplikasi serta setelan"</li>\n<li>"Aplikasi yang diunduh"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Saat ini Anda telah login ke akun berikut:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Ada pengguna lain yang aktif di kendaraan ini."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Setel ulang kendaraan"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Setel ulang?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Hapus semua informasi pribadi dan aplikasi yang didownload? Tindakan ini tidak dapat diurungkan!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Hapus semua"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Menghapus"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Harap tunggu..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tanggal &amp; waktu"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Setel tanggal dan waktu"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Menyetel tanggal, waktu, zona waktu &amp; format"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Urutkan menurut zona waktu"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Tanggal"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Waktu"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Tambahkan pengguna"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Tambahkan akun"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Menghapus pengguna"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Pengguna baru"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Tamu"</string>
     <string name="user_admin" msgid="1535484812908584809">"Admin"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sedang login admin"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Semua izin admin"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Jadikan Admin"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Pengguna dapat menghapus pengguna, termasuk Admin lain, dan me-reset sistem ke setelan pabrik."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Tindakan ini tidak dapat dibatalkan."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ya, jadikan admin"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Membuat pengguna baru"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Melakukan panggilan telepon"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mengirim pesan dengan kuota mobil"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Menginstal aplikasi baru"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Meng-uninstal aplikasi"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Tambahkan pengguna"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Pengguna baru"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Tambahkan pengguna baru?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Saat Anda menambahkan pengguna baru, orang tersebut perlu menyiapkan ruang mereka sendiri."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Setiap pengguna dapat mengupdate aplikasi untuk semua pengguna lain."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Batas pengguna tercapai"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Anda dapat membuat hingga <xliff:g id="COUNT">%d</xliff:g> pengguna.</item>
+      <item quantity="one">Hanya dapat membuat satu pengguna.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Gagal membuat pengguna baru"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Hapus pengguna ini?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Semua aplikasi dan data akan dihapus."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Gagal menghapus pengguna."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Tutup"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Coba lagi"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Hapus pengguna terakhir?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Setelah menghapus satu-satunya pengguna yang tersisa untuk mobil ini, pengguna admin baru akan dibuat."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Semua data, setelan, dan aplikasi yang terkait dengan pengguna ini akan dihapus. Anda harus menyiapkan sistem lagi."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Pilih admin baru"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Anda memerlukan minimal satu admin. Untuk menghapus admin ini, terlebih dahulu pilih pengganti."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Pilih admin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Tamu"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Tamu"</string>
     <string name="user_switch" msgid="6544839750534690781">"Ganti"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Anda (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nama"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Tidak disiapkan"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Edit nama pengguna"</string>
     <string name="users_list_title" msgid="770764290290240909">"Pengguna"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Izin diberikan kepada %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Akun"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Pengguna"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Tambahkan akun"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Tidak ada akun yang ditambahkan"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Akun untuk <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Otomatis sinkronkan data"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Izinkan aplikasi memuat ulang data secara otomatis"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Aktifkan sinkronisasi data otomatis?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Perubahan apa pun yang dilakukan pada akun Anda di web akan disalin ke perangkat secara otomatis.\n\nBeberapa akun juga dapat otomatis menyalin setiap perubahan yang dilakukan di ponsel ke web. Akun Google mengikuti cara kerja tersebut."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Nonaktifkan sinkronisasi data otomatis?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Tindakan ini akan menghemat kuota, tetapi Anda perlu menyinkronkan setiap akun secara manual untuk mengumpulkan informasi terkini. Selain itu, Anda tidak akan menerima notifikasi ketika ada update."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Info akun"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Tambahkan akun"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Tambahkan akun"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Hapus akun"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Hapus akun?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Menghapus akun ini akan menghapus semua pesan, kontak, dan data lain akun tersebut dari perangkat."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Perubahan ini tidak diizinkan oleh admin"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Hapus pengguna ini?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Semua aplikasi dan data akan dihapus."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Gagal menghapus pengguna"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Coba lagi?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Tutup"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Coba lagi"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Tambahkan pengguna baru?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Saat Anda menambahkan pengguna baru, orang tersebut perlu menyiapkan ruang mereka sendiri."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Setiap pengguna dapat mengupdate aplikasi untuk semua pengguna lain."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Gagal menghapus akun."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sinkronisasi akun"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinkronisasi untuk <xliff:g id="ID_1">%1$d</xliff:g> dari <xliff:g id="ID_2">%2$d</xliff:g> item aktif"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinkronisasi untuk semua item aktif"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinkronisasi untuk semua item nonaktif"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinkronisasi NONAKTIF"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Error sinkronisasi"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Terakhir disinkronkan <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sedang menyinkronkan..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tap untuk menyinkronkan sekarang<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinkronkan sekarang"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Batalkan sinkronisasi"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Saat ini sinkronisasi mengalami masalah. Sinkronisasi akan segera berfungsi kembali."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Keamanan"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Kunci layar"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Tidak ada"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Sandi"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Pilih jenis kunci"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opsi kunci layar"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opsi penguncian"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Masukkan pola"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Konfirmasi"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Gambar ulang"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Setel kunci layar"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Pilih PIN Anda"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Pilih pola Anda"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Pilih sandi Anda"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Pilih sandi Anda"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Kunci layar saat ini"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Untuk keamanan, setel pola"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Hapus"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Sandi umum diblokir oleh admin IT. Coba sandi lain."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Urutan digit naik, turun, atau berulang tidak diizinkan."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opsi kunci layar"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> hari yang lalu"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Tambahkan perangkat tepercaya"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Perangkat tepercaya"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> perangkat</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> perangkat</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> akan membuka kunci mobil Anda saat terhubung. Jika seseorang mengambil <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> Anda, orang tersebut mungkin dapat mengakses perangkat ini"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Konfirmasi"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Hapus perangkat tepercaya"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Selesai"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Gunakan aplikasi pendamping untuk menyiapkan perangkat dipercaya. Setelah menyiapkannya, Anda dapat membuka kunci profil pengguna jika ponsel terdeteksi oleh kendaraan"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download aplikasi pendamping di ponsel"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Pilih <xliff:g id="CAR_NAME">%1$s</xliff:g> di ponsel untuk menghubungkan perangkat"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock tidak dapat mendeteksi fitur keamanan perangkat ini. Untuk membantu melindungi mobil Anda, perangkat dipercaya hanya dapat membuka kunci mobil jika Anda sudah membuka kuncinya. Perangkat dipercaya dapat membuka kunci mobil Anda saat berada di sekitarnya, meski orang lain memegangnya."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Tambahkan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> sebagai perangkat dipercaya"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> berhasil ditambahkan sebagai perangkat dipercaya"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Pendaftaran <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gagal"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Menambahkan perangkat dipercaya mewajibkan Anda menetapkan metode autentikasi setelahnya. Jika Anda tidak membawa perangkat dipercaya, autentikasi akan diperlukan untuk mengakses profil Anda."</string>
     <string name="forget" msgid="3971143908183848527">"Lupakan"</string>
+    <string name="connect" msgid="5861699594602380150">"Hubungkan"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Putuskan hubungan"</string>
     <string name="delete_button" msgid="5840500432614610850">"Hapus"</string>
     <string name="remove_button" msgid="6664656962868194178">"Hapus"</string>
     <string name="cancel" msgid="750286395700355455">"Batal"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Keluar dari mode demo"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tindakan ini akan menghapus akun demo dan mereset sistem ke setelan pabrik. Semua data pengguna akan hilang."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Keluar dari Demo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"selesaikan penyiapan"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"lain kali"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"TOLAK"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Fitur tidak tersedia saat mengemudi."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Tidak dapat menambahkan pengguna saat mengemudi."</string>
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 8159267..38493e6 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dekkja skjá, snertiskjár, rafhlaða"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"myrkva skjá, nótt, litblær"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Næturstilling"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Netkerfi og internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Farsímakerfi"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Farsímagögn"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Aðgangur að gögnum um farsímakerfi"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Slökkva á farsímagögnum?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Gagnanotkun"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Gagnaviðvörun og hámark"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Notkunarferli forritagagna"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Stilla gagnaviðvörun"</string>
+    <string name="data_warning" msgid="116776633806885370">"Gagnaviðvörun"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Velja gagnamörk"</string>
+    <string name="data_limit" msgid="227338836292511425">"Gagnamörk"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Takmörkun gagnanotkunar"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Mælaborð bílsins mun slökkva á farsímagögnum þegar markinu sem þú hefur stillt er náð.\n\nÞar sem mælaborðið mælir gagnanotkun og símafyrirtækið gæti reiknað notkun á annan hátt skaltu íhuga að stilla hófleg mörk."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Setja upp og stjórna þráðlausum aðgangsstöðum"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Kveikir á Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Slekkur á Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Hleður Wi‑Fi lista"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Slökkt á Wi‑Fi"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Ekki tókst að gleyma neti"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Ekk tókst að tengjast neti"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Bæta við neti"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Slökkt á Wi‑Fi"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Tengja"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Aðgangsorð"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Sýna aðgangsorð"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Heiti nets"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Sláðu inn SSID-kennið"</string>
     <string name="wifi_security" msgid="158358046038876532">"Öryggi"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Sendistyrkur"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Sendistyrkur"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Staða"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Hraði tengingar"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Tíðni"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-tala"</string>
+    <string name="show_password" msgid="2074628020371139240">"Sýna aðgangsorð"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Slá inn heiti nets"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Slá inn aðgangsorð"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Lélegt"</item>
-    <item msgid="2032262610626057081">"Sæmilegt"</item>
-    <item msgid="3859756017461098953">"Gott"</item>
-    <item msgid="1521103743353335724">"Frábært"</item>
+    <item msgid="7683058295076342057">"Lélegt"</item>
+    <item msgid="1639222824821660744">"Sæmilegt"</item>
+    <item msgid="1838705897358163300">"Gott"</item>
+    <item msgid="6067166649320533751">"Frábært"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Kveikja á Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Slökkt á Bluetooth"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/sek."</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Upplýsingar um net"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-vistfang"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-tala"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Undirnetssía"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-tölur"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gátt"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi stillingar"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Kveikja sjálfkrafa á Wi-Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi kveikir á sér nálægt vistuðum hágæðanetum, t.d. heima"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Ótiltækt – slökkt er á staðsetningu. Kveiktu á "<annotation id="link">"staðsetningu"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Kveikja á Wi-Fi leit?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Kveikja"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Kveikt á Wi‑Fi leit"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Skipta sjálfkrafa yfir í farsímagögn"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Nota farsímagögn þegar Wi-Fi er ekki með nettengingu. Gjöld fyrir gagnanotkun kunna að eiga við."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Frekari upplýsingar"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Stjórna tengingum, stilla heiti tækisins og sýnileika"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Tölva"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Höfuðtól"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Sími"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Myndherming"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Heyrnartól"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Jaðartæki með inntak"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Pöruð tæki"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Tæki í boði"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Engin pöruð tæki"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Engin tæki í boði"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Parað tæki"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nafn"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Nota fyrir"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Breyttu heiti Bluetooth-tækisins"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Ónefnt tæki"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Pöruð tæki"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Para nýtt tæki"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Kveikt verður á Bluetooth til að para"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Aftengja tæki?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Tenging ökutækisins við <xliff:g id="DEVICE_NAME">%1$s</xliff:g> verður rofin."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth-vistfang ökutækis: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth-vistfang tækis: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Heiti ökutækis"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Endurnefna þetta ökutæki"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Endurnefna tæki"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Endurnefna"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Tæki í boði"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Prófílar"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Beiðni um Bluetooth-pörun"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pörun og tenging"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-pörunarkóði"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN inniheldur bókstafi eða tákn"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Sláðu inn pörunarkóðann og ýttu svo á Return eða Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Yfirleitt 0000 eða 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Beiðni um pörun"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Ýttu til að para við <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Tungumál"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Tungumál og inntak"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Lyklaborð"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Stjórna lyklaborðum"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Úttak upplesturs"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Valin vél"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Núverandi vél"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Talhraði"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tónhæð"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Endurstilla"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Hljóð"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Hljóðstyrkur hringingar"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Hljóðstyrkur leiðsagnar"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Efni"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Stilla hljóðstyrk fyrir tónlist og myndskeið"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Vekjari"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Hringitónn síma"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Sjálfgefið hljóð tilkynninga"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sjálfgefið hljóð í vekjara"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Forrit og tilkynningar"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Sýna öll forrit"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Sjálfgefin forrit"</string>
     <string name="applications_settings" msgid="794261395191035632">"Upplýsingar um forrit"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Þvinga lokun"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Þvinga fram lokun?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ef þú þvingar fram lokun forrits gæti það látið illa."</string>
     <string name="disable_text" msgid="4358165448648990820">"Slökkva"</string>
     <string name="enable_text" msgid="1794971777861881238">"Kveikja"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Fjarlægja"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ef þú slekkur á þessu forriti getur verið að Android og önnur forrit virki ekki lengur sem skyldi."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Slökkva á forriti"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Heimildir"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Útgáfa: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Engar heimildir veittar"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Engar heimildarbeiðnir"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Gagnanotkun"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Gagnanotkun forrits"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Þvinga lokun"</string>
     <string name="computing_size" msgid="5791407621793083965">"Reiknar…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> viðbótarheimild</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> viðbótarheimildir</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Aðstoð og raddinntak"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aðstoðarforrit"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Nota texta af skjánum"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Veita aðstoðarforritinu aðgang að efni skjásins sem texta"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Nota skjámynd"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Veita aðstoðarforritinu aðgang að mynd af skjánum"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Sjálfvirk útfyllingarþjónusta"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ekkert"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Valið"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Hjálparinn mun geta séð upplýsingar um forrit í notkun í kerfinu þínu, þar á meðal upplýsingar sem sjást á skjánum eða eru aðgengilegar úr forritum."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Gakktu úr skugga um að þú treystir þessu forriti&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Sjálfvirk útfylling Google&gt;%1$s&lt;/xliff:g&gt; notar það sem er á skjánum til að ákvarða hvað er hægt að fylla sjálfkrafa út."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Bæta þjónustu við"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Staðsetning"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nýlegar staðsetningarbeiðnir"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Engar nýlegar staðsetningarbeiðnir"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Heimildir á forritsstigi"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Skönnun"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Staðsetningarþjónusta"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi leit"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Leyfa forritum og þjónustu að leita að Wi-Fi netum hvenær sem er, jafnvel þegar slökkt er á Wi-Fi. Sem dæmi er hægt að nota þetta til að bæta eiginleika og þjónustu sem byggja á staðsetningu."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-leit"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Leyfa forritum og þjónustu að leita að nálægum tækjum hvenær sem er, jafnvel þegar slökkt er á Bluetooth. Sem dæmi er hægt að nota þetta til að bæta eiginleika og þjónustu sem byggja á staðsetningu."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Kerfi"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Kerfisuppfærslur"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Kerfisuppfærslur"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android útgáfa"</string>
     <string name="security_patch" msgid="4794276590178386903">"Stig Android öryggisplásturs"</string>
     <string name="model_info" msgid="4966408071657934452">"Gerð"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Grunnbandsútgáfa"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kjarnaútgáfa"</string>
     <string name="build_number" msgid="3997326631001009102">"Útgáfunúmer smíðar"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-vistfang"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Ekki í boði"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Staða"</string>
     <string name="device_status" msgid="267298179806290920">"Staða"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Höfundarréttur"</string>
     <string name="license_title" msgid="936705938435249965">"Leyfi"</string>
     <string name="terms_title" msgid="5201471373602628765">"Skilmálar"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Leyfi vefglugga í kerfi"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"WebView leyfi kerfis"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Veggfóður"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Gervihnattamyndir frá \n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Leyfi þriðju aðila"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Vandamál kom upp við að hlaða leyfin."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Hleður…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Nú ertu <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> skrefi frá því að vera þróunaraðili.</item>
+      <item quantity="other">Nú ertu <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> skrefum frá því að vera þróunaraðili.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Nú ertu þróunaraðili!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Þetta er óþarfi; þú ert nú þegar þróunaraðili."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Forritunarkostir"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Valkostir endurstillingar"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Endurstilling netkerfis, forrita eða tækis"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Endurstilla net"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Þetta mun endurstilla allar netstillingar, þar á meðal:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi-Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Farsímagögn"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Eyða öllum eSIM-kortum ökutækisins"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Þetta segir ekki upp áskrift þinni."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Ekki er hægt að endurstilla eSIM-kort"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Veldu net"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Endurstilla stillingar"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Endurstilla?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Endurstilla allar netstillingar? Ekki er hægt að afturkalla þessa aðgerð!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Endurstilla stillingar"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Netstillingar voru endurstilltar"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Endurstilla stillingar forrita"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Þetta endurstillir allar kjörstillingar fyrir:\n\n "<li>"Óvirk forrit"</li>\n" "<li>"Óvirkar tilkynningar forrita"</li>\n" "<li>"Sjálfgefin forrit aðgerða"</li>\n" "<li>"Takmarkanir á bakgrunnsgögnum forrita"</li>\n" "<li>"Takmarkanir á heimildum"</li>\n\n" Þú glatar engum forritagögnum."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Endurstilla forrit"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Stillingar forrita voru endurstilltar"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Eyða öllum gögnum (núllstilla)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Þetta mun eyða öllum gögnum af mælaborði farartækisins þíns, þ.m.t.:\n\n"<li>"Google reikningnum þínum"</li>\n<li>"Kerfis- og forritagögnum og stillingum"</li>\n<li>"Sóttum forritum"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Þú ert skráð(ur) inn á eftirfarandi reikninga:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Það eru aðrir notendur í þessu farartæki."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Endurstilla farartæki"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Endurstilla?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Viltu eyða öllum persónuupplýsingum og sóttum forritum? Ekki er hægt að afturkalla þessa aðgerð."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Eyða öllu"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Eyðir"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Augnablik..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dagsetning og tími"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Veldu dagsetningu og tíma"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Velja dagsetningu, tíma, tímabelti og snið"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Raða eftir tímabelti"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Dagsetning"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Tími"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Bæta notanda við"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Bæta reikningi við"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Eyða notanda"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nýr notandi"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gestur"</string>
     <string name="user_admin" msgid="1535484812908584809">"Stjórnandi"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Skráð(ur) inn sem stjórnandi"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Allar stjórnandaheimildir"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Gera að stjórnanda"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Notandinn mun geta eytt öðrum notendum, þar á meðal stjórnendum, og núllstillt kerfið."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Ekki er hægt að afturkalla þessa aðgerð."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Já, gera að stjórnanda"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Nýskrá notendur"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Hringja símtöl"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Skilaboð í gegnum farsímagögn bíls"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Setja upp ný forrit"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Fjarlægja forrit"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Bæta notanda við"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nýr notandi"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Bæta nýjum notanda við?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Þegar þú bætir nýjum notanda við þarf viðkomandi að setja upp sitt eigið svæði."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Allir notendur geta uppfært forrit fyrir alla aðra notendur."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Notandahámarki náð"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Þú getur búið til allt að <xliff:g id="COUNT">%d</xliff:g> notanda.</item>
+      <item quantity="other">Þú getur búið til allt að <xliff:g id="COUNT">%d</xliff:g> notendur.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Ekki tókst að búa til nýjan notanda"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Eyða þessum notanda?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Öllum forritum og gögnum verður eytt."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Ekki tókst að eyða notanda."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Hunsa"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Reyna aftur"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Eyða síðasta notanda?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Þegar eina notanda þessa bíls sem eftir er hefur verið eytt verður nýr stjórnandi valinn."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Öllum gögnum, stillingum og forritum sem tengjast þessum notanda verður eytt. Þú munt þurfa að setja kerfið upp aftur."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Velja nýjan stjórnanda"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Þú þarft að minnsta kosti einn stjórnanda. Til að eyða þessum þarftu fyrst að finna einhvern í staðinn."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Velja stjórnanda"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gestur"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gestur"</string>
     <string name="user_switch" msgid="6544839750534690781">"Skipta"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Þú (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nafn"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Ekki uppsett"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Breyta notandanafni"</string>
     <string name="users_list_title" msgid="770764290290240909">"Notendur"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s veitt heimild"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Reikningar"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Notandi"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Bæta reikningi við"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Engum reikningum bætt við"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Reikningar fyrir <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Samstilla gögn sjálfkrafa"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Leyfa forritum að endurnýja gögn sjálfkrafa"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Kveikja á gagnasamstillingu?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Allar breytingar sem þú gerir á reikningunum þínum á vefnum verða sjálfkrafa afritaðar yfir í tækið.\n\nEinhverjir reikningar kunna einnig að afrita sjálfkrafa allar breytingar sem þú gerir í símanum yfir á vefinn. Þetta gildir um Google reikninga."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Slökkva á gagnasamstillingu?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Þetta dregur úr gagnanotkun en þú þarft að samstilla hvern reikning handvirkt til að sækja nýjustu upplýsingar. Þú færð ekki tilkynningar þegar uppfærslur fara fram."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Reikningsupplýsingar"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Bæta reikningi við"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Bæta reikningi við"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Fjarlægja reikning"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Viltu fjarlægja reikninginn?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Ef þessi reikningur er fjarlægður verður öllum skilaboðum hans, tengiliðum og öðrum gögnum eytt úr tækinu!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Stjórnandinn þinn leyfir ekki þessa breytingu"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Fjarlægja þennan notanda?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Öllum forritum og gögnum verður eytt."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Ekki tókst að fjarlægja notanda."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Reyna aftur?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Hunsa"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Reyna aftur"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Bæta nýjum notanda við?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Þegar þú bætir nýjum notanda við þarf viðkomandi að setja upp sitt eigið svæði."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Allir notendur geta uppfært forrit fyrir alla aðra notendur."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Ekki tókst að fjarlægja reikning."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Samstilling reiknings"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Kveikt á samstillingu fyrir <xliff:g id="ID_1">%1$d</xliff:g> af <xliff:g id="ID_2">%2$d</xliff:g> atriðum"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Kveikt á samstillingu fyrir öll atriði"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Slökkt á samstillingu fyrir öll atriði"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Slökkt er á samstillingu"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Samstillingarvilla"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Síðast samstillt <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Samstillir…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Ýttu til að samstilla núna<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Samstilla núna"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Hætta við samstillingu"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Vandamál eru með samstillingu sem stendur. Hún verður aftur í boði von bráðar."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Öryggi"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skjálás"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Enginn"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-númer"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Aðgangsorð"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Velja lásgerð"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Valkostir skjálæsingar"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Valkostir skjálæsinga"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Færðu inn mynstrið þitt"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Staðfesta"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Teikna aftur"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Setja upp skjálás"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Veldu þér PIN-númer"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Veldu þér mynstur"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Veldu þér aðgangsorð"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Veldu aðgangsorð"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Núverandi skjálás"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Settu upp mynstur til að gæta fyllsta öryggis"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Hreinsa"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Kerfisstjórinn þinn hefur lokað á algeng aðgangsorð. Prófaðu annað aðgangsorð."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Hækkandi, lækkandi eða endurtekin röð tölustafa er óheimil."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Valkostir skjálæsingar"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Fyrir <xliff:g id="NUM_DAYS">%3$s</xliff:g> dögum"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Bæta við traustu tæki"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Traust tæki"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> tæki</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> tæki</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> mun opna þennan bíl þegar það er tengt. Ef einhver kemst yfir <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> kann viðkomandi að geta fengið aðgang að þessu tæki"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Staðfesta"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Fjarlægja traust tæki"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Lokið"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Notaðu fylgiforritið til að setja upp traust tæki. Þegar það hefur verið sett upp geturðu opnað notandaprófílinn þinn þegar bíllinn ber kennsl á símann þinn"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Sæktu fylgiforritið í símann þinn"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Veldu <xliff:g id="CAR_NAME">%1$s</xliff:g> í símanum til að para tækin"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock getur ekki greint öryggiseiginleika þessa tækis. Til að tryggja öryggi bílsins þíns getur traust tæki aðeins haldið bílnum ólæstum þegar þú hefur þegar tekið hann úr lás. Trausta tækið þitt getur haldið bílnum ólæstum þegar það er nálægt, jafnvel þótt einhver annar haldi á því."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Bæta <xliff:g id="DEVICE_NAME">%1$s</xliff:g> við sem traustu tæki"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> bætt við sem traustu tæki"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Skráning <xliff:g id="DEVICE_NAME">%1$s</xliff:g> mistókst"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ef þú bætir við traustu tæki verðurðu að stilla auðkenningarmáta. Ef þú ert ekki með traust tæki við höndina verður auðkenningar krafist til að fá aðgang að prófílnum þínum."</string>
     <string name="forget" msgid="3971143908183848527">"Gleyma"</string>
+    <string name="connect" msgid="5861699594602380150">"Tengja"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Aftengja"</string>
     <string name="delete_button" msgid="5840500432614610850">"Eyða"</string>
     <string name="remove_button" msgid="6664656962868194178">"Fjarlægja"</string>
     <string name="cancel" msgid="750286395700355455">"Hætta við"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Hætta í kynningarútgáfu"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Þetta eyðir kynningarreikningnum og núllstillir kerfið. Öll notandagögn glatast."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Hætta í kynningarútgáfu"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"ljúka við uppsetningu"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ekki núna"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"HUNSA"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Þessi eiginleiki er ekki í boði á meðan þú ekur."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Ekki er hægt að bæta við notanda meðan á akstri stendur."</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index a6f1e66..7105eaa 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"attenuazione schermo, touchscreen, batteria"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"attenuazione schermo, notte, tonalità"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modalità notturna"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Rete e Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Rete mobile"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dati mobili"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accedi ai dati tramite la rete mobile"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Disattivare i dati mobili?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Utilizzo dei dati"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Limite dati e avviso"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciclo di utilizzo dei dati delle app"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Imposta avviso sui dati"</string>
+    <string name="data_warning" msgid="116776633806885370">"Avviso sui dati"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Imposta limite dati"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limite dati"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitazione utilizzo dei dati"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"L\'unità principale del tuo veicolo disattiverà i dati mobili una volta raggiunto il limite impostato.\n\nPoiché l\'utilizzo dei dati viene misurato dall\'unità principale e il tuo operatore potrebbe tener conto dell\'utilizzo in modo diverso, è consigliabile impostare un limite conservativo."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configura e gestisci punti di accesso wireless"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Attivazione Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Disattivazione Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Caricamento dell\'elenco di reti Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi disattivato"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Eliminazione delle rete non riuscita"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Conessione alla rete non riuscita"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Aggiungi rete"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi disattivato"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Collega"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostra password"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nome rete"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Inserisci l\'SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sicurezza"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Intensità segnale"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Intensità segnale"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Stato"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Velocità di collegamento"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequenza"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Indirizzo IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Mostra password"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Inserisci il nome della rete"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Inserisci la password"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Debole"</item>
-    <item msgid="2032262610626057081">"Medio"</item>
-    <item msgid="3859756017461098953">"Buono"</item>
-    <item msgid="1521103743353335724">"Ottimo"</item>
+    <item msgid="7683058295076342057">"Debole"</item>
+    <item msgid="1639222824821660744">"Medio"</item>
+    <item msgid="1838705897358163300">"Buono"</item>
+    <item msgid="6067166649320533751">"Ottimo"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Attiva Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth disattivato"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Dettagli rete"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Indirizzo MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Indirizzo IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Indirizzi IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferenze Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Attiva Wi‑Fi automaticamente"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"La connessione Wi-Fi si riattiverà vicino a reti salvate di alta qualità, ad esempio la rete di casa"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Non disponibile perché geolocalizzazione non attiva. "<annotation id="link">"Attiva"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vuoi attivare la ricerca di reti Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Attiva"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Ricerca di reti Wi-Fi attiva"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Passa automaticamente ai dati mobili"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Usa dati mobili quando la rete Wi-Fi non ha accesso a Internet. Potrebbero essere applicati costi per l\'utilizzo dei dati."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Ulteriori informazioni"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Gestisci le connessioni, imposta il nome e la rilevabilità del dispositivo"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Auricolare"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefono"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imaging"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Cuffie"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periferica di immissione"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Dispositivi accoppiati"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dispositivi disponibili"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nessun dispositivo accoppiato"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nessun dispositivo disponibile"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Dispositivo accoppiato"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nome"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Utilizza per"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Modifica nome dispositivo Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Dispositivo senza nome"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositivi accoppiati"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Accoppia nuovo dispositivo"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Il Bluetooth verrà attivato per consentire l\'accoppiamento"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Scollegare il dispositivo?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Il veicolo verrà scollegato dal dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Indirizzo Bluetooth del veicolo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Indirizzo Bluetooth del dispositivo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nome del veicolo"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Rinomina questo veicolo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Rinomina dispositivo"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Rinomina"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dispositivi disponibili"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profili"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Richiesta accoppiamento Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Accoppia e connetti"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Codice di accoppiamento Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Il PIN contiene lettere o simboli"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Digita il codice di accoppiamento e premi INVIO"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Di solito 0000 o 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Richiesta accoppiamento"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tocca per l\'accoppiamento con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Lingue"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Lingue e immissione"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastiera"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Gestisci tastiere"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Output sintesi vocale"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motore preferito"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motore attuale"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Velocità voce"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tono"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Reimposta"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Audio"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volume suoneria"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volume per la navigazione"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Contenuti multimediali"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Imposta il volume di musica e video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Sveglia"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Suoneria telefono"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Suono di notifica predefinito"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Suono sveglia predefinito"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"App e notifiche"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Mostra tutte le app"</string>
+    <string name="default_applications" msgid="1558183275638697087">"App predefinite"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informazioni sull\'app"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Forza interruzione"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vuoi forzare l\'interruzione?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Se forzi l\'interruzione di un\'app, questa potrebbe funzionare in modo anomalo."</string>
     <string name="disable_text" msgid="4358165448648990820">"Disattiva"</string>
     <string name="enable_text" msgid="1794971777861881238">"Attiva"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Disinstalla"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Se disattivi questa app, Android e altre app potrebbero non funzionare più come previsto."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Disattiva app"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Autorizzazioni"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versione: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nessuna autorizzazione concessa"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nessuna autorizzazione richiesta"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Utilizzo dei dati"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Utilizzo dati dell\'app"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Forza interruzione"</string>
     <string name="computing_size" msgid="5791407621793083965">"Elaborazione…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorizzazioni aggiuntive</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> autorizzazione aggiuntiva</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistenza e input vocale"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"App di assistenza"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Utilizza testo sullo schermo"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Consenti all\'app di assistenza di accedere ai contenuti dello schermo come il testo"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Utilizza screenshot"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Consenti all\'app di assistenza di accedere a un\'immagine dello schermo"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Compilazione automatica"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Nessuna"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Selezionata"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"L\'assistente potrà leggere informazioni sulle app utilizzate dal sistema, incluse quelle visibili su schermo o accessibili all\'interno delle app."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Verifica che questa app sia attendibile&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=La Compilazione Automatica di Google&gt;%1$s&lt;/xliff:g&gt; si basa sui contenuti visualizzati sullo schermo per stabilire quali dati è possibile compilare automaticamente."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Aggiungi servizio"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Luogo"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Richieste di posizione recenti"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nessuna richiesta di posizione recente"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorizzazioni a livello di app"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Ricerca"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Servizi di geolocalizzazione"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Scansione di reti Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Consenti ad app e servizi di cercare reti Wi-Fi in qualsiasi momento, anche quando il Wi-Fi non è attivo. Questa funzione è utile, ad esempio, per migliorare funzioni e servizi basati sulla posizione."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Scansione di dispositivi Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Consenti ad app e servizi di cercare dispositivi nelle vicinanze in qualsiasi momento, anche quando il Bluetooth non è attivo. Questa funzione è utile, ad esempio, per migliorare funzioni e servizi basati sulla posizione."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Aggiornamenti di sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Aggiornamenti di sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versione Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Livello patch di sicurezza Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modello"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versione banda di base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versione kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Numero build"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Indirizzo Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Non disponibile"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Stato"</string>
     <string name="device_status" msgid="267298179806290920">"Stato"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licenza"</string>
     <string name="terms_title" msgid="5201471373602628765">"Termini e condizioni"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licenza di sistema per WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licenze di sistema per WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Sfondi"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Fornitori di immagini satellitari:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licenze di terze parti"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Errore di caricamento delle licenze."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Caricamento…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Ti mancano <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> passaggi per diventare sviluppatore.</item>
+      <item quantity="one">Ti manca <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> passaggio per diventare sviluppatore.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Ora sei sviluppatore."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Non è necessario, sei già sviluppatore."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opzioni sviluppatore"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opzioni di reimpostazione"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Reimpostazione di rete, app o dispositivo"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Reimposta rete"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"L\'operazione reimposta tutte le impostazioni di rete, tra cui:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Dati mobili"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Resetta tutte le eSIM del veicolo"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Il tuo piano di servizio non verrà annullato."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Impossibile reimpostare le eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Seleziona rete"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Reimposta impostazioni"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Reimpostare?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Reimpostare tutte le impostazioni di rete? Questa azione è irreversibile."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Reimposta impostazioni"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Le impostazioni di rete sono state reimpostate"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Reimposta preferenze app"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Verranno reimpostate tutte le preferenze relative a:\n\n"<li>"App disattivate"</li>\n<li>"Notifiche di app disattivate"</li>\n<li>"Applicazioni predefinite per azioni"</li>\n<li>"Limitazioni di dati in background per app"</li>\n<li>"Eventuali limitazioni di autorizzazione"</li>\n\n"Non perderai i dati delle app."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Reimposta app"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Le preferenze dell\'app sono state reimpostate"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Cancella tutti i dati"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Tutti i dati verranno cancellati dall\'unità principale del veicolo, inclusi:\n\n"<li>"Il tuo Account Google"</li>\n<li>"Le impostazioni e i dati di sistema e delle app"</li>\n<li>"Le app scaricate"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Al momento sono collegati i seguenti account:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Sono presenti altri utenti su questo veicolo."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Reimposta veicolo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vuoi reimpostare?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vuoi cancellare tutte le informazioni personali e le app scaricate? Questa azione è irreversibile."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Cancella tutto"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Cancellazione"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Attendi…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data e ora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Imposta data e ora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Imposta data, ora, fuso orario e formati"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Ordina per fuso orario"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Ora"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Aggiungi utente"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Aggiungi account"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Elimina utente"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nuovo utente"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Ospite"</string>
     <string name="user_admin" msgid="1535484812908584809">"Amministratore"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Accesso eseguito da amministratore"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tutte le autorizzazioni di amministratore"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Imposta come amministratore"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"L\'utente potrà eliminare utenti, includere altri amministratori e ripristinare le impostazioni di fabbrica del sistema."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Questa azione è irreversibile."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Sì, imposta come amministratore"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Creazione di nuovi utenti"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Fare telefonate"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaggi tramite dati mobili auto"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Installazione di nuove app"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Disinstallazione di app"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Aggiungi utente"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nuovo utente"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Aggiungere nuovo utente?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Il nuovo utente, una volta aggiunto, dovrà configurare il suo spazio."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualsiasi utente può aggiornare le app per tutti gli altri."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite utenti raggiunto"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Puoi creare massimo <xliff:g id="COUNT">%d</xliff:g> utenti.</item>
+      <item quantity="one">Può essere creato un solo utente.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Creazione nuovo utente non riuscita"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Eliminare questo utente?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Tutti i dati e le app verranno eliminati."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Impossibile eliminare l\'utente."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignora"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Riprova"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Eliminare ultimo utente?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Dopo aver eliminato l\'unico utente rimanente di quest\'auto verrà creato un nuovo amministratore."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Verranno eliminati tutti i dati, le impostazioni e le app associati all\'utente. Dovrai riconfigurare il sistema."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Scegli il nuovo amministratore"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Devi avere almeno un amministratore. Per eliminare questo devi prima sceglierne uno sostitutivo."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Scegli l\'amministratore"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Ospite"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Ospite"</string>
     <string name="user_switch" msgid="6544839750534690781">"Cambia"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Tu (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nome"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Non configurato"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Modifica il nome utente"</string>
     <string name="users_list_title" msgid="770764290290240909">"Utenti"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Autorizzazioni concesse a %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Account"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Utente"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Aggiungi account"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nessun account aggiunto"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Account per <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronizza i dati automaticamente"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Consenti aggiornamento automatico dei dati delle app"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Attivare sincron. automatica?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Tutte le modifiche che apporti ai tuoi account sul Web verranno automaticamente copiate sul dispositivo.\n\nAlcuni account potrebbero inoltre copiare automaticamente sul Web tutte le modifiche che apporti sul telefono. Gli Account Google funzionano in questo modo."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Disattivare sincron. automatica?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"I dati verranno conservati, ma dovrai sincronizzare manualmente ogni account per raccogliere le informazioni recenti. Inoltre non riceverai notifiche quando verranno eseguiti aggiornamenti."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Dati dell\'account"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Aggiungi account"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Aggiungi un account"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Rimuovi account"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Rimuovere l\'account?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"La rimozione di questo account comporta l\'eliminazione di tutti i relativi messaggi, contatti e altri dati dal dispositivo."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Questa modifica non è consentita dall\'amministratore"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Rimuovere questo utente?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Tutte le app e i dati verranno eliminati."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Impossibile rimuovere l\'utente."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Vuoi riprovare?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Ignora"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Riprova"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Aggiungere nuovo utente?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Il nuovo utente, una volta aggiunto, dovrà configurare il suo spazio."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualsiasi utente può aggiornare le app per tutti gli altri."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Impossibile rimuovere l\'account."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronizzazione account"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sincronizzazione attiva per <xliff:g id="ID_1">%1$d</xliff:g> elementi su <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronizzazione attivata per tutti gli elementi"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronizzazione disattivata per tutti gli elementi"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sincronizzaz. non attiva"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Errore sincronizzazione"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Ultima sincronizzazione: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sincronizzazione…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tocca per sincronizzare adesso<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronizza ora"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Annulla sincronizzazione"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"La sincronizzazione presenta dei problemi. Riprenderà a breve."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sicurezza"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Blocco schermo"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nessuno"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Password"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Scegli tipo di blocco"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opzioni di blocco schermo"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opzioni di blocco"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Inserisci la sequenza"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Conferma"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Ricrea"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Imposta un blocco schermo"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Scegli il PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Scegli la tua sequenza"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Scegli la password"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Scegli la tua password"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Blocco schermo attuale"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Per sicurezza, imposta una sequenza"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Cancella"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Le password comuni sono state bloccate dall\'amministratore IT. Prova a usare un\'altra password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Non sono consentite sequenze di cifre in ordine crescente o decrescente oppure ripetute."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opzioni di blocco schermo"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> giorni fa"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Aggiungi dispos. attendibile"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Dispos. attendibili"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivi</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Il dispositivo <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> consente di sbloccare l\'auto quando è connesso. Se qualcuno prende il tuo dispositivo <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, potrebbe riuscire a eseguire l\'accesso."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Conferma"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Rimuovi dispositivo attendibile"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Fine"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Utilizza l\'app companion per configurare un dispositivo attendibile. Terminata la configurazione, potrai sbloccare il tuo profilo utente quando il veicolo rileva il telefono"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Scarica l\'app companion sul tuo telefono"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Seleziona <xliff:g id="CAR_NAME">%1$s</xliff:g> sul tuo telefono per accoppiare i dispositivi"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock non può rilevare le funzionalità di sicurezza di questo dispositivo. Per contribuire alla protezione del veicolo, il dispositivo attendibile potrà tenere sbloccato il veicolo solo se prima lo sblocchi tu. Il tuo dispositivo attendibile può tenere sbloccato il veicolo quando si trova nelle vicinanze, anche se viene utilizzato da qualcun altro."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Aggiungi <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ai dispositivi attendibili"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Il dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> è stato aggiunto correttamente come dispositivo attendibile"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Registrazione del dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> non riuscita"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"L\'aggiunta di un dispositivo attendibile comporta necessariamente la successiva impostazione di un metodo di autenticazione. Se non hai con te il dispositivo attendibile, l\'autenticazione dovrà necessariamente accedere al tuo profilo."</string>
     <string name="forget" msgid="3971143908183848527">"Elimina"</string>
+    <string name="connect" msgid="5861699594602380150">"Collega"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Scollega"</string>
     <string name="delete_button" msgid="5840500432614610850">"Elimina"</string>
     <string name="remove_button" msgid="6664656962868194178">"Rimuovi"</string>
     <string name="cancel" msgid="750286395700355455">"Annulla"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Esci dalla modalità demo"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"L\'account dimostrativo verrà eliminato e verranno ripristinati i dati di fabbrica del sistema. Tutti i dati utente andranno persi."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Chiudi demo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"termina configurazione"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"non ora"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORA"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funzione non disponibile durante la guida."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Impossibile aggiungere l\'utente durante la guida."</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index a4a8aa5..eb83a1f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"עמעום מסך, מסך מגע, סוללה"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"עמעום מסך, לילה, גוון"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"מצב לילה"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"רשת ואינטרנט"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"רשת סלולרית"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"חבילת גלישה"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"שימוש בחבילת הגלישה דרך הרשת הסלולרית"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"לכבות את חבילת הגלישה?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"שימוש בחבילת הגלישה"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"אזהרות והגבלות של נתונים"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"מחזור שימוש בחבילת הגלישה באפליקציות"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"מתי תופיע אזהרת שימוש בנתונים"</string>
+    <string name="data_warning" msgid="116776633806885370">"אזהרה לגבי שימוש בנתונים"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"הגדרת מגבלת נתונים"</string>
+    <string name="data_limit" msgid="227338836292511425">"מגבלת נתונים"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"הגבלת שימוש בחבילת הגלישה"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"כשיחידת הראש ברכב תגיע למגבלה שהגדרת, היא תשבית את חבילת הגלישה.\n\nמכיוון שעשויים להיות הבדלים בין השימוש בחבילת הגלישה שנמדד על ידי יחידת הראש לבין השימוש שנמדד על ידי הספק, מומלץ להגדיר מגבלה סבירה."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"הגדרה וניהול של נקודות גישה אלחוטיות"</string>
     <string name="wifi_starting" msgid="473253087503153167">"מתבצעת הפעלת Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"מתבצע כיבוי של Wi-Fi..."</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"רשימה של רשתות Wi‑Fi בטעינה"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi מושבת"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"נכשל הניסיון לשכוח את הרשת"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"נכשל הניסיון להתחבר לרשת"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"הוספת רשת"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi מושבת"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"התחברות"</string>
     <string name="wifi_password" msgid="5565632142720292397">"סיסמה"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"הצגת סיסמה"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"שם הרשת"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"הזנת ה-SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"אבטחה"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"עוצמת אות"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"עוצמת אות"</string>
     <string name="wifi_status" msgid="5688013206066543952">"סטטוס"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"מהירות קישור"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"תדר"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"כתובת IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"הצגת סיסמה"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"יש להזין שם רשת"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"יש להזין סיסמה"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"חלש"</item>
-    <item msgid="2032262610626057081">"סביר"</item>
-    <item msgid="3859756017461098953">"טוב"</item>
-    <item msgid="1521103743353335724">"מצוין"</item>
+    <item msgid="7683058295076342057">"חלש"</item>
+    <item msgid="1639222824821660744">"סביר"</item>
+    <item msgid="1838705897358163300">"טוב"</item>
+    <item msgid="6067166649320533751">"מצוין"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"הפעלת Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth מושבת"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"‎2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"‎5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"פרטי הרשת"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"כתובת MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"כתובת IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"מסכה של רשת משנה"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"כתובות IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"שער"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"העדפות Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"הפעלת Wi‑Fi באופן אוטומטי"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi יחזור לפעול בסביבת רשתות שמורות באיכות גבוהה, כמו הרשת הביתית"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"התכונה לא זמינה כי הגדרת המיקום כבויה. יש להפעיל "<annotation id="link">"מיקום"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"להפעיל סריקת Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"הפעלה"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"סריקת Wi-Fi מופעלת"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"מעבר אוטומטי לחבילת גלישה"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"יש להשתמש בחבילת הגלישה כשאין גישה לאינטרנט ברשת Wi-Fi. ייתכנו חיובים על שימוש בחבילת הגלישה."</string>
+    <string name="learn_more" msgid="8214605928933358604">"מידע נוסף"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"ניהול חיבורים, הגדרת שם מכשיר ויכולת גילוי"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"מחשב"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"אוזניות"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"טלפון"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"הדמיה"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"אוזנייה"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ציוד קלט היקפי"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"מכשירים מותאמים"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"מכשירים זמינים"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"אין מכשירים מותאמים"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"אין מכשירים זמינים"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"מכשיר מותאם"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"שם"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"לשימוש עבור"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"שינוי השם של מכשיר Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"מכשיר ללא שם"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"מכשירים מותאמים"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"התאמה של מכשיר חדש"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth יופעל לצורך התאמה"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"לנתק את המכשיר?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"יתבצע ניתוק של הרכב מ-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"כתובת ה-Bluetooth של הרכב: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"כתובת המכשיר לחיבור דרך Bluetooth: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"שם הרכב"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"שינוי שם הרכב הזה"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"שינוי שם המכשיר"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"שינוי שם"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"מכשירים זמינים"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"פרופילים"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"בקשה להתאמת Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"התאמה וחיבור"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"קוד התאמת Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"קוד הגישה מכיל אותיות או סמלים"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"יש להקליד את קוד ההתאמה ולאחר מכן ללחוץ על Return או Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"בדרך כלל 0000 או 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"בקשת התאמה"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"יש להקיש כדי ליצור התאמה עם <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"שפות"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"שפות וקלט"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"מקלדת"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"ניהול מקלדות"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"פלט של המרת טקסט לדיבור"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"מנוע מועדף"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"המנוע הנוכחי"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"קצב דיבור"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"גובה צליל"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"איפוס"</string>
     <string name="sound_settings" msgid="3072423952331872246">"צליל"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"עוצמת הצלצול"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"עוצמת קול של ניווט"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"מדיה"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"הגדרת עוצמת קול למוזיקה ולסרטונים"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"התראה"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"רינגטון לשיחת טלפון"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"צליל ברירת מחדל להתראות"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"צליל ברירת מחדל לשעון מעורר"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"אפליקציות והתראות"</string>
+    <string name="all_applications" msgid="7798210477486822168">"הצגת כל האפליקציות"</string>
+    <string name="default_applications" msgid="1558183275638697087">"אפליקציות ברירת מחדל"</string>
     <string name="applications_settings" msgid="794261395191035632">"פרטי אפליקציה"</string>
+    <string name="force_stop" msgid="2153183697014720520">"סגירה ידנית"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"לסגור ידנית?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"אם סוגרים אפליקציה ידנית, ייתכן שהיא לא תפעל כהלכה."</string>
     <string name="disable_text" msgid="4358165448648990820">"השבת"</string>
     <string name="enable_text" msgid="1794971777861881238">"הפעלה"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"הסרת התקנה"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"אם האפליקציה הזו תושבת, ייתכן ש-Android ואפליקציות אחרות לא יפעלו כצפוי."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"השבתת האפליקציה"</string>
     <string name="permissions_label" msgid="2701446753515612685">"הרשאות"</string>
     <string name="application_version_label" msgid="8556889839783311649">"גרסה: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"לא הוענקו הרשאות"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"לא התבקשו הרשאות"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"שימוש בחבילת הגלישה"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"שימוש בחבילת הגלישה באפל\'"</string>
-    <string name="force_stop" msgid="2153183697014720520">"סגירה ידנית"</string>
     <string name="computing_size" msgid="5791407621793083965">"מתבצע חישוב…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> הרשאות נוספות</item>
@@ -117,15 +168,39 @@
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> הרשאות נוספות</item>
       <item quantity="one">הרשאה אחת (<xliff:g id="COUNT_0">%d</xliff:g>) נוספת</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"קלט אסיסטנט וקלט קולי"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"אפליקציית עזרה"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"שימוש בטקסט המופיע במסך"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"אפליקציית העזרה תוכל לגשת לתוכן במסך, למשל לטקסט"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"שימוש בצילום מסך"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"אפליקציית העזרה תוכל לגשת לצילום של המסך"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"שירות מילוי אוטומטי"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ללא"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"נבחרה"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"ה-Assistant יוכל לקרוא מידע על אפליקציות שבהן נעשה שימוש במערכת שלך, כולל מידע המופיע במסך או שניתן לגשת אליו באפליקציות."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;יש לוודא שהאפליקציה מהימנה&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=המילוי האוטומטי של Google&gt;%1$s&lt;/xliff:g&gt; משתמש בתוכן המסך כדי לקבוע אילו שדות אפשר למלא באופן אוטומטי."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"הוספת שירות"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"מיקום"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"בקשות של מיקומים אחרונים"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"אין בקשות של מיקומים אחרונים"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"הרשאות ברמת אפליקציה"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"סריקה"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"שירותי מיקום"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"סריקת Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"אפליקציות ושירותים יוכלו לסרוק רשתות Wi‑Fi בכל עת, גם כאשר ה-Wi‑Fi כבוי. ניתן להשתמש בכך, למשל, כדי לשפר תכונות ושירותים מבוססי מיקום."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"סריקת Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"אפליקציות ושירותים יוכלו לסרוק מכשירים בקרבת מקום בכל עת, גם כאשר ה-Bluetooth כבוי. ניתן להשתמש בכך, למשל, כדי לשפר תכונות ושירותים מבוססי מיקום."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"מערכת"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"עדכוני מערכת"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"עדכוני מערכת"</string>
     <string name="firmware_version" msgid="8491753744549309333">"גרסת Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"רמת תיקון האבטחה ב-Android"</string>
     <string name="model_info" msgid="4966408071657934452">"דגם"</string>
     <string name="baseband_version" msgid="2370088062235041897">"גרסת פס בסיס"</string>
     <string name="kernel_version" msgid="7327212934187011508">"גרסת ליבה"</string>
     <string name="build_number" msgid="3997326631001009102">"מספר Build"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"כתובת Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"לא זמין"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"סטטוס"</string>
     <string name="device_status" msgid="267298179806290920">"סטטוס"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"זכויות יוצרים"</string>
     <string name="license_title" msgid="936705938435249965">"רישיון"</string>
     <string name="terms_title" msgid="5201471373602628765">"תנאים והגבלות"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"רישיון WebView במערכת"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"רישיונות WebView של המערכת"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"טפטים"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ספקים של צילומי לוויין:\n‎©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"רישיונות צד שלישי"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"יש בעיה בטעינת הרישיון."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"בטעינה…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="two">בעוד <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> צעדים התואר שלך יהיה מפתח/ת.</item>
+      <item quantity="many">בעוד <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> צעדים התואר שלך יהיה מפתח/ת.</item>
+      <item quantity="other">בעוד <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> צעדים התואר שלך יהיה מפתח/ת.</item>
+      <item quantity="one">בעוד צעד אחד (<xliff:g id="STEP_COUNT_0">%1$d</xliff:g>) התואר שלך יהיה מפתח/ת.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"את/ה מפתח/ת עכשיו!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"אין צורך, את/ה כבר מפתח/ת."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"אפשרויות למפתחים"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"אפשרויות איפוס"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"איפוס של הרשת, האפליקציות או של המכשיר"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"איפוס הרשת"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"פעולה זו תאפס את כל הגדרות הרשת, כולל:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"חבילת גלישה"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"מחיקת כל כרטיסי ה-eSIM של הרכב"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"הפעולה לא תבטל את תוכנית השירות שלך."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"לא ניתן לאתחל את כרטיסי ה-eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"בחירת רשת"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"איפוס הגדרות"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"לאפס?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"האם לאפס את כל הגדרות הרשת? לא ניתן לבטל את הפעולה!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"איפוס הגדרות"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"הגדרות הרשת אופסו"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"איפוס העדפות האפליקציה"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"הפעולה תאפס את כל ההעדפות עבור:\n\n"<li>"אפליקציות מושבתות"</li>\n<li>"השבתת התראות של אפליקציות"</li>\n<li>"אפליקציות שהן ברירת המחדל לביצוע פעולות"</li>\n<li>"הגבלות של נתוני רקע לאפליקציות"</li>\n<li>"הגבלת הרשאות"</li>\n\n"נתוני האפליקציות לא יאבדו."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"איפוס אפליקציות"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"העדפות האפליקציה אופסו"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"מחיקת כל הנתונים (איפוס להגדרות היצרן)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"פעולה זו תמחק את כל הנתונים מיחידת הראש של הרכב שלך, כולל:\n\n"<li>"חשבון Google שלך"</li>\n<li>"נתוני מערכת ואפליקציות והגדרות"</li>\n<li>"אפליקציות שהורדו"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"יש לך חיבור פעיל כרגע אל החשבונות הבאים:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"קיימים משתמשים נוספים ברכב זה."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"איפוס הרכב"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"לאפס?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"האם למחוק את כל המידע האישי שלך והאפליקציות שהורדת? לא ניתן לבטל את הפעולה!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"מחיקת הכול"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"המחיקה מתבצעת"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"יש להמתין…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"תאריך ושעה"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"הגדרת תאריך ושעה"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"הגדרת תאריך, שעה, אזור זמן ופורמטים"</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"מיון לפי אזור זמן"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"תאריך"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"שעה"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"הוספת משתמש"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"הוספת חשבון"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"מחיקת משתמש"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"משתמש חדש"</string>
-    <string name="user_guest" msgid="3465399481257448601">"אורח"</string>
     <string name="user_admin" msgid="1535484812908584809">"מנהל מערכת"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"כניסה בתור מנהל מערכת"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"כל ההרשאות של מנהל מערכת"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"הגדרה כמנהל מערכת"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"למשתמש תהיה היכולת למחוק משתמשים, כולל מנהלי מערכת אחרים, ולאפס את המערכת להגדרות היצרן."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"פעולה זו אינה הפיכה."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"כן, הגדרה כמנהל מערכת"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"יצירת משתמשים חדשים"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ביצוע שיחות טלפון"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"העברת הודעות דרך חבילת הגלישה ברכב"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"התקנת אפליקציות חדשות"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"הסרת התקנה של אפליקציות"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"הוספת משתמש"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"משתמש חדש"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"האם להוסיף משתמש חדש?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"בעת הוספת משתמש חדש, על משתמש זה להגדיר את המרחב שלו."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"כל משתמש יכול לעדכן אפליקציות לכל שאר המשתמשים."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"הגעת למגבלת המשתמשים שניתן להוסיף"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="two">ניתן ליצור עד <xliff:g id="COUNT">%d</xliff:g> משתמשים.</item>
+      <item quantity="many">ניתן ליצור עד <xliff:g id="COUNT">%d</xliff:g> משתמשים.</item>
+      <item quantity="other">ניתן ליצור עד <xliff:g id="COUNT">%d</xliff:g> משתמשים.</item>
+      <item quantity="one">ניתן ליצור רק משתמש אחד.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"ניסיון היצירה של משתמש חדש נכשל"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"למחוק את המשתמש הזה?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"כל האפליקציות והנתונים יימחקו."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"לא ניתן היה למחוק את המשתמש."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ביטול"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ניסיון חוזר"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"למחוק את המשתמש האחרון?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"לאחר מחיקת המשתמש היחיד שנשאר למכונית הזאת, ייווצר מנהל מערכת חדש."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"כל הנתונים, ההגדרות והאפליקציות ששויכו למשתמש הזה, יימחקו. יהיה עליך להגדיר שוב את המערכת."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"בחירת מנהל מערכת חדש"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"יש צורך במנהל מערכת אחד לפחות: לפני שמוחקים את מנהל המערכת הזה, צריך לבחור מחליף."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"לבחירת מנהל מערכת"</string>
+    <string name="user_guest" msgid="3465399481257448601">"אורח"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"אורח"</string>
     <string name="user_switch" msgid="6544839750534690781">"החלפה"</string>
     <string name="current_user_name" msgid="3813671533249316823">"את/ה (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"שם"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"לא מוגדר"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"עריכת שם המשתמש"</string>
     <string name="users_list_title" msgid="770764290290240909">"משתמשים"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"הרשאות הוענקו למשתמש %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"חשבונות"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"משתמש"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"הוספת חשבון"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"לא נוספו חשבונות"</string>
     <string name="account_list_title" msgid="7631588514613843065">"חשבונות עבור <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"סנכרון נתונים באופן אוטומטי"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"אפליקציות יוכלו לרענן נתונים באופן אוטומטי"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"להפעיל סנכרון אוטומטי של נתונים?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"כל שינוי שיבוצע בחשבונות שלך באינטרנט יועתק באופן אוטומטי למכשיר.\n\nייתכן גם שחלק מהשינויים שיבוצעו בטלפון יועתקו באופן אוטומטי לאינטרנט. כך פועל חשבון Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"להשבית סנכרון אוטומטי של נתונים?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"פעולה זו תחסוך בשימוש בנתונים, אבל יהיה צורך לסנכרן כל חשבון באופן ידני כדי לאסוף מידע עדכני. בזמן עדכונים לא יתקבלו התראות."</string>
     <string name="account_details_title" msgid="7529571432258448573">"פרטי חשבון"</string>
     <string name="add_account_title" msgid="5988746086885210040">"הוספת חשבון"</string>
     <string name="add_an_account" msgid="1072285034300995091">"הוספת חשבון"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"הסרת חשבון"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"להסיר את החשבון?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"הסרת חשבון זה תגרום למחיקת כל ההודעות, אנשי הקשר ונתונים נוספים מהמכשיר!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"מנהל המכשיר אינו מתיר שינוי זה"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"האם להסיר משתמש זה?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"כל האפליקציות והנתונים יימחקו."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"הניסיון להסרת המשתמש נכשל."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"לנסות שוב?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"סגירה"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ניסיון חוזר"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"האם להוסיף משתמש חדש?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"בעת הוספת משתמש חדש, על משתמש זה להגדיר את המרחב שלו."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"כל משתמש יכול לעדכן אפליקציות לכל שאר המשתמשים."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"לא ניתן היה להסיר את החשבון."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"סנכרון חשבון"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"הסנכרון פועל ל-<xliff:g id="ID_1">%1$d</xliff:g> מתוך <xliff:g id="ID_2">%2$d</xliff:g> פריטים"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"הסנכרון פועל לכל הפריטים"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"הסנכרון כבוי לכל הפריטים"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"הסנכרון כבוי"</string>
+    <string name="sync_error" msgid="6698021343089247914">"שגיאת סנכרון"</string>
+    <string name="last_synced" msgid="4745124489150101529">"סונכרן לאחרונה ב-<xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"הסנכרון מתבצע עכשיו…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"יש להקיש כדי לסנכרן כעת<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"לסנכרון עכשיו"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ביטול הסנכרון"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"יש כרגע בעיות בסינכרון. הוא יתחדש תוך זמן קצר."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"אבטחה"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"נעילת מסך"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ללא"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"קוד גישה"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"סיסמה"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"בחירת סוג נעילה"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"אפשרויות נעילת מסך"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"אפשרויות נעילה"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"הזנת קו ביטול נעילה"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"אישור"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"ציור מחדש"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"הגדרת מסך נעילה"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"בחירת קוד גישה"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"הגדרת הקו לביטול נעילה"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"בחירת סיסמה"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"בחירת סיסמה"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"נעילת המסך הנוכחית"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"מטעמי אבטחה, יש להגדיר קו ביטול נעילה"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"ניקוי"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"סיסמאות נפוצות חסומות בידי מנהל ה-IT. יש לנסות סיסמה אחרת."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"אין להגדיר רצף ספרות עולה, יורד או חוזר."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"אפשרויות נעילת מסך"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : לפני <xliff:g id="NUM_DAYS">%3$s</xliff:g> ימים"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"הוספת מכשיר מהימן"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"מכשירים מהימנים"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> מכשירים</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> מכשירים</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> מכשירים</item>
+      <item quantity="one">מכשיר אחד (<xliff:g id="COUNT_0">%d</xliff:g>)</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"ה-<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> שלך יבטל את נעילה המכונית הזו כשהוא מחובר. אם מישהו ייקח את ה-<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, הוא יוכל לגשת אל המכשיר הזה"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"אישור"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"הסרת מכשיר מהימן"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"סיום"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"יש להשתמש באפליקציה הנלווית כדי להגדיר מכשיר מהימן. לאחר ההגדרה, ניתן יהיה לבטל את הנעילה של פרופיל המשתמש כשהרכב מזהה את הטלפון"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. יש להוריד את האפליקציה הנלווית לטלפון שלך"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. יש לבחור את <xliff:g id="CAR_NAME">%1$s</xliff:g> בטלפון כדי להתאים את המכשירים"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock לא מצליח לזהות את תכונות האבטחה של המכשיר הזה. כדי לעזור בהגנה על המכונית, מכשיר מהימן יוכל למנוע את נעילת המכונית רק לאחר שהנעילה תבוטל על ידך. המכשיר המהימן שלך יכול למנוע את נעילת המכונית כשהוא בקרבת מקום, גם אם הוא בידיו של מישהו אחר."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"הוספה של <xliff:g id="DEVICE_NAME">%1$s</xliff:g> כמכשיר מהימן"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> נוסף בהצלחה כמכשיר מהימן"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"ההרשמה של <xliff:g id="DEVICE_NAME">%1$s</xliff:g> נכשלה"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"כדי להוסיף מכשיר מהימן, צריך להגדיר שיטת אימות בשלב הבא. אם המכשיר המהימן לא נמצא ברשותך, יידרש אימות כדי לקבל גישה לפרופיל שלך."</string>
     <string name="forget" msgid="3971143908183848527">"מחיקה"</string>
+    <string name="connect" msgid="5861699594602380150">"חיבור"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ניתוק"</string>
     <string name="delete_button" msgid="5840500432614610850">"מחיקה"</string>
     <string name="remove_button" msgid="6664656962868194178">"הסרה"</string>
     <string name="cancel" msgid="750286395700355455">"ביטול"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"יציאה ממצב הדגמה"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"פעולה זו תמחק את חשבון ההדגמה ותבצע למערכת איפוס לנתוני היצרן. כל נתוני המשתמש יאבדו."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"יציאה ממצב הדגמה"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"סיום ההגדרה"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"לא עכשיו"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"סגירה"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"התכונה לא זמינה במהלך הנהיגה."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"לא ניתן להוסיף משתמש בזמן הנהיגה."</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 533ce42..09e1b3f 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"画面を暗くする、タッチスクリーン、電池"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"画面を暗くする、夜間、ティント"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"夜間モード"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"ネットワークとインターネット"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"モバイル ネットワーク"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"モバイルデータ"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"モバイル ネットワーク経由でデータにアクセス"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"モバイルデータを OFF にしますか？"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"データ使用"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"データの警告と上限"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"アプリのデータ使用量のサイクル"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"データ使用の警告を設定"</string>
+    <string name="data_warning" msgid="116776633806885370">"データ使用の警告"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"データの上限を設定"</string>
+    <string name="data_limit" msgid="227338836292511425">"データの上限"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"データ使用の上限の設定"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"車載ヘッドユニットで設定した上限に達するとモバイルデータが OFF になります。\n\nデータ使用量はヘッドユニットで測定された値ですが、携帯通信会社での使用量の計算はこれと異なることがあるため、余裕をもって上限を設定することをおすすめします。"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"ワイヤレス アクセス ポイントを設定、管理する"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi を ON にしています…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi を OFF にしています…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi リストを読み込んでいます"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi が無効です"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"ネットワークを削除できませんでした"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ネットワークに接続できませんでした"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ネットワークを追加"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi が無効です"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"接続"</string>
     <string name="wifi_password" msgid="5565632142720292397">"パスワード"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"パスワードを表示する"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ネットワーク名"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID を入力"</string>
     <string name="wifi_security" msgid="158358046038876532">"セキュリティ"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"電波強度"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"電波強度"</string>
     <string name="wifi_status" msgid="5688013206066543952">"ステータス"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"リンク速度"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"周波数"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP アドレス"</string>
+    <string name="show_password" msgid="2074628020371139240">"パスワードの表示"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"ネットワーク名の入力"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"パスワードの入力"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"弱"</item>
-    <item msgid="2032262610626057081">"中"</item>
-    <item msgid="3859756017461098953">"強"</item>
-    <item msgid="1521103743353335724">"非常に強い"</item>
+    <item msgid="7683058295076342057">"弱"</item>
+    <item msgid="1639222824821660744">"中"</item>
+    <item msgid="1838705897358163300">"強"</item>
+    <item msgid="6067166649320533751">"非常に強い"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth を ON にする"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth が無効"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ネットワークの詳細"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC アドレス"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP アドレス"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"サブネット マスク"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 アドレス"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ゲートウェイ"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi 設定"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi を自動的に ON にする"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"ホーム ネットワークなどの高品質の保存済みネットワークの検出時に Wi‑Fi を ON にする"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259"><annotation id="link">"位置情報"</annotation>"が OFF のため使用できません。ON にしてください。"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi のスキャンを ON にしますか？"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ON にする"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi のスキャンを ON にしました"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"モバイルデータへの自動切り替え"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi でインターネットにアクセスできない場合にモバイルデータを使用します。データ通信料が発生する可能性があります。"</string>
+    <string name="learn_more" msgid="8214605928933358604">"詳細"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"接続を管理し、デバイス名や検出の許可を設定する"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"パソコン"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ヘッドセット"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"スマートフォン"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"画像関連"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"ヘッドフォン"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"入力用周辺機器"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"ペア設定済みのデバイス"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"使用可能なデバイス"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"ペア設定されたデバイスがありません"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"使用可能なデバイスがありません"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"ペア設定済みのデバイス"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"名前"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"使用目的"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth デバイスの名前を変更"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"名前のないデバイス"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"ペア設定済みのデバイス"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"新しいデバイスとペア設定"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"ペア設定できるよう Bluetooth が ON になります"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"デバイスの接続を解除しますか？"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"車と <xliff:g id="DEVICE_NAME">%1$s</xliff:g> との接続を解除します。"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"車の Bluetooth アドレス: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"デバイスの Bluetooth アドレス: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"車の名前"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"この車の名前を変更"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"デバイス名の変更"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"名前を変更"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"使用可能なデバイス"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"プロファイル"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth のペア設定リクエスト"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ペア設定して接続"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth ペア設定コード"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN に英字や記号を含める"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"ペア設定コードを入力してから Return キーまたは Enter キーを押してください"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"通常は 0000 または 1234 です"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"ペア設定リクエスト"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」とペア設定するにはタップしてください。"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"言語"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"言語と入力"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"キーボード"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"キーボードの管理"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"テキスト読み上げの設定"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"優先するエンジン"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"現在のエンジン"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"読み上げ速度"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"音の高さ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"リセット"</string>
     <string name="sound_settings" msgid="3072423952331872246">"音"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"着信音の音量"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"ナビの音量"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"メディア"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"音楽や動画の再生音量を設定"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"アラーム"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"着信音"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"デフォルトの通知音"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"デフォルトのアラーム音"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"アプリと通知"</string>
+    <string name="all_applications" msgid="7798210477486822168">"すべてのアプリを表示"</string>
+    <string name="default_applications" msgid="1558183275638697087">"デフォルトのアプリ"</string>
     <string name="applications_settings" msgid="794261395191035632">"アプリ情報"</string>
+    <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"強制停止しますか？"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"アプリを強制停止すると、アプリが正常に機能しなくなる恐れがあります。"</string>
     <string name="disable_text" msgid="4358165448648990820">"無効にする"</string>
     <string name="enable_text" msgid="1794971777861881238">"有効にする"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"アンインストール"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"このアプリを無効にすると、Android などの他のアプリが正しく動作しなくなる恐れがあります。"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"アプリを無効にする"</string>
     <string name="permissions_label" msgid="2701446753515612685">"権限"</string>
     <string name="application_version_label" msgid="8556889839783311649">"バージョン: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"権限が付与されていません"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"リクエストされた権限はありません"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"データ使用量"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"アプリのデータ使用量"</string>
-    <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
     <string name="computing_size" msgid="5791407621793083965">"計算しています…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 個の追加権限</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 個の追加権限</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"アシストと音声入力"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"アシストアプリ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"画面のテキストを使用"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"画面コンテンツのテキストにアクセスすることをアシストアプリに許可します"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"スクリーンショットを使用"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"画面の画像にアクセスすることをアシストアプリに許可します"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"自動入力サービス"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"なし"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"選択済み"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"アシスタントはシステムで使用中のアプリに関する情報（画面に表示される情報、アプリ内でアクセス可能な情報など）を読み取れるようになります。"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;このアプリが信頼できることを確認してください&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; は画面上の内容に基づいて、自動入力可能な情報を判別します。"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"サービスの追加"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"位置情報"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"最近の位置情報リクエスト"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近の位置情報リクエストはありません"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"アプリレベルの権限"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"スキャン"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"位置情報サービス"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi のスキャン"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"アプリやサービスに対し、Wi‑Fi が OFF の場合でも、常に Wi-Fi ネットワークをスキャンすることを許可します。たとえば、位置情報を使用する機能やサービスの改善に役立ちます。"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth のスキャン"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"アプリやサービスに対し、Bluetooth が OFF の場合でも、常に付近の端末をスキャンすることを許可します。たとえば、位置情報を使用する機能やサービスの改善に役立ちます。"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"システム"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"システム アップデート"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"システム アップデート"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android のバージョン"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android セキュリティ パッチレベル"</string>
     <string name="model_info" msgid="4966408071657934452">"モデル"</string>
     <string name="baseband_version" msgid="2370088062235041897">"ベースバンド バージョン"</string>
     <string name="kernel_version" msgid="7327212934187011508">"カーネル バージョン"</string>
     <string name="build_number" msgid="3997326631001009102">"ビルド番号"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth アドレス"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"該当なし"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"ステータス"</string>
     <string name="device_status" msgid="267298179806290920">"ステータス"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"著作権"</string>
     <string name="license_title" msgid="936705938435249965">"ライセンス"</string>
     <string name="terms_title" msgid="5201471373602628765">"利用規約"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"システムの WebView ライセンス"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"システムの WebView ライセンス"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"壁紙"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"航空写真の提供:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"サードパーティ ライセンス"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"ライセンスの読み込み中に問題が発生しました。"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"読み込んでいます…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">デベロッパー設定が有効になるまであと <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ステップです。</item>
+      <item quantity="one">デベロッパー設定が有効になるまであと <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> ステップです。</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"デベロッパー設定が有効になりました！"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"デベロッパー設定はすでに有効です。"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"開発者向けオプション"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"リセット オプション"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ネットワーク、アプリ、端末のリセット"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"ネットワークをリセット"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"この操作を行うと、以下を含むすべてのネットワーク設定がリセットされます。"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"モバイルデータ"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"車のすべての eSIM を消去"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"この操作でご利用のサービスプランがキャンセルされることはありません。"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM のリセットエラー"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"ネットワークの選択"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"設定をリセット"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"リセットしますか？"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"すべてのネットワーク設定をリセットしますか？この操作は元に戻せません。"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"設定をリセット"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"ネットワーク設定をリセットしました"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"アプリの設定をリセット"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"この操作により、次の設定がすべてリセットされます。\n\n"<li>"無効化されているアプリ"</li>\n<li>"無効化されているアプリの通知"</li>\n<li>"特定の操作で使用するデフォルトのアプリ"</li>\n<li>"アプリのバックグラウンド データの制限"</li>\n<li>"権限のすべての制限"</li>\n\n"アプリのデータが失われることはありません。"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"アプリをリセット"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"アプリの設定をリセットしました"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"全データを消去（出荷時リセット）"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"この操作を行うと、以下のデータを含め、車のヘッドユニットの全データが消去されます。\n\n"<li>"Google アカウント"</li>\n<li>"システムやアプリのデータと設定"</li>\n<li>"ダウンロードしたアプリ"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"以下のアカウントにログインしています。"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"この車には他にもユーザーがいます。"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"車をリセット"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"リセットしますか？"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"個人情報とダウンロードしたアプリをすべて消去しますか？この操作は元に戻せません。"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"すべて消去"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"消去しています"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"お待ちください..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"日付と時刻"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"日時の設定"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"日付、時刻、タイムゾーン、フォーマットを設定する"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"タイムゾーン順"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"日付"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"時刻"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ユーザーを追加"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"アカウントを追加"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"ユーザーの削除"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"新しいユーザー"</string>
-    <string name="user_guest" msgid="3465399481257448601">"ゲスト"</string>
     <string name="user_admin" msgid="1535484812908584809">"管理者"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"管理者としてログインしました"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"すべての管理者権限"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"管理者にする"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"このユーザーは、他の管理者を含むユーザーの削除、システムデータの初期化を行えるようになります。"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"この操作は元に戻せません。"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"はい、管理者にする"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"新しいユーザーの作成"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"電話の発信"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"車のモバイルデータを使用した SMS"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"新しいアプリのインストール"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"アプリのアンインストール"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ユーザーを追加"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"新しいユーザー"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"新しいユーザーを追加しますか？"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"新しいユーザーを追加したら、そのユーザーは自分のスペースをセットアップする必要があります。"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"どのユーザーも他のすべてのユーザーに代わってアプリを更新できます。"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"ユーザー数が上限に達しました"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">最大 <xliff:g id="COUNT">%d</xliff:g> 人のユーザーを作成できます。</item>
+      <item quantity="one">作成できるユーザーは 1 人のみです。</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"新しいユーザーを作成できませんでした"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"このユーザーの削除"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"すべてのアプリとデータが削除されます。"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ユーザーを削除できませんでした。"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"閉じる"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"再試行"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"最後のユーザーの削除"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"この車の最後のユーザーを削除すると、新しい管理者ユーザーが作成されます。"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"このユーザーに関連付けられているすべてのデータ、設定、アプリが削除されます。システムの再設定が必要になります。"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"新しい管理者の選択"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"管理者は少なくとも 1 人必要です。この管理者を削除するには、まず代わりの管理者を選択してください。"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"管理者を選択"</string>
+    <string name="user_guest" msgid="3465399481257448601">"ゲスト"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ゲスト"</string>
     <string name="user_switch" msgid="6544839750534690781">"切り替える"</string>
     <string name="current_user_name" msgid="3813671533249316823">"自分（%1$s）"</string>
     <string name="user_name_label" msgid="3210832645046206845">"名前"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"セットアップしていません"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"ユーザー名の編集"</string>
     <string name="users_list_title" msgid="770764290290240909">"ユーザー"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s さんに権限が付与されました"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"アカウント"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"ユーザー"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"アカウントを追加"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"アカウントが追加されていません"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> のアカウント"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"データの自動同期"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"データの自動更新をアプリに許可します"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"データ自動同期をONにしますか？"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ウェブでアカウントに変更を加えると自動的にデバイスに反映されます。\n\nGoogle アカウントなど、アカウントによっては、スマートフォンで変更を加えた場合も自動的にウェブに反映されます。"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"データ自動同期をOFFにしますか？"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"OFF にすると、データの使用を節約できますが、最新情報を取得するには手動で各アカウントを同期する必要があります。また、更新があったときに通知を受け取れません。"</string>
     <string name="account_details_title" msgid="7529571432258448573">"アカウント情報"</string>
     <string name="add_account_title" msgid="5988746086885210040">"アカウントの追加"</string>
     <string name="add_an_account" msgid="1072285034300995091">"アカウントの追加"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"アカウントを削除"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"アカウントを削除しますか？"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"このアカウントを削除すると、メール、連絡先などのすべてのデータも端末から削除されます。"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"この変更は管理者によって許可されていません"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"ユーザーを削除しますか？"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"すべてのアプリとデータが削除されます。"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"ユーザーを削除できませんでした。"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"再試行しますか？"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"閉じる"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"再試行"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"新しいユーザーを追加しますか？"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"新しいユーザーを追加したら、そのユーザーは自分のスペースをセットアップする必要があります。"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"どのユーザーも他のすべてのユーザーに代わってアプリを更新できます。"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"アカウントを削除できませんでした。"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"アカウントの同期"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> 件中 <xliff:g id="ID_1">%1$d</xliff:g> 件のアイテムで同期が ON"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"すべてのアイテムで同期が ON"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"すべてのアイテムで同期が OFF"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"同期 OFF"</string>
+    <string name="sync_error" msgid="6698021343089247914">"同期エラー"</string>
+    <string name="last_synced" msgid="4745124489150101529">"最終同期日時: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"同期しています…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"タップして今すぐ同期<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"今すぐ同期"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"同期をキャンセル"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"現在同期で問題が発生しています。しばらくお待ちください。"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"セキュリティ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"画面ロック"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"なし"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"パスワード"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"ロックタイプの選択"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"画面ロックの方法"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"設定できるロック"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"パターンの入力"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"確認"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"再入力"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"画面ロックの設定"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN の選択"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"パターンの選択"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"パスワードの選択"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"パスワードの選択"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"現在の画面ロック"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"セキュリティ強化のためにパターンを設定"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"消去"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"一般的なパスワードは IT 管理者によってブロックされています。別のパスワードをお試しください。"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"一連の数字を昇順や降順にしたり、繰り返したりすることはできません。"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"画面ロックの方法"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> 日前"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"信頼できるデバイスを追加"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"信頼できるデバイス"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 台のデバイス</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 台のデバイス</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"接続すると、<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> によりこの車のロックが解除されます。<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> が第三者の手に渡ると、このデバイスを利用されてしまうおそれがあります"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"確認"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"信頼できるデバイスを削除"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"完了"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"コンパニオン アプリを使用して、信頼できるデバイスをセットアップしてください。セットアップすると、車でスマートフォンが検出されたときにユーザー プロフィールのロックを解除できます"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. スマートフォンにコンパニオン アプリをダウンロードします"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. スマートフォンで、デバイスとペア設定する <xliff:g id="CAR_NAME">%1$s</xliff:g> を選択します"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ではこのデバイスのセキュリティ機能を検出できません。車を保護するため、信頼できるデバイスでは、あなたがすでにロック解除した車のロックを解除されたままにする以外のことはできません。第三者がそのデバイスを手に取っている場合でも、近くにある車のロックが解除されたままになることがあります。"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"信頼できるデバイスとして <xliff:g id="DEVICE_NAME">%1$s</xliff:g> を追加"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> を信頼できるデバイスとして追加しました"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> の登録に失敗しました"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"信頼できるデバイスを追加するには、次に認証方式を設定してください。信頼できるデバイスがない場合は、プロフィールにアクセスする際に認証が必要になります。"</string>
     <string name="forget" msgid="3971143908183848527">"削除"</string>
+    <string name="connect" msgid="5861699594602380150">"接続"</string>
+    <string name="disconnect" msgid="6140789953324820336">"接続を解除"</string>
     <string name="delete_button" msgid="5840500432614610850">"削除"</string>
     <string name="remove_button" msgid="6664656962868194178">"削除"</string>
     <string name="cancel" msgid="750286395700355455">"キャンセル"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"デモモードの終了"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"デモアカウントが削除され、システムが出荷時の設定にリセットされます。すべてのユーザーデータは失われます。"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"デモを終了"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"設定を完了"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"後で行う"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"閉じる"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"この機能は運転中は利用できません。"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"運転中はユーザーを追加できません。"</string>
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 83df5ff..41a5aa6 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ეკრანის გამქრქალება, სენსორული ეკრანი, ბატარეა"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ეკრანის გამქრქალება, ღამე, ელფერი"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ღამის რეჟიმი"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"ქსელი და ინტერნეტი"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"მობილური ქსელი"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"მობილური ინტერნეტი"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"მონაცემებზე წვდომა მობილური ქსელით"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"გსურთ მობილური ინტერნეტის გამორთვა?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"მონაცემთა მოხმარება"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"მოხმარების შესახებ გაფრთხილება და ლიმიტი"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"აპების მიერ ტრაფიკის მოხმარების ციკლი"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"გაფრთხილების დაყენება"</string>
+    <string name="data_warning" msgid="116776633806885370">"მოხმარების შესახებ გაფრთხილება"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ტრაფიკის ლიმიტის დაყენება"</string>
+    <string name="data_limit" msgid="227338836292511425">"ტრაფიკის ლიმიტი"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ტრაფიკის მოხმარების შეზღუდვა"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"მითითებული ლიმიტის მიღწევის შემდეგ თქვენი ავტომობილის საინფორმაციო-გასართობი სისტემა გამორთავს მობილურ ინტერნეტს.\n\nლიმიტის არჩევისას გაითვალისწინეთ, რომ ავტომობილის საინფორმაციო-გასართობი სისტემა და თქვენი ოპერატორი შეიძლება განსხვავებულად აღრიცხავდეს ინტერნეტის მოხმარებას."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"უსადენო წვდომის წერტილების დაყენება და მართვა"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi ირთვება…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"WiFi-ის გამორთვა…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"მიმდინარეობს Wi‑Fi ქსელების სიის ჩატვირთვა"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi გათიშულია"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"ქსელის დავიწყება ვერ მოხერხდა"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ქსელთან დაკავშირება ვერ ხერხდება"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ქსელის დამატება"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi გათიშულია"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"დაკავშირება"</string>
     <string name="wifi_password" msgid="5565632142720292397">"პაროლი"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"პაროლის გამოჩენა"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ქსელის სახელი"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"შეიყვანეთ SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"უსაფრთხოება"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"სიგნალის სიძლიერე"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"სიგნალის სიძლიერე"</string>
     <string name="wifi_status" msgid="5688013206066543952">"სტატუსი"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"დაკავშირების სიჩქარე"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"სიხშირე"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP მისამართი"</string>
+    <string name="show_password" msgid="2074628020371139240">"პაროლის გამოჩენა"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"შეიყვანეთ ქსელის სახელი"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"შეიყვანეთ პაროლი"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ცუდი"</item>
-    <item msgid="2032262610626057081">"ნორმალური"</item>
-    <item msgid="3859756017461098953">"კარგი"</item>
-    <item msgid="1521103743353335724">"შესანიშნავი"</item>
+    <item msgid="7683058295076342057">"ცუდი"</item>
+    <item msgid="1639222824821660744">"ნორმალური"</item>
+    <item msgid="1838705897358163300">"კარგი"</item>
+    <item msgid="6067166649320533751">"შესანიშნავი"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth-ის ჩართვა"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth გათიშულია"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d მბიტი/წმ"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 გჰც"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 გჰც"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ქსელის დეტალები"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC მისამართი"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP მისამართი"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"ქვექსელის ნიღაბი"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 მისამართები"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"შლუზი"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi-ს პარამეტრები"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi-ს ავტომატურად ჩართვა"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi ჩაირთვება შენახულ, მაღალხარისხიან ქსელებთან (მაგალითად, სახლის ქსელთან) სიახლოვისას"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"მიუწვდომელია გამორთული მდებარეობის გამო. ჩართეთ "<annotation id="link">"მდებარეობა"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"გსურთ Wi‑Fi სკანირების ჩართვა?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ჩართვა"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi სკანირება ჩართულია"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"ავტომატურად გადართვა მობილურ ინტერნეტზე"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"მობილური ინტერნეტის გამოყენება, როცა Wi‑Fi ქსელს არ აქვს წვდომა ინტერნეტზე. შესაძლოა მოგიწიოთ მობილური ინტერნეტის საფასურის გადახდა."</string>
+    <string name="learn_more" msgid="8214605928933358604">"შეიტყვეთ მეტი"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"კავშირების მართვა, მოწყობილობის სახელის &amp;amp დადგენა; ხელმისაწვდომობა"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"კომპიუტერი"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ყურსაცვამი"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ტელეფონი"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"გამოსახულებათა დამუშავების მოწყობილობა"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"ყურსასმენი"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"შეყვანის პერიფერიული მოწყობილობა"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"დაწყვილებული მოწყობილობები"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"ხელმისაწვდომი მოწყობილობები"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"დაწყვილებული მოწყობილობები არ არის"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"ხელმისაწვდომი მოწყობილობები არ არის"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"დაწყვილებული მოწყობილობა"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"სახელი"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"გამოყენება:"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth მოწყობილობის გადარქმევა"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"უსახელო მოწყობილობა"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"დაწყვილებული მოწყობილობები"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"ახალი მოწყობილობის დაწყვილება"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"დასაწყვილებლად ჩაირთვება Bluetooth"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"გსურთ მოწყობ. გამოერთება?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"თქვენი ავტომობილი და <xliff:g id="DEVICE_NAME">%1$s</xliff:g> აღარ იქნება დაკავშირებული."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"ავტომობილის Bluetooth მისამართი: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"მოწყობილობის Bluetooth მისამართი: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"ავტომობილის სახელი"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ამ ავტომობილის გადარქმევა"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"მოწყობილობის გადარქმევა"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"გადარქმევა"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ხელმისაწვდომი მოწყობილობები"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"პროფილები"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth დაწყვილების მოთხოვნა"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"დაწყვილება და შეერთება"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-ის დაკავშირების კოდი"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN მოიცავს ასოებს ან სიმბოლოებს"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"აკრიფეთ დაწყვილების კოდი და დააჭირეთ Return-ს ან Enter-ს"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"ჩვეულებრივ 0000 ან 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"დაწყვილების თხოვნა"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"შეეხეთ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-თან დასაწყვილებლად."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ენები"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ენები და შეყვანა"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"კლავიატურა"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"კლავიატურების მართვა"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"გახმოვანებული ტექსტის გამოტანა"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"სასურველი ძრავა"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ამჟამინდელი ძრავა"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"მეტყველების ტემპი"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"სიმაღლე"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"გადაყენება"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ხმა"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"ზარის სიმძლავრე"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"ნავიგაციის ხმა"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"მედია"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"მუსიკისა და ვიდეოებისთვის ხმის დაყენება"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"მაღვიძარა"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ტელეფონის ზარი"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"შეტყობინების ნაგულისხმევი ხმა"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"მაღვიძარას ნაგულისხმევი ხმა"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"აპები და შეტყობინებები"</string>
+    <string name="all_applications" msgid="7798210477486822168">"ყველა აპის ჩვენება"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ნაგულისხმევი აპები"</string>
     <string name="applications_settings" msgid="794261395191035632">"აპის ინფო"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ძალით შეჩერება"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"გსურთ ძალით შეჩერება?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"აპისთვის მუშაობის ძალით შეჩერების შემთხვევაში, მან შეიძლება არასათანადოდ იმუშაოს."</string>
     <string name="disable_text" msgid="4358165448648990820">"გათიშვა"</string>
     <string name="enable_text" msgid="1794971777861881238">"ჩართვა"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"დეინსტალაცია"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ამ აპის გათიშვის შემთხვევაში, Android-მა და სხვა აპებმა შეიძლება გამართულად აღარ იმუშაოს."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"აპის გათიშვა"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ნებართვები"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ვერსია: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ნებართვები არ არის გაცემული"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ნებართვებზე მოთხოვნები არ არის"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"მონაცემთა მოხმარება"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"აპის მონაცემთა გამოყენება"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ძალით შეჩერება"</string>
     <string name="computing_size" msgid="5791407621793083965">"გამოთვლა…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> დამატებითი ნებართვა</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> დამატებითი ნებართვა</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"ასისტენტი და ხმოვანი შეყვანა"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"დამხმარე აპი"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ტექსტის გამოყენება ეკრანიდან"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"დამხმარე აპისთვის ეკრანზე არსებულ კონტენტზე ტექსტის სახით წვდომის დაშვება"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ეკრანის ანაბეჭდის გამოყენება"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"დამხმარე აპისთვის ეკრანის სურათზე წვდომის დაშვება"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"ავტომატური შევსების სერვისი"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"არცერთი"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"არჩეულია"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"ასისტენტი შეძლებს თქვენს სისტემაში გამოყენებული აპების ინფორმაციის წაკითხვას (მათ შორის, ინფორმაციის, რომელიც ნაჩვენებია თქვენს ეკრანზე ან ხელმისაწვდომია აპებში)."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;დარწმუნდით, რომ ენდობით ამ აპს&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google-ის ავტომატური შევსება&gt;%1$s&lt;/xliff:g&gt; იყენებს თქვენს ეკრანზე არსებულ კონტენტს, რომ გაარკვიოს, რა შეიძლება შეივსოს ავტომატურად."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"სერვისის დამატება"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"მდებარეობა"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"მდებარეობის ბოლოდროინდელი მოთხოვნები"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"მდებარეობის ბოლოდროინდელი მოთხოვნები არ არის"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ნებართვები აპის დონეზე"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"სკანირება"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"მდებარეობის სერვისები"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi სკანირება"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"აპებისა და სერვისებისთვის Wi‑Fi ქსელების ნებისმიერ დროს სკანირების დაშვება, მაშინაც კი, როცა Wi‑Fi გამორთულია. მაგალითად, აღნიშნული გამოიყენება მდებარეობაზე დაფუძნებული ფუნქციებისა და სერვისების გასაუმჯობესებლად."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth სკანირება"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"აპებისა და სერვისებისთვის ახლომდებარე მოწყობილობების ნებისმიერ დროს სკანირების დაშვება, მაშინაც კი, როცა Bluetooth გამორთულია. მაგალითად, აღნიშნული გამოიყენება მდებარეობაზე დაფუძნებული ფუნქციებისა და სერვისების გასაუმჯობესებლად."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"სისტემა"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"სისტემის განახლებები"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"სისტემის განახლებები"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-ის ვერსია"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-ის უსაფრთხოების ნაწილაკის დონე"</string>
     <string name="model_info" msgid="4966408071657934452">"მოდელი"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Baseband-ის ვერსია"</string>
     <string name="kernel_version" msgid="7327212934187011508">"kernel-ის ვერსია"</string>
     <string name="build_number" msgid="3997326631001009102">"ანაწყობის ნომერი"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth მისამართი"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"მიუწვდომელი"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"სტატუსი"</string>
     <string name="device_status" msgid="267298179806290920">"სტატუსი"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"საავტორო უფლებები"</string>
     <string name="license_title" msgid="936705938435249965">"ლიცენზია"</string>
     <string name="terms_title" msgid="5201471373602628765">"წესები და პირობები"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"სისტემის ვებ მიმოხილვის ლიცენზია"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"System WebView ლიცენზიები"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"ფონები"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"სატელიტური სურათების პროვაიდერები:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"მესამე მხარის ლიცენზიები"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"ლიცენზიის ჩამოტვირთვასთან პრობლემაა."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"მიმდინარეობს ჩატვირთვა…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">დეველოპერობამდე <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ნაბიჯი დაგრჩათ.</item>
+      <item quantity="one">დეველოპერობამდე <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> ნაბიჯი დაგრჩათ.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"ახლა დეველოპერი ხართ!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"არ არის საჭირო, უკვე დეველოპერი ხართ."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"დეველოპერთა პარამეტრები"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"გადაყენების ვარიანტები"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ქსელის, აპების ან მოწყობილობის გადაყენება"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"ქსელის გადაყენება"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"ამ ქმედებით გადაყენებული იქნება ქსელის ყველა პარამეტრი, მათ შორის:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"მობილური ინტერნეტი"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"სატრანსპორტო საშუალების ყველა eSIM-ის ამოშლა"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ეს ქმედება არ გააუქმებს თქვენს სატარიფო გეგმას."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM-ების გადაყენება ვერ ხერხდება"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"აირჩიეთ ქსელი"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"პარამეტრების გადაყენება"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"გსურთ გადაყენება?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"გსურთ ქსელის ყველა პარამეტრის გადაყენება? ამ ქმედების გაუქმება შეუძლებელი იქნება."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"პარამეტრების გადაყენება"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"ქსელის პარამეტრები გადაყენებულია"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"აპთა პარამეტრების გადაყენება"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ეს ქმედება გადააყენებს ყველა პარამეტრს, რომელიც ეხება:\n\n"<li>"გათიშულ აპებს"</li>\n<li>"აპების გათიშულ შეტყობინებებს"</li>\n<li>"ქმედებებზე მიმაგრებულ ნაგულისხმევ აპლიკაციებს"</li>\n<li>"ფონურ რეჟიმში მონაცემთა გამოყენების შეზღუდვებს აპებისთვის"</li>\n<li>"ნებისმიერი ნებართვის შეზღუდვას"</li>\n\n"აპების მონაცემები არ დაიკარგება."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"აპების გადაყენება"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"აპების პარამეტრები გადაყენებულია"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"ყველა მონაცემის ამოშლა (ქარხნული პარამეტრების დაბრუნება)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ეს ქმედება ამოშლის ყველა მონაცემს თქვენი ავტომობილის საინფორმაციო-გასართობი სისტემიდან. მათ შორის, ამოიშლება შემდეგი:\n\n"<li>"თქვენი Google ანგარიში"</li>\n<li>"სისტემის/აპების მონაცემები და პარამეტრები"</li>\n<li>"ჩამოტვირთული აპები"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"ამჟამად შესული ხართ შემდეგ ანგარიშებში:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ამ ავტომობილს იყენებენ სხვა მომხმარებლებიც."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"ავტომობილის გადაყენება"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"გსურთ გადაყენება?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"გსურთ მთელი თქვენი პერსონალური ინფორმაციისა და ჩამოტვირთული აპების წაშლა? ამ მოქმედების გაუქმებას ვეღარ მოახერხებთ!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ყველაფრის ამოშლა"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"მიმდინარეობს ამოშლა"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"გთხოვთ, მოითმინოთ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"თარიღი და დრო"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"თარიღისა და დროის დაყენება"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"თარიღის, დროის, დროის ზონის და ფორმატების დაყენება"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"დროის სარტყელით სორტირება"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"თარიღი"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"დრო"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"მომხმარებლის დამატება"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"ანგარიშის დამატება"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"მომხმარებლის წაშლა"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ახალი მომხმარებელი"</string>
-    <string name="user_guest" msgid="3465399481257448601">"სტუმარი"</string>
     <string name="user_admin" msgid="1535484812908584809">"ადმინისტრატორი"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"შესული ხართ, როგორც ადმინისტრატორი"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ადმინისტრატორის ყველა ნებართვა"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ადმინისტრატორად დანიშვნა"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"მომხმარებელი შეძლებს სხვა მომხმარებლების (მათ შორის, ადმინისტრატორების) წაშლას და სისტემის დაბრუნებას ქარხნულ პარამეტრებზე."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ამ ქმედებას ვერ გააუქმებთ."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"დიახ, დაინიშნოს ადმინისტრატორად"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"ახალი მომხმარებლების შექმნა"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"სატელეფონო ზარების განხორციელება"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS მიმოცვლა მანქანის მობ. ინტ.-ით"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"ახალი აპების ინსტალაცია"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"აპების დეინსტალაცია"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"მომხმარებლის დამატება"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"ახალი მომხმარებელი"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"დაემატოს ახალი მომხმარებელი?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ახალი მომხმარებლის დამატებისას, ამ მომხმარებელს საკუთარი სივრცის შექმნა მოუწევს."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ნებისმიერ მომხმარებელს შეუძლია აპები ყველა სხვა მომხმარებლისათვის განაახლოს."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"მიღწეულია მომხმარებელთა ლიმიტი"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">შესაძლებელია მაქსიმუმ <xliff:g id="COUNT">%d</xliff:g> მომხმარებლის შექმნა.</item>
+      <item quantity="one">შესაძლებელია მხოლოდ ერთი მომხმარებლის შექმნა.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"ახალი მომხმარებლის შექმნა ვერ მოხერხდა"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"წაიშალოს ეს მომხმარებელი?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"წაიშლება ყველა აპი და მონაცემი."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"მომხმარებლის წაშლა ვერ მოხერხდა."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"დახურვა"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ხელახლა ცდა"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ამოიშალოს ბოლო მომხმარებელი?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ამ მანქანის ერთადერთი დარჩენილი მომხმარებლის ამოშლის შემდეგ შეიქმნება ახალი ადმინისტრატორი მომხმარებელი."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"წაიშლება ამ მომხმარებელთან დაკავშირებული ყველა მონაცემი, პარამეტრი და აპი. სისტემის დაყენება ხელახლა მოგიწევთ."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"აირჩიეთ ახალი ადმინისტრატორი"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"საჭიროა მინიმუმ ერთი ადმინისტრატორი. ამ ადმინისტრატორის წასაშლელად ჯერ აირჩიეთ მისი შემცვლელი."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"ადმინისტრატორის არჩევა"</string>
+    <string name="user_guest" msgid="3465399481257448601">"სტუმარი"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"სტუმარი"</string>
     <string name="user_switch" msgid="6544839750534690781">"გადართვა"</string>
     <string name="current_user_name" msgid="3813671533249316823">"თქვენ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"სახელი"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"არ არის დარეგულირებული"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"მომხმარებლის სახელის რედაქტირება"</string>
     <string name="users_list_title" msgid="770764290290240909">"მომხმარებლები"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s-ის ნებართვები"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"ანგარიშები"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"მომხმარებელი"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"ანგარიშის დამატება"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"ანგარიშები დამატებული არ არის"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>-ის ანგარიშები"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"მონაცემების ავტომატური სინქრონიზაცია"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"აპებისთვის მონაცემების ავტომატურად განახლების დაშვება"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ჩაირთოს ავტომ. სინქრონიზაცია?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ვების მეშვეობით თქვენს ანგარიშებში განხორციელებული ნებისმიერი ცვლილება ავტომატურად აისახება თქვენს მოწყობილობაში.\n\nზოგიერთი ანგარიშის შემთხვევაში, ტელეფონში განხორციელებული ნებისმიერი ცვლილება შეიძლება ავტომატურად აისახოს ვებშიც. სწორედ ასე ფუნქციონირებს Google ანგარიში."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"გამოირთოს ავტომ. სინქრონიზაცია?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ეს შეამცირებს მონაცემთა მოხმარებას, თუმცა ბოლოდროინდელი ინფორმაციის მისაღებად დაგჭირდებათ თითოეული ანგარიშის ხელით სინქრონიზაცია. გარდა ამისა, არც განახლებების შესახებ შეტყობინებებს მიიღებთ."</string>
     <string name="account_details_title" msgid="7529571432258448573">"ანგარიშის ინფორმაცია"</string>
     <string name="add_account_title" msgid="5988746086885210040">"ანგარიშის დამატება"</string>
     <string name="add_an_account" msgid="1072285034300995091">"ანგარიშის დამატება"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"ანგარიშის წაშლა"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"გსურთ ანგარიშის ამოშლა?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ამ ანგარიშის წაშლის შემთხვევაში მოწყობილობაზე წაიშლება მასთან დაკავშირებული ყველა შეტყობინება, კონტაქტი და სხვა მონაცემი!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ეს ცვლილება თქვენი ადმინისტრატორის მიერ ნებადართული არ არის"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"წაიშალოს ეს მომხმარებელი?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"ყველა აპი და მონაცემები წაიშლება."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"მომხმარებლის ამოშლა ვერ მოხერხდა."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"გსურთ ისევ ცდა?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"დახურვა"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ხელახლა ცდა"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"დაემატოს ახალი მომხმარებელი?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ახალი მომხმარებლის დამატებისას, ამ მომხმარებელს საკუთარი სივრცის შექმნა მოუწევს."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ნებისმიერ მომხმარებელს შეუძლია აპები ყველა სხვა მომხმარებლისათვის განაახლოს."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"ანგარიშის ამოშლა ვერ მოხერხდა."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"ანგარიშის სინქრონიზაცია"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"სინქრონიზაცია ჩართულია <xliff:g id="ID_2">%2$d</xliff:g>-დან <xliff:g id="ID_1">%1$d</xliff:g> ერთეულისთვის"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"სინქრონიზაცია ჩართულია ყველა ერთეულისთვის"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"სინქრონიზაცია გამორთულია ყველა ერთეულისთვის"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"სინქრონიზაცია გამორთულია"</string>
+    <string name="sync_error" msgid="6698021343089247914">"შეცდომა სინქრონიზაციისას"</string>
+    <string name="last_synced" msgid="4745124489150101529">"ბოლო სინქრონიზაცია: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"მიმდინარეობს სინქრონიზაცია…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"შეეხეთ ახლავე სინქრონიზაციისთვის<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ახლავე სინქრონიზაცია"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"სინქრონიზაციის გაუქმება"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"ამჟამად სინქრონიზაცია ვერ ხერხდება პრობლემის გამო. ეს ფუნქცია მალე აღდგება."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"უსაფრთხოება"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ეკრანის დაბლოკვა"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"არცერთი"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-კოდი"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"პაროლი"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"აირჩიეთ ჩაკეტვის ტიპი"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"ეკრანის დაბლოკვის ვარიანტები"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"ჩაკეტვის ვარიანტები"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"შეიყვანეთ განმბლოკავი ნიმუში"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"დადასტურება"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"ხელმეორედ აღწარმოება"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"ეკრანის დაბლოკვის მეთოდის დაყენება"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"თქვენი PIN-კოდის არჩევა"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"აირჩიეთ განმბლოკავი ნიმუში"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"აირჩიეთ პაროლი"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"აირჩიეთ პაროლი"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"ეკრანის დაბლოკვის ამჟამინდელი მეთოდი"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"უსაფრთხოებისთვის, დააყენეთ განსაბლოკი ნიმუში"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"გასუფთავება"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ხშირად გამოყენებული პაროლები თქვენი IT ადმინისტრატორის მიერ დაბლოკილია. ცადეთ სხვა პაროლი."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ციფრების ზრდადი, კლებადი ან გამეორებადი მიმდევრობის გამოყენება ნებადართული არ არის."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ეკრანის დაბლოკვის ვარიანტები"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> დღის წინ"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"სანდო მოწყობილობის დამატება"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"სანდო მოწყობილობები"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> მოწყობილობა</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> მოწყობილობა</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"თქვენი <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> განბლოკავს ამ მანქანას, როცა ის დაკავშირებული იქნება. თუ თქვენი <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> სხვის ხელში აღმოჩნდება, ის შეძლებს ამ მოწყობილობაზე წვდომას."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"დადასტურება"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"სანდო მოწყობილობის ამოშლა"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"მზადაა"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"გამოიყენეთ კომპანიონი აპი სანდო მოწყობილობის დასაყენებლად. დაყენების შემდეგ შეგეძლებათ თქვენი მომხმარებლის პროფილის განბლოკვა, როცა ავტომობილი ამოიცნობს თქვენს ტელეფონს."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ჩამოტვირთეთ კომპანიონი აპი თქვენს ტელეფონზე"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. თქვენს ტელეფონზე აირჩიეთ <xliff:g id="CAR_NAME">%1$s</xliff:g> მოწყობილობების დასაწყვილებლად"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock-მა ვერ მოახერხა ამ მოწყობილობის უსაფრთხოების ფუნქციების დადგენა. ავტომობილის დაცვის მიზნით, სანდო მოწყობილობა თქვენი ავტომობილის განბლოკილ მდგომარეობაში შენარჩუნებას შეძლებს მხოლოდ მას შემდეგ, რაც ის თქვენ მიერ განიბლოკება. სანდო მოწყობილობა თქვენი ავტომობილის განბლოკილ მდგომარეობაში შენარჩუნებას შეძლებს, როცა ის ახლოს მდებარეობს, მაშინაც კი, თუ ის სხვას უკავია."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ის სანდო მოწყობილობად დამატება"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> წარმატებით დაემატა სანდო მოწყობილობად"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ის რეგისტრაცია ვერ მოხერხდა"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"სანდო მოწყობილობის დასამატებლად მომდევნო ეტაპზე საჭირო იქნება ავტორიზაციის მეთოდის დაყენება. ავტორიზაცია საჭირო იქნება თქვენს პროფილზე წვდომისთვის, როცა სანდო მოწყობილობა თან არ გექნებათ."</string>
     <string name="forget" msgid="3971143908183848527">"დავიწყება"</string>
+    <string name="connect" msgid="5861699594602380150">"დაკავშირება"</string>
+    <string name="disconnect" msgid="6140789953324820336">"კავშირის გაწყვეტა"</string>
     <string name="delete_button" msgid="5840500432614610850">"წაშლა"</string>
     <string name="remove_button" msgid="6664656962868194178">"წაშლა"</string>
     <string name="cancel" msgid="750286395700355455">"გაუქმება"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"დემო-რეჟიმის დატოვება"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ეს ქმედება წაშლის დემო-ანგარიშს და სისტემის ქარხნულ მონაცემებს აღადგენს. სამომხმარებლო მონაცემები მთლიანად წაიშლება."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"დემოს დატოვება"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"დაყენების დასრულება"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ახლა არა"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"დახურვა"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ფუნქცია მიუწვდომელია მანქანის მართვისას."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"მანქანის მართვისას მომხმარებლის დამატება ვერ მოხერხდება."</string>
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index aabc217..c6162cf 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"экранды күңгірттеу, сенсорлық экран, батарея"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"экранды күңгірттеу, түн, реңк"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Түнгі режим"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Желі және интернет"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мобильдік желі"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобильдік интернет"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Деректерге мобильдік желі арқылы кіру"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Мобильдік интернет өшірілсін бе?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Дерек трафигі"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Дерек ескертуі және шегі"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Қолданбаның дерек трафигі циклі"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Дерек ескертуін белгілеу"</string>
+    <string name="data_warning" msgid="116776633806885370">"Дерек ескертуі"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Дерек шегін белгілеу"</string>
+    <string name="data_limit" msgid="227338836292511425">"Дерек шегі"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Дерек трафигін шектеу"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Орнатқан шекке жеткеннен кейін, көліктегі құрылғы мобильдік деректерді өшіреді.\n\nҚұрылғы деректерді пайдалану шегін белгілейтіндіктен және оператор трафикті басқаша есептеуі мүмкін болғандықтан, қатаңырақ шек қойған жөн."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Сымсыз кіру нүктелерін реттеу және басқару"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi байланысын қосуда…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi байланысы өшірілуде…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi тізімі жүктелуде"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi өшірулі"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Желі өшірілмеді"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Желіге қосылмады"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Желіні енгізу"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi өшірулі"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Қосылу"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Құпия сөз"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Құпия сөзді көрсету"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Желі атауы"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID идентификаторын енгізіңіз"</string>
     <string name="wifi_security" msgid="158358046038876532">"Қауіпсіздік"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Сигнал күші"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Сигнал күші"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Күйі"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Байланыс жылдамдығы"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Жиілік"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP мекенжайы"</string>
+    <string name="show_password" msgid="2074628020371139240">"Құпия сөзді көрсету"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Желі атауын енгізу"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Құпия сөзді енгізу"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Нашар"</item>
-    <item msgid="2032262610626057081">"Орташа"</item>
-    <item msgid="3859756017461098953">"Жақсы"</item>
-    <item msgid="1521103743353335724">"Өте жақсы"</item>
+    <item msgid="7683058295076342057">"Нашар"</item>
+    <item msgid="1639222824821660744">"Орташа"</item>
+    <item msgid="1838705897358163300">"Жақсы"</item>
+    <item msgid="6067166649320533751">"Өте жақсы"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth желісін қосу"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth өшірулі"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Мб/с"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 ГГц"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ГГц"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Желі деректері"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC мекенжайы"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP мекенжайы"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Қосалқы желі маскасы"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 мекенжайлары"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Шлюз"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi параметрлері"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi желісін автоматты түрде қосу"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi бұрын сақталған жоғары сапалы желі аймағында (үйдегідей) қайта қосылады"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Орынды анықтау функциясы өшірулі болғандықтан, қолжетімді емес. "<annotation id="link">"Орынды анықтау"</annotation>" қызметін қосыңыз."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi іздеу функциясы қосылсын ба?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Қосу"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi іздеу функциясы қосулы"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Мобильдік деректерге автоматты ауысу"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi‑Fi желісінде интернетпен байланыс болмаған кезде, мобильдік деректер пайдаланылады. Деректер ақысы алынуы мүмкін."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Толығырақ"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Байланыстарды басқарып, құрылғы атауы мен табылу мүмкіндігін тағайындаңыз"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Компьютер"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Гарнитура"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Телефон"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Бейне құралы"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Құлақаспап"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Кіріс құралы"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Жұпталған құрылғылар"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Қолжетімді құрылғылар"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Ешқандай құрылғы жұпталмаған"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Ешқандай құрылғы қолжетімді емес"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Жұпталған құрылғы"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Аты"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Келесі үшін пайдалану"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth құрылғысының атын өзгерту"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Атаусыз құрылғы"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Жұпталған құрылғылар"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Жаңа құрылғыны жұптау"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Жұптау үшін Bluetooth функциясы қосылады"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Құрылғы ажыратылсын ба?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Көлігіңіз <xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысынан ажыратылады."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Көліктің Bluetooth мекенжайы: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Құрылғының Bluetooth мекенжайы: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Көлік атауы"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Осы көліктің атауын өзгерту"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Құрылғы атауын өзгерту"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Атын өзгерту"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Жұптауға болатын құрылғылар"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Профильдер"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth жұптау сұрауы"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Жұптау және жалғау"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth жұптау коды"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN коды әріптерден не таңбалардан құралады"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Жұптау кодын енгізіп, \"Оралу\" немесе \"Енгізу\" түймесін басыңыз"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Әдетте 0000 немесе 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Жұптау сұрауы"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысымен жұптау үшін түртіңіз."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Тілдер"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Тілдер және кіріс"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Пернетақта"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Пернетақтаны басқару"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Мәтінді дыбыстау шығысы"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Таңдалған жүйе"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Ағымдағы жүйе"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Дыбыстау жылдамдығы"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Дауыс тембрі"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Қалпына келтіру"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Дыбыс"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Қоңыраудың дыбыс деңгейі"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Навигациялау дыбысының қаттылығы"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Meдиа"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Музыка және бейне дыбысын реттеу"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Дабыл"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Телефон рингтоны"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Әдепкі хабарландыру дыбысы"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Әдепкі дабыл сигналы"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Қолданбалар мен хабарландырулар"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Барлық қолданбаларды көрсету"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Әдепкі қолданбалар"</string>
     <string name="applications_settings" msgid="794261395191035632">"Қолданба ақпараты"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Қолмен тоқтату"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Қолмен тоқтатылсын ба?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Егер қолданбаны күштеп тоқтату оның жұмысына кері әсерін тигізуі мүмкін."</string>
     <string name="disable_text" msgid="4358165448648990820">"Өшіру"</string>
     <string name="enable_text" msgid="1794971777861881238">"Қосу"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Жою"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Бұл қолданбаны өшірсеңіз, Android жүйесі мен басқа қолданбалар тиісінше жұмыс істемеуі мүмкін."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Қолданбаны өшіру"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Рұқсаттар"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Нұсқа: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ешқандай рұқсат берілмеген"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ешқандай рұқсат сұралмаған"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Деректер трафигі"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Қолданбаның дерек шығыны"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Қолмен тоқтату"</string>
     <string name="computing_size" msgid="5791407621793083965">"Есептелуде…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> қосымша рұқсат</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> қосымша рұқсат</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Көмекші және дауыспен енгізу"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Көмекші қолданба"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Экрандағы мәтінді пайдалану"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Көмекші қолданбаға мәтін сияқты экран мазмұнына кіруге рұқсат ету"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Скриншотты пайдалану"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Көмекші қолданбаға экран кескінін пайдалануға рұқсат ету"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Автотолтыру қызметі"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Жоқ"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Таңдалды"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Assistant жүйеде пайдаланылып жатқан қолданбалар туралы ақпаратты, соның ішінде экранға шығатын немесе қолданбалардағы деректерді оқи алады."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Осы қолданбаға сенетініңізге көз жеткізіңіз&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Автотолтыру&gt;%1$s&lt;/xliff:g&gt; қызметі автоматты түрде толтыруға болатын деректерді анықтау үшін экран мазмұнын пайдаланады."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Қызметті енгізу"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Орналасқан жер"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Жақында жасалған орналасқан жерді анықтау сұраулары"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Орналасқан жерді анықтау сұраулары жақында жасалмаған"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Қолданба деңгейіндегі рұқсаттар"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Іздеу"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Орынды анықтау қызметтері"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi іздеу"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Қолданбаларға және қызметтерге, Wi-Fi өшірулі кезде де, Wi-Fi желілерін кез келген уақытта іздеуге рұқсат ету. Бұл параметрді, мысалы, орналасуды анықтау функциялары мен қызметтерін жақсарту үшін пайдалануға болады."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth іздеу"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth өшірулі болса да, қолданбалар мен қызметтерге маңайдағы құрылғыларды іздеуге рұқсат беру. Бұл параметрді, мысалы, геодеректер негізіндегі функциялар мен қызметтерді жақсарту үшін пайдалануға болады."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Жүйе"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Жүйенің жаңартылған нұсқалары"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Жүйенің жаңа нұсқалары"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android нұсқасы"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android қауіпсіздік түзетуінің деңгейі"</string>
     <string name="model_info" msgid="4966408071657934452">"Үлгісі"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Тікелей тарату нұсқасы"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Ядро нұсқасы"</string>
     <string name="build_number" msgid="3997326631001009102">"Жинақ нөмірі"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth мекенжайы"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Қолжетімді емес"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Күйі"</string>
     <string name="device_status" msgid="267298179806290920">"Күйі"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Авторлық құқық"</string>
     <string name="license_title" msgid="936705938435249965">"Лицензия"</string>
     <string name="terms_title" msgid="5201471373602628765">"Шарттары"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Жүйенің WebView лицензиясы"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Жүйенің WebView лицензиялары"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Тұсқағаздар"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satellite сурет провайдерлері:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Үшінші тараптық лицензиялар"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Лицензияларды жүктеу барысында ақау орын алды."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Жүктелуде…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> қадамнан кейін әзірлеуші атанасыз.</item>
+      <item quantity="one"><xliff:g id="STEP_COUNT_0">%1$d</xliff:g> қадамнан кейін әзірлеуші атанасыз.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Енді сіз әзірлеушісіз!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Қажет емес, сіз енді әзірлеушісіз."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Әзірлеуші опциялары"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Опцияларды қайтару"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Желі, қолданбалар және құрылғы параметрлерін қайтару"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Желіні бастапқы күйге қайтару"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Келесілерді қоса, барлық желі параметрлері бастапқы күйіне қайтарылады:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобильдік деректер"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Көліктің барлық eSIM карталарының деректерін өшіру"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Қызмет жоспарынан бас тартылмайды."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM карталарын бастапқы күйіне қайтару мүмкін емес"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Желіні таңдау"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Бастапқы күйге қайтару"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Бастапқы күйге қайтарылсын ба?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Барлық желі параметрлері бастапқы күйіне қайтарылсын ба? Бұл әрекетті қайтару мүмкін емес!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Бастапқы күйге қайтару"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Желі параметрлері бастапқы күйіне қайтарылды"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Параметрлерді бастапқы күйіне қайтару"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Келесілердің параметрлері бастапқы күйіне қайтарылады:\n\n"<li>"өшірілген қолданбалар;"</li>\n<li>"қолданбалардың өшірілген хабарландырулары;"</li>\n<li>"әрекеттерге арналған әдепкі қолданбалар;"</li>\n<li>"фондық режимдегі дерек тасымалын шектеу;"</li>\n<li>"барлық рұқсат шектеулері."</li>\n\n"Қолданба деректері жоғалмайды."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Бастапқы күйге қайтару"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Қолданба параметрлері бастапқы күйіне қайтарылды"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Барлық деректі өшіру (зауыттық мәнге қайтару)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Көліктің басты құрылғысынан барлық деректер өшеді, оның ішінде:\n\n"<li>"Google есептік жазбаңыз;"</li>\n<li>"жүйе мен қолданба деректері және параметрлері;"</li>\n<li>"жүктеп алынған қолданбалар."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Сіз келесі есептік жазбаларға кірдіңіз:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Бұл көлікте басқа пайдаланушылар бар."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Көлікті бастапқы күйге қайтару"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Бастапқы күйге қайтарылсын ба?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Барлық жеке ақпаратыңыз бен жүктелген қолданбаларыңыз өшірілсін бе? Бұл әрекетті кері қайтару мүмкін емес!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Барлығын өшіру"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Өшірілуде"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Күте тұрыңыз…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Күн және уақыт"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Күн мен уақытты реттеу"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Күнін, уақытын, уақыт белдеуін, форматтарды реттеу"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Уақыт белдеуі бойынша сұрыптау"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Күні"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Уақыт"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Пайдаланушы енгізу"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Есептік жазба енгізу"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Пайдаланушыны жою"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Жаңа пайдаланушы"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Қонақ"</string>
     <string name="user_admin" msgid="1535484812908584809">"Әкімші"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Әкімші ретінде кірдіңіз"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Барлық әкімші рұқсаттары"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Әкімші ету"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Пайдаланушы басқа пайдаланушыларды, соның ішінде әкімшілерді жоя алады және жүйені зауыттық мәндеріне қайтара алады."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Бұл әрекетті қайтару мүмкін емес."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Иә, әкімші етілсін"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Жаңа пайдаланушы профильдерін жасау"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Телефон қоңырауларын шалу"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Автокөліктің мобильдік деректері арқылы хабар алмасу"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Жаңа қолданбаларды орнату"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Қолданбаларды жою"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Пайдаланушы енгізу"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Жаңа пайдаланушы"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Жаңа пайдаланушы енгізілсін бе?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Енгізілген жаңа пайдаланушы өз профилін реттеуі керек."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Кез келген пайдаланушы қолданбаларды басқа пайдаланушылар үшін жаңарта алады."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Пайдаланушылар саны шегіне жетті"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> пайдаланушыға дейін жасауға болады.</item>
+      <item quantity="one">Тек бір пайдаланушыны жасауға болады.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Жаңа пайдаланушы жасалмады"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Пайдаланушы жойылсын ба?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Барлық қолданбалар және деректер жойылады."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Пайдаланушы жойылмады."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Қабылдамау"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Қайталау"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Соңғы пайдаланушы жойылсын ба?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Бұл көлік үшін соңғы қалған пайдаланушыны жойғаннан кейін, жаңа әкімші пайдаланушы жасалады."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Бұл пайдаланушымен байланыстырылған деректер, параметрлер және қолданба жойылады. Жүйені қайта реттеу қажет болады."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Жаңа әкімшіні таңдаңыз"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Кемінде бір әкімші болуы керек. Ағымдағы әкімшіні жою үшін алдымен жаңасын таңдаңыз."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Әкімшіні таңдау"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Қонақ"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Қонақ"</string>
     <string name="user_switch" msgid="6544839750534690781">"Ауысу"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Сіз (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Аты"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Реттелмеген"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Пайдаланушы атын өзгерту"</string>
     <string name="users_list_title" msgid="770764290290240909">"Пайдаланушылар"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s: рұқсаттар"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Есептік жазбалар"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Пайдаланушы"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Есептік жазба енгізу"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Ешқандай есептік жазба енгізілмеген"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> атты пайдаланушының есептік жазбалары"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Деректерді автоматты түрде синхрондау"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Қолданбалардың деректерді автоматты жаңартуына рұқсат беру"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Автосихрондау қосылсын ба?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Компьютер арқылы есептік жазбаларыңызға енгізілген өзгертулер құрылғыңызға автоматты түрде көшіріледі.\n\nСондай-ақ телефоныңыз арқылы есептік жазбаларға енгізілген кейбір өзгертулер компьютерге көшірілуі мүмкін. Google есептік жазбасы осылай жұмыс істейді."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Автосинхрондау өшірілсін бе?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Трафик үнемделеді, бірақ соңғы ақпаратты жинау үшін әр есептік жазбаны қолмен синхрондау қажет болады. Сондай-ақ жаңартылған нұсқалар шыққанда, хабарландыру жіберілмейді."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Есептік жазба ақпараты"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Есептік жазба енгізу"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Есептік жазба енгізу"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Есептік жазбаны өшіру"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Есептік жазба өшірілсін бе?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Бұл есептік жазба өшірілсе, құрылғыдағы барлық хабарлар, контактілер және басқа деректер қоса жойылады!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Бұл өзгертуге әкімші рұқсат етпеген"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Пайдаланушы өшірілсін ба?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Барлық қолданбалар және деректер жойылады."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Пайдаланушы өшірілмеді."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Қайталансын ба?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Жабу"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Қайталау"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Жаңа пайдаланушы енгізілсін бе?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Енгізілген жаңа пайдаланушы өз профилін реттеуі керек."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Кез келген пайдаланушы қолданбаларды басқа пайдаланушылар үшін жаңарта алады."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Есептік жазба өшірілмеді."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Есептік жазбаны синхрондау"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g>/<xliff:g id="ID_1">%1$d</xliff:g> элемент үшін синхрондау қосулы"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Барлық элементтер үшін синхрондау қосулы"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Барлық элементтер үшін синхрондау өшірулі"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Синхрондау ӨШІРУЛІ"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Синхрондауда қате кетті"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Соңғы рет синхрондалды: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Сихрондалуда…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Синхрондау үшін түртіңіз<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Қазір синхрондау"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Синхрондауды өшіру"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Синхрондауда қате шығуда. Кішкене уақыттан кейін қалпына келеді."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Қауіпсіздік"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Экранды құлыптау"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Жоқ"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Құпия сөз"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Құлып түрін таңдау"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Экранды құлыптау опциялары"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Құлыптау опциялары"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Өрнекті енгізіңіз"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Растау"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Қайта салу"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Экранды құлыптауды орнатыңыз"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN кодын таңдаңыз"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Өрнегіңізді жасаңыз"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Құпия сөзді таңдаңыз"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Құпия сөзді таңдаңыз"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Ағымдағы экран құлпы"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Қауіпсіздік үшін өрнекті орнатыңыз"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Өшіру"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Оңай құпия сөздерге АТ әкімшісі тыйым салды. Басқа құпия сөз енгізіп көріңіз."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Сандардың артатын, кемитін немесе қайталанатын ретіне рұқсат берілмейді"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Экранды құлыптау опциялары"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> күн бұрын"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Сенімді құрылғыны қосу"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Сенімді құрылғылар"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> құрылғы</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> құрылғы</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> жалғанған кезде, ол көлігіңіздің құлпын ашады. Әлдекім <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> құрылғыңызды алса, оған осы құрылғыға кіре алады."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Растау"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Сенімді құрылғыны өшіру"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Дайын"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Сенімді құрылғыны реттеу үшін қосымша қолданбаны пайдаланыңыз. Реттеу аяқталғаннан кейін, телефонды көлік анықтаған кезде, пайдаланушы профилінің құлпын аша аласыз."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Телефоныңызға қосымша қолданбаны жүктеп алыңыз."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Құрылғыларды жұптау үшін телефоныңыздан <xliff:g id="CAR_NAME">%1$s</xliff:g> көлігін таңдаңыз."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock бұл құрылғының қауіпсіздік функцияларын анықтай алмайды. Қауіпсіздік мақсатында сенімді құрылғы, көлігіңіздің құлпын өзіңіз ашқаннан кейін ғана, оны құлыптамай ұстап тұрады. Сенімді құрылғыңыз жақын маңайдағы басқа біреуде болса да, көлігіңіздің құлпын ашық ұстайды."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысын сенімді құрылғы ретінде енгізу"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысы сенімді құрылғы ретінде енгізілді."</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> тіркелмеді."</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Сенімді құрылғыны енгізу үшін аутентификация әдісін орнату қажет. Сенімді құрылғыңыз болмаса, профильге кіру үшін аутентификация керек."</string>
     <string name="forget" msgid="3971143908183848527">"Ұмыту"</string>
+    <string name="connect" msgid="5861699594602380150">"Жалғау"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Ажырату"</string>
     <string name="delete_button" msgid="5840500432614610850">"Жою"</string>
     <string name="remove_button" msgid="6664656962868194178">"Өшіру"</string>
     <string name="cancel" msgid="750286395700355455">"Бас тарту"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Деморежимнен шығу"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Демо есептік жазбаңыз жойылады және жүйенің зауыттық деректері қалпына келтіріледі. Пайдаланушының барлық деректері жоғалады."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Деморежимнен шығу"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"реттеуді аяқтау"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"қазір емес"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ЖАБУ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Көлік жүргізу кезінде бұл функция жұмыс істемейді."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Көлік жүргізу кезінде пайдаланушыны енгізу мүмкін емес."</string>
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index f6b6896..e56f0a1 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"អេក្រង់ពន្លឺតិច​ អេក្រង់ចុច ថ្ម"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"អេក្រង់ពន្លឺតិច យប់ ពណ៌ព្រឿងៗ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"មុខងារយប់"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"បណ្តាញ និង​អ៊ីនធឺណិត"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"បណ្ដាញទូរសព្ទចល័ត"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"ទិន្នន័យ​ទូរសព្ទចល័ត"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ចូល​ប្រើ​ទិន្នន័យ​ដោយ​ប្រើ​បណ្ដាញ​​ទូរសព្ទ​ចល័ត"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"បិទទិន្នន័យ​ទូរសព្ទចល័ត?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ការ​ប្រើ​ទិន្នន័យ"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ការកម្រិត និង​ការព្រមាន​ពីការប្រើទិន្នន័យ"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"វដ្ត​នៃការ​ប្រើ​ទិន្នន័យ​កម្មវិធី"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"កំណត់ការព្រមានពីការប្រើទិន្នន័យ"</string>
+    <string name="data_warning" msgid="116776633806885370">"ការព្រមានពីការប្រើទិន្នន័យ"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"កំណត់កម្រិត​ទិន្នន័យ"</string>
+    <string name="data_limit" msgid="227338836292511425">"កម្រិត​កំណត់​ទិន្នន័យ"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ការ​កម្រិត​លើ​ការ​ប្រើ​ទិន្នន័យ"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ឧបករណ៍​ចាក់សំឡេង​របស់​យានជំនិះ​​​អ្នក​នឹង​បិទ​ទិន្នន័យ​ទូរសព្ទចល័ត ​នៅ​ពេល​ដែល​វា​ប្រើប្រាស់​ទិន្នន័យ​​ដល់កម្រិតដែល​អ្នក​បាន​កំណត់។\n\nដោយសារ​​ការ​ប្រើ​ប្រាស់​ទិន្នន័យ​ត្រូវ​បាន​វាស់​ស្ទង់ដោយឧបករណ៍​ចាក់សំឡេង​របស់​យានជំនិះ​​​ ​ហើយក្រុមហ៊ុនបម្រើសេវាទូរសព្ទ​របស់​អ្នកអាចគណនាលើការប្រើប្រាស់​ខុសពីនោះ សូមពិចារណា​កំណត់កម្រិតប្រើប្រាស់​ទិន្នន័យ​ទាប។"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"រៀបចំ និង​គ្រប់គ្រង​ចំណុច​ចូល​ប្រើ​ដោយឥត​ខ្សែ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"កំពុង​បើក Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"កំពុង​បិទ Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"កំពុងផ្ទុក​បញ្ជី Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"បាន​បិទ Wi‑Fi"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"មិន​អាច​បំភ្លេច​បណ្ដាញ​បានទេ"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"មិន​អាច​ភ្ជាប់​បណ្ដាញ​បានទេ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"បញ្ចូល​បណ្ដាញ"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"បាន​បិទ Wi‑Fi"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ភ្ជាប់"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ពាក្យសម្ងាត់"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"បង្ហាញពាក្យសម្ងាត់"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ឈ្មោះ​បណ្តាញ"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"បញ្ចូល SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"សុវត្ថិភាព"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"កម្លាំងរលកសញ្ញា"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"កម្លាំងរលកសញ្ញា"</string>
     <string name="wifi_status" msgid="5688013206066543952">"ស្ថានភាព"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"ល្បឿនត​ភ្ជាប់"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"ប្រេកង់"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"អាសយដ្ឋាន IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"បង្ហាញពាក្យសម្ងាត់"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"បញ្ចូល​ឈ្មោះបណ្ដាញ"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"បញ្ចូល​ពាក្យសម្ងាត់"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ខ្សោយ​"</item>
-    <item msgid="2032262610626057081">"មធ្យម"</item>
-    <item msgid="3859756017461098953">"ខ្លាំង"</item>
-    <item msgid="1521103743353335724">"ខ្លាំងណាស់"</item>
+    <item msgid="7683058295076342057">"ខ្សោយ​"</item>
+    <item msgid="1639222824821660744">"មធ្យម"</item>
+    <item msgid="1838705897358163300">"ល្អ"</item>
+    <item msgid="6067166649320533751">"ខ្លាំងណាស់"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ប៊្លូធូស"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"បើកប៊្លូធូស"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ប៊្លូធូស"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"បានបិទប៊្លូធូស"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ព័ត៌មាន​លម្អិត​អំពីបណ្ដាញ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"អាសយដ្ឋាន MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"អាសយដ្ឋាន IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"របាំងបណ្តាញរង"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"អាសយដ្ឋាន IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ច្រក"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"ចំណូល​ចិត្ត Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"បើក Wi‑Fi ដោយស្វ័យប្រវត្តិ"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi នឹងបើកឡើងវិញ​នៅក្បែរបណ្តាញ​គុណភាពខ្ពស់ដែលបានរក្សាទុកដូចជា បណ្តាញនៅផ្ទះ​របស់អ្នកជាដើម"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"មិន​អាចប្រើ​បានទេ ដោយសារ​ទីតាំង​បាន​បិទ។ សូមបើក"<annotation id="link">"ទីតាំង"</annotation>"។"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"បើក​ការស្កេន Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"បើក"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"បានបើក​ការស្កេន Wi‑Fi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"ប្តូរទៅ​ទិន្នន័យទូរសព្ទ​ចល័តដោយស្វ័យ​ប្រវត្តិ"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"ប្រើទិន្នន័យ​ទូរសព្ទចល័ត​ នៅពេល​ដែល Wi‑Fi មិនមាន​ការភ្ជាប់អ៊ីនធឺណិត។ អាច​នឹង​គិតថ្លៃលើការ​ប្រើទិន្នន័យ។"</string>
+    <string name="learn_more" msgid="8214605928933358604">"ស្វែងយល់បន្ថែម"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ប៊្លូធូស"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"គ្រប់គ្រង​ការ​តភ្ជាប់ កំណត់​ឈ្មោះ​ឧបករណ៍ និង​ការរកឃើញ"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"កុំព្យូទ័រ"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"កាស"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ទូរសព្ទ"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ឧបករណ៍ផ្ដិតយករូប"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"កាស"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"​ឧបករណ៍សម្រាប់​ភ្ជាប់​ជាមួយ​កុំព្យូទ័រ"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ប៊្លូធូស"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"ឧបករណ៍​ដែល​បាន​ផ្គូផ្គង"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"ឧបករណ៍​ដែល​អាច​ភ្ជាប់បាន"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"គ្មាន​ឧបករណ៍​ដែល​បាន​ផ្គូផ្គង​ទេ"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"គ្មាន​ឧបករណ៍​ដែល​អាច​ភ្ជាប់បាន​ទេ"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"ឧបករណ៍​ដែល​បាន​ផ្គូផ្គង"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"ឈ្មោះ"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"ប្រើ​សម្រាប់"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"ប្ដូរ​ឈ្មោះ​ឧបករណ៍​ប៊្លូធូស"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"ឧបករណ៍​គ្មានឈ្មោះ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"ឧបករណ៍​ដែល​បាន​ផ្គូផ្គង"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"ផ្គូផ្គង​ឧបករណ៍ថ្មី"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"ប៊្លូធូស​នឹង​បើក​ដើម្បី​ផ្គូផ្គង"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ផ្ដាច់​ឧបករណ៍?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"យានជំនិះរបស់អ្នក​នឹងផ្ដាច់ពី <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ។"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"អាសយដ្ឋានប៊្លូធូស​របស់យានជំនិះ៖ <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"អាសយដ្ឋាន​ប៊្លូធូស​របស់ឧបករណ៍៖ <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"ឈ្មោះយានជំនិះ"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ប្ដូរឈ្មោះ​យានជំនិះនេះ"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ប្ដូរឈ្មោះឧបករណ៍"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"ប្ដូរ​ឈ្មោះ"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ឧបករណ៍​ដែល​អាច​ភ្ជាប់បាន"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"កម្រងព័ត៌មាន"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"សំណើ​ផ្គូផ្គង​តាម​ប៊្លូធូស"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ផ្គូផ្គង និងភ្ជាប់"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ប៊្លូធូស"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"កូដ​ផ្គូផ្គង​តាម​ប៊្លូធូស"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"កូដ PIN មាន​អក្សរ ឬសញ្ញា"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"វាយ​បញ្ចូល​កូដ​ផ្គូផ្គង បន្ទាប់​មក​ចុច Return ឬ Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"ជា​ធម្មតា​គឺ 0000 ឬ 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"សំណើ​ផ្គូផ្គង"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"ចុច​ដើម្បី​ផ្គូផ្គង​ជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ។"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ភាសា"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ភាសា និងការបញ្ចូល"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"ក្ដារចុច"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"គ្រប់គ្រងក្តារចុច"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"លទ្ធផលនៃការបំប្លែងអត្ថបទទៅជាការនិយាយ"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ម៉ាស៊ីន​ដែល​ចង់បាន"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ម៉ាស៊ីន​បច្ចុប្បន្ន"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"ល្បឿននៃការនិយាយ"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"កម្រិត​សំឡេង"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"កំណត់​ឡើង​វិញ"</string>
     <string name="sound_settings" msgid="3072423952331872246">"សំឡេង"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"កម្រិត​សំឡេង​រោទ៍"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"កម្រិតសំឡេង​ការរុករក"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"មេឌៀ"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"កំណត់​កម្រិត​សំឡេង​សម្រាប់​តន្ត្រី និង​វីដេអូ"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"ម៉ោងរោទ៍"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"សំឡេងរោទ៍ទូរសព្ទ"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"សំឡេង​ជូន​ដំណឹង​លំនាំដើម"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"សំឡេង​ម៉ោងរោទ៍​លំនាំដើម"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"កម្មវិធី និងការជូនដំណឹង"</string>
+    <string name="all_applications" msgid="7798210477486822168">"បង្ហាញ​​កម្មវិធី​ទាំងអស់"</string>
+    <string name="default_applications" msgid="1558183275638697087">"កម្មវិធី​លំនាំដើម"</string>
     <string name="applications_settings" msgid="794261395191035632">"ព័ត៌មាន​អំពី​កម្មវិធី"</string>
+    <string name="force_stop" msgid="2153183697014720520">"បង្ខំ​ឱ្យ​បញ្ឈប់"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"បង្ខំ​ឱ្យ​បញ្ឈប់?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"ប្រសិនបើ​អ្នក​បង្ខំ​ឱ្យបញ្ឈប់​កម្មវិធី នោះ​កម្មវិធីអាចនឹង​ដំណើរការ​មិន​ត្រឹមត្រូវ។"</string>
     <string name="disable_text" msgid="4358165448648990820">"បិទ"</string>
     <string name="enable_text" msgid="1794971777861881238">"បើក"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"លុប"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ប្រសិន​បើ​អ្នក​បិទ​កម្មវិធីនេះ Android និង​កម្មវិធី​ផ្សេង​ទៀត​ប្រហែលជា​មិនដំណើរការ​ដូចការគ្រោង​ទុកតទៅ​ទៀតទេ។"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"បិទកម្មវិធី"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ការអនុញ្ញាត"</string>
     <string name="application_version_label" msgid="8556889839783311649">"កំណែ៖ %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"មិន​បាន​ផ្តល់សិទ្ធិអនុញ្ញាតទេ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"មិន​បាន​ស្នើសុំសិទ្ធិអនុញ្ញាតទេ"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ការ​ប្រើ​ទិន្នន័យ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ការប្រើទិន្នន័យកម្មវិធី"</string>
-    <string name="force_stop" msgid="2153183697014720520">"បង្ខំ​ឱ្យ​បញ្ឈប់"</string>
     <string name="computing_size" msgid="5791407621793083965">"កំពុង​គណនា…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">ការអនុញ្ញាតបន្ថែម <xliff:g id="COUNT_1">%d</xliff:g></item>
       <item quantity="one">ការអនុញ្ញាតបន្ថែម <xliff:g id="COUNT_0">%d</xliff:g></item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"ជំនួយ និងការបញ្ចូលសំឡេង"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"កម្មវិធី​ជំនួយ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ប្រើ​អត្ថបទ​ពី​អេក្រង់"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"អនុញ្ញាតឱ្យ​កម្មវិធីជំនួយ​ចូលប្រើ​ខ្លឹមសារ​ជា​អត្ថបទ​លើអេក្រង់"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ប្រើ​រូបថតអេក្រង់"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"អនុញ្ញាតឱ្យ​កម្មវិធីជំនួយ​ចូលប្រើ​រូបភាព​អេក្រង់"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"សេវាកម្មបំពេញដោយស្វ័យប្រវត្តិ"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"គ្មាន"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"បានជ្រើសរើស"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"ជំនួយការនឹងអាចអានព័ត៌មានអំពីកម្មវិធីដែលកំពុងប្រើនៅក្នុងប្រព័ន្ធរបស់អ្នក រួម​ទាំងព័ត៌មានដែលអាចមើលឃើញនៅលើអេក្រង់របស់អ្នក ឬព័ត៌មានដែលអាចចូលប្រើនៅក្នុងកម្មវិធី​នោះផងដែរ​។"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;សូម​ប្រាកដថា​អ្នក​ទុក​ចិត្ត​លើ​កម្មវិធី​នេះ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ប្រើប្រាស់​អ្វី​ដែល​មាននៅ​លើ​អេក្រង់​របស់អ្នក ដើម្បី​កំណត់​អ្វីដែល​អាចបំពេញ​ដោយ​ស្វ័យប្រវត្តិ។"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"បញ្ចូល​សេវាកម្ម"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"ទីតាំង"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"សំណើ​ទីតាំង​ថ្មីៗ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"គ្មាន​សំណើ​ទីតាំង​ថ្មីៗ​ទេ"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ការ​អនុញ្ញាត​កម្រិត​កម្មវិធី"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"ការស្កេន"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"សេវាកម្ម​ទីតាំង"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"ការស្កេន Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"អនុញ្ញាត​ឱ្យ​កម្មវិធី និង​សេវាកម្ម​ស្កេនរក​បណ្ដាញ Wi‑Fi បាន​គ្រប់ពេល ទោះបីជា Wi‑Fi ​បិទក៏ដោយ។ ឧទាហរណ៍ សកម្មភាព​នេះ​អាច​ត្រូវ​បាន​ប្រើ ដើម្បី​កែលម្អ​មុខងារ និង​សេវាកម្មនានា​ដែល​ផ្អែក​លើ​ទីតាំង។"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ការស្កេនប៊្លូធូស"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"អនុញ្ញាត​ឱ្យ​កម្មវិធី និងសេវាកម្ម​ស្កេនរក​ឧបករណ៍ដែល​នៅ​ជិត​បាន​គ្រប់ពេល ទោះបីជា​ប៊្លូធូសបិទ​ក៏ដោយ។ ឧទាហរណ៍ សកម្មភាព​នេះ​អាច​ត្រូវ​បាន​ប្រើ ដើម្បី​កែលម្អ​មុខងារ និងសេវាកម្មនានា​ដែល​ផ្អែក​លើ​ទីតាំង។"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"ប្រព័ន្ធ"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"បច្ចុប្បន្នភាព​ប្រព័ន្ធ"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"បច្ចុប្បន្នភាព​ប្រព័ន្ធ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"កំណែ Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"កម្រិតបំណះសុវត្ថិភាព Android"</string>
     <string name="model_info" msgid="4966408071657934452">"ម៉ូដែល"</string>
     <string name="baseband_version" msgid="2370088062235041897">"កំណែ​មូលដ្ឋាន"</string>
     <string name="kernel_version" msgid="7327212934187011508">"កំណែ​ខឺណែល"</string>
     <string name="build_number" msgid="3997326631001009102">"លេខ​កំណែបង្កើត"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"អាសយដ្ឋាន​ប៊្លូធូស"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"មិនមានទេ"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"ស្ថានភាព"</string>
     <string name="device_status" msgid="267298179806290920">"ស្ថានភាព"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"រក្សាសិទ្ធិ"</string>
     <string name="license_title" msgid="936705938435249965">"អាជ្ញាបណ្ណ"</string>
     <string name="terms_title" msgid="5201471373602628765">"លក្ខខណ្ឌ​"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"អាជ្ញាបណ្ណ System WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"អាជ្ញាបណ្ណ System WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"ផ្ទាំង​រូបភាព"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ក្រុមហ៊ុន​ផ្ដល់​សេវារូបភាព​ផ្កាយរណប៖\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"អាជ្ញាបណ្ណភាគីទីបី"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"មាន​បញ្ហា​ក្នុង​ការ​ផ្ទុក​អាជ្ញាបណ្ណ។"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"កំពុង​ផ្ទុក…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">ឥឡូវនេះ នៅសល់ <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ជំហាន​ទៀត អ្នកនឹង​​ក្លាយ​ជាអ្នកអភិវឌ្ឍន៍​។</item>
+      <item quantity="one">ឥឡូវនេះ នៅសល់ <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> ជំហាន​ទៀត អ្នកនឹង​​​ក្លាយ​ជាអ្នកអភិវឌ្ឍន៍​។</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"ឥឡូវ​នេះ អ្នក​ក្លាយ​ជា​អ្នក​អភិវឌ្ឍ​ន៍ហើយ!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"មិន​ចាំបាច់​ទេ អ្នក​​ក្លាយ​ជា​អ្នក​អភិវឌ្ឍ​ន៍​ហើយ។"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ជម្រើស​សម្រាប់អ្នក​អភិវឌ្ឍន៍"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ជម្រើស​កំណត់​ឡើងវិញ"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ការកំណត់​បណ្តាញ កម្មវិធី ឬ​ឧបករណ៍​ឡើងវិញ"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"កំណត់បណ្ដាញ​ឡើងវិញ"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"សកម្មភាព​នេះ​នឹង​កំណត់​ការកំណត់​បណ្តាញ​ទាំងអស់​ឡើងវិញ រួម​ទាំង៖"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"ទិន្នន័យ​ទូរសព្ទចល័ត"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ប៊្លូធូស"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"លុប eSIM សម្រាប់យានជំនិះ​ទាំងអស់"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ការធ្វើបែបនេះនឹងមិនបោះបង់គម្រោង​សេវាកម្មរបស់អ្នកទេ។"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"មិន​អាច​កំណត់ eSIM ​ឡើងវិញ​បានទេ"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"ជ្រើសរើស​បណ្តាញ"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"កំណត់ការកំណត់ឡើងវិញ"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"កំណត់ឡើងវិញ?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"កំណត់ការកំណត់បណ្តាញទាំងអស់ឡើងវិញ? អ្នកមិនអាចត្រឡប់សកម្មភាពនេះវិញបានទេ!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"កំណត់ការកំណត់ឡើងវិញ"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"បានកំណត់ការកំណត់បណ្តាញឡើងវិញ"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"កំណត់​ចំណូល​ចិត្ត​កម្មវិធី​ឡើងវិញ"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ការធ្វើបែបនេះ​នឹងកំណត់​ចំណូលចិត្ត​ទាំងអស់​ឡើងវិញសម្រាប់៖\n\n"<li>"កម្មវិធី​ដែលបានបិទ"</li>\n<li>"ការជូនដំណឹង​កម្មវិធីដែលបានបិទ"</li>\n<li>"កម្មវិធីលំនាំដើម​សម្រាប់​សកម្មភាពផ្សេងៗ"</li>\n<li>"ការដាក់កំហិតទិន្នន័យផ្ទៃខាងក្រោយ​លើកម្មវិធីផ្សេងៗ"</li>\n<li>"ការដាក់កំហិត​លើការអនុញ្ញាត​ទាំងឡាយ"</li>\n\n"អ្នកនឹងមិន​បាត់បង់ទិន្នន័យ​កម្មវិធីណាមួយឡើយ។"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"កំណត់​កម្មវិធី​ឡើងវិញ"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"បាន​កំណត់​ចំណូល​ចិត្ត​កម្មវិធីឡើង​វិញ​ហើយ"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"លុប​ទិន្នន័យ​ទាំងអស់ (កំណត់ដូច​ដើម​ឡើងវិញ)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ការធ្វើបែបនេះ​នឹងលុប​ទិន្នន័យ​ទាំងអស់​ពីឧបករណ៍​ចាក់សំឡេង​របស់​យានជំនិះ​អ្នក រួមទាំង៖\n\n"<li>"កម្មវិធី​ដែលបាន​ទាញយក"</li>\n<li>"ទិន្នន័យ​កម្មវិធី និង​ប្រព័ន្ធ ព្រមទាំង​ការកំណត់"</li>\n<li>"គណនី Google របស់អ្នក"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"បច្ចុប្បន្ន​ អ្នក​បាន​ចូល​គណនី​ដូច​ខាង​ក្រោម៖"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"មាន​វត្តមានរបស់​អ្នកប្រើប្រាស់​ផ្សេងទៀត​នៅលើ​យានជំនិះនេះ។"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"កំណត់​យានជំនិះ​ឡើងវិញ"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"កំណត់ឡើងវិញ?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"លុប​ព័ត៌មាន​ផ្ទាល់ខ្លួន និង​កម្មវិធី​ដែលបាន​ទាញយក​ទាំងអស់​របស់អ្នក? អ្នក​មិនអាច​ត្រឡប់​សកម្មភាពនេះ​វិញបានទេ!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"លុប​អ្វីគ្រប់យ៉ាង"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"កំពុងលុប"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"សូម​រង់ចាំ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"កាលបរិច្ឆេទ និង​ម៉ោង"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"កំណត់​កាលបរិច្ឆេទ និង​ម៉ោង"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"កំណត់​កាលបរិច្ឆេទ ម៉ោង ល្វែងម៉ោង និង​ទម្រង់"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"តម្រៀប​តាម​ល្វែងម៉ោង"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"កាលបរិច្ឆេទ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"ម៉ោង"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"បញ្ចូល​អ្នក​ប្រើប្រាស់"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"បញ្ចូលគណនី"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"លុប​អ្នក​ប្រើប្រាស់"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"អ្នក​ប្រើប្រាស់​ថ្មី"</string>
-    <string name="user_guest" msgid="3465399481257448601">"ភ្ញៀវ"</string>
     <string name="user_admin" msgid="1535484812908584809">"អ្នកគ្រប់គ្រង"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"បាន​ចូលជា​អ្នក​គ្រប់គ្រង"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ការ​អនុញ្ញាត​គ្រប់គ្រង​ទាំងអស់"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"កំណត់​ជាអ្នក​គ្រប់គ្រង"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"អ្នក​ប្រើប្រាស់​នឹងអាច​លុបអ្នក​ប្រើប្រាស់ រួមទាំង​អ្នកគ្រប់គ្រង​ផ្សេងទៀត និង​កំណត់​ប្រព័ន្ធ​ដូចដើម​ឡើងវិញ។"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"សកម្មភាព​នេះ​មិនអាច​ត្រឡប់វិញ​បានទេ។"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"បាទ/ចាស កំណត់​ជាអ្នក​គ្រប់គ្រង"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"បង្កើត​អ្នកប្រើប្រាស់ថ្មី"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ហៅ​ទូរសព្ទ"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ការផ្ញើសារតាមរយៈទិន្នន័យទូរសព្ទចល័តរបស់​រថយន្ត"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"ដំឡើង​កម្មវិធី​ថ្មី"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"លុបកម្មវិធី"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"បញ្ចូល​អ្នក​ប្រើប្រាស់"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"អ្នក​ប្រើប្រាស់​ថ្មី"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"បញ្ចូល​អ្នក​ប្រើប្រាស់​ថ្មី?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"នៅពេលដែល​អ្នក​បញ្ចូល​អ្នក​ប្រើប្រាស់​ថ្មី បុគ្គល​នោះ​ត្រូវតែ​រៀបចំ​ទំហំ​ផ្ទុក​របស់គេ។"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"អ្នកប្រើប្រាស់​ណាក៏​អាច​ដំឡើង​ជំនាន់កម្មវិធី​សម្រាប់​អ្នក​ប្រើប្រាស់​ទាំងអស់​ផ្សេង​ទៀត​បាន​ដែរ។"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"​បាន​ឈាន​ដល់ចំនួន​កំណត់អ្នកប្រើប្រាស់"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">អ្នកអាច​បង្កើត​អ្នកប្រើប្រាស់​បាន​រហូតដល់ <xliff:g id="COUNT">%d</xliff:g> នាក់។</item>
+      <item quantity="one">អាច​បង្កើត​អ្នក​ប្រើប្រាស់​បាន​​តែម្នាក់ប៉ុណ្ណោះ។</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"មិន​អាច​បង្កើត​អ្នកប្រើប្រាស់​ថ្មី​បាន​ទេ"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"លុបអ្នកប្រើប្រាស់​នេះមែនទេ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"កម្មវិធី និង​ទិន្នន័យ​ទាំងអស់​នឹង​ត្រូវ​បាន​លុប។"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"មិនអាច​លុបអ្នកប្រើប្រាស់​បានទេ។"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ច្រានចោល"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ព្យាយាមម្ដងទៀត"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"លុបអ្នកប្រើប្រាស់​ចុងក្រោយ​មែនទេ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"​បន្ទាប់ពី​លុបអ្នក​ប្រើប្រាស់​នៅសល់ចុងក្រោយ​សម្រាប់​រថយន្តនេះ អ្នកប្រើប្រាស់​ដែលជា​អ្នកគ្រប់គ្រងថ្មី​នឹងត្រូវបាន​បង្កើត។"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ទិន្នន័យ ការកំណត់ និងកម្មវិធី​ទាំងអស់​ដែលពាក់ព័ន្ធ​ជាមួយ​អ្នកប្រើប្រាស់​នេះនឹង​ត្រូវបាន​លុប។ អ្នកនឹង​​ត្រូវរៀបចំ​ប្រព័ន្ធ​ម្ដងទៀត។"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"ជ្រើសរើស​អ្នកគ្រប់គ្រងថ្មី"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"អ្នកត្រូវការ​​អ្នកគ្រប់គ្រងយ៉ាងហោចណាស់​ម្នាក់។ ដើម្បីលុប​អ្នកគ្រប់គ្រង​នេះ សូមជ្រើសរើស​អ្នកជំនួស​ជាមុនសិន។"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"ជ្រើសរើសអ្នកគ្រប់គ្រង"</string>
+    <string name="user_guest" msgid="3465399481257448601">"ភ្ញៀវ"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ភ្ញៀវ"</string>
     <string name="user_switch" msgid="6544839750534690781">"ប្ដូរ"</string>
     <string name="current_user_name" msgid="3813671533249316823">"អ្នក (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ឈ្មោះ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"មិន​បាន​រៀបចំ"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"កែសម្រួល​ឈ្មោះអ្នក​ប្រើប្រាស់"</string>
     <string name="users_list_title" msgid="770764290290240909">"អ្នកប្រើប្រាស់"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"បានផ្ដល់​ការអនុញ្ញាត​ឱ្យ %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"គណនី"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"អ្នក​ប្រើប្រាស់"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"បញ្ចូលគណនី"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"មិន​មាន​ការ​បញ្ចូល​គណនី​ទេ"</string>
     <string name="account_list_title" msgid="7631588514613843065">"គណនី​សម្រាប់ <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ធ្វើ​សមកាលកម្ម​ទិន្នន័យ​ដោយស្វ័យប្រវត្តិ"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"អនុញ្ញាតឱ្យ​កម្មវិធី​ផ្ទុកទិន្នន័យ​ឡើងវិញ​ដោយស្វ័យប្រវត្តិ"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"បើក​ការ​ធ្វើ​សម​កាល​កម្ម​ទិន្នន័យ​ស្វ័យ​ប្រវត្តិ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ការ​ផ្លាស់ប្ដូរ​ណា​មួយ​ដែល​អ្នក​ធ្វើ​ឡើងចំពោះ​គណនី​របស់​អ្នក​នៅ​លើ​បណ្ដាញ នឹង​ត្រូវ​បាន​ចម្លង​ដោយ​ស្វ័យ​ប្រវត្តិ​ទៅ​ឧបករណ៍​របស់​អ្នក។\n\nគណនី​មួយ​ចំនួន​ក៏​អាច​ចម្លង​ការ​ផ្លាស់ប្ដូរ​របស់អ្នក​នៅលើ​ទូរសព្ទ​ទៅ​បណ្ដាញដោយ​ស្វ័យ​ប្រវត្តិផងដែរ។ គណនី Google ដំណើរការ​តាម​វិធី​នេះ។"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"បិទការធ្វើ​សមកាលកម្មទិន្នន័យស្វ័យ​ប្រវតិ្ត?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ការធ្វើបែបនេះ​នឹងរក្សាទិន្នន័យ ប៉ុន្តែអ្នក​នឹងត្រូវធ្វើសមកាលកម្ម​គណនីនីមួយៗ​ដោយផ្ទាល់ ដើម្បីប្រមូលព័ត៌មានថ្មីៗ។ ហើយអ្នកនឹង​មិនទទួលបាន​ការជូនដំណឹងទេ នៅពេលមានការធ្វើ​បច្ចុប្បន្នភាព។"</string>
     <string name="account_details_title" msgid="7529571432258448573">"ព័ត៌មាន​​អំពី​​គណនី"</string>
     <string name="add_account_title" msgid="5988746086885210040">"បញ្ចូលគណនី"</string>
     <string name="add_an_account" msgid="1072285034300995091">"បញ្ចូលគណនី"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"លុប​គណនី​​"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"លុបគណនី​?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ការលុប​គណនី​នេះ​នឹង​លុប​សារ ទំនាក់ទំនង និង​ទិន្នន័យ​ផ្សេងៗ​របស់​គណនី​នេះ​ទាំង​អស់​ចេញ​ពី​ឧបករណ៍!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ការផ្លាស់ប្ដូរនេះ​មិនត្រូវ​បាន​អនុញ្ញាត​ដោយ​អ្នក​គ្រប់គ្រង​របស់អ្នក​ទេ"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"លុប​អ្នកប្រើប្រាស់​នេះ?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"កម្មវិធី និង​ទិន្នន័យ​ទាំងអស់​នឹង​ត្រូវ​បាន​លុប។"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"មិនអាច​លុប​អ្នកប្រើប្រាស់​បានទេ។"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"ព្យាយាម​ម្ដងទៀត?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"ច្រានចោល"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ព្យាយាមម្ដងទៀត"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"បញ្ចូល​អ្នក​ប្រើប្រាស់​ថ្មី?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"នៅពេលដែល​អ្នក​បញ្ចូល​អ្នក​ប្រើប្រាស់​ថ្មី បុគ្គល​នោះ​ត្រូវតែ​រៀបចំ​ទំហំ​ផ្ទុក​របស់គេ។"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"អ្នកប្រើប្រាស់​ណាក៏​អាច​ដំឡើង​ជំនាន់កម្មវិធី​សម្រាប់​អ្នក​ប្រើប្រាស់​ទាំងអស់​ផ្សេង​ទៀត​បាន​ដែរ។"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"មិនអាច​លុបគណនី​បានទេ។"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"ធ្វើសមកាលកម្មគណនី"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"បើក​សមកាលកម្មសម្រាប់ធាតុ <xliff:g id="ID_1">%1$d</xliff:g> ក្នុងចំណោម <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"បើក​សមកាលកម្ម​សម្រាប់ធាតុ​ទាំងអស់"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"បិទ​សមកាលកម្ម​សម្រាប់ធាតុ​ទាំងអស់"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"បានបិទការធ្វើសមកាលកម្ម"</string>
+    <string name="sync_error" msgid="6698021343089247914">"មានបញ្ហាក្នុង​ការ​ធ្វើ​សម​កាល​កម្ម"</string>
+    <string name="last_synced" msgid="4745124489150101529">"បាន​ធ្វើ​សម​កាល​កម្ម​លើកចុងក្រោយ​នៅថ្ងៃទី <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"កំពុង​ធ្វើ​សម​កាល​កម្មឥឡូវនេះ…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"ចុចដើម្បីធ្វើសមកាលកម្មឥឡូវនេះ <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ធ្វើសម្មកាលកម្មឥឡូវនេះ"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"បោះបង់​ការ​ធ្វើ​សម​កាល​កម្ម"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"ការធ្វើសម​កាលកម្ម​កំពុងជួបបញ្ហា​ឥឡូវនេះ។ ការធ្វើសមកាលកម្ម​នឹងមានឡើងវិញ​ក្នុងពេលបន្តិច​ទៀត​នេះ។"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"សុវត្ថិភាព"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ការចាក់សោអេក្រង់"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"គ្មាន"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"លេខ​កូដ PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"ពាក្យសម្ងាត់"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"ជ្រើសរើស​ប្រភេទ​សោ"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"ជម្រើស​ចាក់សោអេក្រង់"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"ជម្រើសចាក់សោ"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"បញ្ចូល​លំនាំ​របស់​អ្នក"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"បញ្ជាក់"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"គូរ​ឡើងវិញ"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"កំណត់​ការចាក់​សោអេក្រង់"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"ជ្រើសរើសកូដ PIN របស់អ្នក"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"ជ្រើស​រើសលំនាំ​របស់​អ្នក"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"ជ្រើសរើស​ពាក្យសម្ងាត់​របស់អ្នក"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"ជ្រើសរើស​ពាក្យ​សម្ងាត់​របស់​អ្នក"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"ការចាក់សោអេក្រង់បច្ចុប្បន្ន"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"ដើម្បីសុវត្ថិភាព សូមកំណត់លំនាំ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"សម្អាត"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ពាក្យសម្ងាត់​លក្ខណៈ​សាមញ្ញ​ត្រូវ​បាន​ទប់ស្កាត់​ដោយ​អ្នក​គ្រប់គ្រង​ព័ត៌មាន​វិទ្យា​របស់អ្នក។ សាកល្បង​ប្រើ​ពាក្យ​សម្ងាត់​ផ្សេង​ពី​នេះ។"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"មិន​អនុញ្ញាត​ឱ្យ​មាន​លេខ​លំដាប់​ឡើង ចុះ ឬ​ដដែលៗ​ទេ។"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ជម្រើស​ការចាក់សោអេក្រង់"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\nថ្ងៃ <xliff:g id="DATE">%2$s</xliff:g>៖ <xliff:g id="NUM_DAYS">%3$s</xliff:g> ថ្ងៃមុន"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"បញ្ចូល​ឧបករណ៍​ដែលទុកចិត្ត"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"ឧបករណ៍​ដែល​ទុកចិត្ត"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other">ឧបករណ៍ <xliff:g id="COUNT_1">%d</xliff:g></item>
+      <item quantity="one">ឧបករណ៍ <xliff:g id="COUNT_0">%d</xliff:g></item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> របស់​អ្នក​នឹង​ដោះសោរថយន្ត​នេះ នៅពេល​ភ្ជាប់។ ប្រសិនបើ​នរណាម្នាក់យក​ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> របស់អ្នក បុគ្គល​នោះ​អាច​នឹងចូលប្រើ​ឧបករណ៍​នេះ​បាន"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"បញ្ជាក់"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"លុបឧបករណ៍ដែលទុកចិត្ត"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"រួចរាល់"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"ប្រើ​កម្មវិធី​ដៃគូ ដើម្បី​រៀបចំឧបករណ៍​ដែល​ទុក​ចិត្ត។ បន្ទាប់ពីរៀបចំរួចហើយ អ្នក​នឹង​អាច​ដោះ​សោ​កម្រង​ព័ត៌មាន​អ្នក​ប្រើប្រាស់​របស់អ្នក នៅពេលយានជំនិះ​រកឃើញ​ទូរសព្ទ​របស់អ្នក"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ទាញយក​កម្មវិធី​ដៃគូ​នៅលើទូរសព្ទរបស់អ្នក"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. ជ្រើសរើស​ <xliff:g id="CAR_NAME">%1$s</xliff:g> នៅលើ​ទូរសព្ទ​របស់អ្នក ដើម្បីផ្គូផ្គង​ឧបករណ៍"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock រក​មិនឃើញ​មុខងារ​សុវត្ថិភាព​នៅលើ​ឧបករណ៍​នេះ​ទេ។ ដើម្បី​ជួយ​ការពារ​រថយន្ត​​របស់​អ្នក  ឧបករណ៍​ដែល​ទុកចិត្តនឹង​អាច​រក្សា​ឱ្យ​រថយន្ត​របស់អ្នកដោះសោ​ បន្ទាប់​ពីអ្នក​បាន​ដោះ​សោ​រថយន្ត​ហើយ​ប៉ុណ្ណោះ។ ឧបករណ៍​ដែល​ទុកចិត្តរបស់អ្នក​អាចរក្សា​ឱ្យ​រថយន្ត​របស់អ្នកដោះសោ​ នៅពេល​វា​ស្ថិតនៅ​ជិត ទោះបី​ជា​អ្នក​ផ្សេងទៀត​កំពុង​កាន់ឧបករណ៍​នោះ​ក៏​ដោយ។"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"បញ្ចូល <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ជា​ឧបករណ៍​ដែល​ទុកចិត្ត"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"បាន​បញ្ចូល <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ជាឧបករណ៍ដែលទុកចិត្ត​ដោយជោគជ័យ​ហើយ"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"មិន​អាច​ចុះឈ្មោះ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> បាន​ទេ​"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ការបញ្ចូល​ឧបករណ៍​ដែល​ទុកចិត្ត​តម្រូវឱ្យអ្នក​កំណត់​វិធីផ្ទៀងផ្ទាត់​បន្ទាប់។ ប្រសិនបើអ្នក​គ្មាន​ឧបករណ៍​ដែលទុកចិត្ត​ជាប់ខ្លួនអ្នក​ទេ នោះនឹង​តម្រូវឱ្យ​មានការផ្ទៀងផ្ទាត់ ដើម្បី​ចូលប្រើ​កម្រងព័ត៌មាន​របស់អ្នក។"</string>
     <string name="forget" msgid="3971143908183848527">"បំភ្លេច"</string>
+    <string name="connect" msgid="5861699594602380150">"ភ្ជាប់"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ផ្ដាច់"</string>
     <string name="delete_button" msgid="5840500432614610850">"លុប"</string>
     <string name="remove_button" msgid="6664656962868194178">"លុប"</string>
     <string name="cancel" msgid="750286395700355455">"បោះបង់"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ចាក​ចេញ​ពីមុខងារបង្ហាញ​សាកល្បង"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ការចាកចេញ​នេះ​នឹង​លុប​គណនីបង្ហាញ​សាកល្បង និងកំណត់​ទិន្នន័យប្រព័ន្ធ​ដូច​ចេញ​ពី​រោងចក្រ។​ ទិន្នន័យ​អ្នក​ប្រើប្រាស់​ទាំងអស់​នឹង​បាត់បង់។"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ចាក​ចេញ​ពីការបង្ហាញ​សាកល្បង"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"បញ្ចប់​ការរៀបចំ"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"កុំ​ទាន់"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ច្រានចោល"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"មិនអាច​ប្រើមុខងារ​នេះបានទេ ខណៈពេល​កំពុង​បើកបរ។"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"មិនអាច​បញ្ចូល​អ្នកប្រើប្រាស់​ខណៈពេល​បើកបរ​បានទេ។"</string>
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index ab76ec1..92c956d 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ಡಿಮ್‌‌ ಪರದೆ, ಟಚ್‌ಸ್ಕ್ರೀನ್, ಬ್ಯಾಟರಿ"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ಮಂದ ಪರದೆ, ರಾತ್ರಿ ,ಟಿಂಟ್"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ರಾತ್ರಿ ಮೋಡ್"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್‌"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"ಮೊಬೈಲ್ ಡೇಟಾ"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ ಬಳಸಿ ಡೇಟಾ ಪ್ರವೇಶಿಸಿ"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"ಮೊಬೈಲ್ ಡೇಟಾ ಆಫ್ ಮಾಡಬೇಕೆ?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ಡೇಟಾ ಬಳಕೆ"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ಡೇಟಾ ಎಚ್ಚರಿಕೆ ಮತ್ತು ಮಿತಿ"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ಆ್ಯಪ್‌ ಡೇಟಾ ಬಳಕೆ ಆವರ್ತನೆ"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ಡೇಟಾ ಎಚ್ಚರಿಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
+    <string name="data_warning" msgid="116776633806885370">"ಡೇಟಾ ಎಚ್ಚರಿಕೆ"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ಡೇಟಾ ಮಿತಿ ಹೊಂದಿಸಿ"</string>
+    <string name="data_limit" msgid="227338836292511425">"ಡೇಟಾ ಮಿತಿ"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ಡೇಟಾ ಬಳಕೆಯನ್ನು ಮಿತಿಗೊಳಿಸುವಿಕೆ"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ನೀವು ಹೊಂದಿಸಿರುವ ಮಿತಿಯನ್ನು ತಲುಪಿದಾಗ ನಿಮ್ಮ ವಾಹನದ ಹೆಡ್ ಯೂನಿಟ್ ಒಮ್ಮೆ ನಿಮ್ಮ ಮೊಬೈಲ್ ಡೇಟಾವನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ.\n\n ಡೇಟಾ ಬಳಕೆಯನ್ನು ಹೆಡ್ ಯೂನಿಟ್ ಮೂಲಕ ಅಳೆಯಲಾಗುವ ಕಾರಣ ಮತ್ತು ನಿಮ್ಮ ವಾಹಕವು ಬಳಕೆಯನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಪರಿಗಣಿಸಬಹುದಾದ ಕಾರಣ, ಸುರಕ್ಷಿತ ಮಿತಿಯನ್ನು ಹೊಂದಿಸುವುದು ಸೂಕ್ತ."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"ವೈ‑ಫೈ"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"ವಯರ್‌ಲೆಸ್‌ ಪ್ರವೇಶಿಸುವಿಕೆ ಅಂಶಗಳನ್ನು ಸೆಟಪ್‌ ಮಾಡಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ವೈ-ಫೈ ಆನ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ವೈ-ಫೈ ಆಫ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"ವೈ-ಫೈ ಪಟ್ಟಿಯನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"ವೈ-ಫೈ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"ನೆಟ್‌ವರ್ಕ್‌ ಮರೆಯಲು ವಿಫಲವಾಗಿದೆ"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ನೆಟ್‌ವರ್ಕ್‌ ಸಂಪರ್ಕಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ನೆಟ್‌ವರ್ಕ್‌ ಸೇರಿಸಿ"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"ವೈ-ಫೈ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ಸಂಪರ್ಕಿಸಿ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ಪಾಸ್‌ವರ್ಡ್"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"ಪಾಸ್‌ವರ್ಡ್ ತೋರಿಸಿ"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ನೆಟ್‌ವರ್ಕ್‌ ಹೆಸರು"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID ನಮೂದಿಸಿ"</string>
     <string name="wifi_security" msgid="158358046038876532">"ಭದ್ರತೆ"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"ಸಿಗ್ನಲ್ ಸಾಮರ್ಥ್ಯ"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"ಸಿಗ್ನಲ್ ಸಾಮರ್ಥ್ಯ"</string>
     <string name="wifi_status" msgid="5688013206066543952">"ಸ್ಥಿತಿ"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"ಲಿಂಕ್ ವೇಗ"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"ತರಂಗಾಂತರ"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP ವಿಳಾಸ"</string>
+    <string name="show_password" msgid="2074628020371139240">"ಪಾಸ್‌ವರ್ಡ್ ತೋರಿಸಿ"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"ನೆಟ್‌ವರ್ಕ್ ಹೆಸರನ್ನು ನಮೂದಿಸಿ"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ಕಳಪೆ"</item>
-    <item msgid="2032262610626057081">"ಸಾಮಾನ್ಯ"</item>
-    <item msgid="3859756017461098953">"ಉತ್ತಮ"</item>
-    <item msgid="1521103743353335724">"ಉತ್ಕೃಷ್ಟ"</item>
+    <item msgid="7683058295076342057">"ಕಳಪೆ"</item>
+    <item msgid="1639222824821660744">"ಸಾಮಾನ್ಯ"</item>
+    <item msgid="1838705897358163300">"ಉತ್ತಮ"</item>
+    <item msgid="6067166649320533751">"ಅತ್ಯುತ್ತಮ"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ಬ್ಲೂಟೂತ್‌"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ಬ್ಲೂಟೂತ್ ಆನ್ ಮಾಡಿ"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ಬ್ಲೂಟೂತ್‌"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ಬ್ಲೂಟೂತ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ನೆಟ್‌ವರ್ಕ್‌ ವಿವರಗಳು"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ವಿಳಾಸ"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ವಿಳಾಸ"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"ಸಬ್‌ನೆಟ್‌ ಮಾಸ್ಕ್‌"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ವಿಳಾಸಗಳು"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ಗೇಟ್‌ವೇ"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"ವೈ-ಫೈ ಆದ್ಯತೆಗಳು"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"ವೈ-ಫೈ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಮಾಡಿ"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"ನಿಮ್ಮ ಮನೆಯ ನೆಟ್‌ವರ್ಕ್‍ನಂತಹ ಉಳಿಸಿದ ಉನ್ನತ-ಗುಣಮಟ್ಟದ ನೆಟ್‌ವರ್ಕ್‌ಗಳ ಸಮೀಪದಲ್ಲಿರುವಾಗ ವೈ-ಫೈ ಸ್ವಯಂ ಆನ್ ಆಗುತ್ತದೆ"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"ಸ್ಥಳವನ್ನು ಆಫ್ ಮಾಡಿರುವ ಕಾರಣ ಲಭ್ಯವಿಲ್ಲ. "<annotation id="link">"ಸ್ಥಳವನ್ನು"</annotation>" ಆನ್ ಮಾಡಿ."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"ವೈ-ಫೈ ಸ್ಕ್ಯಾನ್‌ ಮಾಡುವಿಕೆಯನ್ನು ಆನ್ ಮಾಡುವುದೇ?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ಆನ್ ಮಾಡಿ"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"ವೈ-ಫೈ ಸ್ಕ್ಯಾನಿಂಗ್ ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"ಮೊಬೈಲ್ ಡೇಟಾಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬದಲಿಸಿ"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"ವೈ-ಫೈ ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರದಿದ್ದರೆ, ಮೊಬೈಲ್ ಡೇಟಾವನ್ನು ಬಳಸಿ. ಡೇಟಾ ಬಳಕೆಯ ಶುಲ್ಕ ಅನ್ವಯಿಸಬಹುದು."</string>
+    <string name="learn_more" msgid="8214605928933358604">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ಬ್ಲೂಟೂತ್‌"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"ಸಂಪರ್ಕಗಳನ್ನು ನಿರ್ವಹಿಸಿ, ಸಾಧನದ ಹೆಸರು &amp; ಅನ್ವೇಷಣೆಯಾಗುವಿಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"ಕಂಪ್ಯೂಟರ್‌"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ಹೆಡ್‌ಸೆಟ್"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ಫೋನ್"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ಇಮೇಜಿಂಗ್"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"ಹೆಡ್‌ಫೋನ್"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ಪೆರಿಪೆರಲ್ ಇನ್‌ಪುಟ್‌‌"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ಬ್ಲೂಟೂತ್‌"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"ಜೋಡಿಸಲಾದ ಸಾಧನಗಳು"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"ಲಭ್ಯವಿರುವ ಸಾಧನಗಳು"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"ಯಾವುದೇ ಜೋಡಿಸಲಾದ ಸಾಧನಗಳಿಲ್ಲ"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"ಲಭ್ಯವಿರುವ ಯಾವುದೇ ಸಾಧನಗಳಿಲ್ಲ"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"ಜೋಡಿ ಮಾಡಲಾಗಿರುವ ಸಾಧನ"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"ಹೆಸರು"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"ಇದಕ್ಕೆ ಬಳಸಿ"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"ಬ್ಲೂಟೂತ್ ಸಾಧನದ ಹೆಸರನ್ನು ಬದಲಾಯಿಸಿ"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"ಹೆಸರಿಸದಿರುವ ಸಾಧನ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"ಜೋಡಿಸಲಾದ ಸಾಧನಗಳು"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"ಹೊಸ ಸಾಧನವನ್ನು ಜೋಡಿಸಿ"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"ಜೋಡಿಸಲು ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗುತ್ತದೆ"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ಸಾಧನದ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸುವುದೇ?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಸಾಧನದಿಂದ ನಿಮ್ಮ ವಾಹನದ ಸಂಪರ್ಕವನ್ನು ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತದೆ."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"ವಾಹನದ ಬ್ಲೂಟೂತ್‌ ವಿಳಾಸ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ಸಾಧನದ ಬ್ಲೂಟೂತ್ ವಿಳಾಸ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"ವಾಹನದ ಹೆಸರು"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ಈ ವಾಹನವನ್ನು ಮರುಹೆಸರಿಸಿ"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ಸಾಧನವನ್ನು ಮರುಹೆಸರಿಸಿ"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"ಮರುಹೆಸರಿಸಿ"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ಲಭ್ಯವಿರುವ ಸಾಧನಗಳು"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"ಪ್ರೊಫೈಲ್‌ಗಳು"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ಬ್ಲೂಟೂತ್‌‌ ಜೋಡಣೆ ವಿನಂತಿ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ಜೋಡಿಸಿ ಮತ್ತು ಸಂಪರ್ಕಪಡಿಸಿ"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ಬ್ಲೂಟೂತ್‌"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ಬ್ಲೂಟೂತ್ ಜೋಡಣೆ ಕೋಡ್"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ಅಕ್ಷರಗಳು ಅಥವಾ ಚಿಹ್ನೆಗಳನ್ನು ಪಿನ್‌ ಹೊಂದಿದೆ"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"ಜೋಡಣೆ ಕೋಡ್‌ ಟೈಪ್‌ ಮಾಡಿ ತದನಂತರ ರಿಟರ್ನ್‌ ಅಥವಾ ಎಂಟರ್‌ ಒತ್ತಿ."</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"ಸಾಮಾನ್ಯವಾಗಿ 0000 ರಿಂದ 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"ಜೋಡಣೆ ವಿನಂತಿ"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಜೊತೆಗೆ ಜೋಡಿ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ಭಾಷೆಗಳು"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ಭಾಷೆಗಳು &amp; ಇನ್‌ಪುಟ್"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"ಕೀಬೋರ್ಡ್"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"ಕೀಬೋರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"ಪಠ್ಯದಿಂದ ಧ್ವನಿ ಔಟ್‌ಪುಟ್‌"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ಆದ್ಯತೆಯ ಎಂಜಿನ್‌"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ಪ್ರಸ್ತುತ ಎಂಜಿನ್"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"ಧ್ವನಿಯ ಪ್ರಮಾಣ"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"ಪಿಚ್"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"ಮರುಹೊಂದಿಸಿ"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ಶಬ್ದ"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"ರಿಂಗ್ ವಾಲ್ಯೂಮ್"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"ನ್ಯಾವಿಗೇಷನ್ ವಾಲ್ಯೂಮ್‌"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"ಮಾಧ್ಯಮ"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"ಸಂಗೀತ ಮತ್ತು ವೀಡಿಯೊಗಳಿಗೆ ವಾಲ್ಯೂಮ್‌ ಅನ್ನು ಹೊಂದಿಸಿ"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"ಅಲಾರಮ್"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ಫೋನ್ ರಿಂಗ್‌ಟೋನ್"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"ಡಿಫಾಲ್ಟ್ ಅಧಿಸೂಚನೆ ಧ್ವನಿ"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"ಡಿಫಾಲ್ಟ್ ಅಲಾರಮ್ ಧ್ವನಿ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳು"</string>
+    <string name="all_applications" msgid="7798210477486822168">"ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳನ್ನು ತೋರಿಸಿ"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ಡೀಫಾಲ್ಟ್ ಆ್ಯಪ್‌ಗಳು"</string>
     <string name="applications_settings" msgid="794261395191035632">"ಅಪ್ಲಿಕೇಶನ್ ಮಾಹಿತಿ"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ಸ್ಥಗಿತಗೊಳಿಸಿ"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"ಬಲವಂತವಾಗಿ ಸ್ಥಗಿತಗೊಳಿಸುವುದೇ?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"ಅಪ್ಲಿಕೇಶನ್‌ ಅನ್ನು ಬಲವಂತವಾಗಿ ಸ್ಥಗಿತಗೊಳಿಸಿದರೆ, ಅದು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
     <string name="disable_text" msgid="4358165448648990820">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
     <string name="enable_text" msgid="1794971777861881238">"ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್‌ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಇನ್ನು ಮುಂದೆ Android  ಮತ್ತು ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಉದ್ದೇಶಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ಅಪ್ಲಿಕೇಶನ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ಅನುಮತಿಗಳು"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ಆವೃತ್ತಿ: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ಯಾವುದೇ ಅನುಮತಿಗಳನ್ನು ನೀಡಲಾಗಿಲ್ಲ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ಯಾವುದೇ ಅನುಮತಿಗಳನ್ನು ವಿನಂತಿಸಿಲ್ಲ"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ಡೇಟಾ ಬಳಕೆ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ಅಪ್ಲಿಕೇಶನ್‌ ಡೇಟಾ ಬಳಕೆ"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ಸ್ಥಗಿತಗೊಳಿಸಿ"</string>
     <string name="computing_size" msgid="5791407621793083965">"ಗಣನೆ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ಹೆಚ್ಚುವರಿ ಅನುಮತಿಗಳು</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ಹೆಚ್ಚುವರಿ ಅನುಮತಿಗಳು</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"ಅಸಿಸ್ಟೆಂಟ್ ಮತ್ತು ಧ್ವನಿ ಇನ್‌ಪುಟ್"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"ಅಸಿಸ್ಟೆಂಟ್ ಆ್ಯಪ್‌"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ಪರದೆಯಿಂದ ಪಠ್ಯವನ್ನು ಬಳಸಿ"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"ಅಸಿಸ್ಟೆಂಟ್ ಆ್ಯಪ್‌ಗೆ ಪರದೆ ವಿಷಯಗಳನ್ನು ಪಠ್ಯದಂತೆ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸಿ"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಬಳಸಿ"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"ಅಸಿಸ್ಟೆಂಟ್ ಆ್ಯಪ್‌ಗೆ ಪರದೆಯ ಚಿತ್ರವನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸಿ"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"ಸ್ವಯಂ ಭರ್ತಿ ಸೇವೆ"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ಯಾವುದೂ ಬೇಡ"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಗೋಚರಿಸುವ ಅಥವಾ ಆ್ಯಪ್‌ಗಳಲ್ಲಿಯೇ ಪ್ರವೇಶಿಸಬಹುದಾದಂತಹ ಮಾಹಿತಿ ಸೇರಿದಂತೆ, ನಿಮ್ಮ ಸಿಸ್ಟಂನಲ್ಲಿ ಬಳಕೆಯಲ್ಲಿರುವ ಆ್ಯಪ್‌ಗಳ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ಓದಲು ಅಸಿಸ್ಟೆಂಟ್‌ಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ನಿಮಗೆ ಈ ಅಪ್ಲಿಕೇಶನ್ ಮೇಲೆ ವಿಶ್ವಾಸವಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ &lt;/b&gt; &lt;br/&gt; &lt;br/&gt; ಯಾವ ಕ್ಷೇತ್ರಗಳನ್ನು ಸ್ವಯಂ-ಭರ್ತಿ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ನಿಮ್ಮ ಪರದೆಯಲ್ಲಿರುವ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"ಸೇವೆಯನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"ಸ್ಥಳ"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ಇತ್ತೀಚಿನ ಸ್ಥಳ ವಿನಂತಿಗಳು"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಸ್ಥಳ ವಿನಂತಿಗಳು ಇಲ್ಲ"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ಆ್ಯಪ್‌ ಹಂತದ ಅನುಮತಿಗಳು"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"ಸ್ಕ್ಯಾನ್ ಮಾಡುವಿಕೆ"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"ಸ್ಥಳ ಸೇವೆಗಳು"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"ವೈ-ಫೈ ಸ್ಕ್ಯಾನಿಂಗ್"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"ವೈ-ಫೈ ಆಫ್‌ ಆಗಿದ್ದರೂ ಸಹ, ಯಾವ ಸಮುಯದಲ್ಲಾದರೂ ವೈ-ಫೈಗೆ ಸ್ಕ್ಯಾನ್‌ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಸೇವೆಗಳನ್ನು ಅನುಮತಿಸಿ. ಉದಾಹರಣೆಗೆ, ಸ್ಥಳ ಆಧಾರಿತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮತ್ತು ಸೇವೆಗಳನ್ನು ಸುಧಾರಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದಾಗಿದೆ."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ಬ್ಲೂಟೂತ್ ಸ್ಕ್ಯಾನಿಂಗ್"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ಬ್ಲೂಟೂತ್‌ ಆಫ್‌ ಆಗಿದ್ದರೂ ಸಹ, ಯಾವ ಸಮಯದಲ್ಲಾದರೂ ಸಮೀಪದ ಸಾಧನಗಳಿಗೆ ಸ್ಕ್ಯಾನ್‌ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಸೇವೆಗಳನ್ನು ಅನುಮತಿಸಿ. ಉದಾಹರಣೆಗೆ, ಸ್ಥಳ ಆಧಾರಿತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮತ್ತು ಸೇವೆಗಳನ್ನು ಸುಧಾರಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದಾಗಿದೆ."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"ಸಿಸ್ಟಂ"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"ಸಿಸ್ಟಂ ಅಪ್‌ಡೇಟ್‌ಗಳು"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"ಸಿಸ್ಟಂ ಅಪ್‌ಡೇಟ್‌ಗಳು"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ಆವೃತ್ತಿ"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android ಭದ್ರತೆ ಪ್ಯಾಚ್ ಮಟ್ಟ"</string>
     <string name="model_info" msgid="4966408071657934452">"ಮಾಡೆಲ್"</string>
     <string name="baseband_version" msgid="2370088062235041897">"ಬೇಸ್‌ಬ್ಯಾಂಡ್ ಆವೃತ್ತಿ"</string>
     <string name="kernel_version" msgid="7327212934187011508">"ಕೆರ್ನಲ್ ಆವೃತ್ತಿ"</string>
     <string name="build_number" msgid="3997326631001009102">"ಬಿಲ್ಡ್ ಸಂಖ್ಯೆ"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ಬ್ಲೂಟೂತ್‌‌ ವಿಳಾಸ"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"ಸ್ಥಿತಿ"</string>
     <string name="device_status" msgid="267298179806290920">"ಸ್ಥಿತಿ"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"ಹಕ್ಕುಸ್ವಾಮ್ಯ"</string>
     <string name="license_title" msgid="936705938435249965">"ಪರವಾನಗಿ"</string>
     <string name="terms_title" msgid="5201471373602628765">"ನಿಯಮಗಳು ಮತ್ತು ಷರತ್ತುಗಳು"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"ಸಿಸ್ಟಂ ವೆಬ್‌ವೀಕ್ಷಣೆ ಪರವಾನಗಿ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"ಸಿಸ್ಟಂ ವೆಬ್‌ವೀಕ್ಷಣೆ ಪರವಾನಗಿಗಳು"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"ವಾಲ್‌ಪೇಪರ್‌ಗಳು"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ಉಪಗ್ರಹ ಚಿತ್ರಣ ಪೂರೈಕೆದಾರರು:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"ಮೂರನೇ-ವ್ಯಕ್ತಿ ಪರವಾನಗಿಗಳು"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"ಪರವಾನಗಿಗಳನ್ನು ಲೋಡ್‌ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"ಲೋಡ್ ಆಗುತ್ತಿದೆ..."</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">ನೀವು ಇದೀಗ ಡೆವಲಪರ್ ಆಗುವುದಕ್ಕೆ <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ಹಂತಗಳ ದೂರದಲ್ಲಿರುವಿರಿ.</item>
+      <item quantity="other">ನೀವು ಇದೀಗ ಡೆವಲಪರ್ ಆಗುವುದಕ್ಕೆ <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ಹಂತಗಳ ದೂರದಲ್ಲಿರುವಿರಿ.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"ಇದೀಗ ನೀವು ಡೆವಲಪರ್‌!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"ಅಗತ್ಯವಿಲ್ಲ, ನೀವು ಈಗಾಗಲೇ ಡೆವಲಪರ್‌ ಆಗಿರುವಿರಿ."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳು"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ಮರುಹೊಂದಿಸುವ ಆಯ್ಕೆಗಳು"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ನೆಟ್‌ವರ್ಕ್, ಆ್ಯಪ್‌ಗಳು ಅಥವಾ ಸಾಧನಗಳ ಮರುಹೊಂದಿಸುವಿಕೆ"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"ನೆಟ್‌ವರ್ಕ್‌ ಮರುಹೊಂದಿಸಿ"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"ಇದು ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಎಲ್ಲವನ್ನೂ ಮರುಹೊಂದಿಸುತ್ತದೆ, ಅವುಗಳಲ್ಲಿ ಈ ಮುಂದಿನವುಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"ವೈ-ಫೈ"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"ಮೊಬೈಲ್ ಡೇಟಾ"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ಬ್ಲೂಟೂತ್"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"ಎಲ್ಲಾ ವಾಹನದ eSIMಗಳನ್ನು ಅಳಿಸಿ"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ಇದು ನಿಮ್ಮ ಸೇವಾ ಯೋಜನೆಯನ್ನು ರದ್ದುಗೊಳಿಸುವುದಿಲ್ಲ."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM ಗಳನ್ನು ಮರುಹೊಂದಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"ನೆಟ್‌ವರ್ಕ್ ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ಸೆಟ್ಟಿಂಗ್‌ ಮರುಹೊಂದಿಸಿ"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"ಮರುಹೊಂದಿಸುವುದೇ?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"ಎಲ್ಲಾ ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರುಹೊಂದಿಸುವುದೇ? ನೀವು ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ಸೆಟ್ಟಿಂಗ್‌ ಮರುಹೊಂದಿಸಿ"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ ಅನ್ನು ಮರುಹೊಂದಿಸಲಾಗಿದೆ"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ಆ್ಯಪ್ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಮರುಹೊಂದಿಸಿ"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ಇದು ಕೆಳಗಿನ ಎಲ್ಲಾ ಆದ್ಯತೆಗಳಿಗಾಗಿ ಮರುಹೊಂದಿಸುತ್ತದೆ:\n\n"<li>"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ಆ್ಯಪ್‌ಗಳು"</li>\n<li>"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ ಆ್ಯಪ್‌ ಅಧಿಸೂಚನೆಗಳು"</li>\n<li>"ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಡೀಫಾಲ್ಟ್ ಆ್ಯಪ್‌ಗಳು"</li>\n<li>"ಆ್ಯಪ್‌ ಹಿನ್ನೆಲೆ ಡೇಟಾ ನಿರ್ಬಂಧಗಳು"</li>\n<li>"ಯಾವುದೇ ಅನುಮತಿ ನಿರ್ಬಂಧಗಳು"</li>\n\n"ಯಾವುದೇ ಆ್ಯಪ್‌ ಡೇಟಾವನ್ನು ನೀವು ಕಳೆದುಕೊಳ್ಳುವುದಿಲ್ಲ."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ಆಪ್‌‌ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಮರುಹೊಂದಿಸಲಾಗಿದೆ"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"ಎಲ್ಲಾ ಡೇಟಾ ಅಳಿಸಿ (ಫ್ಯಾಕ್ಟರಿ ಮರುಹೊಂದಿಸಿ)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ಇವುಗಳು ಸೇರಿದಂತೆ ಇದು ನಿಮ್ಮ ವಾಹನದ ಹೆಡ್ ಯೂನಿಟ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ:\n\n"<li>"ನಿಮ್ಮ Google ಖಾತೆ"</li>\n<li>"ಸಿಸ್ಟಂ ಮತ್ತು ಆ್ಯಪ್‌ ಡೇಟಾ ಹಾಗೂ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</li>\n<li>"ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಆ್ಯಪ್‌ಗಳು"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"ನೀವು ಪ್ರಸ್ತುತವಾಗಿ ಕೆಳಗಿನ ಖಾತೆಗಳಿಗೆ ಸೈನ್ ಇನ್ ಆಗಿರುವಿರಿ:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ಈ ವಾಹನದಲ್ಲಿ ಇತರ ಬಳಕೆದಾರರಿದ್ದಾರೆ."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"ವಾಹನವನ್ನು ಮರುಹೊಂದಿಸಿ"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ಮರುಹೊಂದಿಸುವುದೇ?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ನಿಮ್ಮ ಎಲ್ಲ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿ ಮತ್ತು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಅಳಿಸಬೇಕೇ? ನೀವು ಈ ಕ್ರಿಯೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ಎಲ್ಲವನ್ನೂ ಅಳಿಸಿ"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"ಅಳಿಸಲಾಗುತ್ತಿದೆ"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"ನಿರೀಕ್ಷಿಸಿ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ದಿನಾಂಕ ಮತ್ತು ಸಮಯವನ್ನು ಬದಲಾಯಿಸಿ"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"ದಿನಾಂಕ ಮತ್ತು ಸಮಯವನ್ನು ಹೊಂದಿಸಿ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ದಿನಾಂಕ, ಸಮಯ, ಸಮಯದ ವಲಯದ, ಮತ್ತು ಫರ್ಮ್ಯಾಟ್‌ಗಳನ್ನು ಹೊಂದಿಸಿ"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"ಸಮಯ ವಲಯದ ಅನುಸಾರ ವಿಂಗಡಿಸಿ"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"ದಿನಾಂಕ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"ಸಮಯ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"ಖಾತೆ ಸೇರಿಸಿ"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಿ"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ಹೊಸ ಬಳಕೆದಾರರು"</string>
-    <string name="user_guest" msgid="3465399481257448601">"ಅತಿಥಿ"</string>
     <string name="user_admin" msgid="1535484812908584809">"ನಿರ್ವಾಹಕ"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ನಿರ್ವಾಹಕರಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ಎಲ್ಲಾ ನಿರ್ವಾಹಕರ ಅನುಮತಿಗಳು"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ನಿರ್ವಹಣೆ ಮಾಡಿ"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ಬಳಕೆದಾರರಿಗೆ ಇತರ ನಿರ್ವಾಹಕರು ಸೇರಿದಂತೆ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಮತ್ತು ಸಿಸ್ಟಂ ಅನ್ನು ಫ್ಯಾಕ್ಟರಿ ರಿಸೆಟ್‌ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುವುದಿಲ್ಲ."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"ಹೌದು, ನಿರ್ವಹಣೆ ಮಾಡಿ"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಿ"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಿ"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ಕಾರ್‌ನ ಮೊಬೈಲ್ ಡೇಟಾದ ಮೂಲಕ ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆ"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"ಹೊಸ ಆ್ಯಪ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ಆ್ಯಪ್‌ಗಳನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"ಹೊಸ ಬಳಕೆದಾರರು"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸುವುದೇ?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ನೀವು ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ಅವರ ಸ್ಥಳವನ್ನು ಸೆಟಪ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ಯಾವುದೇ ಬಳಕೆದಾರರು ಎಲ್ಲಾ ಇತರೆ ಬಳಕೆದಾರರಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಬಹುದು."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"ಬಳಕೆದಾರರ ಮಿತಿ ತಲುಪಿದೆ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">ನೀವು <xliff:g id="COUNT">%d</xliff:g> ಬಳಕೆದಾರರವರೆಗೆ ಸೇರಿಸಬಹುದು.</item>
+      <item quantity="other">ನೀವು <xliff:g id="COUNT">%d</xliff:g> ಬಳಕೆದಾರರವರೆಗೆ ಸೇರಿಸಬಹುದು.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ಈ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸುವುದೇ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಲು ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ವಜಾಗೊಳಿಸಿ"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ಮರುಪ್ರಯತ್ನ"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ಬಳಕೆದಾರನನ್ನು ಅಳಿಸುವುದೇ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ಈ ಕಾರಿಗೆ ಉಳಿದಿರುವ ಬಳಕೆದಾರರನ್ನು ಅಳಿಸಿದ ನಂತರ, ಹೊಸ ನಿರ್ವಾಹಕ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ಈ ಬಳಕೆದಾರರೊಂದಿಗೆ ಸಂಯೋಜಿತವಾಗಿರುವ ಎಲ್ಲಾ ಡೇಟಾ, ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಆ್ಯಪ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ. ನೀವು ಸಿಸ್ಟಮ್ ಅನ್ನು ಮತ್ತೆ ಹೊಂದಿಸಬೇಕಾಗಿದೆ."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"ಹೊಸ ನಿರ್ವಾಹಕವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"ನಿಮಗೆ ಕನಿಷ್ಟ ಒಂದು ನಿರ್ವಾಹಕ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇದನ್ನು ಅಳಿಸಲು, ಮೊದಲು ಬದಲಿ ಆಯ್ಕೆ ಮಾಡಿ."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"ನಿರ್ವಾಹಕವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string>
+    <string name="user_guest" msgid="3465399481257448601">"ಅತಿಥಿ"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ಅತಿಥಿ"</string>
     <string name="user_switch" msgid="6544839750534690781">"ಬದಲಿಸಿ"</string>
     <string name="current_user_name" msgid="3813671533249316823">"ನೀವು (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ಹೆಸರು"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ಇನ್ನೂ ಸೆಟಪ್‌ ಮಾಡಿಲ್ಲ"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"ಬಳಕೆದಾರರ ಹೆಸರನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
     <string name="users_list_title" msgid="770764290290240909">"ಬಳಕೆದಾರರು"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ಗೆ ಅನುಮತಿಗಳನ್ನು ನೀಡಲಾಗಿದೆ"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"ಖಾತೆಗಳು"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"ಬಳಕೆದಾರ"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"ಖಾತೆ ಸೇರಿಸಿ"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"ಯಾವುದೇ ಖಾತೆಗಳನ್ನು ಸೇರಿಸಿಲ್ಲ"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> ಅವರಿಗಾಗಿ ಖಾತೆಗಳು"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ಡೇಟಾವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಿಂಕ್ ಮಾಡಿ"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ಆ್ಯಪ್‌ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೇಟಾವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಲಿ"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ಸ್ವಯಂ-ಸಿಂಕ್‌ ಡೇಟಾ ಆನ್‌‌ಮಾಡುವುದೇ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ವೆಬ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಖಾತೆಗಳಿಗೆ ಮಾಡಲಾದ ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿಮ್ಮ ಸಾಧನಕ್ಕೆ ನಕಲಿಸಲಾಗುತ್ತದೆ. \n\nಫೋನ್‌ನಲ್ಲಿ ನೀವು ಮಾಡುವ ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಕೆಲವು ಖಾತೆಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವೆಬ್‌ಗೆ ನಕಲಿಸುತ್ತವೆ. Google ಖಾತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ರೀತಿ ಇದು."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ಸ್ವಯಂ-ಸಿಂಕ್‌ ಡೇಟಾ ಆಫ್‌ ಮಾಡುವುದೇ?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ಇದು ಡೇಟಾ ಪೋಲಾಗದಂತೆ ತಡೆಯುತ್ತದೆ, ಆದರೆ ಇತ್ತೀಚಿನ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸಲು ನೀವು ಪ್ರತಿ ಖಾತೆಯನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಸಿಂಕ್‌ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಮತ್ತು ಅಪ್‌ಡೇಟ್‌ಗಳ ಸಂದರ್ಭದಲ್ಲಿ ನೀವು ಅಧಿಸೂಚನೆಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ."</string>
     <string name="account_details_title" msgid="7529571432258448573">"ಖಾತೆಯ ಮಾಹಿತಿ"</string>
     <string name="add_account_title" msgid="5988746086885210040">"ಖಾತೆ ಸೇರಿಸಿ"</string>
     <string name="add_an_account" msgid="1072285034300995091">"ಖಾತೆಯನ್ನು ಸೇರಿಸಿ"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕುವುದೇ?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ಈ ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಸಾಧನದಲ್ಲಿರುವ ಅದರ ಎಲ್ಲ ಸಂದೇಶಗಳು, ಸಂಪರ್ಕಗಳು ಮತ್ತು ಇತರೆ ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ಈ ಬದಲಾವಣೆಗೆ ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"ಬಳಕೆದಾರರನ್ನು ತೆಗೆಯುವುದೇ?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಲು ವಿಫಲವಾಗಿದೆ."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುವುದೇ?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"ವಜಾಗೊಳಿಸಿ"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ಮರುಪ್ರಯತ್ನಿಸಿ"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸುವುದೇ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ನೀವು ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ಅವರ ಸ್ಥಳವನ್ನು ಸೆಟಪ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ಯಾವುದೇ ಬಳಕೆದಾರರು ಎಲ್ಲಾ ಇತರೆ ಬಳಕೆದಾರರಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಬಹುದು."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"ಖಾತೆ ತೆಗೆದುಹಾಕಲು ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"ಖಾತೆ ಸಿಂಕ್"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> ಐಟಂಗಳಲ್ಲಿ <xliff:g id="ID_1">%1$d</xliff:g> ಕ್ಕಾಗಿ ಸಿಂಕ್ ಆನ್ ಇದೆ"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"ಎಲ್ಲಾ ಐಟಂಗಳಿಗಾಗಿ ಸಿಂಕ್ ಆನ್ ಇದೆ"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"ಎಲ್ಲಾ ಐಟಂಗಳಿಗಾಗಿ ಸಿಂಕ್ ಆಫ್ ಇದೆ"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"ಸಿಂಕ್‌ ಆಫ್ ಆಗಿದೆ"</string>
+    <string name="sync_error" msgid="6698021343089247914">"ಸಿಂಕ್ ದೋಷ"</string>
+    <string name="last_synced" msgid="4745124489150101529">"ಕೊನೆಯದಾಗಿ ಸಿಂಕ್ ಮಾಡಿರುವುದು <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"ಇದೀಗ ಸಿಂಕ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"ಈಗ ಸಿಂಕ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ಈಗ ಸಿಂಕ್ ಮಾಡಿ"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ಸಿಂಕ್ ರದ್ದುಗೊಳಿಸಿ"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"ಸಿಂಕ್‌ ಪ್ರಸ್ತುತ ಸಮಸ್ಯೆ ಎದುರಿಸುತ್ತಿದೆ. ಶೀಘ್ರದಲ್ಲಿಯೇ ಅದು ಯಥಾಸ್ಥಿತಿಗೆ ಬರಲಿದೆ."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ಭದ್ರತೆ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ಪರದೆ ಲಾಕ್"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ಯಾವುದೂ ಅಲ್ಲ"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"ಪಿನ್"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"ಪಾಸ್‌ವರ್ಡ್"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"ಲಾಕ್ ಪ್ರಕಾರವನ್ನು ಆರಿಸಿ"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಆಯ್ಕೆಗಳು"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"ಲಾಕ್ ಆಯ್ಕೆಗಳು"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"ನಿಮ್ಮ ಪ್ಯಾಟರ್ನ್ ನಮೂದಿಸಿ"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"ದೃಢೀಕರಿಸಿ"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"ಮರುರಚಿಸಿ"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"ಪರದೆ ಲಾಕ್ ಹೊಂದಿಸಿ"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"ನಿಮ್ಮ ಪಿನ್‌ ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"ಪ್ಯಾಟರ್ನ್ ಆಯ್ಕೆ ಮಾಡಿ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"ಪ್ರಸ್ತುತ ಸ್ಕ್ರೀನ್ ಲಾಕ್"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"ಸುರಕ್ಷತೆಗಾಗಿ, ಪ್ಯಾಟ್ರನ್ ಹೊಂದಿಸಿ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"ತೆರವುಗೊಳಿಸಿ"</string>
@@ -232,7 +384,7 @@
     <string name="error_saving_lockpattern" msgid="2933512812768570130">"ಪ್ಯಾಟರ್ನ್‌ ಉಳಿಸುವಲ್ಲಿ ದೋಷ"</string>
     <string name="okay" msgid="4589873324439764349">"ಸರಿ"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ತೆಗೆದುಹಾಕಿ"</string>
-    <string name="remove_screen_lock_message" msgid="6675850371585564965">"ಇದು ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಯಾರಾದರೂ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುತ್ತದೆ"</string>
+    <string name="remove_screen_lock_message" msgid="6675850371585564965">"ಇದು ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಯಾರು ಬೇಕಾದರೂ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುತ್ತದೆ"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ನಿಮ್ಮ ಪಿನ್ ನಮೂದಿಸಿ"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"ಸುರಕ್ಷತೆಗಾಗಿ, ಪಿನ್ ಅನ್ನು ಹೊಂದಿಸಿ"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ಸರಳವಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಬೇರೆಯ ಪಾಸ್‌ವರ್ಡ್‌ ಪ್ರಯತ್ನಿಸಿ."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ಅಂಕಿಗಳ ಆರೋಹಣ, ಅವರೋಹಣ ಅಥವಾ ಪುನರಾವರ್ತಿತ ಅನುಕ್ರಮವನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಆಯ್ಕೆಗಳು"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ದಿನಗಳ ಹಿಂದೆ"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನ ಸೇರಿಸಿ"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನಗಳು"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ಸಾಧನಗಳು</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ಸಾಧನಗಳು</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"ನಿಮ್ಮ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ಸಂಪರ್ಕಿತಗೊಂಡಾಗ ಈ ಕಾರ್‌ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡುತ್ತದೆ. ಒಂದು ವೇಳೆ ನಿಮ್ಮ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ಅನ್ನು ಯಾರಾದರೂ ತೆಗೆದುಕೊಂಡರೆ, ಅವರಿಗೆ ಈ ಸಾಧನವನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗಬಹುದು"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"ದೃಢೀಕರಿಸಿ"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"ಮುಗಿದಿದೆ"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಕಂಪ್ಯಾನಿಯನ್ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸಿ. ಸೆಟಪ್ ನಂತರ, ವಾಹನವು ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಪತ್ತೆಹಚ್ಚಿದಾಗ ನಿಮ್ಮ ಬಳಕೆದಾರ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ನಿಮ್ಮ ಫೋನ್‌ನಲ್ಲಿರುವ ಕಂಪ್ಯಾನಿಯನ್ ಆ್ಯಪ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. ಸಾಧನಗಳನ್ನು ಜೋಡಿಸಲು ನಿಮ್ಮ ಫೋನ್‌ನಲ್ಲಿರುವ <xliff:g id="CAR_NAME">%1$s</xliff:g> ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ಗೆ ಈ ಸಾಧನದ ಭದ್ರತೆ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಪತ್ತೆಹೆಚ್ಚಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಿಮ್ಮ ಕಾರ್ ಸಂರಕ್ಷಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಲು, ನೀವು ಈಗಾಗಲೇ ನಿಮ್ಮ ಕಾರ್ ಅನ್‌ಲಾಕ್ ಮಾಡಿದ್ದರೆ ಅದನ್ನು ಅನ್‌ಲಾಕ್ ಆಗಿಯೇ ಇರಿಸಲು ಮಾತ್ರವೇ ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನಕ್ಕೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಬೇರೆ ಯಾರಾದರೂ ನಿಮ್ಮ ಕಾರ್ ಇರಿಸಿಕೊಂಡಿದ್ದರೂ, ಅದು ಹತ್ತಿರದಲ್ಲಿರುವಾಗ ನಿಮ್ಮ ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನ ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಆಗಿ ಇರಿಸಬಹುದು."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಸಾಧನವನ್ನು ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನ ಎಂಬಂತೆ ಸೇರಿಸಿ"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಸಾಧನವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನ ಎಂಬಂತೆ ಸೇರಿಸಲಾಗಿದೆ"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ನೋಂದಣಿ ವಿಫಲವಾಗಿದೆ"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವನ್ನು ಸೇರಿಸುವುದು ನೀವು ಪ್ರಮಾಣೀಕರಣ ವಿಧಾನವನ್ನು ಹೊಂದಿಸುವ ಅಗತ್ಯವಿದೆ. ನೀವು ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವನ್ನು ನಿಮ್ಮೊಂದಿಗೆ ಹೊಂದಿಲ್ಲದೇ ಇದ್ದರೆ, ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಮಾಣೀಕರಣದ ಅಗತ್ಯವಿದೆ."</string>
     <string name="forget" msgid="3971143908183848527">"ಮರೆಯಿರಿ"</string>
+    <string name="connect" msgid="5861699594602380150">"ಸಂಪರ್ಕಿಸಿ"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ"</string>
     <string name="delete_button" msgid="5840500432614610850">"ಅಳಿಸಿ"</string>
     <string name="remove_button" msgid="6664656962868194178">"ತೆಗೆದುಹಾಕಿ"</string>
     <string name="cancel" msgid="750286395700355455">"ರದ್ದುಮಾಡಿ"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ಡೆಮೊ ಮೋಡ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿ"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ಇದು ಡೆಮೊ ಖಾತೆಯನ್ನು ಅಳಿಸುತ್ತದೆ ಮತ್ತು ಫ್ಯಾಕ್ಟರಿ ಡೇಟಾ ಸಿಸ್ಟಂ ಅನ್ನು ಮರುಹೊಂದಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಬಳಕೆದಾರ ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ಡೆಮೊದಿಂದ ನಿರ್ಗಮಿಸಿ"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"ಸೆಟಪ್ ಪೂರ್ಣಗೊಳಿಸಿ"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ಈಗಲೇ ಬೇಡ"</string>
-    <string name="restricted_while_driving" msgid="6217369093121968299">"ಚಾಲನೆ ಮಾಡುವಾಗ ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ."</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ವಜಾಗೊಳಿಸಿ"</string>
+    <string name="restricted_while_driving" msgid="6217369093121968299">"ಡ್ರೈವ್ ಮಾಡುವಾಗ ಈ ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ಚಾಲನೆ ಮಾಡುವಾಗ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 85dea65..7143834 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"화면 어둡게 하기, 터치스크린, 배터리"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"화면 어둡게 하기, 밤, 농담 효과"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"야간 모드"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"네트워크 및 인터넷"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"모바일 네트워크"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"모바일 데이터"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"모바일 네트워크를 사용하여 데이터 액세스"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"모바일 데이터를 사용 중지하시겠습니까?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"데이터 사용량"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"데이터 경고 및 한도"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"앱 데이터 사용량 주기"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"데이터 경고 설정"</string>
+    <string name="data_warning" msgid="116776633806885370">"데이터 경고"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"데이터 한도 설정"</string>
+    <string name="data_limit" msgid="227338836292511425">"데이터 한도"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"데이터 사용량 제한"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"설정한 모바일 데이터 한도에 도달하면 차량에서 모바일 데이터를 사용 중지합니다.\n\n데이터 사용량은 헤드 유닛에서 측정되며 이동통신사에서 사용량을 다르게 계산할 수 있으므로 한도를 낮게 설정해 보세요."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"무선 액세스 포인트 설정 및 관리"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi 사용 설정 중..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi 사용 중지 중..."</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi 목록 로드 중"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi가 사용 중지됨"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"네트워크 기록 삭제 실패"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"네트워크에 연결하지 못했습니다."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"네트워크 추가"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi가 사용 중지됨"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"연결"</string>
     <string name="wifi_password" msgid="5565632142720292397">"비밀번호"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"비밀번호 표시"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"네트워크 이름"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID 입력"</string>
     <string name="wifi_security" msgid="158358046038876532">"보안"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"신호 강도"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"신호 강도"</string>
     <string name="wifi_status" msgid="5688013206066543952">"상태"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"링크 속도"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"주파수"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP 주소"</string>
+    <string name="show_password" msgid="2074628020371139240">"비밀번호 표시"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"네트워크 이름 입력"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"비밀번호 입력"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"나쁨"</item>
-    <item msgid="2032262610626057081">"양호"</item>
-    <item msgid="3859756017461098953">"좋음"</item>
-    <item msgid="1521103743353335724">"우수함"</item>
+    <item msgid="7683058295076342057">"나쁨"</item>
+    <item msgid="1639222824821660744">"양호"</item>
+    <item msgid="1838705897358163300">"좋음"</item>
+    <item msgid="6067166649320533751">"우수함"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"블루투스"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"블루투스 켜기"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"블루투스"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"블루투스 사용 중지됨"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$dMbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"네트워크 세부정보"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC 주소"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP 주소"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"서브넷 마스크"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 주소"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"게이트웨이"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi 환경설정"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"자동으로 Wi‑Fi 사용 설정"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"홈 네트워크 등의 저장된 고품질 네트워크가 가까이 있을 때 Wi‑Fi가 다시 사용 설정됨"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"위치 정보가 사용 중지되어 있으므로 사용할 수 없습니다. "<annotation id="link">"위치 정보"</annotation>"를 사용 설정해 주세요."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi 검색을 사용 설정하시겠습니까?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"사용"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi 검색 사용 설정됨"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"모바일 데이터로 자동 전환"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi‑Fi 인터넷 액세스가 끊기면 모바일 데이터를 사용합니다. 데이터 사용 요금이 부과될 수 있습니다."</string>
+    <string name="learn_more" msgid="8214605928933358604">"자세히 알아보기"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"블루투스"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"연결 관리, 기기 이름 및 검색 가능 여부 설정"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"컴퓨터"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"헤드셋"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"전화"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"이미징"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"헤드폰"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"입력 주변기기"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"블루투스"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"페어링된 기기"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"사용 가능한 기기"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"페어링된 기기가 없음"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"사용할 수 있는 기기가 없음"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"페어링된 기기"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"이름"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"용도"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"블루투스 기기 이름 변경"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"이름이 없는 기기"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"페어링된 기기"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"새 기기와 페어링"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"페어링을 위해 블루투스가 사용 설정됩니다."</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"기기 연결을 해제하시겠습니까?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"차량이 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>에서 연결 해제됩니다."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"차량의 블루투스 주소: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"기기 블루투스 주소: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"차량 이름"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"챠량 이름 변경"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"기기 이름 변경"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"이름 변경"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"사용 가능한 기기"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"프로필"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"블루투스 페어링 요청"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"페어링 및 연결"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"블루투스"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"블루투스 페어링 코드"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN에 문자나 기호가 포함됨"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"페어링 코드를 입력하고 Return 또는 Enter 키를 누르세요."</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"일반적으로 0000 또는 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"페어링 요청"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>에 페어링하려면 탭하세요."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"언어"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"언어 및 입력"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"키보드"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"키보드 관리"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"TTS(텍스트 음성 변환) 출력"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"기본 엔진"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"현재 엔진"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"말하는 속도"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"높낮이"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"재설정"</string>
     <string name="sound_settings" msgid="3072423952331872246">"소리"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"벨소리 볼륨"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"내비게이션 볼륨"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"미디어"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"음악 및 동영상 볼륨 설정"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"알람"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"전화 벨소리"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"기본 알림 소리"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"기본 알람 소리"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"앱 및 알림"</string>
+    <string name="all_applications" msgid="7798210477486822168">"모든 앱 표시"</string>
+    <string name="default_applications" msgid="1558183275638697087">"기본 앱"</string>
     <string name="applications_settings" msgid="794261395191035632">"앱 정보"</string>
+    <string name="force_stop" msgid="2153183697014720520">"강제 종료"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"강제 종료하시겠습니까?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"앱을 강제 종료하면 예기치 않은 오류가 발생할 수 있습니다."</string>
     <string name="disable_text" msgid="4358165448648990820">"사용 중지"</string>
     <string name="enable_text" msgid="1794971777861881238">"사용"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"제거"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"이 앱을 사용 중지하면 Android와 다른 앱이 제대로 작동하지 않을 수도 있습니다."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"앱 사용 중지"</string>
     <string name="permissions_label" msgid="2701446753515612685">"권한"</string>
     <string name="application_version_label" msgid="8556889839783311649">"버전: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"부여된 권한이 없습니다."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"요청한 권한이 없습니다."</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"데이터 사용량"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"앱 데이터 사용량"</string>
-    <string name="force_stop" msgid="2153183697014720520">"강제 종료"</string>
     <string name="computing_size" msgid="5791407621793083965">"계산 중..."</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">추가 권한 <xliff:g id="COUNT_1">%d</xliff:g>개</item>
       <item quantity="one">추가 권한 <xliff:g id="COUNT_0">%d</xliff:g>개</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"어시스트 및 음성 입력"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"지원 앱"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"화면의 텍스트 사용"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"지원 앱이 화면의 텍스트 콘텐츠에 액세스하도록 허용합니다."</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"스크린샷 사용"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"지원 앱이 화면의 이미지에 액세스하도록 허용합니다."</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"자동완성 서비스"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"없음"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"선택됨"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"어시스턴트가 시스템에서 사용 중인 앱에 관한 정보를 읽을 수 있게 됩니다. 여기에는 화면에 표시된 정보 또는 앱 내에서 액세스할 수 있는 정보가 포함됩니다."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;이 앱을 신뢰할 수 있는지 확인하세요.&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google 자동 완성&gt;%1$s&lt;/xliff:g&gt;에서는 자동 완성할 수 있는 항목을 결정하기 위해 화면의 내용을 사용합니다."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"서비스 추가"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"위치"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"최근 위치 요청"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"최근 위치 요청 없음"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"앱 수준 권한"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"검색 중"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"위치 서비스"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi 검색"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Wi‑Fi가 꺼져 있을 때도 항상 앱과 서비스에서 Wi-Fi 네트워크를 검색하도록 허용합니다. 이 설정은 예를 들면 위치 기반 기능 및 서비스를 개선하는 데 사용될 수 있습니다."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"블루투스 검색"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"블루투스가 꺼져 있을 때도 항상 앱과 서비스에서 주변 기기를 검색하도록 허용합니다. 이 설정은 예를 들면 위치 기반 기능 및 서비스를 개선하는 데 사용될 수 있습니다."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"시스템"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"시스템 업데이트"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"시스템 업데이트"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android 버전"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android 보안 패치 수준"</string>
     <string name="model_info" msgid="4966408071657934452">"모델"</string>
     <string name="baseband_version" msgid="2370088062235041897">"베이스밴드 버전"</string>
     <string name="kernel_version" msgid="7327212934187011508">"커널 버전"</string>
     <string name="build_number" msgid="3997326631001009102">"빌드 번호"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"블루투스 주소"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"사용할 수 없음"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"상태"</string>
     <string name="device_status" msgid="267298179806290920">"상태"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"저작권"</string>
     <string name="license_title" msgid="936705938435249965">"라이선스"</string>
     <string name="terms_title" msgid="5201471373602628765">"약관"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"시스템 WebView 라이선스"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"시스템 WebView 라이선스"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"배경화면"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"위성 이미지 제공업체:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"타사 라이선스"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"라이선스를 로드하는 동안 문제가 발생했습니다."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"로드 중…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">개발자가 되려면 <xliff:g id="STEP_COUNT_1">%1$d</xliff:g>단계가 남았습니다.</item>
+      <item quantity="one">개발자가 되려면 <xliff:g id="STEP_COUNT_0">%1$d</xliff:g>단계가 남았습니다.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"개발자가 되셨습니다."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"이미 개발자입니다."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"개발자 옵션"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"옵션 재설정"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"네트워크, 앱, 기기 재설정"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"네트워크 재설정"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"다음을 포함한 모든 네트워크 설정을 초기화합니다."</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"모바일 데이터"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"블루투스"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"모든 자동차 eSIM 삭제"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"서비스 요금제는 취소되지 않습니다."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM을 재설정할 수 없음"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"네트워크 선택"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"설정 초기화"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"초기화하시겠습니까?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"모든 네트워크 설정을 초기화하시겠습니까? 이 작업은 실행취소할 수 없습니다."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"설정 초기화"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"네트워크 설정이 초기화되었습니다."</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"앱 환경설정 초기화"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"이 작업을 하면 다음 환경설정이 재설정됩니다.\n\n"<li>"사용 중지된 앱"</li>\n<li>"사용 중지된 알림"</li>\n<li>"작업에 사용하는 기본 애플리케이션"</li>\n<li>"앱의 백그라운드 데이터 제한"</li>\n<li>"그 밖의 권한 제한"</li>\n\n"앱 데이터는 손실되지 않습니다."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"앱 초기화"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"앱 환경설정이 초기화되었습니다."</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"모든 데이터 삭제(초기화)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"초기화하면 다음을 포함한 차량 헤드 유닛의 모든 데이터가 삭제됩니다. \n\n"<li>"Google 계정"</li>\n<li>"시스템과 앱 데이터 및 설정"</li>\n<li>"다운로드한 앱"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"현재 다음 계정에 로그인함:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"이 차량에 다른 사용자가 있습니다."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"차량 초기화"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"초기화하시겠습니까?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"모든 개인정보와 다운로드한 앱을 삭제하시겠습니까? 삭제한 후에는 작업을 취소할 수 없습니다."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"모두 삭제"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"삭제 중"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"잠시 기다려 주세요..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"날짜 및 시간"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"날짜 및 시간 설정"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"날짜, 시간, 표준시간대 및 형식 설정"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"시간대 순으로 정렬"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"날짜"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"시간"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"사용자 추가"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"계정 추가"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"사용자 삭제"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"새 사용자"</string>
-    <string name="user_guest" msgid="3465399481257448601">"게스트"</string>
     <string name="user_admin" msgid="1535484812908584809">"관리자"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"관리자로 로그인했습니다."</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"모든 관리자 권한"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"관리자 권한 부여"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"사용자는 다른 관리자를 포함한 사용자를 삭제하고 시스템을 초기화할 수 있게 됩니다."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"이 작업은 되돌릴 수 없습니다."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"관리자 권한 부여"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"새 사용자 만들기"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"전화 걸기"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"자동차의 모바일 데이터를 통해 메시지 보내기"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"새 앱 설치"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"앱 제거"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"사용자 추가"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"새 사용자"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"새 사용자를 추가할까요?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"추가된 새로운 사용자는 자신의 공간을 설정해야 합니다."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"모든 사용자는 다른 사용자들을 위하여 앱을 업데이트할 수 있습니다."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"사용자 제한 도달"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">사용자는 <xliff:g id="COUNT">%d</xliff:g>명까지 만들 수 있습니다.</item>
+      <item quantity="one">사용자는 한 명만 만들 수 있습니다.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"새 사용자를 만들지 못했습니다."</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"이 사용자를 삭제하시겠습니까?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"모든 앱과 데이터가 삭제됩니다."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"사용자를 삭제하지 못했습니다"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"닫기"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"재시도"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"마지막 사용자를 삭제하시겠습니까?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"이 자동차의 남은 사용자만 삭제한 후에 새 관리자를 생성합니다."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"이 사용자와 관련된 모든 데이터, 설정 및 앱이 삭제됩니다. 시스템을 다시 설정해야 합니다."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"새 관리자 선택"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"관리자 한 명 이상을 선택해야 합니다. 이 관리자를 삭제하려면 먼저 대체 관리자를 선택하세요."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"관리자 선택"</string>
+    <string name="user_guest" msgid="3465399481257448601">"게스트"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"게스트"</string>
     <string name="user_switch" msgid="6544839750534690781">"전환"</string>
     <string name="current_user_name" msgid="3813671533249316823">"사용자(%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"이름"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"설정되지 않음"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"사용자 이름 수정"</string>
     <string name="users_list_title" msgid="770764290290240909">"사용자"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s에 부여된 권한"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"계정"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"사용자"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"계정 추가"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"추가된 계정이 없습니다."</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>님의 계정"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"자동으로 데이터 동기화"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"앱에서 데이터를 자동으로 새로고침하도록 허용"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"데이터 자동 동기화를 사용하시겠습니까?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"웹에서 변경한 계정 정보는 모두 기기에 자동으로 복사됩니다.\n\n또한 일부 계정은 휴대전화의 변경사항을 웹에 자동으로 복사할 수 있습니다. Google 계정은 이러한 자동 동기화를 지원합니다."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"데이터 자동 동기화를 사용 중지하시겠습니까?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"이 경우 데이터 사용량이 절약되지만, 최근 정보를 수집하려면 각 계정을 직접 동기화해야 합니다. 또한 업데이트가 발생해도 알림을 받지 못합니다."</string>
     <string name="account_details_title" msgid="7529571432258448573">"계정 정보"</string>
     <string name="add_account_title" msgid="5988746086885210040">"계정 추가"</string>
     <string name="add_an_account" msgid="1072285034300995091">"계정 추가"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"계정 삭제"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"계정을 삭제할까요?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"계정을 삭제하면 기기의 메시지, 연락처 및 다른 데이터가 모두 지워집니다."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"관리자가 이 변경을 허용하지 않습니다."</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"사용자를 삭제할까요?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"모든 앱과 데이터가 삭제됩니다."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"사용자를 삭제하지 못함"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"다시 시도할까요?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"닫기"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"다시 시도"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"새 사용자를 추가할까요?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"추가된 새로운 사용자는 자신의 공간을 설정해야 합니다."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"모든 사용자는 다른 사용자들을 위하여 앱을 업데이트할 수 있습니다."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"계정을 삭제하지 못했습니다"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"계정 동기화"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g>개 항목 중 <xliff:g id="ID_1">%1$d</xliff:g>개 동기화"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"모든 항목 동기화"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"모든 항목을 동기화하지 않음"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"동기화 사용 안함"</string>
+    <string name="sync_error" msgid="6698021343089247914">"동기화 오류"</string>
+    <string name="last_synced" msgid="4745124489150101529">"마지막 동기화 시간: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"지금 동기화하는 중..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"탭하여 지금 동기화하세요.<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"지금 동기화"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"동기화 취소"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"동기화에 현재 문제가 발생했습니다. 곧 다시 동기화됩니다."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"보안"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"화면 잠금"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"없음"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"비밀번호"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"잠금 유형 선택"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"화면 잠금 옵션"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"잠금 옵션"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"패턴 입력"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"확인"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"다시 그리기"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"화면 잠금 설정"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN 선택"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"패턴 선택"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"비밀번호 선택"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"비밀번호 선택"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"현재 화면 잠금"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"보안을 위해 패턴을 설정하세요."</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"삭제"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT 관리자가 일반적으로 사용되는 비밀번호를 허용하지 않습니다. 다른 비밀번호로 시도해 보세요."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"연속으로 올라가거나 내려가는 숫자 또는 반복되는 숫자의 배열은 허용되지 않습니다."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"화면 잠금 옵션"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g>일 전"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"신뢰할 수 있는 기기 추가"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"신뢰할 수 있는 기기"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other">기기 <xliff:g id="COUNT_1">%d</xliff:g>대</item>
+      <item quantity="one">기기 <xliff:g id="COUNT_0">%d</xliff:g>대</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g>이(가) 연결되면 차량을 잠금 해제합니다. 누군가 <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>을(를) 가져가면 이 차량에 액세스할 수도 있습니다."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"확인"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"신뢰할 수 있는 기기 삭제"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"완료"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"호환 앱을 사용해 신뢰할 수 있는 기기를 설정하세요. 설정이 완료되면 차량에서 휴대전화가 감지된 경우 사용자 프로필을 잠금 해제할 수 있습니다."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. 휴대전화에 호환 앱을 다운로드합니다."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. 휴대전화에서 <xliff:g id="CAR_NAME">%1$s</xliff:g>을(를) 선택하여 기기를 페어링합니다."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock에서 이 기기의 보안 기기를 감지할 수 없습니다. 차량 보호를 위해 신뢰할 수 있는 기기 기능을 사용하더라도 사용자가 이미 차량을 잠금 해제한 경우에만 잠금 해제된 상태를 유지할 수 있습니다. 가까이에 다른 사람이 신뢰할 수 있는 기기를 갖고 있더라도 차량을 잠금 해제된 상태로 유지할 수 있습니다."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>을(를) 신뢰할 수 있는 기기로 추가"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>이(가) 신뢰할 수 있는 기기로 추가되었습니다."</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>을(를) 등록하는 데 실패했습니다."</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"신뢰할 수 있는 기기를 추가하면 다음번에 인증 수단을 설정해야 합니다. 신뢰할 수 있는 기기가 없으면 인증 과정을 거쳐야 내 프로필에 액세스할 수 있습니다."</string>
     <string name="forget" msgid="3971143908183848527">"삭제"</string>
+    <string name="connect" msgid="5861699594602380150">"연결"</string>
+    <string name="disconnect" msgid="6140789953324820336">"연결 해제"</string>
     <string name="delete_button" msgid="5840500432614610850">"삭제"</string>
     <string name="remove_button" msgid="6664656962868194178">"삭제"</string>
     <string name="cancel" msgid="750286395700355455">"취소"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"데모 모드 종료"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"데모 계정을 삭제하고 시스템을 초기화합니다. 사용자 데이터는 모두 사라집니다."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"데모 종료"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"설정 완료"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"나중에"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"닫기"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"운전 중 기능 사용 불가"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"운전 중에는 사용자를 추가할 수 없습니다."</string>
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index e254da1..8411903 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"күңүрт экран, сенсордук экран, батарея"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"күңүрт экран, түн, кошумча түс"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Түнкү режим"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Тармак жана Интернет"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мобилдик тармак"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобилдик Интернет"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Интернетке мобилдик тармак аркылуу чыгуу"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Мобилдик Интернет өчүрүлсүнбү?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Дайындардын колдонулушу"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Трафик жана чектөөлөр"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Статистика цикли"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Трафик тууралуу эскертүү"</string>
+    <string name="data_warning" msgid="116776633806885370">"Трафик тууралуу эскертүү"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Трафикти чектөө"</string>
+    <string name="data_limit" msgid="227338836292511425">"Чектелген трафик"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Трафикти чектөө"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Белгиленген чекке жеткенде, унааңыздын негизги тутуму мобилдик Интернетти өчүрөт.\n\nТелефонуңуздун статистикасы менен байланыш операторунун статистикасы аздыр-көптүр айырмалангандыктан, чекти кабелтең коюңуз."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Зымсыз кошулуу түйүндөрүн жөндөө жана башкаруу"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi күйгүзүлүүдө…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi өчүрүлүүдө…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi тизмеси жүктөлүүдө"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi өчүрүлдү"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Тармак өчүрүлгөн жок"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Тармакка туташпай калды"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Тармак кошуу"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi өчүрүлдү"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Туташуу"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Сырсөз"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Сырсөздү көрсөтүү"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Тармактын аталышы"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID\'ни киргизиңиз"</string>
     <string name="wifi_security" msgid="158358046038876532">"Коопсуздук"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Сигналдын күчү"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Сигналдын күчү"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Абалы"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Байланыш ылдамдыгы"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Жыштык"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP дарек"</string>
+    <string name="show_password" msgid="2074628020371139240">"Сырсөздү көрсөтүү"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Тармактын аталышын киргизиңиз"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Сырсөздү киргизиңиз"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Начар"</item>
-    <item msgid="2032262610626057081">"Орто"</item>
-    <item msgid="3859756017461098953">"Жакшы"</item>
-    <item msgid="1521103743353335724">"Эң жакшы"</item>
+    <item msgid="7683058295076342057">"Начар"</item>
+    <item msgid="1639222824821660744">"Орто"</item>
+    <item msgid="1838705897358163300">"Жакшы"</item>
+    <item msgid="6067166649320533751">"Эң жакшы"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth\'ду күйгүзүү"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth өчүрүлдү"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Мб/ск"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 ГГц"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ГГц"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Тармактын чоо-жайы"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC дареги"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP дарек"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Көмөкчү тармактын маскасы"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 даректери"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Шлюз"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi жеке жөндөөлөрү"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi автоматтык түрдө күйсүн"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Байланыш сигналы күчтүү тармактарга (мисалы, үйдө) жакындаганда, Wi‑Fi автоматтык түрдө күйөт"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Жайгашкан жерди аныктоо өчүрүлгөндүктөн, жеткиликсиз. "<annotation id="link">"Жайгашкан жерди"</annotation>" күйгүзүңүз."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi тармактарын издөөнү күйгүзөсүзбү?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Күйгүзүү"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi\'ды издөө күйгүзүлдү"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Мобилдик Интернетке автоматтык түрдө которулсун"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi аркылуу Интернетке туташуу мүмкүнчүлүгү жок болгондо, мобилдик Интернет колдонулсун. Трафиктин колдонулгандыгы үчүн акы алынышы мүмкүн."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Кеңири маалымат"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Туташууларды башкарып, түзмөк аталышын жана көрүнүү параметрлерин жөндөө"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Компьютер"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Гарнитура"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Телефон"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Камера"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Гарнитура"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Дайындарды киргизүүчү сырткы түзмөк"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Жупташтырылган түзмөктөр"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Жеткиликтүү түзмөктөр"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Жупташтырылган түзмөктөр жок"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Жеткиликтүү түзмөктөр жок"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Жупташтырылган түзмөк"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Аты"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Төмөнкү үчүн колдонулсун:"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth түзмөгүнүн атын өзгөртүү"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Аты жок түзмөк"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Жупташтырылган түзмөктөр"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Жаңы түзмөктү жупташтыруу"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth жупташтыруу үчүн күйгүзүлөт"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Түзмөк ажыратылсынбы?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Унааңыз <xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүнөн ажыратылат."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Унаанын Bluetooth дареги: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Түзмөктүн Bluetooth дареги: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Унаанын Bluetooth аталышы"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Унаанын атын өзгөртүү"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Түзмөктүн атын өзгөртүү"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Аталышын өзгөртүү"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Жеткиликтүү түзмөктөр"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Профилдер"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth жупташтыруу өтүнүчү"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Жупташтыруу жана туташтыруу"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth жупташтыруучу коду"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN код тамгаларды же символдорду камтыйт"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Жупташтыруу кодун терип, андан соң \"Артка\" же \"Киргизүү\" баскычын басыңыз"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Адатта, 0000 же 1234 болот"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Жупташтыруу өтүнүчү"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> менен жупташуу үчүн таптап коюңуз."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Тилдер"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Тилдер жана киргизүү ыкмасы"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Баскычтоп"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Баскычтопторду башкаруу"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Кеп синтезатору"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Тандалган каражат"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Учурдагы каражат"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Кеп ылдамдыгы"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Демейки тон"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Баштапкы абалга келтирүү"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Үн"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Шыңгырдын үнү"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Чабыттоонун үнү"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Медиа"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Музыка жана видеолор үчүн үн көлөмүн коюу"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Ойготкуч"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Телефондун рингтону"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Билдирменин демейки үнү"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Ойготкучтун демейки үнү"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Колдонмолор жана билдирмелер"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Бардык колдонмолорду көрсөтүү"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Демейки колдонмолор"</string>
     <string name="applications_settings" msgid="794261395191035632">"Колдонмо тууралуу маалымат"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Мажбурлап токтотуу"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Токтотулсунбу?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Колдонмону мажбурлап токтотсоңуз, ал туура эмес иштеп калышы мүмкүн."</string>
     <string name="disable_text" msgid="4358165448648990820">"Өчүрүү"</string>
     <string name="enable_text" msgid="1794971777861881238">"Иштетүү"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Чыгарып салуу"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Эгер бул колдонмону өчүрсөңүз, Android жана башка колдонмолор талаптагыдай иштебей калышы мүмкүн."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Колдонмону өчүрүү"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Уруксаттар"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версиясы: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Бир да уруксат берилген жок"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Бир да уруксат суралган жок"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Дайындардын колдонулушу"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Колдонмолордун трафиги"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Мажбурлап токтотуу"</string>
     <string name="computing_size" msgid="5791407621793083965">"Эсептелүүдө…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> кошумча уруксат берилди</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> кошумча уруксат берилди</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Жардамчы жана үн менен киргизүү"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Көмөкчү колдонмо"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Экрандагы текстти колдонуу"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Көмөкчү колдонмого экрандагы текстти колдонууга уруксат берүү"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Скриншотту колдонуу"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Көмөкчү колдонмого экрандагы сүрөттү колдонууга уруксат берүү"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Автотолтуруу кызматы"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Жок"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Тандалды"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Жардамчы тутумуңузда иштеп жаткан колдонмолор тууралуу маалыматтарды, анын ичинде экраныңызда көрүнүп турган же колдонмолордо жеткиликтүү болгон маалыматты окуй алат."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Бул колдонмо ишенимдүү экенин тактаңыз&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; экрандагы нерселерди аныктап, автоматтык түрдө толтурууга боло турган талааларды табат."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Кызмат кошуу"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Жайгашкан жер"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Жакында изделген жерлер"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Жакында изделген жерлер жок"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Колдонмонун уруксаттары"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Издөө"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Жайгашкан жерди аныктоо кызматтары"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi тармактарын издөө"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Wi-Fi өчүп турса да, колдонмолор менен кызматтарга Wi-Fi тармактарын издегенге уруксат бересиз. Бул параметр менен жайгашкан жерди тагыраак аныктоого болот."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth түзмөктөрүн издөө"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth өчүп турса да, колдонмолор менен кызматтарга жакын жердеги түзмөктөрдү издегенге уруксат бересиз. Бул параметр менен жайгашкан жерди тагыраак аныктоого болот."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Тутум"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Тутум жаңыртуулары"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Тутум жаңыртуулары"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android версиясы"</string>
     <string name="security_patch" msgid="4794276590178386903">"Коопсуздук тутумунун жаңыртуусу:"</string>
     <string name="model_info" msgid="4966408071657934452">"Үлгү"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Байланыш модулунун версиясы"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Өзөктүн версиясы"</string>
     <string name="build_number" msgid="3997326631001009102">"Курама номери"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth дареги"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Жеткиликтүү эмес"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Абалы"</string>
     <string name="device_status" msgid="267298179806290920">"Абалы"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Автордук укук"</string>
     <string name="license_title" msgid="936705938435249965">"Уруксаттама"</string>
     <string name="terms_title" msgid="5201471373602628765">"Шарттар жана жоболор"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"WebView тутум уруксаттамасы"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"WebView тутум уруксаттамалары"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Тушкагаздар"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Спутниктик сүрөттөр:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Үчүнчү тараптын уруксаттамалары"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Уруксаттамалар жүктөлүп жатканда көйгөй келип чыкты."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Жүктөлүүдө…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Сиздин иштеп чыгуучу болушуңузга <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> кадам калды.</item>
+      <item quantity="one">Сиздин иштеп чыгуучу болушуңузга <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> кадам калды.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Сиз иштеп чыгуучу болдуңуз!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Кереги жок, сиз иштеп чыгуучуболгонсуз."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Иштеп чыгуучунун параметрлери"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Кайра коюу опциялары"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Тармактын, колдонмолордун же түзмөктүн жөндөөлөрүн кайра коюу"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Тармакты баштапкы абалга келтирүү"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Ушуну менен тармак жөндөөлөрүнүн баары баштапкы абалга келтирилет, анын ичинде:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобилдик Интернет"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Унаадагы бардык eSIM-карталар тазалансын"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Байланыш операторуңуздун тарифтик планы жокко чыгарылбайт."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM-карталар кайра коюлган жок"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Тармак тандоо"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Жөндөөлөрдү кайра коюу"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Баштапкы абалга келтирилсинби?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Тармак жөндөөлөрүнүн баары баштапкы абалга келтирилсинби? Бул аракетти кайра кайтара албайсыз!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Жөндөөлөрдү кайра коюу"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Тармак жөндөөлөрү кайра коюлду"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Колдонмонун жөндөөлөрүн баштапкы абалга келтирүү"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Ушуну менен төмөнкүлөр үчүн бардык жөндөөлөр баштапкы абалына келтирилет:\n\n"<li>"Өчүрүлгөн колдонмолор"</li>\n<li>"Өчүрүлгөн колдонмолордун билдирмелери"</li>\n<li>"Демейки колдонмолордун аракеттери"</li>\n<li>"Колдонмолордун Фондук режиминдеги чектөөлөрү"</li>\n<li>"Бардык уруксаттарды чектөөлөрs"</li>\n\n"Колдонмонун бардык дайындары сакталып калат."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Баштапкы абалга келтирүү"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Колдонмонун жөндөөлөрү баштапкы абалга келтирилди"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Бардык дайындарды тазалоо"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Унааңыздын негизги тутумундагы бардык маалымат өчүрүлөт, тактап айтканда:\n\n"<li>"Google аккаунтуңуз"</li>\n<li>"Тутумдун жана колдонмолордун жөндөөлөрү жана дайындары"</li>\n<li>"Жүктөлүп алынган колдонмолор"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Учурда төмөнкү аккаунттарга кирип турасыз:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Бул унаада башка колдонуучулар бар."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Унааны баштапкы абалга келтирүү"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Баштапкы абалга келтирилсинби?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Бардык жеке маалыматтарыңыз жана жүктөп алынган колдонмолоруңуз тазалансынбы? Бул аракетти кайра кайтара албайсыз!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Баарын тазалоо"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Тазаланууда"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Күтө туруңуз…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Күн жана убакыт"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Күндү жана убакытты жөндөө"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Күндү, убакытты, убакыт алкагын, жана форматтарды жөндөө"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Убакыт алкагы боюнча иргөө"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Күн"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Убакыт"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Колдонуучу кошуу"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Аккаунт кошуу"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Колдонуучуну жок кылуу"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Жаңы колдонуучу"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Конок"</string>
     <string name="user_admin" msgid="1535484812908584809">"Админ"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Администратор катары кирдиңиз"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Администратордун бардык уруксаттары"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Админ кылуу"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Колдонуучу башка Админдерди жана колдонуучуларды өчүрүп, тутумду баштапкы жөндөөлөргө кайтара алат."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Бул аракетти кайтарууга болбойт."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ооба, админ кылуу"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Жаңы колдонуучуларды түзүү"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Телефон чалуу"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Унаадагы Интернет аркылуу жазышуу"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Жаңы колдонмолорду орнотуу"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Колдонмолорду чыгарып салуу"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Колдонуучу кошуу"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Жаңы колдонуучу"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Колдонуучуну кошосузбу?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Жаңы колдонуучу кошулганда, ал өзүнүн профилин жөндөп алышы керек."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Колдонмолорду бир колдонуучу калган бардык колдонуучулар үчүн да жаңырта алат."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Дагы колдонуучу кошууга болбойт"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> колдонуучуга чейин кошууга болот.</item>
+      <item quantity="one">Бир колдонуучуну гана кошууга болот.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Жаңы колдонуучу кошулбай калды"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Бул колдонуучу өчүрүлсүнбү?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Бардык колдонмолор жана дайындар жок кылынат."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Колдонуучу өчүрүлгөн жок."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Четке кагуу"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Кайталоо"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Акыркы колдонуучу өчүрүлсүнбү?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Бул унаанын жалгыз колдонуучусун өчүргөндөн кийин, жаңы администратордун профили түзүлөт."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Бул колдонуучуга байланышкан бардык дайындар, жөндөөлөр жана колдонмолор өчүрүлөт. Тутумду кайрадан жөндөшүңүз керек болот."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Жаңы администраторду тандоо"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Жок дегенде бир администраторуңуз болушу керек. Бул администраторду өчүрүү үчүн, биринчиден ордуна башка бирөөнү тандаңыз."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Администраторду тандоо"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Конок"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Конок"</string>
     <string name="user_switch" msgid="6544839750534690781">"Которуштуруу"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Сиз (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Колдонуучунун аты"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Түзүлгөн жок"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Колдонуучунун атын түзөтүү"</string>
     <string name="users_list_title" msgid="770764290290240909">"Колдонуучулар"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Төмөнкү колдонуучунун уруксаттары: %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Аккаунттар"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Колдонуучу"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Аккаунт кошуу"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Бир да аккаунт кошулган эмес"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> аттуу колдонуучунун аккаунттары"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Дайындарды автоматтык түрдө шайкештирүү"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Колдонмолордун дайындары автоматтык түрдө жаңырып турат"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Автошайкештирүү жандырылсынбы?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Желеден аккаунтуңузга кандайдыр бир өзгөртүүлөр киргизилгенде, алардын баары телефонуңузга автоматтык түрдө көчүрүлөт.\n\nАйрым учурларда телефонуңуздагы өзгөртүүлөр автоматтык түрдө желеге көчүрүлүшү мүмкүн. Кыскасы, Google аккаунту ушундай жол менен иштейт."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Автошайкештирүү токтотулсунбу?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Ушуну менен трафикти үнөмдөөгө болот. Бирок маалыматты жаңыртып туруу үчүн ар бир аккаунтту кол менен шайкештирип чыгуу керек. Бул учурда жаңыртуулар тууралуу билдирмелер алынбайт."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Аккаунт тууралуу маалымат"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Аккаунт кошуу"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Аккаунт кошуу"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Аккаунтту алып салуу"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Аккаунт өчүрүлсүнбү?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Бул аккаунт өчүрүлсө, ага байланыштуу бардык билдирүүлөр, байланыштар жана башка дайындар түзмөктөн өчүрүлөт!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Мындай өзгөртүүгө администраторуңуз тыюу салган"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Колдонуучуну өчүрөсүзбү?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Бардык колдонмолор жана дайындар жок кылынат."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Колдонуучу өчүрүлгөн жок."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Дагы аракет кыласызбы?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Жабуу"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Кайталоо"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Колдонуучуну кошосузбу?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Жаңы колдонуучу кошулганда, ал өзүнүн профилин жөндөп алышы керек."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Колдонмолорду бир колдонуучу калган бардык колдонуучулар үчүн да жаңырта алат."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Аккаунт өчүрүлгөн жок."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Аккаунтту шайкештирүү"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Шайкештирүү <xliff:g id="ID_2">%2$d</xliff:g> нерсенин ичинен <xliff:g id="ID_1">%1$d</xliff:g> үчүн күйүк"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Шайкештирүү бардык нерселер үчүн күйүк"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Шайкештирүү бардык нерселер үчүн өчүк"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Шайкештирүү ӨЧҮК"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Шайкештирүүдө ката кетти"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Акыркы жолу шайкештирилген убакыт: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Азыр шайкештештирилүүдө…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Азыр шайкештирүү үчүн таптап коюуңуз<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Азыр шайкештирүү"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Шайкештирүүнү жокко чыгаруу"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Учурда шайкештирүү көйгөйгө дуушар болууда. Ал бир аздан кийин калыбына келет."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Коопсуздук"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Экран кулпусу"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Жок"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN код"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Сырсөз"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Кулпулоо түрүн тандоо"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Экранды кулпулоо ыкмалары"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Кулпулоо параметрлери"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Графикалык ачкычты киргизиңиз"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Ырастоо"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Кайра тартуу"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Экран кулпусун коюп алыңыз"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN кодуңузду тандаңыз"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Графикалык ачкычты тандаңыз"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Сырсөзүңүздү тандаңыз"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Сырсөзүңүздү тандаңыз"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Учурдагы экран кулпусу"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Коопсуздук үчүн графикалык ачкыч коюңуз"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Тазалоо"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Жөнөкөй сырсөздөрү коюу IT администраторуңуз тарабынан бөгөттөлгөн. Татаалыраак сырсөздү коюп көрүңүз."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Сандар чоңойгон, кичирейген же кайталанган ыраатта болбошу керек."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Экранды кулпулоо ыкмалары"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> күн мурун"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Ишенимдүү түзмөк кошуу"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Ишенимдүү түзмөктөр"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> түзмөк</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> түзмөк</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> түзмөгүңүз туташып турганда, унаанын кулпусун ачат. Эгер <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> түзмөгү кимдир бирөөнүн колуна тийсе, ал ушул түзмөктү да ача алат"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Ырастоо"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ишенимдүү түзмөктү өчүрүү"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Бүттү"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Ишенимдүү түзмөктү жөндөө үчүн, коштомо колдонмону пайдаланыңыз. Жөндөлгөндөн кийин, унаа телефонуңузду аныктаганда, колдонуучу профилиңиздин кулпусун ачсаңыз болот"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Телефонуңузга коштомо колдонмону жүктөп алыңыз"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Түзмөктөрдү жупташтыруу үчүн, телефонуңуздан <xliff:g id="CAR_NAME">%1$s</xliff:g> унаасын тандаңыз"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock бул түзмөктүн коопсуздук функцияларын аныктай албай жатат. Унааңызды коргоо максатында, унаанын кулпусун өзүңүз ачкан болсоңуз, ишенимдүү түзмөк аны кулпулабайт. Ишенимдүү түзмөк жакын жерде болгондо (түзмөктү башка бирөө кармап турса дагы), унааңыз кулпуланбайт."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүн ишенимдүү түзмөк катары кошуу"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ишенимдүү түзмөк катары кошулду"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> катталган жок"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ишенимдүү түзмөктү кошууда аутентификация ыкмасын кошуу талап кылынат. Эгер ишенимдүү түзмөк жаныңызда болбосо, профилге кирүү үчүн аутентификациядан өтүү керек болот."</string>
     <string name="forget" msgid="3971143908183848527">"Унутулсун"</string>
+    <string name="connect" msgid="5861699594602380150">"Туташтыруу"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Ажыратуу"</string>
     <string name="delete_button" msgid="5840500432614610850">"Жок кылуу"</string>
     <string name="remove_button" msgid="6664656962868194178">"Алып салуу"</string>
     <string name="cancel" msgid="750286395700355455">"Жокко чыгаруу"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Демо режимден чыгасызбы?"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ушуну менен демо аккаунт жок кылынып, тутум кайра башынан жөндөлөт. Колдонуучунун бардык дайындары өчүрүлөт."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Демо режимден чыгуу"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"жөндөөнү бүтүрүү"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"азыр эмес"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ЧЕТКЕ КАГУУ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Унаа айдаганда бул функция жеткиликтүү эмес."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Унаа айдап баратканда колдонуучуну кошууга болбойт."</string>
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 93c3706..6b5899b 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ໜ້າຈໍມືດລົງ, ໜ້າຈໍສຳຜັດ, ແບັດເຕີຣີ"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ໜ້າຈໍມືດລົງ, ກາງຄືນ, ສີອ່ອນ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ໂໝດກາງຄືນ"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"ເຄືອຂ່າຍມືຖື"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"ອິນເຕີເນັດມືຖື"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ເຂົ້າເຖິງອິນເຕີເນັດໂດຍໃຊ້ເຄືອຂ່າຍມືຖື"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"ປິດອິນເຕີເນັດມືຖືບໍ?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ການໃຊ້ຂໍ້ມູນ"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ຄຳເຕືອນ ແລະ ຂີດຈຳກັດອິນເຕີເນັດ"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ຮອບການນຳໃຊ້ຂໍ້ມູນແອັບ"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ຕັ້ງຄ່າການເຕືອນອິນເຕີເນັດ"</string>
+    <string name="data_warning" msgid="116776633806885370">"ຄຳເຕືອນອິນເຕີເນັດ"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ຕັ້ງຄ່າຂີດຈຳກັດອິນເຕີເນັດ"</string>
+    <string name="data_limit" msgid="227338836292511425">"ຂີດຈຳກັດອິນເຕີເນັດ"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ການຈຳກັດການໃຊ້ອິນເຕີເນັດ"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ລະບົບເຄື່ອງສຽງຂອງລົດທ່ານຈະປິດອິນເຕີເນັດມືຖື ເມື່ອມັນຮອດຂີດຈຳກັດທີ່ທ່ານຕັ້ງໄວ້.\n\nເພາະວ່າການໃຊ້ອິນເຕີເນັດຖືກວັດແທກໂດຍລະບົບເຄື່ອງສຽງ ແລະ ຜູ້ໃຫ້ບໍລິການອາດວັດແທກການໃຊ້ອິນເຕີເນັດແຕກຕ່າງກັນ, ສະນັ້ນ ກະລຸນາພິຈາລະນາກຳນົດຂີດຈຳກັດໂດຍເຜື່ອຈຳນວນໄວ້ນຳ."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"ຕັ້ງຄ່າ ແລະ ຈັດການຈຸດການເຂົ້າໃຊ້ລະບົບໄຮ້ສາຍ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ກຳລັງເປີດ Wi-Fi..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ກຳລັງປິດ Wi-Fi..."</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"ກຳລັງໂຫຼດລາຍການ Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"ປິດນຳໃຊ້ Wi‑Fi ແລ້ວ"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"ລືມເຄືອຂ່າຍບໍ່ສຳເລັດ"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ເຊື່ອມຕໍ່ເຄືອຂ່າຍບໍ່ສຳເລັດ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ເພີ່ມເຄືອຂ່າຍ"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"ປິດນຳໃຊ້ Wi‑Fi ແລ້ວ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ເຊື່ອມຕໍ່"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ລະຫັດຜ່ານ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"ສະແດງລະຫັດຜ່ານ"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ຊື່ເຄືອຂ່າຍ"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"ປ້ອນ SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"ຄວາມປອດໄພ"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"ຄວາມແຮງສັນຍານ"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"ຄວາມແຮງສັນຍານ"</string>
     <string name="wifi_status" msgid="5688013206066543952">"ສະຖານະ"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"ຄວາມໄວລິ້ງ"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"ຄວາມຖີ່"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"ທີ່ຢູ່ IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"ສະແດງລະຫັດຜ່ານ"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"ປ້ອນຊື່ເຄືອຂ່າຍ"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"ປ້ອນລະຫັດຜ່ານ"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ອ່ອນ"</item>
-    <item msgid="2032262610626057081">"ພໍໃຊ້"</item>
-    <item msgid="3859756017461098953">"ດີ"</item>
-    <item msgid="1521103743353335724">"ດີເລີດ"</item>
+    <item msgid="7683058295076342057">"ອ່ອນ"</item>
+    <item msgid="1639222824821660744">"ພໍໃຊ້"</item>
+    <item msgid="1838705897358163300">"ດີ"</item>
+    <item msgid="6067166649320533751">"ດີເລີດ"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ເປີດ Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ປິດນຳໃຊ້ Bluetooth ແລ້ວ"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ລາຍລະອຽດເຄືອຂ່າຍ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"ທີ່ຢູ່ MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"ທີ່ຢູ່ IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet Mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"ທີ່ຢູ່ IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ເກດເວ"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"ການຕັ້ງຄ່າ Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"ເປີດ Wi‑Fi ໂດຍອັດຕະໂນມັດ"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi ຈະກັບມາເປີດໃໝ່ອີກເມື່ອຢູ່ໃກ້ເຄືອຂ່າຍຄຸນນະພາບສູງທີ່ບັນທຶກໄວ້ ເຊັ່ນ: ເຄືອຂ່າຍເຮືອນ"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"ບໍ່ສາມາດໃຊ້ໄດ້ເນື່ອງຈາກສະຖານທີ່ປິດຢູ່. ກະລຸນາເປີດ "<annotation id="link">"ສະຖານທີ່"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"ເປີດການສະແກນ Wi‑Fi ບໍ?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ເປີດ"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"ເປີດການສະແກນ Wi‑Fi ແລ້ວ"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"ປ່ຽນໄປໃຊ້ອິນເຕີເນັດມືຖືໂດຍອັດຕະໂນມັດ"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"ໃຊ້ອິນເຕີເນັດມືຖືເມື່ອ Wi-Fi ຂາດການເຊື່ອມຕໍ່ອິນເຕີເນັດ. ອາດມີການຮຽກເກັບຄ່າບໍລິການ."</string>
+    <string name="learn_more" msgid="8214605928933358604">"ສຶກສາເພີ່ມເຕີມ"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"ຈັດການການເຊື່ອມຕໍ່, ຕັ້ງຊື່ອຸປະກອນ ແລະ ການຊອກເຫັນ"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"ຄອມພິວເຕີ"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ຊຸດຫູຟັງ"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ໂທລະສັບ"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ຮູບພາບ"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"ຫູຟັງ"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ອຸປະກອນພ່ວງອິນພຸດ"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"ອຸປະກອນທີ່ຈັບຄູ່ແລ້ວ"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"ອຸປະກອນທີ່ສາມາດໃຊ້ໄດ້"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"ບໍ່ມີອຸປະກອນທີ່ຈັບຄູ່ແລ້ວ"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"ບໍ່ມີອຸປະກອນທີ່ສາມາດໃຊ້ໄດ້"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"ອຸປະກອນທີ່ຈັບຄູ່ແລ້ວ"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"ຊື່"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"ໃຊ້ສຳລັບ"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"ປ່ຽນຊື່ຂອງອຸປະກອນ Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"ອຸປະກອນທີ່ບໍ່ມີຊື່"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"ອຸປະກອນທີ່ຈັບຄູ່ແລ້ວ"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"ຈັບຄູ່ອຸປະກອນໃໝ່"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth ຈະເປີດເພື່ອຈັບຄູ່"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ຕັດການເຊື່ອມຕໍ່ອຸປະກອນຫຼືບໍ?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"ພາຫານະຂອງທ່ານຈະຕັດການເຊື່ອມຕໍ່ຈາກ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"ທີ່ຢູ່ Bluetooth ຂອງພາຫານະ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ທີ່ຢູ່ Bluetooth ຂອງອຸປະກອນ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"ຊື່ພາຫານະ"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ປ່ຽນຊື່ພາຫານະນີ້"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ປ່ຽນຊື່ອຸປະກອນ"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"ປ່ຽນຊື່"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ອຸປະກອນທີ່ສາມາດໃຊ້ໄດ້"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"ໂປຣໄຟລ໌"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ຄຳຂໍຈັບຄູ່ Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ຈັບຄູ່ ແລະ ເຊື່ອມຕໍ່"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ລະຫັດຈັບຄູ່ Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN ປະກອບມີຕົວອັກສອນ ຫຼື ສັນຍາລັກ"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"ພິມລະຫັດຈັບຄູ່ ແລ້ວກົດປຸ່ມ Return ຫຼື Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"ປົກກະຕິແລ້ວໃຊ້ 0000 ຫຼື 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"ຄຳຂໍຈັບຄູ່"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"ແຕະເພື່ອຈັບຄູ່ກັບ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ພາສາ"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ພາສາ ແລະ ການປ້ອນຂໍ້ມູນ"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"​ແປ້ນ​ພິມ"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"ຈັດການແປ້ນພິມ"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"ການປ່ຽນຂໍ້ຄວາມເປັນສຽງ"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ລະບົບທີ່ຕ້ອງການ"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ລະບົບປັດຈຸບັນ"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"ອັດຕາການເວົ້າ"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"ລະດັບສຽງ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"ຣີເຊັດ"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ສຽງ"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"ລະດັບສຽງໂທລະສັບ"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"ລະດັບສຽງການນຳທາງ"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"ສື່"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"ຕັ້ງຄ່າລະດັບສຽງສຳລັບເພງ ແລະ ວິດີໂອ"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"ໂມງປຸກ"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ຣິງໂທນໂທລະສັບ"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"ສຽງການແຈ້ງເຕືອນເລີ່ມຕົ້ນ"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"ສຽງ​ໂມງ​ປຸກ​ຕາມຄ່າເລີ່ມຕົ້ນ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ແອັບ ແລະ ການແຈ້ງເຕືອນ"</string>
+    <string name="all_applications" msgid="7798210477486822168">"ສະແດງແອັບທັງໝົດ"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ແອັບເລີ່ມຕົ້ນ"</string>
     <string name="applications_settings" msgid="794261395191035632">"ຂໍ້ມູນແອັບ"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ບັງຄັບຢຸດ"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"ບັງຄັບປິດບໍ?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"ຖ້າທ່ານບັງຄັບປິດແອັບໃດໜຶ່ງ, ມັນອາດເຮັດວຽກຜິດປົກກະຕິໄດ້."</string>
     <string name="disable_text" msgid="4358165448648990820">"ປິດນຳໃຊ້"</string>
     <string name="enable_text" msgid="1794971777861881238">"ເປິດນຳໃຊ້"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"ຖອນການຕິດຕັ້ງ"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ຖ້າທ່ານປິດນຳໃຊ້ແອັບນີ້, Android ແລະ ແອັບອື່ນອາດບໍ່ເຮັດວຽກຕາມທີ່ຖືກອອກແບບມາໄດ້."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ປິດນຳໃຊ້ແອັບ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ການອະນຸຍາດ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ເວີຊັນ: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ບໍ່ໄດ້ໃຫ້ການອະນຸຍາດໃດ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ບໍ່ມີການຮ້ອງຂໍການອະນຸຍາດໃດ"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ການໃຊ້ຂໍ້ມູນ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ການໃຊ້ຂໍ້ມູນແອັບ"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ບັງຄັບຢຸດ"</string>
     <string name="computing_size" msgid="5791407621793083965">"ກຳລັງຄຳນວນ..."</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ການອະນຸຍາດເພີ່ມເຕີມ</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ການອະນຸຍາດເພີ່ມເຕີມ</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"ການຊ່ວຍເຫຼືອ ແລະ ການປ້ອນຂໍ້ມູນດ້ວຍສຽງ"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"ແອັບຜູ້ຊ່ວຍ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ໃຊ້ຂໍ້ຄວາມຈາກໜ້າຈໍ"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"ອະນຸຍາດໃຫ້ແອັບຜູ້ຊ່ວຍເຂົ້າເຖິງເນື້ອຫາໃນໜ້າຈໍທີ່ເປັນຂໍ້ຄວາມ"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ໃຊ້ພາບໜ້າຈໍ"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"ອະນຸຍາດໃຫ້ແອັບຜູ້ຊ່ວຍເຂົ້າເຖິງຮູບພາບຂອງໜ້າຈໍ"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"ການບໍລິການຕື່ມຂໍ້ມູນອັດຕະໂນມັດ"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ບໍ່ມີ"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"ເລືອກແລ້ວ"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"ຜູ້ຊ່ວຍຈະສາມາດອ່ານຂໍ້ມູນກ່ຽວກັບແອັບທີ່ໃຊ້ໃນລະບົບຂອງທ່ານ ຮວມທັງຂໍ້ມູນທີ່ເບິ່ງເຫັນໄດ້ໃນໜ້າຈໍຂອງທ່ານ ຫຼື ເຂົ້າເຖິງໄດ້ພາຍໃນແອັບນັ້ນ."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ກວດໃຫ້ແນ່ໃຈວ່າທ່ານເຊື່ອຖືແອັບນີ້&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ຈະໃຊ້ສິ່ງທີ່ຢູ່ໃນໜ້າຈໍຂອງທ່ານເພື່ອກຳນົດວ່າຈະຕື່ມຂໍ້ມູນຫຍັງແດ່ໂດຍອັດຕະໂນມັດ."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"ເພີ່ມການບໍລິການ"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"ສະຖານທີ່"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ຄຳຂໍຂໍ້ມູນສະຖານທີ່ຫຼ້າສຸດ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ບໍ່ມີຄຳຂໍຂໍ້ມູນສະຖານທີ່ຫຼ້າສຸດ"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ການອະນຸຍາດລະດັບແອັບ"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"ການສະແກນ"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"ການບໍລິການສະຖານທີ່"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"ການສະແກນ Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"ອະນຸຍາດໃຫ້ແອັບ ແລະ ການບໍລິການຕ່າງໆສະແກນຫາເຄືອຂ່າຍ Wi-Fi ໄດ້ທຸກເມື່ອ, ເຖິງແມ່ນໃນເວລາທີ່ Wi-Fi ປິດຢູ່ກໍຕາມ. ສາມາດໃຊ້ຄຸນສົມບັດນີ້ເພື່ອປັບປຸງຄຸນສົມບັດ ແລະ ການບໍລິການຕ່າງໆທີ່ອີງໃສ່ສະຖານທີ່ໄດ້."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ການສະແກນ Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ອະນຸຍາດໃຫ້ແອັບ ແລະ ການບໍລິການຕ່າງໆສະແກນຫາອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງໄດ້ທຸກເມື່ອ, ເຖິງແມ່ນໃນເວລາທີ່ Bluetooth ປິດຢູ່ກໍຕາມ. ສາມາດໃຊ້ຄຸນສົມບັດນີ້ເພື່ອປັບປຸງຄຸນສົມບັດ ແລະ ການບໍລິການຕ່າງໆທີ່ອີງໃສ່ສະຖານທີ່ໄດ້."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"ລະບົບ"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"ການອັບເດດລະບົບ"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"ການອັບເດດລະບົບ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"ເວີຊັນ Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"ລະດັບໂປຣແກຣມແກ້ໄຂຄວາມປອດໄພ Android"</string>
     <string name="model_info" msgid="4966408071657934452">"ລຸ້ນ"</string>
     <string name="baseband_version" msgid="2370088062235041897">"ເວີຊັນເບສແບນ"</string>
     <string name="kernel_version" msgid="7327212934187011508">"ເວີຊັນ Kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"ເລກທີລຸ້ນ"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ທີ່ຢູ່ Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"ບໍ່ສາມາດໃຊ້ໄດ້"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"ສະຖານະ"</string>
     <string name="device_status" msgid="267298179806290920">"ສະຖານະ"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"ລິຂະສິດ"</string>
     <string name="license_title" msgid="936705938435249965">"ລິຂະສິດ"</string>
     <string name="terms_title" msgid="5201471373602628765">"ຂໍ້ກຳນົດ ແລະ ເງື່ອນໄຂ"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"ໃບອະນຸຍາດ WebView ຂອງລະບົບ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"ໃບອະນຸຍາດ WebView ຂອງລະບົບ"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"ພາບພື້ນຫຼັງ"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ຜູ້ໃຫ້ພາບຖ່າຍດາວທຽມ:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"ໃບອະນຸຍາດພາກສ່ວນທີສາມ"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"ເກີດບັນຫາໃນການໂຫລດໃບອະນຸຍາດ."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"ກຳລັງໂຫລດ..."</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">ຕອນນີ້ທ່ານຍັງອີກ <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ຂັ້ນຕອນກໍຈະເປັນຜູ້ພັດທະນາແລ້ວ.</item>
+      <item quantity="one">ຕອນນີ້ທ່ານຍັງອີກ <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> ຂັ້ນຕອນກໍຈະເປັນຜູ້ພັດທະນາແລ້ວ.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"ຕອນນີ້ທ່ານເປັນຜູ້ພັດທະນາແລ້ວ!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"ບໍ່ຈຳເປັນ, ທ່ານເປັນຜູ້ພັດທະນາຢູ່ແລ້ວ."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ຕົວເລືອກຜູ້ພັດທະນາ"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ຕົວເລືອກການຣີເຊັດ"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ຣີເຊັດເຄືອຂ່າຍ, ແອັບ ຫຼື ອຸປະກອນ"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"ຣີເຊັດເຄືອຂ່າຍ"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"ນີ້ຈະຣີເຊັດການຕັ້ງຄ່າເຄືອຂ່າຍທັງໝົດ ຮວມທັງ:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"ອິນເຕີເນັດມືຖື"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"ລຶບ eSIM ໃນລົດທັງໝົດ"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ນີ້ຈະບໍ່ຍົກເລີກແພັກເກດການບໍລິການຂອງທ່ານ."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"ບໍ່ສາມາດຣີເຊັດ eSIM ໄດ້"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"ເລືອກເຄືອຂ່າຍ"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ຣີເຊັດການຕັ້ງຄ່າ"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"ຣີເຊັດບໍ?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"ຣີການຕັ້ງຄ່າເຄືອຂ່າຍທັງໝົດບໍ? ທ່ານບໍ່ສາມາດຍົກເລີກການກະທຳນີ້ໄດ້!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ຣີເຊັດການຕັ້ງຄ່າ"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"ຣີເຊັດການຕັ້ງຄ່າເຄືອຂ່າຍແລ້ວ"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ຣີເຊັດການຕັ້ງຄ່າແອັບ"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ນີ້ຈະຣີເຊັດການຕັ້ງຄ່າທັງໝົດສຳລັບ:\n\n"<li>"ແອັບທີ່ປິດນຳໃຊ້"</li>\n<li>"ການແຈ້ງເຕືອນແອັບທີ່ປິດນຳໃຊ້"</li>\n<li>"ແອັບພລິເຄຊັນເລີ່ມຕົ້ນສຳລັບຄຳສັ່ງຕ່າງໆ"</li>\n<li>"ການຈຳກັດຂໍ້ມູນໃນພື້ນຫຼັງສຳລັບແອັບ"</li>\n<li>"ການຈຳກັດການອະນຸຍາດຕ່າງໆ"</li>\n\n"ທ່ານຈະບໍ່ເສຍຂໍ້ມູນແອັບໃດໆ."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ຣີເຊັດແອັບ"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ຣີເຊັດການຕັ້ງຄ່າແອັບແລ້ວ"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"ລຶບຂໍ້ມູນທັງໝົດ (ຣີເຊັດເປັນຄ່າຈາກໂຮງງານ)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ນີ້ຈະລຶບຂໍ້ມູນທັງໝົດອອກຈາກລະບົບເຄື່ອງສຽງໃນພາຫານະຂອງທ່ານ, ຮວມທັງ:\n\n"<li>"ບັນຊີ Google ຂອງທ່ານ"</li>\n<li>"ຂໍ້ມູນ ແລະ ການຕັ້ງຄ່າຂອງລະບົບ ແລະ ແອັບ"</li>\n<li>"ແອັບທີ່ດາວໂຫຼດ"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"ປັດຈຸບັນທ່ານຢູ່ໃນລະບົບບັນຊີຕໍ່ໄປນີ້:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ມີຜູ້ໃຊ້ອື່ນປາກົດໃນພາຫານະນີ້."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"ຣີເຊັດພາຫານະ"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ຣີເຊັດບໍ?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ລຶບຂໍ້ມູນສ່ວນຕົວ ແລະ ແອັບທີ່ດາວໂຫຼດມາທັງໝົດຂອງທ່ານບໍ? ທ່ານບໍ່ສາມາດຍົກເລີກຄຳສັ່ງນີ້ໄດ້!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ລຶບທຸກຢ່າງ"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"ກຳລັງລຶບ"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"ກະລຸນາລໍຖ້າ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ວັນທີ ແລະ ເວລາ"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"ຕັ້ງວັນທີ ແລະ ເວລາ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ຕັ້ງວັນທີ, ເວລາ, ເຂດ ແລະ ຮູບແບບເວລາ"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"ລຽງລຳດັບຕາມເຂດເວລາ"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"ວັນທີ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"ເວລາ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ເພີ່ມຜູ້ໃຊ້"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"ເພີ່ມບັນຊີ"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"ລຶບຜູ້ໃຊ້"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ຜູ້ໃຊ້ໃໝ່"</string>
-    <string name="user_guest" msgid="3465399481257448601">"ແຂກ"</string>
     <string name="user_admin" msgid="1535484812908584809">"ຜູ້ເບິ່ງແຍງລະບົບ"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ເຂົ້າສູ່ລະບົບເປັນຜູ້ເບິ່ງແຍງລະບົບ"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ການອະນຸຍາດຂອງຜູ້ເບິ່ງແຍງລະບົບທັງໝົດ"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ຕັ້ງໃຫ້ເປັນຜູ້ເບິ່ງແຍງລະບົບ"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ຜູ້ໃຊ້ນີ້ຈະສາມາດລຶບຜູ້ໃຊ້ອື່ນ ຮວມທັງຜູ້ເບິ່ງແຍງລະບົບອື່ນ ແລະ ຣີເຊັດລະບົບເປັນຄ່າໂຮງງານໄດ້."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ຄຳສັ່ງນີ້ບໍ່ສາມາດຍົກເລີກໄດ້."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"ແມ່ນ, ຕັ້ງໃຫ້ເປັນຜູ້ເບິ່ງແຍງລະບົບ"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"ສ້າງຜູ້ໃຊ້ໃໝ່"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ໂທລະສັບ"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ການຮັບສົ່ງຂໍ້ຄວາມຜ່ານອິນເຕີເນັດມືຖືຂອງລົດ"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"ຕິດຕັ້ງແອັບໃໝ່"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ຖອນຕິດຕັ້ງແອັບ"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ເພີ່ມຜູ້ໃຊ້"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"ຜູ້ໃຊ້ໃໝ່"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"ເພີ່ມຜູ້ໃຊ້ໃໝ່ບໍ?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ບຸກຄົນນັ້ນຈຳເປັນຕ້ອງຕັ້ງຄ່າພື້ນທີ່ຂອງເຂົາເຈົ້າ."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ຜູ້ໃຊ້ຕ່າງໆສາມາດອັບເດດແອັບສຳລັບຜູ້ໃຊ້ອື່ນທັງໝົດໄດ້."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"ຮອດຂີດຈຳກັດຜູ້ໃຊ້ແລ້ວ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">ທ່ານສາມາດສ້າງຜູ້ໃຊ້ໄດ້ບໍ່ເກີນ <xliff:g id="COUNT">%d</xliff:g> ຄົນ.</item>
+      <item quantity="one">ສາມາດສ້າງຜູ້ໃຊ້ໄດ້ໜຶ່ງຄົນເທົ່ານັ້ນ.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"ສ້າງຜູ້ໃຊ້ໃໝ່ບໍ່ສຳເລັດ"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ລຶບຜູ້ໃຊ້ນີ້ບໍ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ແອັບ ແລະ ຂໍ້ມູນທັງໝົດຈະຖືກລຶບ."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ລຶບຜູ້ໃຊ້ບໍ່ສຳເລັດ."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ປິດໄວ້"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ລອງໃໝ່"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ລຶບຜູ້ໃຊ້ສຸດທ້າຍບໍ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ຫຼັງຈາກລຶບຜູ້ໃຊ້ທີ່ຍັງເຫຼືອໜຶ່ງດຽວສຳລັບລົດນີ້ອອກ, ຜູ້ໃຊ້ທີ່ເປັນຜູ້ເບິ່ງແຍງລະບົບໃໝ່ຈະຖືກສ້າງຂຶ້ນ."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ຂໍ້ມູນ, ການຕັ້ງຄ່າ ແລະ ແອັບທັງໝົດທີ່ກ່ຽວຂ້ອງກັບຜູ້ໃຊ້ນີ້ຈະຖືກລຶບ. ທ່ານຈະຈຳເປັນຕ້ອງຕັ້ງຄ່າລະບົບອີກຄັ້ງ."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"ເລືອກຜູ້ເບິ່ງແຍງລະບົບໃໝ່"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"ທ່ານຈຳເປັນຕ້ອງມີຜູ້ເບິ່ງແຍງລະບົບຢ່າງໜ້ອຍໜຶ່ງຄົນ. ເພື່ອລຶບຜູ້ເບິ່ງແຍງລະບົບນີ້ອອກ, ກະລຸນາເລືອກຜູ້ປ່ຽນແທນກ່ອນ."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"ເລືອກຜູ້ເບິ່ງແຍງລະບົບ"</string>
+    <string name="user_guest" msgid="3465399481257448601">"ແຂກ"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ແຂກ"</string>
     <string name="user_switch" msgid="6544839750534690781">"ສະຫຼັບ"</string>
     <string name="current_user_name" msgid="3813671533249316823">"ທ່ານ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ຊື່"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ບໍ່ໄດ້ຕັ້ງຄ່າ"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"ແກ້ໄຊຊື່ຜູ້ໃຊ້"</string>
     <string name="users_list_title" msgid="770764290290240909">"ຜູ້ໃຊ້"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"ໃຫ້ການອະນຸຍາດແກ່ %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"ບັນຊີ"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"ຜູ້ໃຊ້"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"ເພີ່ມບັນຊີ"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"ບໍ່ໄດ້ເພີ່ມບັນຊີໃດ"</string>
     <string name="account_list_title" msgid="7631588514613843065">"ບັນຊີສຳລັບ <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ຊິ້ງຂໍ້ມູນອັດຕະໂນມັດ"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ໃຫ້ແອັບໂຫຼດຂໍ້ມູນຄືນໃໝ່ໂດຍອັດຕະໂນມັດ"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ເປີດການຊິ້ງຂໍ້ມູນອັດຕະໂນມັດບໍ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ລະບົບຈະສຳເນົາການ​ປ່ຽນ​ແປງຕ່າງໆ​ທີ່​ທ່ານ​ເຮັດກັບ​ບັນ​ຊີ​ຂອງ​ທ່ານ​ໃນ​ເວັບ​ໄວ້ໃນອຸປະກອນຂອງທ່ານ​ໂດຍ​ອັດ​ຕະ​ໂນ​ມັດ.\n\nບາງ​ບັນ​ຊີ​ອາດ​ຈະສຳ​ເນົາ​ການ​ປ່ຽນ​ແປງ​ຕ່າງໆທີ່ທ່ານເຮັດ​ໃນ​ໂທ​ລະ​ສັບ​ໄວ້​ໃນ​ເວັບ​​ໂດຍ​ອັດ​ຕະ​ໂນ​ມັດ. ​ບັນ​ຊີ Google ເຮັດ​ວຽກໃນແບບນີ້."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ປິດການຊິ້ງຂໍ້ມູນອັດຕະໂນມັດບໍ?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ນີ້ຈະປະຢັດອິນເຕີເນັດ, ແຕ່ທ່ານຈະຈຳເປັນຕ້ອງຊິ້ງຂໍ້ມູນແຕ່ລະບັນຊີດ້ວຍຕົນເອງເພື່ອເກັບກຳຂໍ້ມູນຫຼ້າສຸດ. ແລະ ທ່ານຈະບໍ່ໄດ້ຮັບການແຈ້ງເຕືອນເມື່ອມີການອັບເດດ."</string>
     <string name="account_details_title" msgid="7529571432258448573">"ຂໍ້ມູນບັນຊີ"</string>
     <string name="add_account_title" msgid="5988746086885210040">"ເພີ່ມບັນຊີ"</string>
     <string name="add_an_account" msgid="1072285034300995091">"ເພີ່ມບັນຊີ"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"ລຶບບັນຊີອອກ"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"ລຶບບັນຊີອອກບໍ?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ການລຶບບັນຊີນີ້ຈະລຶບຂໍ້ຄວາມ, ລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ຂໍ້ມູນອື່ນທັງໝົດຂອງມັນອອກຈາກອຸປະກອນ!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ປ່ຽນແປງສິ່ງນີ້"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"ລຶບຜູ້ໃຊ້ນີ້ອອກບໍ?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"ແອັບ ແລະ ຂໍ້ມູນທັງໝົດຈະຖືກລຶບ."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"ລຶບຜູ້ໃຊ້ບໍ່ສຳເລັດ."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"ລອງອີກຄັ້ງບໍ?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"ປິດໄວ້"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ລອງໃໝ່"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ເພີ່ມຜູ້ໃຊ້ໃໝ່ບໍ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ບຸກຄົນນັ້ນຈຳເປັນຕ້ອງຕັ້ງຄ່າພື້ນທີ່ຂອງເຂົາເຈົ້າ."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ຜູ້ໃຊ້ຕ່າງໆສາມາດອັບເດດແອັບສຳລັບຜູ້ໃຊ້ອື່ນທັງໝົດໄດ້."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"ລຶບບັນຊີອອກບໍ່ສຳເລັດ."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"ການຊິ້ງຂໍ້ມູນບັນຊີ"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"ເປີດຊິ້ງຂໍ້ມູນສຳລັບ <xliff:g id="ID_1">%1$d</xliff:g> ຈາກທັງໝົດ <xliff:g id="ID_2">%2$d</xliff:g> ລາຍການ"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"ເປີດການຊິ້ງຂໍ້ມູນສຳລັບທຸກລາຍການ"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"ປິດການຊິ້ງຂໍ້ມູນສຳລັບທຸກລາຍການ"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"ການຊິ້ງຂໍ້ມູນປິດຢູ່"</string>
+    <string name="sync_error" msgid="6698021343089247914">"ການຊິ້ງຂໍ້ມູນຜິດພາດ"</string>
+    <string name="last_synced" msgid="4745124489150101529">"ຊິ້ງຂໍ້ມູນຫຼ້າສຸດ <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"ກຳລັງຊິ້ງຂໍ້ມູນ..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"ແຕະເພື່ອຊິ້ງຂໍ້ມູນດຽວນີ້<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ຊິ້ງຂໍ້ມູນດຽວນີ້"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ຍົກເລີກການຊິ້ງຂໍ້ມູນ"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"ການຊິ້ງຂໍ້ມູນກຳລັງປະສົບບັນຫາຢູ່ໃນປັດຈຸບັນ. ມັນຈະກັບມາໃຊ້ໄດ້ໃນໄວໆນີ້."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ຄວາມປອດໄພ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ການລັອກໜ້າຈໍ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ບໍ່ມີ"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"ລະຫັດຜ່ານ"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"ເລືອກປະເພດການລັອກ"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"ຕົວເລືອກໜ້າຈໍລັອກ"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"ຕົວເລືອກການລັອກ"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"ໃສ່ຮູບແບບປົດລັອກຂອງທ່ານ"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"ຢືນຢັນ"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"ແຕ້ມໃໝ່"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"ຕັ້ງຄ່າໜ້າຈໍລັອກ"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"ເລືອກ PIN ຂອງທ່ານ"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"ເລືອກຮູບແບບຂອງທ່ານ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"ເລືອກລະຫັດຜ່ານຂອງທ່ານ"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"ເລືອກລະຫັດຜ່ານຂອງທ່ານ"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"ການລັອກໜ້າຈໍປັດຈຸບັນ"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"ເພື່ອຄວາມປອດໄພ, ກະລຸນາຕັ້ງຮູບແບບປົດລັອກ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"ລຶບ"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ລະຫັດຜ່ານທີ່ມັກໃຊ້ທົ່ວໄປຖືກບລັອກໄວ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບໄອທີຂອງທ່ານ. ກະລຸນາລອງໃຊ້ລະຫັດອື່ນ."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຊຸດຕົວເລກລຽງກັນແຕ່ນ້ອຍຫາໃຫຍ່, ໃຫຍ່ຫານ້ອຍ ຫຼື ຊຸດຕົວເລກຊ້ຳກັນ."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ຕົວເລືອກການລັອກໜ້າຈໍ"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ມື້ກ່ອນ"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"ເພີ່ມອຸປະກອນທີ່ເຊື່ອຖືໄດ້"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"ອຸປະກອນທີ່ເຊື່ອຖືໄດ້"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ອຸປະກອນ</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ອຸປະກອນ</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ຂອງທ່ານຈະປົດລັອກລົດນີ້ ເມື່ອມັນເຊື່ອມຕໍ່. ຖ້າຄົນອື່ນເອົາ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ຂອງທ່ານ, ພວກເຂົາຈະສາມາດເຂົ້າເຖິງອຸປະກອນນີ້ໄດ້"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"ຢືນຢັນ"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"ລຶບອຸປະກອນທີ່ເຊື່ອຖືໄດ້ອອກ"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"ແລ້ວໆ"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"ໃຊ້ແອັບຊ່ວຍເຫຼືອເພື່ອຕັ້ງຄ່າອຸປະກອນທີ່ເຊື່ອຖືໄດ້. ເມື່ອຕັ້ງຄ່າແລ້ວ, ທ່ານຈະສາມາດປົດລັອກໂປຣໄຟລ໌ຜູ້ໃຊ້ຂອງທ່ານ ເມື່ອພາຫາລະກວດພົບໂທລະສັບຂອງທ່ານ"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ດາວໂຫຼດແອັບຊ່ວຍເຫຼືອໃນໂທລະສັບຂອງທ່ານ"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. ເລືອກ <xliff:g id="CAR_NAME">%1$s</xliff:g> ໃນໂທລະສັບຂອງທ່ານເພື່ອຈັບຄູ່ອຸປະກອນ"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ບໍ່ສາມາດກວດພົບຄຸນສົມບັດຄວາມປອດໄພຂອງອຸປະກອນນີ້. ເພື່ອຊ່ວຍປົກປ້ອງລົດຂອງທ່ານ, ອຸປະກອນທີ່ເຊື່ອຖືໄດ້ຈະສາມາດຮັກສາໃຫ້ລົດຂອງທ່ານປົດລັອກຄ້າງໄວ້ ເມື່ອທ່ານປົດລັອກມັນແລ້ວເທົ່ານັ້ນ. ອຸປະກອນທີ່ເຊື່ອຖືໄດ້ສາມາດຮັກສາໃຫ້ລົດຂອງທ່ານປົດລັອກຄ້າງໄວ້ເມື່ອມັນຢູ່ໃກ້ຄຽງ, ເຖິງແມ່ນວ່າຄົນອື່ນກຳລັງຖືມັນໄວ້ຢູ່ກໍຕາມ."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"ເພີ່ມ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ເປັນອຸປະກອນທີ່ເຊື່ອຖືໄດ້"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"ເພີ່ມ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ເປັນອຸປະກອນທີ່ເຊື່ອຖືໄດ້ສຳເລັດແລ້ວ"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"ການລົງທະບຽນ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ບໍ່ສຳເລັດ"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ການເພີ່ມອຸປະກອນທີ່ເຊື່ອຖືໄດ້ກຳນົດໃຫ້ທ່ານຕ້ອງຕັ້ງຄ່າວິທີການກວດຮັບຮອງຄວາມຖືກຕ້ອງເປັນຂັ້ນຕອນຕໍ່ໄປ. ຖ້າທ່ານບໍ່ມີອຸປະກອນທີ່ເຊື່ອຖືໄດ້ຢູ່ນຳທ່ານ, ຈໍາເປັນຕ້ອງມີການກວດຮັບຮອງຄວາມຖືກຕ້ອງເພື່ອເຂົ້າເຖິງໂປຣໄຟລ໌ຂອງທ່ານ."</string>
     <string name="forget" msgid="3971143908183848527">"ລືມ"</string>
+    <string name="connect" msgid="5861699594602380150">"ເຊື່ອມຕໍ່"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ຕັດການເຊື່ອມຕໍ່"</string>
     <string name="delete_button" msgid="5840500432614610850">"ລຶບ"</string>
     <string name="remove_button" msgid="6664656962868194178">"ລຶບອອກ"</string>
     <string name="cancel" msgid="750286395700355455">"ຍົກເລີກ"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ອອກຈາກໂໝດສາທິດ"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ນີ້ຈະລຶບບັນຊີສາທິດ ແລະ ຣີເຊັດລະບົບເປັນຂໍ້ມູນໂຮງງານ. ຂໍ້ມູນຜູ້ໃຊ້ທັງໝົດຈະເສຍໄປ."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ອອກຈາກໂໝດສາທິດ"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"ສຳເລັດການຕັ້ງຄ່າ"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ບໍ່ແມ່ນຕອນນີ້"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ປິດໄວ້"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ຄຸນສົມບັດບໍ່ສາມາດໃຊ້ໄດ້ໃນເວລາຂັບລົດ."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ບໍ່ສາມາດເພີ່ມຜູ້ໃຊ້ໃນຂະນະທີ່ຂັບລົດໄດ້."</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index d59b035..1697fb5 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"pritemdyti ekraną, jutiklinis ekranas, akumuliatorius"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"pritemdyti ekraną, įjungti nakties rodinį, suteikti atspalvį"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Naktinis režimas"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Tinklas ir internetas"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobiliojo ryšio tinklas"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiliojo ryšio duomenys"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Prieiga prie duomenų naud. mobiliojo ryšio tinklą"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Išjungti mobiliojo ryšio duomenis?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Duomenų naudojimas"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Įspėjimas dėl duomenų ir apribojimas"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Programų duomenų naudojimo ciklas"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Nustatyti įspėjimą dėl duomenų"</string>
+    <string name="data_warning" msgid="116776633806885370">"Įspėjimas dėl duomenų"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Nust. duomenų apribojimą"</string>
+    <string name="data_limit" msgid="227338836292511425">"Duomenų apribojimas"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Duomenų naudojimo ribojimas"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Pasiekus nustatytą apribojimą pagrindiniame transporto priemonės įtaise bus išjungti mobiliojo ryšio duomenys.\n\nKadangi sunaudoti duomenys skaičiuojami pagal pagrindinį transporto priemonės įtaisą ir operatorius gali apskaičiuoti kitaip, apsvarstykite galimybę nustatyti mažesnį apribojimą."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Nustatyti ir tvarkyti belaidės prieigos taškus"</string>
     <string name="wifi_starting" msgid="473253087503153167">"„Wi-Fi“ įjungiama…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"„Wi-Fi“ išjungiama…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Įkeliamas „Wi‑Fi“ sąrašas"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"„Wi-Fi“ išjungtas"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Ištrinant tinklą įvyko klaida."</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Jungiantis prie tinklo įvyko klaida."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Pridėti tinklą"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"„Wi-Fi“ išjungtas"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Prisijungti"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Slaptažodis"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Rodyti slaptažodį"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Tinklo pavadinimas"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Įveskite SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sauga"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signalo stiprumas"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signalo stiprumas"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Būsena"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Susiejimo sparta"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Dažnis"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP adresas"</string>
+    <string name="show_password" msgid="2074628020371139240">"Rodyti slaptažodį"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Įveskite tinklo pavadinimą"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Įveskite slaptažodį"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Prastas"</item>
-    <item msgid="2032262610626057081">"Neblogas"</item>
-    <item msgid="3859756017461098953">"Geras"</item>
-    <item msgid="1521103743353335724">"Puikus"</item>
+    <item msgid="7683058295076342057">"Prastas"</item>
+    <item msgid="1639222824821660744">"Neblogas"</item>
+    <item msgid="1838705897358163300">"Geras"</item>
+    <item msgid="6067166649320533751">"Puikus"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Įjungti „Bluetooth“"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"„Bluetooth“ išjungta"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Išsami tinklo informacija"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC adresas"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP adresas"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Potinklio kaukė"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"„IPv6“ adresai"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Tinklų sietuvas"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"„Wi‑Fi“ nuostatos"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Automatiškai įjungti „Wi‑Fi“"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"„Wi‑Fi“ bus vėl įj., esant šalia išs. aukštos kok. tinklų, pvz., namų tinklo"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nepasiekiama, nes vietovės parinktis išj. Įjunkite "<annotation id="link">"vietovę"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Įjungti „Wi‑Fi“ nuskaitymą?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Įjungti"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"„Wi‑Fi“ nuskaitymas įjungtas"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automatiškai perjungti į mobiliojo ryšio duomenis"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Naudoti mobiliojo ryšio duomenis, kai „Wi-Fi“ tinkle nėra interneto ryšio. Galite būti apmokestinti už naudojamus duomenis."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Sužinoti daugiau"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Tvarkyti ryšius, nustatyti įrenginio pavadinimą ir aptinkamumą"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Kompiuteris"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Virtualiosios realybės įrenginys"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefonas"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Vaizdavimo įrenginys"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Ausinės"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Išorinis įvesties įrenginys"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Susieti įrenginiai"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Pasiekiami įrenginiai"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Susietų įrenginių nėra"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Pasiekiamų įrenginių nėra"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Susietas įrenginys"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Pavadinimas"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Naudoti"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Keiskite „Bluetooth“ įreng. pavad."</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Įrenginys be pavadinimo"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Susieti įrenginiai"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Susieti naują įrenginį"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bus įjungtas „Bluetooth“, kad būtų galima susieti"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Atjungti įrenginį?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Jūsų transporto priemonė bus atjungta nuo „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“ įrenginio."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Transporto priemonės „Bluetooth“ adresas: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Įrenginio „Bluetooth“ adresas: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Transporto priem. pavadinimas"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Pervardyti šią transporto pr."</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Pervardyti įrenginį"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Pervardyti"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Pasiekiami įrenginiai"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiliai"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"„Bluetooth“ susiejimo užklausa"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Susieti ir jungti"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"„Bluetooth“ susiejimo kodas"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN kodą sudaro raidės arba simboliai"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Įveskite susiejimo kodą, tada paspauskite „Grįžti“ arba „Enter“"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Paprastai 0000 arba 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Susiejimo užklausa"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Palieskite, kad susietumėte su „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Kalbos"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Kalbos ir įvestis"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Klaviatūra"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Tvarkyti klaviatūras"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Teksto į kalbą išvestis"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Pageidaujamas variklis"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Dabartinis variklis"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Kalbėjimo sparta"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Garso aukštis"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Nustatyti iš naujo"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Garsas"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Skambučio garsumas"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigacijos garsumas"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Medija"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Nustatyti muzikos ir vaizdo įrašų garsumą"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Signalas"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Telefono skambėjimo tonas"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Numatytasis pranešimo garsas"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Numatytasis signalo garsas"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Programos ir pranešimai"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Rodyti visas programas"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Numatytosios programos"</string>
     <string name="applications_settings" msgid="794261395191035632">"Programų informacija"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Priverstinai sustabdyti"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Priverstinai sustabdyti?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Jei priverstinai sustabdysite programą, ji gali neveikti tinkamai."</string>
     <string name="disable_text" msgid="4358165448648990820">"Išjungti"</string>
     <string name="enable_text" msgid="1794971777861881238">"Įgalinti"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Pašalinti"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jei išjungsite šią programą, „Android“ ir kitos programos gali neveikti, kaip numatyta."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Išjungti programą"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Leidimai"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nėra suteiktų leidimų"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nėra užklausų dėl leidimų"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Duomenų naudojimas"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Progr. duomenų naudojimas"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Priverstinai sustabdyti"</string>
     <string name="computing_size" msgid="5791407621793083965">"Skaičiuojama…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> papildomas leidimas</item>
@@ -117,15 +168,39 @@
       <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> papildomo leidimo</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> papildomų leidimų</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Pagalb. progr. ir įvest. balsu"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Pagalbinė programa"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Naudoti tekstą iš ekrano"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Leisti pagalbinei programai pasiekti ekrano turinį kaip tekstą"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Naudoti ekrano kopiją"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Leisti pagalbinei programai pasiekti ekrano vaizdą"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Automatinio pildymo paslauga"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Nėra"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Pasirinkta"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Pagalbinė programa galės skaityti informaciją apie sistemoje naudojamas programas, įskaitant ekrane matomą ar programose pasiekiamą informaciją."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Įsitikinkite, kad pasitikite šia programa&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=„Google“ automatinis pildymas&gt;%1$s&lt;/xliff:g&gt; naudodamas informaciją ekrane nustato, ką gali užpildyti automatiškai."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Pridėti paslaugą"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Vietovė"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Pastarosios vietovės užklausos"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nėra jokių pastarųjų vietovių užklausų"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Programos lygio leidimai"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Nuskaitymas"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Vietovės paslaugos"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"„Wi‑Fi“ nuskaitymas"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Leisti programoms ir paslaugoms bet kuriuo metu nuskaityti ieškant „Wi‑Fi“ tinklų, net kai „Wi‑Fi“ išjungtas. Tai galima naudoti norint, pvz., tobulinti pagal vietovę teikiamas funkcijas ir paslaugas."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"„Bluetooth“ nuskaitymas"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Leisti programoms ir paslaugoms bet kuriuo metu nuskaityti ieškant netoliese esančių įrenginių, net kai „Bluetooth“ išjungtas. Tai galima naudoti norint, pvz., tobulinti pagal vietovę teikiamas funkcijas ir paslaugas."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Sistemos naujiniai"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Sistemos naujiniai"</string>
     <string name="firmware_version" msgid="8491753744549309333">"„Android“ versija"</string>
     <string name="security_patch" msgid="4794276590178386903">"„Android“ saugos pataisos lygis"</string>
     <string name="model_info" msgid="4966408071657934452">"Modelis"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Nemoduliuotų signalų įrangos versija"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Branduolio versija"</string>
     <string name="build_number" msgid="3997326631001009102">"Versijos numeris"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"„Bluetooth“ adresas"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nepasiekiama"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Būsena"</string>
     <string name="device_status" msgid="267298179806290920">"Būsena"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"Autorių teisės"</string>
     <string name="license_title" msgid="936705938435249965">"Licencija"</string>
     <string name="terms_title" msgid="5201471373602628765">"Taisyklės ir nuostatos"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Sistemos „WebView“ licencija"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Sist. žiniatinklio rod. licencijos"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Ekrano fonai"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Palydovinių vaizdų teikėjai:\n© CNES / „Astrium“, „DigitalGlobe“, „Bluesky“, 2014 m."</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Trečiųjų šalių licencijos"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Įkeliant licencijas iškilo problema."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Įkeliama..."</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Liko atlikti <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> veiksmą ir būsite kūrėjas.</item>
+      <item quantity="few">Liko atlikti <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> veiksmus ir būsite kūrėjas.</item>
+      <item quantity="many">Liko atlikti <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> veiksmo ir būsite kūrėjas.</item>
+      <item quantity="other">Liko atlikti <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> veiksmų ir būsite kūrėjas.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Dabar esate kūrėjas!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nereikia, jūs jau esate kūrėjas."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Kūrėjo parinktys"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Parinkčių nustatymas iš naujo"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Tinklo, programos ar įrenginio nustatymas iš naujo"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Iš naujo nustatyti tinklą"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Bus iš naujo nustatyti visi tinklo nustatymai, įskaitant:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobiliojo ryšio duomenys"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Ištrinti visas transp. priemonės „eSIM“ korteles"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Tai atlikus paslaugų planas nebus atšauktas."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Nepavyko nustatyti „eSIM“ kortelių iš naujo"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Tinklo pasirinkimas"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Nustatyti iš naujo"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Nustatyti iš naujo?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Iš naujo nustatyti visus tinklo nustatymus? Šio veiksmo negalėsite anuliuoti!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Nustatyti iš naujo"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Tinklo nustatymai nustatyti iš naujo"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Iš naujo nustatyti programų nuostatas"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Bus iš naujo nustatytos visos nurodytų elementų nuostatos:\n\n"<li>"išjungtos programos;"</li>\n<li>"išjungti programų pranešimai;"</li>\n<li>"numatytosios veiksmų programos;"</li>\n<li>"programų foninių duomenų apribojimai;"</li>\n<li>"visi leidimų apribojimai."</li>\n\n"Neprarasite jokių programų duomenų."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Iš naujo nustatyti programas"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Programų nuostatos nustatytos iš naujo"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Ištr. visus duom. (atk. gamykl. duom.)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Tai atlikus bus ištrinti visi duomenys iš pagrindinio transporto priemonės įtaiso, įskaitant:\n\n"<li>"„Google“ paskyrą;"</li>\n<li>"sistemos ir programų duomenis bei nustatymus;"</li>\n<li>"atsisiųstas programas."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Šiuo metu esate prisijungę prie toliau nurodytų paskyrų."</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Šioje transporto priemonėje yra kitų naudotojų."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Nustatyti tr. priem. iš naujo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Nustatyti iš naujo?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Ištrinti visą asmens informaciją ir atsisiųstas programas? Šio veiksmo negalėsite anuliuoti!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Ištrinti viską"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Ištrinama"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Palaukite..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data ir laikas"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Nustatyti datą ir laiką"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Nustatyti datą, laiką, laiko juostą ir formatus"</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Rūšiuoti pagal laiko juostą"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Laikas"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Pridėti naudotoją"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Pridėti paskyrą"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Naudotojo ištrynimas"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Naujas naudotojas"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Svečias"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administratorius"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Esate prisij. kaip administrator."</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Visi administratoriaus leidimai"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Nustatyti kaip administratorių"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Naudotojas galės ištrinti naudotojus, įskaitant administratorius, ir atkurti gamyklinius sistemos duomenis."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Šio veiksmo atšaukti negalima."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Taip, nustatyti kaip administratorių"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Kurti naujus naudotojus"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Skambinti"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Susir. naud. automob. mob. r. duom."</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Įdiegti naujas programas"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Pašalinti programas"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Pridėti naudotoją"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Naujas naudotojas"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Pridėti naują naudotoją?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kai pridedate naują naudotoją, šis asmuo turi nustatyti savo vietą."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bet kuris naudotojas gali atnaujinti visų kitų naudotojų programas."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Pasiekta naudotojų riba"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Galite sukurti iki <xliff:g id="COUNT">%d</xliff:g> naudotojo.</item>
+      <item quantity="few">Galite sukurti iki <xliff:g id="COUNT">%d</xliff:g> naudotojų.</item>
+      <item quantity="many">Galite sukurti iki <xliff:g id="COUNT">%d</xliff:g> naudotojo.</item>
+      <item quantity="other">Galite sukurti iki <xliff:g id="COUNT">%d</xliff:g> naudotojų.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Nepavyko sukurti naujo naudotojo"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Ištrinti šį naudotoją?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Visos programos ir duomenys bus ištrinti."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Nepavyko ištrinti naudotojo."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Atsisakyti"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Bandyti dar kartą"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Ištrinti pask. naudotoją?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Ištrynus vienintelį likusį šio automobilio naudotoją, bus sukurtas naujas administratoriaus teises turintis naudotojas."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Visi su šiuo naudotoju susiję duomenys, nustatymai ir programos bus ištrinti. Turėsite nustatyti sistemą iš naujo."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Naujo administratoriaus pasirinkimas"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Jums reikalingas bent vienas administratorius. Kad galėtumėte ištrinti šį, pirmiausia pasirinkite kitą administratorių."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Pasir. administratorių"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Svečias"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Svečias"</string>
     <string name="user_switch" msgid="6544839750534690781">"Jungiklis"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Jūs (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Vardas"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nenustatyta"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Naudotojo vardo redagavimas"</string>
     <string name="users_list_title" msgid="770764290290240909">"Naudotojai"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Leidimai suteikti naudot. %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Paskyros"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Naudotojas"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Pridėti paskyrą"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nepridėta jokių paskyrų"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Paskyros (<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>)"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatiškai sinchronizuoti duomenis"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Leisti programoms automatiškai atnaujinti duomenis"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Įjungti autom. sinchronizavimą?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Bet kokie paskyrų pakeitimai, kuriuos atliekate žiniatinklyje, bus automatiškai nukopijuoti į jūsų įrenginį.\n\nIš kai kurių paskyrų į žiniatinklį gali būti automatiškai kopijuojami visi telefone atlikti pakeitimai. Taip veikia „Google“ paskyra."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Išjungti autom. sinchronizavimą?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Tai atlikus duomenys bus naudojami saikingai, tačiau, jei norėsite surinkti naujausią informaciją, turėsite sinchronizuoti kiekvieną paskyrą neautomatiškai. Be to, negausite pranešimų, kai atsiras naujinių."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Paskyros informacija"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Paskyros pridėjimas"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Paskyros pridėjimas"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Pašalinti paskyrą"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Pašalinti paskyrą?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Pašalinus šią paskyrą iš įrenginio bus ištrinti visi pranešimai, kontaktai ir kiti duomenys."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Administratorius neleidžia atlikti šio pakeitimo"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Pašalinti šį naudotoją?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Visos programos ir duomenys bus ištrinti."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Nepavyko pašalinti naudotojo."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Bandyti dar kartą?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Atsisakyti"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Bandyti dar kartą"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Pridėti naują naudotoją?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kai pridedate naują naudotoją, šis asmuo turi nustatyti savo vietą."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bet kuris naudotojas gali atnaujinti visų kitų naudotojų programas."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Nepavyko pašalinti paskyros."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Paskyros sinchronizavimas"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Įjungtas elementų sinchronizavimas: <xliff:g id="ID_1">%1$d</xliff:g> iš <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Įjungtas visų elementų sinchronizavimas"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Išjungtas visų elementų sinchronizavimas"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinchronizav. IŠJUNGTAS"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sinchronizavimo klaida"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Pastarąjį kartą sinchronizuota <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sinchronizuojama dabar…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Palieskite, kad sinchronizuotumėte dabar (<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinchronizuoti dabar"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Atšaukti sinchronizavimą"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Šiuo metu iškilo sinchronizavimo problemų. Greitai jis vėl veiks."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sauga"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekrano užraktas"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nėra"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN kodas"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Slaptažodis"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Rinkitės užrakto tipą"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Ekrano užrakto parinktys"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Užrakto parinktys"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Nupieškite atrakinimo piešinį"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Patvirtinti"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Nustatyti iš naujo"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ekrano užrakto nustatymas"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Pasirinkite PIN kodą"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Pasirinkite piešinį"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Pasirinkite slaptažodį"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Pasirinkite slaptažodį"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Esamas ekrano užraktas"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Nustatykite saugumo atrakinimo piešinį"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Išvalyti"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Dažnai naudojamus slaptažodžius užblokavo IT administratorius. Bandykite naudoti kitą slaptažodį."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Didėjanti, mažėjanti ar pasikartojanti skaitmenų seka neleidžiama."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekrano užrakto parinktys"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: prieš <xliff:g id="NUM_DAYS">%3$s</xliff:g> d."</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Pridėti patikimą įrenginį"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Patikimi įrenginiai"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> įrenginys</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> įrenginiai</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> įrenginio</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> įrenginių</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"„<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g>“ įrenginys atrakins šį automobilį, kai šis bus prijungtas. Jei koks nors asmuo paims „<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>“ įrenginį, jis galės pasiekti šį įrenginį"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Patvirtinti"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Pašalinti patikimą įrenginį"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Atlikta"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Naudokite papildomą programą, kad nustatytumėte patikimą įrenginį. Nustatę galėsite atrakinti naudotojo profilį, kai transporto priemonė aptiks telefoną"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Atsisiųskite papildomą programą telefone"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Pasirinkite automobilį „<xliff:g id="CAR_NAME">%1$s</xliff:g>“ telefone, kad susietumėte įrenginius"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"„Smart Lock“ negali aptikti šio įrenginio saugos funkcijų. Automobilio saugos sumetimais patikimas įrenginys galės laikyti atrakintą automobilį, tik kai jį jau būsite atrakinę. Patikimas įrenginys negali laikyti atrakinto automobilio, kai jis yra netoliese, net jei įrenginį laiko kažkas kitas."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Pridėti „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“kaip patikimą įrenginį"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"„<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“ įrenginys sėkmingai pridėtas kaip patikimas"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"„<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“ įrenginio registracija nepavyko"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Pridėję patikimą įrenginį, paskui turėsite nustatyti autentifikavimo metodą. Jei su savimi patikimo įrenginio neturite, autentifikavimas bus būtinas norint pasiekti profilį."</string>
     <string name="forget" msgid="3971143908183848527">"Pamiršti"</string>
+    <string name="connect" msgid="5861699594602380150">"Prisijungti"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Atsijungti"</string>
     <string name="delete_button" msgid="5840500432614610850">"Ištrinti"</string>
     <string name="remove_button" msgid="6664656962868194178">"Pašalinti"</string>
     <string name="cancel" msgid="750286395700355455">"Atšaukti"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Išeiti iš demonstrac. režimo"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tai atlikus bus ištrinta demonstracinė paskyra ir atkurti gamykliniai sistemos duomenys. Visi naudotojo duomenys bus prarasti."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Išeiti iš dem. režimo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"užbaigti sąranką"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ne dabar"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ATSISAKYTI"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funkcija nepasiekiama vairuojant."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Negalima pridėti naudotojo vairuojant."</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 4d74066..32ef61d 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"aptumšot ekrānu, skārienekrāns, akumulators"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"aptumšot ekrānu, nakts, tonējums"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nakts režīms"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Tīkls un internets"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilais tīkls"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilie dati"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Piekļuve datiem, izmantojot mobilo tīklu"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vai izslēgt mobilos datus?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Datu lietojums"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Datu brīdinājums un ierobežojums"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Lietotnes datu lietojuma cikls"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Iestatīt datu brīdinājumu"</string>
+    <string name="data_warning" msgid="116776633806885370">"Datu brīdinājums"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Iestatīt datu ierobežojumu"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datu ierobežojums"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Datu lietojuma ierobežošana"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Kad transportlīdzekļa sistēmas panelī būs sasniegts jūsu iestatītais ierobežojums, mobilie dati tiks izslēgti.\n\nTā kā datu lietojums tiek noteikts sistēmas panelī un jūsu mobilo sakaru operators var citādi uzskaitīt datu lietojumu, ieteicams iestatīt pārdomātu ierobežojumu."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Iestatīt un pārvaldīt bezvadu piekļuves punktu"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Notiek Wi-Fi ieslēgšana…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Notiek Wi-Fi izslēgšana…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Notiek Wi‑Fi saraksta ielāde"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi atspējots"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Neizdevās aizmirst tīklu."</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Neizdevās izveidot savienojumu ar tīklu."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Pievienot tīklu"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi atspējots"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Savienot"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parole"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Rādīt paroli"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Tīkla nosaukums"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Ievadiet SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Drošība"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signāla stiprums"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signāla stiprums"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Statuss"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Saites izveides ātrums"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvence"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP adrese"</string>
+    <string name="show_password" msgid="2074628020371139240">"Rādīt paroli"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Ievadiet tīkla nosaukumu"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Ievadiet paroli"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Vājš"</item>
-    <item msgid="2032262610626057081">"Viduvējs"</item>
-    <item msgid="3859756017461098953">"Labs"</item>
-    <item msgid="1521103743353335724">"Teicams"</item>
+    <item msgid="7683058295076342057">"Vājš"</item>
+    <item msgid="1639222824821660744">"Viduvējs"</item>
+    <item msgid="1838705897358163300">"Labs"</item>
+    <item msgid="6067166649320533751">"Teicams"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Ieslēgt Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth atspējots"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Dati par tīklu"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC adrese"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP adrese"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Apakštīkla maska"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 adreses"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Vārteja"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi preferences"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Automātiski ieslēgt Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi tiks ieslēgts netālu no sagl. augstas kval. tīkliem, piem., mājas tīkla."</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nav pieejams, jo atr. vieta ir izsl. Ieslēdziet "<annotation id="link">"atr. vietu"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vai ieslēgt Wi‑Fi meklēšanu?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Ieslēgt"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi meklēšana ir ieslēgta"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automātiski pārslēgties uz mobilajiem datiem"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Izmantojiet mobilo datu savienojumu, kad Wi‑Fi tīklā nav piekļuves internetam. Var tikt piemērota maksa par datu lietojumu."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Uzzināt vairāk"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Pārvaldīt savienojumus, iestatīt ierīces nosaukumu un uztveramību"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Dators"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Austiņas"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Tālrunis"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Attēlu apstrādes ierīce"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Austiņas"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Ievades ierīce"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Pārī savienotās ierīces"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Pieejamās ierīces"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nav pārī savienotu ierīču"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nav pieejamu ierīču"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Pārī savienota ierīce"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nosaukums"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Izmantošana:"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Mainiet Bluetooth ierīces nosaukumu"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Nenosaukta ierīce"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Pārī savienotās ierīces"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Savienošana pārī ar jaunu ierīci"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Tiks ieslēgts Bluetooth savienojums un izveidots savienojums pārī."</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Vai atvienot ierīci?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Jūsu transportlīdzeklis tiks atvienots no ierīces <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Transportlīdzekļa Bluetooth adrese: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Ierīces Bluetooth adrese: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Transportlīdzekļa nosaukums"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Transportlīdzekļa pārdēvēšana"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Ierīces pārdēvēšana"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Pārdēvēt"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Pieejamās ierīces"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profili"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth pieprasījums savienošanai pārī"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Savienot pārī un izveidot savienojumu"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth kods savienošanai pārī"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN ietver burtus vai simbolus"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Ierakstiet kodu savienošanai pārī un pēc tam nospiediet ievadīšanas taustiņu."</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Parasti 0000 vai 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Pieprasījums savienošanai pārī"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Pieskarieties, lai izveidotu savienojumu pārī ar ierīci “<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Valodas"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Valodas un ievade"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastatūra"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Tastatūru pārvaldība"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Teksta pārvēršanas runā izvade"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Vēlamā programma"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Pašreizējā programma"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Runas ātrums"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tonis"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Atiestatīt"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Skaņa"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Zvana skaļums"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigācijas skaļums"</string>
@@ -100,31 +140,66 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Multivide"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Iestatīt mūzikas un videoklipu skaļumu"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Signāls"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Tālruņa zvana signāls"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Paziņojuma noklusējuma skaņa"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Modinātāja noklusējuma skaņa"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Lietotnes un paziņojumi"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Rādīt visas lietotnes"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Noklusējuma lietotnes"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informācija par lietotni"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Veikt piespiedu apturēšanu"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vai veikt piespiedu apturēšanu?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Piespiedu kārtā apturot lietotnes darbību, var rasties šīs lietotnes darbības traucējumi."</string>
     <string name="disable_text" msgid="4358165448648990820">"Atspējot"</string>
     <string name="enable_text" msgid="1794971777861881238">"Iespējot"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Atinstalēt"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ja atspējosiet šo lietotni, Android un citas lietotnes, iespējams, vairs nedarbosies, kā paredzēts."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Atspējot lietotni"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Atļaujas"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versija: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nav piešķirta neviena atļauja."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nav pieprasīta neviena atļauja."</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datu lietojums"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Lietotnes datu lietojums"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Veikt piespiedu apturēšanu"</string>
     <string name="computing_size" msgid="5791407621793083965">"Notiek aprēķināšana…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> papildu atļauju</item>
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> papildu atļauja</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> papildu atļaujas</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asistents un balss ievade"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Palīga lietotne"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Izmantot ekrānā redzamo tekstu"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Atļaut palīga lietotnei piekļūt ekrānā redzamajam tekstam"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Izmantot ekrānuzņēmumu"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Atļaut palīga lietotnei piekļūt ekrāna attēlam"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Automātiskā aizpilde"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Nav"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Atlasīta"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Asistents varēs lasīt informāciju par jūsu sistēmā izmantotajām lietotnēm, tostarp jūsu ekrānā redzamo informāciju vai lietotnēs pieejamo informāciju."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Pārliecinieties, ka šī lietotne ir uzticama&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google automātiskā aizpilde&gt;%1$s&lt;/xliff:g&gt; izmanto ekrānā redzamo saturu, lai noteiktu, kādu informāciju aizpildīt automātiski."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Pievienot pakalpojumu"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Atrašanās vieta"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Neseni atrašanās vietu pieprasījumi"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nav nesenu atrašanās vietu pieprasījumu"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Lietotnes līmeņa atļaujas"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Notiek meklēšana"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Atrašanās vietu pakalpojumi"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi meklēšana"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Ļauj lietotnēm un pakalpojumiem meklēt Wi-Fi tīklus vienmēr, pat ja Wi-Fi ir izslēgts. Šo iestatījumu var izmantot, piemēram, lai uzlabotu atrašanās vietas funkcijas un pakalpojumus."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth meklēšana"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Ļauj lietotnēm un pakalpojumiem meklēt tuvumā esošas ierīces vienmēr, pat ja Bluetooth ir izslēgts. Šo iestatījumu var izmantot, piemēram, lai uzlabotu atrašanās vietas funkcijas un pakalpojumus."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistēma"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Sistēmas atjauninājumi"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Sistēmas atjauninājumi"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android versija"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android drošības ielāpa līmenis"</string>
     <string name="model_info" msgid="4966408071657934452">"Modelis"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Pamatjoslas versija"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kodola versija"</string>
     <string name="build_number" msgid="3997326631001009102">"Būvējuma numurs"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adrese"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nav pieejams"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Statuss"</string>
     <string name="device_status" msgid="267298179806290920">"Statuss"</string>
@@ -141,12 +216,50 @@
     <string name="copyright_title" msgid="4220237202917417876">"Autortiesības"</string>
     <string name="license_title" msgid="936705938435249965">"Licence"</string>
     <string name="terms_title" msgid="5201471373602628765">"Pakalpojumu sniegšanas noteikumi"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Sistēmas WebView licence"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Sistēmas WebView licences"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Fona tapetes"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satelītuzņēmumu nodrošinātāji:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Trešo pušu licences"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Ielādējot licences, radās problēma."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Notiek ielāde…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="zero">Lai jūs kļūtu par izstrādātāju, atlikušas <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> darbības.</item>
+      <item quantity="one">Lai jūs kļūtu par izstrādātāju, atlikusi <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> darbība.</item>
+      <item quantity="other">Lai jūs kļūtu par izstrādātāju, atlikušas <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> darbības.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Tagad jūs esat izstrādātājs!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nav nepieciešams, ja jau esat izstrādātājs."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opcijas izstrādātājiem"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Atiestatīšanas opcijas"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Tīkla, lietotņu vai ierīces atiestatīšana"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Atiestatīt tīklu"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Tiks atiestatīti visi tīkla iestatījumu, tostarp tālāk norādītie iestatījumi."</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobilie dati"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Dzēst visas transportlīdzekļa eSIM kartes"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Šī darbība neatcels jūsu pakalpojumu plānu."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Nevar atiestatīt eSIM kartes"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Tīkla atlase"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Atiestatīt iestatījumus"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Vai atiestatīt?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Vai atiestatīt visus tīkla iestatījumus? Šo darbību nevarēs atsaukt."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Atiestatīt iestatījumus"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Tīkla iestatījumi ir atiestatīti."</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Atiestatīt lietotņu preferences"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Šādi tiks atiestatītas visas preferences, kas saistītas ar:\n\n"<li>"atspējotām lietotnēm;"</li>\n<li>"atspējotu lietotņu paziņojumiem;"</li>\n<li>"darbībām paredzētām noklusējuma lietojumprogrammām;"</li>\n<li>"lietotņu fona datu ierobežojumiem;"</li>\n<li>"visiem atļauju ierobežojumiem."</li>\n\n"Jūs nezaudēsiet lietotņu datus."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Atiestatīt lietotnes"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Lietotņu preferences ir atiestatītas"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Notīrīt visus datus (atiestatīt ierīci)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Tādējādi tiks izdzēsti visi transportlīdzekļa sistēmas panelī esošie dati, tostarp:\n\n"<li>"jūsu Google konts;"</li>\n<li>"sistēmas un lietotņu dati un iestatījumi;"</li>\n<li>"lejupielādētās lietotnes."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Jūs pašlaik esat pierakstījies šādos kontos:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Šo transportlīdzekli izmanto vēl citi lietotāji."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Atiestatīt transportlīdzekli"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vai atiestatīt?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vai dzēst visu jūsu personisko informāciju un lejupielādētās lietotnes? Šo darbību nevarēs atsaukt."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Dzēst visu"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Notiek dzēšana"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Lūdzu, uzgaidiet…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datums un laiks"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Datuma un laika iestatīšana"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Iestatīt datumu, laiku, laika joslu un formātus"</string>
@@ -166,23 +279,60 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Kārtot pēc laika joslas"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datums"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Laiks"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Lietotāja pievienošana"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Pievienot kontu"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Dzēst lietotāju"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Jauns lietotājs"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Viesis"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrators"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Pierakstījies kā administrators"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Visas administratora atļaujas"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Iestatīt kā administratoru"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Attiecīgais lietotājs varēs dzēst lietotājus, tostarp citus administratorus, kā arī veikt sistēmas rūpnīcas datu atiestatīšanu."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Šī darbība ir neatgriezeniska."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Jā, iestatīt kā administratoru"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Jaunu lietotāju izveide"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Tālruņa zvanu veikšana"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Ziņojumi, lietojot auto mob. datus"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Jaunu lietotņu instalēšana"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Lietotņu atinstalēšana"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Lietotāja pievienošana"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Jauns lietotājs"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Jauns lietotājs"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kad pievienosiet jaunu lietotāju, viņam būs jāizveido savs profils."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Ikviens lietotājs var atjaunināt lietotnes citu lietotāju vietā."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Sasniegts lietotāju ierobežojums"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="zero">Var izveidot ne vairāk kā <xliff:g id="COUNT">%d</xliff:g> lietotājus.</item>
+      <item quantity="one">Var izveidot ne vairāk kā <xliff:g id="COUNT">%d</xliff:g> lietotāju.</item>
+      <item quantity="other">Var izveidot ne vairāk kā <xliff:g id="COUNT">%d</xliff:g> lietotājus.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Neizdevās izveidot jaunu lietotāju"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vai dzēst šo lietotāju?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Tiks dzēstas visas lietotnes un dati."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Neizdevās izdzēst lietotāju"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Noraidīt"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Mēģināt vēlreiz"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Dzēst pēdējo lietotāju?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Kad šai automašīnai tiks izdzēsts pēdējais atlikušais lietotājs, tiks izveidots jauns administratīvais lietotājs."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Tiks dzēsti visi ar šo lietotāju saistītie dati, iestatījumi un lietotnes. Jums būs vēlreiz jāiestata sistēma."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Jauna administratora izvēle"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Nepieciešams vismaz viens administrators. Lai dzēstu šo administratoru, vispirms izvēlieties aizvietotāju."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Izvēlēties administratoru"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Viesis"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Viesis"</string>
     <string name="user_switch" msgid="6544839750534690781">"Pārslēgt"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Jūs (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Vārds"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nav iestatīts"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Lietotāja vārda rediģēšana"</string>
     <string name="users_list_title" msgid="770764290290240909">"Lietotāji"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Lietotāja %1$s atļaujas"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Konti"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Lietotājs"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Pievienot kontu"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nav pievienots neviens konts"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Lietotāja <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> konti"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automātiski sinhronizēt datus"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Ļaut lietotnēm automātiski atsvaidzināt datus"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Vai ieslēgt datu sinhronizāciju?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Visas jūsu tīmekļa kontos veiktās izmaiņas tiks automātiski kopētas uz jūsu ierīci.\n\nNoteiktiem kontiem visas tālrunī veiktās izmaiņas var arī tikt automātiski kopētas uz tīmekļa kontu. Šādi darbojas arī Google konts."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Vai izslēgt datu sinhronizāciju?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Dati tiks saglabāti, taču jums būs jāsinhronizē katra konta dati manuāli, lai iegūtu jaunāko informāciju. Turklāt jūs nesaņemsiet paziņojumus par atjauninājumiem."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informācija par kontu"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Konta pievienošana"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Konta pievienošana"</string>
@@ -190,16 +340,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Noņemt kontu"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Vai noņemt kontu?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Noņemot šo kontu, no ierīces tiks dzēsti arī visi šajā kontā esošie ziņojumi, kontaktpersonas un citi dati."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Jūsu administrators neļauj veikt šīs izmaiņas."</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Vai noņemt šo lietotāju?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Tiks dzēstas visas lietotnes un dati."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Neizdevās noņemt lietotāju"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Vai mēģināt vēlreiz?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Aizvērt"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Mēģināt vēlreiz"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Jauns lietotājs"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kad pievienosiet jaunu lietotāju, viņam būs jāizveido savs profils."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Ikviens lietotājs var atjaunināt lietotnes citu lietotāju vietā."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Neizdevās noņemt kontu"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Konta sinhronizācija"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinhronizācija ieslēgta <xliff:g id="ID_1">%1$d</xliff:g> no <xliff:g id="ID_2">%2$d</xliff:g> vienumiem"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinhronizācija ieslēgta visiem vienumiem"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinhronizācija izslēgta visiem vienumiem"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinhronizācija IZSLĒGTA"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sinhronizācijas kļūda"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Pēdējoreiz sinhronizēts: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Pašlaik notiek sinhronizācija…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Pieskarieties, lai sinhronizētu tūlīt (pēdējoreiz sinhronizēts: <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinhronizēt tūlīt"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Atcelt sinhronizāciju"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Pašlaik ir sinhronizācijas problēmas. Drīz šī darbība atkal būs pieejama."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Drošība"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekrāna bloķēšana"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nav"</string>
@@ -207,7 +361,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Parole"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Bloķēšanas veids"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Ekrāna bloķēšanas opcijas"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Bloķēšanas iespējas"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Ievadiet savu kombināciju"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Apstiprināt"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Atkārtoti zīmēt"</string>
@@ -217,7 +371,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ekrāna bloķēšanas iestatīšana"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Izvēlieties PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Kombinācijas izvēle"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Izvēlieties paroli"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Izvēlieties paroli"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Pašreizējais ekrāna bloķēšanas veids"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Drošības nolūkos iestatiet kombināciju."</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Notīrīt"</string>
@@ -295,7 +449,29 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Jūsu IT administrators ir bloķējis pārāk vienkāršas paroles. Izmēģiniet sarežģītāku paroli."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nav atļauta augoša, dilstoša vai atkārtota ciparu secība."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekrāna bloķēšanas opcijas"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pirms <xliff:g id="NUM_DAYS">%3$s</xliff:g> dienām"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Pievienot uzticamu ierīci"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Uzticamas ierīces"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> ierīču</item>
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ierīce</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ierīces</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Jūsu ierīce <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> atbloķēs šo automašīnu, ja ierīcei būs izveidots savienojums ar to. Ja kāda persona paņem jūsu ierīci <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, šī persona var piekļūt jūsu ierīcei."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Apstiprināt"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Noņemt uzticamo ierīci"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Gatavs"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Izmantojiet palīglietotni, lai iestatītu uzticamu ierīci. Pēc iestatīšanas varēsiet atbloķēt savu lietotāja profilu, kad transportlīdzeklī tiks konstatēts jūsu tālrunis."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Lejupielādējiet palīglietotni savā tālrunī."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Tālrunī atlasiet automašīnas nosaukumu (<xliff:g id="CAR_NAME">%1$s</xliff:g>), lai ierīces savienotu pārī."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Sistēma Smart Lock nevar noteikt šīs ierīces drošības funkcijas. Lai palīdzētu aizsargāt jūsu automašīnu, uzticamā ierīce varēs neļaut bloķēt automašīnu tikai tad, kad to jau būsiet atbloķējis. Jūsu uzticamā ierīce var neļaut bloķēt automašīnu, kad tā atrodas tuvumā, pat ja ierīci tur cita persona."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Uzticamas ierīces (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) pievienošana"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Ierīce <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ir sekmīgi pievienota kā uzticama ierīce."</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Neizdevās reģistrēt ierīci <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Pievienojot uzticamu ierīci, jums ir jāiestata arī autentifikācijas metode. Autentifikācija būs nepieciešama, lai jūs varētu piekļūt savam profilam, ja jums nebūs līdzi jūsu uzticamā ierīce."</string>
     <string name="forget" msgid="3971143908183848527">"Aizmirst"</string>
+    <string name="connect" msgid="5861699594602380150">"Izveidot savienojumu"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Atvienot"</string>
     <string name="delete_button" msgid="5840500432614610850">"Dzēst"</string>
     <string name="remove_button" msgid="6664656962868194178">"Noņemt"</string>
     <string name="cancel" msgid="750286395700355455">"Atcelt"</string>
@@ -305,8 +481,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Iziešana no demonstr. režīma"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tādējādi tiks dzēsts demonstrācijas konts un sistēmā tiks atiestatīti rūpnīcas dati. Visi lietotāja dati tiks zaudēti."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Iziet no demonstr. režīma"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"pabeigt iestatīšanu"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"vēlāk"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"NERĀDĪT"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funkcija nav pieejama braukšanas laikā."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Nevar pievienot lietotāju braukšanas laikā."</string>
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 2d5542b..097b55e 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"затемни екран, екран на допир, батерија"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"затемнет екран, ноќ, обојување"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Ноќен режим"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобилен интернет"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Пристап на интернет преку мобилната мрежа"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Да се исклучи мобилниот интернет?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Потрошен сообраќај"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Предупредување/ограничување на интернет"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Циклус на потрошен сообраќај од апликац."</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Поставете предупр. за интернет"</string>
+    <string name="data_warning" msgid="116776633806885370">"Предупредување за интернетот"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Поставете огранич. на интернет"</string>
+    <string name="data_limit" msgid="227338836292511425">"Ограничување на интернетот"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ограничување на потрошениот сообраќај"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Главната единица на возилото ќе го исклучи мобилниот интернет откако ќе се достигне ограничувањето што сте го поставиле.\n\nСо оглед на тоа дека главната единица го мери потрошениот сообраќај, а операторот може да го мери поинаку, размислете за поставување пониско ограничување."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Постави и управувај со безжични пристапни точки"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Вклучување Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Исклучување Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Се вчитува списокот со Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi е оневозможено"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Не успеа да се заборави мрежата"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Не успеа да се поврзе со мрежата"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Додај мрежа"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi е оневозможено"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Поврзи"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Лозинка"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Прикажи ја лозинката"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Име на мрежата"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Внеси SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Безбедност"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Јачина на сигнал"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Јачина на сигнал"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Статус"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Брзина на врска"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Зачестеност"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-адреса"</string>
+    <string name="show_password" msgid="2074628020371139240">"Прикажи ја лозинката"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Внесете име на мрежа"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Внесете лозинка"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Слаб"</item>
-    <item msgid="2032262610626057081">"Умерен"</item>
-    <item msgid="3859756017461098953">"Добар"</item>
-    <item msgid="1521103743353335724">"Одличен"</item>
+    <item msgid="7683058295076342057">"Слаб"</item>
+    <item msgid="1639222824821660744">"Умерен"</item>
+    <item msgid="1838705897358163300">"Добар"</item>
+    <item msgid="6067166649320533751">"Одличен"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Вклучи Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth е оневозможен"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Детали за мрежа"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-адреса"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-адреса"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Маска на подмрежа"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-адреси"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Мрежен мост"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Поставки за Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Вклучувај Wi‑Fi автоматски"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi ќе се вклучува на зачувани мрежи со висок квалитет во близина, како на пр., домашната мрежа"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Недостапно, локацијата е исклучена. Вклучете ја "<annotation id="link">"локацијата"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Да се вклучи скенирањето Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Вклучи"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Скенирањето Wi‑Fi е вклучено"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Автоматски префрли се на мобилен интернет"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Користете мобилен интернет кога Wi‑Fi нема пристап до интернет. Може да ви се наплати за потрошениот сообраќај."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Дознајте повеќе"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Управувај со конекции, подеси име и откривливост на уредот"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Компјутер"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Слушалки"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Телефон"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Слики"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Слушалка"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Периферен влез"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Спарени уреди"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Достапни уреди"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Нема спарени уреди"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Нема достапни уреди"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Спарен уред"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Име"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Користи за"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Сменете го името на Bluetooth-уредот"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Неименуван уред"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Спарени уреди"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Спарете нов уред"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth ќе се вклучи за спарување"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Да прекине врската со уредот?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Вашето возило е исклучено од <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Адреса на Bluetooth на возилото: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Адреса на Bluetooth на уредот: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Име на возилото"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Преименувајте го возилово"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Преименувајте го уредот"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Преименувај"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Достапни уреди"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Профили"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Барање за спарување преку Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Спари и поврзи"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код за спарување на Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN-от содржи букви или симболи"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Внесете го кодот за спарување, а потоа притиснете Врати или Внеси"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Обично 0000 или 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Барање за спарување"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Допрете за да се спари со <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Јазици"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Јазици и внесување"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Тастатура"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Управување со тастатури"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Излез „од текст во говор“"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Претпочитан софтвер"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Тековен софтвер"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Брзина на говор"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Висина на глас"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Ресетирај"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Звук"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Јачина на звук на ѕвонење"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Јачина на звук на навигацијата"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Аудиовиз. содржини"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Постави јачина на звук за музика и видеа"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Аларм"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Мелодија на телефонот"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Стандарден звук за известување"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Стандарден звук за аларм"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Апликации и известувања"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Прикажи ги сите апликации"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Стандардни апликации"</string>
     <string name="applications_settings" msgid="794261395191035632">"Информации за апликациите"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Исклучи присилно"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Исклучи присилно?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ако присилно запрете апликација, таа може да не се однесува правилно."</string>
     <string name="disable_text" msgid="4358165448648990820">"Оневозможи"</string>
     <string name="enable_text" msgid="1794971777861881238">"Овозможи"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Деинсталирај"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ако ја оневозможите оваа апликација, Android и другите апликации можеби веќе нема да функционираат како што треба."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Оневозможете ја апликацијата"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Дозволи"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Верзија %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Не се доделени дозволи"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Не се побарани дозволи"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Потрошен сообраќај"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Сообраќај на апликациите"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Исклучи присилно"</string>
     <string name="computing_size" msgid="5791407621793083965">"Пресметување…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> дополнителна дозвола</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> дополнителни дозволи</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Помош и гласовен запис"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Апликација за помош"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Користи го текстот од екранот"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Дозволи апликацијата за помош да пристапи до содржините на екранот како текст"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Користи ја сликата од екранот"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Дозволи апликацијата за помош да пристапи до слика од екранот"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Услуга за автоматско пополнување"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Нема"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Избрана"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Помошникот ќе може да чита информации за апликациите што се користат во системот, вклучувајќи ги информациите што се видливи на екранот или до коишто може се пристапи во апликациите."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Проверете дали е ова апликација на која ѝ верувате&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=„Автоматско пополнување на Google“&gt;%1$s&lt;/xliff:g&gt; го користи она што е на екранот за да утврди што може автоматски да се пополни."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Додај услуга"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Локација"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Последни барања за локација"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нема неодамнешни барања за локација"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Дозволи на ниво на апликација"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Скенирање"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Услуги според локација"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Скенирање на Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Дозволете апликациите и услугите да скенираат Wi-Fi мрежи во секое време, дури и кога Wi-Fi е исклучено. Ова може да се користи, на пример, за да се подобрат функциите и услугите базирани на локација."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Скенирање на Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Дозволете апликациите и услугите да скенираат уреди во близина во секое време, дури и кога Bluetooth е исклучен. Ова може да се користи, на пример, за да се подобрат функциите и услугите базирани на локација."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Ажурирања на системот"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Ажурирања на системот"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Верзија на Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Ниво на безбедносна лепенка на Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Модел"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Верзија со основен појас на фреквенција"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Верзија на кернел"</string>
     <string name="build_number" msgid="3997326631001009102">"Број на верзија"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Адреса на Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Не се достапни"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Статус"</string>
     <string name="device_status" msgid="267298179806290920">"Статус"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Авторско право"</string>
     <string name="license_title" msgid="936705938435249965">"Лиценца"</string>
     <string name="terms_title" msgid="5201471373602628765">"Правила и услови"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Системска лиценца за WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Системски лиценци за WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Тапети"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Даватели на сателитски снимки:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Лиценци на трети лица"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Постои проблем при вчитување на лиценците."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Се вчитува…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Сега сте на <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> чекор поблиску да станете програмер.</item>
+      <item quantity="other">Сега сте на <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> чекори поблиску да станете програмер.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Сега сте програмер!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Нема потреба, веќе сте програмер."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Опции за програмери"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Опции за ресетирање"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Мрежа, апликации или ресетирање на уредот"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Ресетирај ја мрежата"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Ова ќе ги ресетира сите мрежни поставки, вклучувајќи:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобилен интернет"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Избриши ги сите eSIM-картички на возилото"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Ова нема да го откаже вашиот пакет со услуги."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Не може да се ресетираат eSIM-картичките"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Изберете мрежа"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Ресетирај поставки"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Ресетирај?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Да се ресетираат сите мрежни поставки? Не може да се врати ова дејство!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Ресетирај поставки"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Мрежните поставки се ресетирани"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Ресетирај ги поставките за апликациите"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Со ова ќе се ресетираат сите поставки за:\n\n"<li>"оневозможените апликации;"</li>\n<li>"оневозможените известувања за апликации;"</li>\n<li>"стандардните апликации за дејства;"</li>\n<li>"ограничувањата за податоци од заднина за апликациите;"</li>\n<li>"сите ограничувања за дозволите."</li>\n\n"Нема да изгубите никакви податоци на апликациите."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Ресетирај апликации"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Параметрите за апликацијата се ресетирани"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Избриши ги сите податоци"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Ова ќе ги избрише сите податоци од уредот за на глава на возилото, заедно со:\n\n"<li>"вашата сметка на Google;"</li>\n<li>"податоците и поставките на системот и апликациите;"</li>\n<li>"преземените апликации."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Моментално сте најавени на следниве сметки:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Присутни се и други корисници на возилово."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Ресетирај го возилото"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Ресетирај?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Дали да се избришат сите ваши лични податоци и преземени апликации? Не може да го вратите ова дејство!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Избриши сѐ"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Се брише"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Почекајте…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Датум и време"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Постави датум и време"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Постави датум, време, временска зона и формати"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Подреди по временска зона"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Датум"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Време"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Додај корисник"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Додај сметка"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Избриши корисник"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Нов корисник"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Гостин"</string>
     <string name="user_admin" msgid="1535484812908584809">"Администратор"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Најавени сте како администратор"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Сите администраторски дозволи"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Направи го администратор"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Корисникот ќе може да брише други корисници (вклучително и други администратори) и фабрички да го ресетира системот."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Ова дејство не може да се врати."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Да, направи го администратор"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Создавање нови корисници"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Телефонирање"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Пораки преку интернет на автомобил"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Инсталирање нови апликации"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Деинсталирање апликации"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Додај корисник"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Нов корисник"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Да се додаде нов корисник?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Кога додавате нов корисник, тоа лице треба да го постави својот простор."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Секој корисник може да ажурира апликации за сите други корисници."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Достигнато ограничување на корисник"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Може да создадете најмногу <xliff:g id="COUNT">%d</xliff:g> корисник.</item>
+      <item quantity="other">Може да создадете најмногу <xliff:g id="COUNT">%d</xliff:g> корисници.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Не успеа да создаде нов корисник"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Избриши го корисникот?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Ќе се избришат сите апликации и податоци."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Не успеа да се избрише корисникот."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Отфрли"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Повторно"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Избриши последен корисник?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"По бришењето на единствениот преостанат корисник за автомобилов, ќе се создаде нов корисник-администратор."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Ќе се избришат сите податоци, поставки и апликации поврзани со корисников. Ќе треба повторно да го поставите системот."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Избирање нов администратор"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Треба да имате најмалку еден администратор. За да го избришете постоечкиот, прво изберете замена."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Изберете администратор"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Гостин"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Гостин"</string>
     <string name="user_switch" msgid="6544839750534690781">"Префрли"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Вие (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Име"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не е поставен"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Изменување на корисничкото име"</string>
     <string name="users_list_title" msgid="770764290290240909">"Корисници"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Дадени се дозволи на %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Сметки"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Корисник"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Додај сметка"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Нема додадени сметки"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Сметки за <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Автоматска синхронизација на податоци"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Дозволи апликациите автоматски да ги освежуваат податоците"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Вклучи авто синхрон. на подат.?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Сите промени што ќе ги направите на вашите сметки на интернет автоматски ќе се ископираат на уредот.\n\nНекои сметки можеби автоматски ќе ги ископираат и промените што ги правите на телефонот на интернет. Сметката на Google го прави тоа."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Исклучи авто синхрон. на подат.?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Ова ќе ви заштеди интернет, но ќе треба да ја синхронизирате секоја сметка рачно за да се соберат најновите информации. Освен тоа, нема да добивате известувања за ажурирања."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Информации за сметката"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Додај сметка"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Додај сметка"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Отстрани сметка"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Да се отстрани сметката?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Со отстранување на оваа сметка ќе се избришат сите нејзини пораки, контакти и другите податоци од уредот!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Администраторот не ја дозволува промената"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Да се отстрани корисникот?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Ќе се избришат сите апликации и податоци."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Не успеавме да го отстраниме корисникот"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Повторен обид?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Отфрли"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Повторно"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Да се додаде нов корисник?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Кога додавате нов корисник, тоа лице треба да го постави својот простор."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Секој корисник може да ажурира апликации за сите други корисници."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Не успеа да се отстрани сметката."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Синхронизирање сметка"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Синхронизацијата е вклучена за <xliff:g id="ID_1">%1$d</xliff:g> од <xliff:g id="ID_2">%2$d</xliff:g> ставки"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Синхронизацијата е вклучена за сите ставки"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Синхронизацијата е исклучена за сите ставки"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Синхронизирање ИСКЛУЧЕНО"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Грешка при синхронизирање"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Последно синхронизирање <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Се синхронизира сега…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Допрете да се синхронизира сега <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Синхронизирај сега"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Откажи синхронизација"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Синхронизацијата има проблеми во моментов. Ќе се врати наскоро."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Безбедност"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Заклучување екран"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Нема"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Лозинка"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Избери тип заклучување"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Опции за заклучување на екранот"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Опции за заклучување"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Внесете ја шемата"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Потврди"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Измени"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Поставете заклучување екран"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Изберете PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Изберете шема"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Изберете лозинка"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Изберете ја вашата лозинка"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Тековно заклучување на екранот"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"За безбедност, поставете шема"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Исчисти"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Обичните лозинки се блокирани од вашиот IT-администратор. Обидете се со друга лозинка."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Не е дозволена низа на цифри со растечки, опаѓачки или повторлив редослед."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опции за заклучување на екранот"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: пред <xliff:g id="NUM_DAYS">%3$s</xliff:g> дена"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Додај доверлив уред"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Доверливи уреди"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> уред</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> уреди</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Вашиот <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ќе го отклучува автомобилов кога е поврзан. Ако некој ви го земе <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, ќе може да пристапува до уредов"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Потврди"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Отстрани доверлив уред"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Употребете ја придружната апликација за да поставите доверлив уред. Откако ќе го поставите, ќе може да го отклучите корисничкиот профил кога возилото ќе го открие вашиот телефон"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Преземете ја придружната апликација на телефонот"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Изберете <xliff:g id="CAR_NAME">%1$s</xliff:g> на телефонот за да ги спарите уредите"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock не може да ги открие безбедносните функции на уредов. За да помогне да се заштити автомобилот, доверливиот уред ќе може да го чува автомобилот отклучен само откако вие ќе го отклучите. Вашиот доверлив уред може да го чува автомобилот отклучен кога е во близина, дури и ако некој друг го држи."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Додајте го <xliff:g id="DEVICE_NAME">%1$s</xliff:g> како доверлив уред"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> е успешно додаден како доверлив уред"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Регистрацијата на <xliff:g id="DEVICE_NAME">%1$s</xliff:g> не успеа"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ако додадете доверлив уред, ќе треба да поставите метод на проверка во следниот чекор. Ако доверливиот уред не ви е при рака, ќе ви биде потребна проверка за да пристапите до профилот."</string>
     <string name="forget" msgid="3971143908183848527">"Избриши го"</string>
+    <string name="connect" msgid="5861699594602380150">"Поврзи"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Исклучи"</string>
     <string name="delete_button" msgid="5840500432614610850">"Избриши"</string>
     <string name="remove_button" msgid="6664656962868194178">"Да"</string>
     <string name="cancel" msgid="750286395700355455">"Откажи"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Излез од демо-режим"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ова ќе ја избрише демо-сметката и ќе ги ресетира фабричките податоци на системот. Сите податоци на корисникот ќе се изгубат."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Излези од демо-режим"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"заврши со поставување"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"не сега"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ОТФРЛИ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Функцијата не е достапна при возење."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Не може да се додаде корисник додека возите."</string>
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index f69d432..be6753a 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"മങ്ങിയ സ്‌ക്രീൻ, ടച്ച്‌സ്‌ക്രീൻ, ബാറ്ററി"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"മങ്ങിയ സ്ക്രീൻ, രാത്രി, ടിന്റ്"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"നൈറ്റ് മോഡ്"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"നെറ്റ്‌വർക്കും ഇന്റർനെറ്റും"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"മൊബൈൽ നെറ്റ്‌വർക്ക്"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"മൊബൈൽ ഡാറ്റ"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"മൊബൈൽ നെറ്റ്‌വർക്ക് ഉപയോഗിച്ച് ഡാറ്റ ആക്‌സസ് ചെയ്യുക"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"മൊബൈൽ ഡാറ്റ ഓഫാക്കണോ?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ഡാറ്റ ഉപയോഗം"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ഡാറ്റാ മുന്നറിയിപ്പും പരിധിയും"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ആപ്പ് ഡാറ്റാ ഉപയോഗ സൈക്കിൾ"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ഡാറ്റാ മുന്നറിയിപ്പ് സജ്ജീകരിക്കുക"</string>
+    <string name="data_warning" msgid="116776633806885370">"ഡാറ്റാ മുന്നറിയിപ്പ്"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ഡാറ്റാ പരിധി സജ്ജീകരിക്കുക"</string>
+    <string name="data_limit" msgid="227338836292511425">"ഡാറ്റാ പരിധി"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ഡാറ്റാ ഉപയോഗം നിയന്ത്രിക്കുന്നു"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"നിങ്ങൾ സജ്ജീകരിച്ചിരിക്കുന്ന പരിധി എത്തുമ്പോൾ നിങ്ങളുടെ വാഹനത്തിൻ്റെ ഹെഡ് യൂണിറ്റ്, മൊബൈൽ ഡാറ്റാ ഓഫാക്കും.\n\nഡാറ്റാ ഉപയോഗം ഹെഡ് യൂണിറ്റിൽ അളക്കുന്നതിനാലും, നിങ്ങളുടെ കാരിയർ വ്യത്യസ്‌ത രീതിയിൽ ഉപയോഗം കണക്കാക്കിയേക്കാം എന്നതിനാലും മിതമായ ഡാറ്റാ പരിധി സജ്ജീകരിക്കാൻ നോക്കുക."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"വൈഫൈ"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"വയർലെസ് ആക്‌സസ് പോയിന്റുകൾ സജ്ജീകരിക്കുക, നിയന്ത്രിക്കുക"</string>
     <string name="wifi_starting" msgid="473253087503153167">"വൈഫൈ ഓണാക്കുന്നു…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"വൈഫൈ ഓഫാക്കുന്നു…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"വൈഫൈ ലിസ്‌റ്റ് ലോഡ് ചെയ്യുന്നു"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"വൈഫൈ പ്രവർത്തനരഹിതമാക്കി"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"നെറ്റ്‌വർക്ക് നിരസിക്കുന്നത് പരാജയപ്പെട്ടു"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"നെറ്റ്‌വർക്കിൽ കണക്‌റ്റ് ചെയ്യുന്നത് പരാജയപ്പെട്ടു"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"നെറ്റ്‌വർക്ക് ചേർക്കുക"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"വൈഫൈ പ്രവർത്തനരഹിതമാക്കി"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"കണക്റ്റ് ചെയ്യൂ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"പാസ്‌വേഡ്"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"പാസ്‌വേഡ് കാണിക്കുക"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"നെറ്റ്‌വർക്കിന്‍റെ പേര്"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID നൽകുക"</string>
     <string name="wifi_security" msgid="158358046038876532">"സുരക്ഷ"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"സിഗ്‌നൽ ശക്തി"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"സിഗ്‌നൽ ശക്തി"</string>
     <string name="wifi_status" msgid="5688013206066543952">"സ്റ്റാറ്റസ്"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"ലിങ്ക് വേഗത"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"ആവൃത്തി"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP വിലാസം"</string>
+    <string name="show_password" msgid="2074628020371139240">"പാസ്‌വേഡ് കാണിക്കുക"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"നെറ്റ്‌വർക്കിന്‍റെ പേര് നൽകുക"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"പാസ്‌വേഡ് നൽകുക"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"മോശം"</item>
-    <item msgid="2032262610626057081">"തൃപ്‌തികരം"</item>
-    <item msgid="3859756017461098953">"നല്ലത്"</item>
-    <item msgid="1521103743353335724">"മികച്ചത്"</item>
+    <item msgid="7683058295076342057">"മോശം"</item>
+    <item msgid="1639222824821660744">"തൃപ്‌തികരം"</item>
+    <item msgid="1838705897358163300">"നല്ലത്"</item>
+    <item msgid="6067166649320533751">"മികച്ചത്"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth ഓണാക്കുക"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth പ്രവർത്തനരഹിതമാക്കി"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"നെറ്റ്‌വർക്ക് വിശദാംശങ്ങൾ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC വിലാസം"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP വിലാസം"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"സബ്‌നെറ്റ് മാസ്‌ക്"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 വിലാസങ്ങൾ"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ഗേറ്റ്‌വേ"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"വൈഫൈ മുൻഗണനകൾ"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"വൈഫൈ സ്വയമേവ ഓണാക്കുക"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"നിങ്ങളുടെ വീട്ടിലെ നെറ്റ്‌വർക്ക് പോലെയുള്ള, ഉയർന്ന നിലവാരമുള്ള സംരക്ഷിത നെറ്റ്‍വർക്കുകൾക്ക് അരികിലായിരിക്കുമ്പോൾ വൈഫൈ തിരികെ ഓണാകും"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"ലൊക്കേഷൻ ഓഫായതിനാലാണ് ലഭ്യമല്ലാത്തത്. "<annotation id="link">"ലൊക്കേഷൻ"</annotation>" ഓണാക്കുക."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"വൈഫൈ സ്‌കാനിംഗ് ഓണാക്കണോ?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ഓണാക്കുക"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"വൈഫൈ സ്‌കാനിംഗ് ഓണാക്കി"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"മൊബൈൽ ഡാറ്റയിലേക്ക് സ്വയമേവ മാറുക"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"വൈഫൈയിൽ നിന്നുള്ള ഇന്‍റർനെറ്റ് ആക്‌സ‌സ് ഇല്ലാത്തപ്പോൾ മൊബൈൽ ഡാറ്റ ഉപയോഗിക്കുക. ഡാറ്റാ ഉപയോഗ നിരക്കുകൾ ബാധകമായേക്കാം."</string>
+    <string name="learn_more" msgid="8214605928933358604">"കൂടുതലറിയുക"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"കണ‌ക്ഷനുകൾ നിയന്ത്രിച്ച് ഉപകരണത്തിന്റെ പേരും കണ്ടെത്തൽ ക്ഷമതയും സജ്ജീകരിക്കുക"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"കമ്പ്യൂട്ടർ"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ഹെഡ്‌സെറ്റ്"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ഫോൺ"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ഇമേജിംഗ്"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"ഹെഡ്ഫോൺ"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ഇൻപുട്ട് പെരിഫറൽ"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"ജോടിയാക്കിയ ഉപകരണങ്ങൾ"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"ലഭ്യമായ ഉപകരണങ്ങൾ"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"ജോടിയാക്കിയ ഉപകരണങ്ങളൊന്നുമില്ല"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"ലഭ്യമായ ഉപകരണങ്ങളൊന്നുമില്ല"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"ജോടിയാക്കിയ ഉപകരണം"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"പേര്"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"ഇതിന് ഉപയോഗിക്കുക"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth ഉപകരണത്തിന്റെ പേര് മാറ്റുക"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"പേരിടാത്ത ഉപകരണം"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"ജോടിയാക്കിയ ഉപകരണങ്ങൾ"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"പുതിയ ഉപകരണവുമായി ജോടിയാക്കുക"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"ജോടിയാക്കുന്നതിന്, Bluetooth ഓണാകും"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ഉപകരണം വിച്‌ഛേദിക്കണോ?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ഉപകരണത്തിൽ നിന്ന് നിങ്ങളുടെ വാഹനം വിച്ഛേദിക്കും."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"വാഹനത്തിന്റെ Bluetooth വിലാസം: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ഉപകരണത്തിന്റെ Bluetooth വിലാസം: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"വാഹനത്തിന്റെ Bluetooth പേര്"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ഈ വാഹനത്തിന്റെ പേര് മാറ്റുക"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ഉപകരണത്തിന്റെ പേര് മാറ്റുക"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"പേര് മാറ്റുക"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ലഭ്യമായ ഉപകരണങ്ങൾ"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"പ്രൊഫൈലുകള്‍‌"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth ജോടിയാക്കൽ അഭ്യർത്ഥന"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ജോടിയാക്കി കണ‌ക്‌റ്റ് ചെയ്യുക"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth ജോടിയാക്കൽ കോഡ്"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"പിന്നിൽ അക്ഷരങ്ങളോ ചിഹ്നങ്ങളോ അടങ്ങിയിരിക്കുന്നു"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"ജോടിയാക്കൽ കോഡ് ടൈപ്പ് ചെയ്യുക തുടർന്ന് \'മടങ്ങുക\' അല്ലെങ്കിൽ \'എന്റർ\' അമർത്തുക"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"സാധാരണ 0000 അല്ലെങ്കിൽ 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"ജോടിയാക്കൽ അഭ്യർത്ഥന"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്ന ഉപകരണവുമായി ജോടിയാക്കാൻ ടാപ്പ് ചെയ്യുക."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ഭാഷകൾ"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ഭാഷകളും ഇൻപുട്ടും"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"കീബോർഡ്"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"കീബോർഡുകൾ മാനേജ് ചെയ്യുക"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"ടെക്‌സ്‌റ്റ് ടു സ്‌പീച്ച് ഔട്ട്‌പുട്ട്"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"തിരഞ്ഞെടുത്ത എഞ്ചിൻ"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"നിലവിലെ എഞ്ചിൻ"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"സംഭാഷണത്തിന്റെ റേറ്റ്"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"പിച്ച്"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"പുനഃസജ്ജീകരിക്കുക"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ശബ്‌ദം"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"റിംഗ് വോളിയം"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"നാവിഗേഷൻ വോളിയം"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"മീഡിയ"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"സംഗീതത്തിനും വീഡിയോകൾക്കുമായി വോളിയം സജ്ജീകരിക്കുക"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"അലാറം"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ഫോണിന്റെ റിംഗ്ടോൺ"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"ഡിഫോൾട്ടായ അറിയിപ്പ് ശബ്‌ദം"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"ഡിഫോൾട്ടായ അലാറം ശബ്‌ദം"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ആപ്പുകളും അറിയിപ്പുകളും"</string>
+    <string name="all_applications" msgid="7798210477486822168">"എല്ലാ ആപ്പുകളും കാണിക്കൂ"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ഡിഫോൾട്ട് ആപ്പുകൾ"</string>
     <string name="applications_settings" msgid="794261395191035632">"ആപ്പ് വിവരം"</string>
+    <string name="force_stop" msgid="2153183697014720520">"നിർബന്ധിതമായി നിർത്തുക"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"നിർബന്ധിതമായി നിർത്തണോ?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"നിങ്ങൾ ഒരു ആപ്പ് നിർബന്ധിതമായി നിർത്തിയാൽ, അത് ശരിയായി പ്രവർത്തിക്കാനിടയില്ല."</string>
     <string name="disable_text" msgid="4358165448648990820">"പ്രവർത്തനരഹിതമാക്കുക"</string>
     <string name="enable_text" msgid="1794971777861881238">"പ്രവർത്തനക്ഷമമാക്കുക"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"അൺഇൻസ്‌റ്റാൾ ചെയ്യുക"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"നിങ്ങൾ ഈ ആപ്പ് പ്രവർത്തനരഹിതമാക്കിയാൽ, Android-ഉം മറ്റ് ആപ്പുകളും ഇനി ഉദ്ദേശിച്ചത് പോലെ പ്രവർത്തിച്ചേക്കില്ല."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ആപ്പ് പ്രവർത്തനരഹിതമാക്കുക"</string>
     <string name="permissions_label" msgid="2701446753515612685">"അനുമതികൾ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"പതിപ്പ്: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"അനുമതികളൊന്നും അനുവദിച്ചില്ല"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"അനുമതികളൊന്നും അഭ്യർത്ഥിച്ചില്ല"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ഡാറ്റ ഉപയോഗം"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ആപ്പ് ഡാറ്റ ഉപയോഗം"</string>
-    <string name="force_stop" msgid="2153183697014720520">"നിർബന്ധിതമായി നിർത്തുക"</string>
     <string name="computing_size" msgid="5791407621793083965">"കണക്കാക്കുന്നു…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> അധിക അനുമതികൾ</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> അധിക അനുമതി</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"അസിസ്‌റ്റും വോയ്‌സ് ഇൻപുട്ടും"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"സഹായ ആപ്പ്"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"സ്ക്രീനിലെ ടെക്‌സ്‌റ്റ് ഉപയോഗിക്കുക"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"ടെക്‌സ്‌റ്റ് ആയി സ്ക്രീൻ ഉള്ളടക്കങ്ങൾ ആക്‌സസ് ചെയ്യാൻ, സഹായ ആപ്പിനെ അനുവദിക്കുക"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"സ്ക്രീൻഷോട്ട് ഉപയോഗിക്കുക"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"സ്ക്രീനിലെ ഒരു ചിത്രം ആക്‌സസ് ചെയ്യാൻ, സഹായ ആപ്പിനെ അനുവദിക്കുക"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"സ്വയമേവ പൂരിപ്പിക്കൽ സേവനം"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ഒന്നുമില്ല"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"തിരഞ്ഞെടുത്തു"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"നിങ്ങളുടെ സ്ക്രീനിൽ ദൃശ്യമാകുന്നതോ ആപ്പുകൾക്കുള്ളിൽ ആക്‌സസ് ചെയ്യാവുന്നതോ ആയ വിവരങ്ങൾ ഉൾപ്പെടെ, നിങ്ങളുടെ സിസ്‌റ്റത്തിൽ ഉപയോഗത്തിലുള്ള ആപ്പുകളെ കുറിച്ചുള്ള വിവരങ്ങൾ വായിക്കാൻ അസിസ്‌റ്റൻന്റിനാവും."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;നിങ്ങൾ ഈ ആപ്പിനെ വിശ്വസിക്കുന്നുണ്ടെന്ന് ഉറപ്പുവരുത്തുക&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; സ്വയമേവ പൂരിപ്പിക്കേണ്ടത് എന്താണെന്ന് നിർണ്ണയിക്കുന്നതിന് നിങ്ങളുടെ സ്‌ക്രീനിൽ ഉള്ളത് ഉപയോഗിക്കുന്നു."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"സേവനം ചേർക്കുക"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"ലൊക്കേഷൻ"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"അടുത്തിടെയുള്ള ലൊക്കേഷൻ അഭ്യർത്ഥനകൾ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"അടുത്തിടെയുള്ള ലൊക്കേഷൻ അഭ്യർത്ഥനകളൊന്നുമില്ല"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ആപ്പ്-തല അനുമതികൾ"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"സ്‌കാൻ ചെയ്യുന്നു"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"ലൊക്കേഷൻ സേവനങ്ങൾ"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"വൈഫൈ സ്‌കാനിംഗ്"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"വൈഫൈ ഓഫാണെങ്കിൽ പോലും, ഏതുസമയത്തും വൈഫൈ നെറ്റ്‌വർക്കുകൾ സ്‌കാൻ ചെയ്യാൻ ആപ്പുകളെയും സേവനങ്ങളെയും അനുവദിക്കുക. ഉദാഹരണത്തിന്, ലൊക്കേഷൻ‌ അടിസ്ഥാനമാക്കിയുള്ള ഫീച്ചറുകളും സേവനങ്ങളും മെച്ചപ്പെടുത്താൻ ഇത് ഉപയോഗിക്കാം."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth സ്‌കാനിംഗ്"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth ഓഫാണെങ്കിൽ പോലും, ഏതുസമയത്തും അടുത്തുള്ള ഉപകരണങ്ങൾ സ്‌കാൻ ചെയ്യാൻ ആപ്പുകളെയും സേവനങ്ങളെയും അനുവദിക്കുക. ഉദാഹരണത്തിന്, ലൊക്കേഷൻ‌ അടിസ്ഥാനമാക്കിയുള്ള ഫീച്ചറുകളും സേവനങ്ങളും മെച്ചപ്പെടുത്താൻ ഇത് ഉപയോഗിക്കാം."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"സിസ്റ്റം"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"സി‌സ്‌റ്റം അപ്‌ഡേറ്റുകൾ"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"സി‌സ്‌റ്റം അപ്‌ഡേറ്റുകൾ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android പതിപ്പ്"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android സുരക്ഷാ പാച്ച് നില"</string>
     <string name="model_info" msgid="4966408071657934452">"മോഡല്‍"</string>
     <string name="baseband_version" msgid="2370088062235041897">"ബെയ്‌സ്‌ബാൻഡ് പതിപ്പ്"</string>
     <string name="kernel_version" msgid="7327212934187011508">"പ്രധാന പതിപ്പ്"</string>
     <string name="build_number" msgid="3997326631001009102">"ബിൽഡ് നമ്പർ"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth വിലാസം"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"ലഭ്യമല്ല"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"സ്റ്റാറ്റസ്"</string>
     <string name="device_status" msgid="267298179806290920">"സ്റ്റാറ്റസ്"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"പകർപ്പവകാശം"</string>
     <string name="license_title" msgid="936705938435249965">"ലൈസന്‍സ്"</string>
     <string name="terms_title" msgid="5201471373602628765">"നിബന്ധനകളും വ്യവസ്ഥകളും"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"സിസ്‌റ്റം WebView ലൈസൻസ്"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"സിസ്‌റ്റം WebView ലൈസൻസുകൾ"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"വാൾപേപ്പറുകൾ"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ഉപഗ്രഹ ഇമേജറി ദാതാക്കൾ:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"മൂന്നാം കക്ഷി ലൈസൻസുകൾ"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"ലൈസൻസുകൾ ലോഡ് ചെയ്യുന്നതിൽ ഒരു പ്രശ്നമുണ്ട്."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"ലോഡ് ചെയ്യുന്നു…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">ഒരു ഡെവലപ്പറാകുന്നതിൽ നിന്നും <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ചുവടുകൾ അകലെയാണ് നിങ്ങളിപ്പോൾ.</item>
+      <item quantity="one">ഒരു ഡെവലപ്പറാകുന്നതിൽ നിന്നും <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> ചുവട് അകലെയാണ് നിങ്ങളിപ്പോൾ.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"നിങ്ങൾ ഇപ്പോൾ ഒരു ഡവലപ്പറാണ്!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"ആവശ്യമില്ല, നിങ്ങൾ മുമ്പേ ഒരു ഡവലപ്പറാണ്."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ഡെവലപ്പർ ഓപ്‌ഷനുകൾ"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ഓപ്‌ഷനുകള്‍ പുനഃക്രമീകരിക്കുക"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"നെറ്റ്‌വർക്ക്, ആപ്പുകൾ, അല്ലെങ്കിൽ ഉപകരണം പുനഃക്രമീകരിക്കുക"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"നെറ്റ്‌വർക്ക് പുനഃസജ്ജീകരിക്കുക"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"ഇനിപ്പറയുന്നത് ഉൾപ്പെടെ, എല്ലാ നെറ്റ്‌വർക്ക് ക്രമീകരണവും ഇത് പുനഃസജ്ജീകരിക്കും:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"വൈഫൈ"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"മോബൈൽ ഡാറ്റ"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"എല്ലാ വാഹന ഇ-സിമ്മുകളും മായ്ക്കുക"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ഇത് നിങ്ങളുടെ സേവന പ്ലാൻ റദ്ദാക്കില്ല."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"ഇ-സിമ്മുകൾ പുനഃസജ്ജീകരിക്കാനാവില്ല"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"നെറ്റ്‌വർക്ക് തിരഞ്ഞെടുക്കുക"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ക്രമീകരണം പുനഃസജ്ജീകരിക്കുക"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"പുനഃസജ്ജീകരിക്കണോ?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"എല്ലാ നെറ്റ്‌വർക്കിംഗ് ക്രമീകരണവും പുനഃസജ്ജീകരിക്കണോ? നിങ്ങൾക്ക് ഈ പ്രവർത്തനം പഴയപടിയാക്കാനാവില്ല!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ക്രമീകരണം പുനഃസജ്ജീകരിക്കുക"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"നെറ്റ്‌വർക്ക് ക്രമീകരണം പുനഃസജ്ജീകരിച്ചു"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ആപ്പ് മുൻഗണനകൾ പുനഃസജ്ജീകരിക്കുക"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ഇത് ഇനിപ്പറയുന്നവയ്‌ക്കുള്ള എല്ലാ മുൻഗണനകളും പുനഃസജ്ജീകരിക്കും:\n\n"<li>"പ്രവർത്തനരഹിതമാക്കിയ ആപ്പുകൾ"</li>\n<li>"പ്രവർത്തനരഹിതമാക്കിയ ആപ്പ് അറിയിപ്പുകൾ"</li>\n<li>"പ്രവർത്തനങ്ങൾക്കുള്ള ഡിഫോൾട്ട് ആപ്പുകൾ"</li>\n<li>"ആപ്പുകൾക്കുള്ള പശ്ചാത്തല ഡാറ്റാ നിയന്ത്രണങ്ങൾ"</li>\n<li>"ഏതെങ്കിലും അനുമതി നിയന്ത്രണങ്ങൾ"</li>\n\n"നിങ്ങൾക്ക് ഏതെങ്കിലും ആപ്പ് ഡാറ്റ നഷ്‌ടമാവില്ല."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ആപ്പുകൾ പുനഃസജ്ജീകരിക്കുക"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ആപ്പ് മുൻഗണനകൾ പുനഃസജ്ജീകരിച്ചു"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"എല്ലാ ഡാറ്റയും മായ്‌ക്കുക (ഫാക്‌ടറി റീസെറ്റ്)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ഇവയുൾപ്പെടെ നിങ്ങളുടെ വാഹനത്തിൻ്റെ ഹെഡ് യൂണിറ്റിൽ നിന്നുള്ള എല്ലാ ഡാറ്റയും ഇത് മായ്‌ക്കും:\n\n"<li>"നിങ്ങളുടെ Google അക്കൗണ്ട്"</li>\n<li>"സിസ്‌റ്റത്തിൻ്റെയും ആപ്പിൻ്റെയും ഡാറ്റയും ക്രമീകരണവും"</li>\n<li>"ഡൗൺലോഡ് ചെയ്‌ത ആപ്പുകൾ"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"നിലവിൽ നിങ്ങൾ ഇനിപ്പറയുന്ന അക്കൗണ്ടുകളിലേക്ക് സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്നു:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ഈ വാഹനത്തിൽ മറ്റ് ഉപയോക്താക്കളുണ്ട്."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"വാഹനത്തിലെ ക്രമീകരണം പുനഃസജ്ജീകരിക്കുക"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"പുനഃസജ്ജീകരിക്കണോ?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"നിങ്ങളുടെ എല്ലാ വ്യക്തിഗത വിവരവും ഡൗൺലോഡ് ചെയ്‌ത ആപ്പുകളും മായ്‌ക്കണോ? നിങ്ങൾക്ക് ഈ പ്രവർത്തനം പഴയപടിയാക്കാനാകില്ല!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"എല്ലാം മായ്ക്കുക"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"മായ്‌ക്കുന്നു"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"കാത്തിരിക്കുക..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"തീയതിയും സമയവും"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"തീയതിയും സമയവും സജ്ജമാക്കുക"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"തീയതി, സമയം, സമയ മേഖല, ഫോർമാറ്റുകൾ എന്നിവ സജ്ജീകരിക്കുക"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"സമയ മേഖലയനുസരിച്ച് അടുക്കുക"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"തീയതി"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"സമയം"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ഉപയോക്താവിനെ ചേര്‍ക്കുക"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"അക്കൗണ്ട് ചേർക്കുക"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"ഉപയോക്താവിനെ ഇല്ലാതാക്കുക"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"പുതിയ ഉപയോക്താവ്"</string>
-    <string name="user_guest" msgid="3465399481257448601">"അതിഥി"</string>
     <string name="user_admin" msgid="1535484812908584809">"അഡ്‌മിന്‍"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"അഡ്‌മിൻ ആയി സൈൻ ഇൻ ചെയ്‌തു"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"എല്ലാ അഡ്‌മിൻ അനുമതികളും"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"അഡ്‌മിൻ അനുമതി നൽകുക"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ഉപയോക്താവിന് മറ്റ് അഡ്‌മിനുകൾ ഉൾപ്പെടെയുള്ള ഉപയോക്താക്കളെ ഇല്ലാതാക്കാനും സിസ്‌റ്റത്തിന്റെ ഫാക്‌ടറി പുനഃസജ്ജീകരിക്കാനും കഴിയും."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ഈ പ്രവൃത്തി പഴയപടിയാക്കാനാവില്ല."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"ഉവ്വ്, അഡ്‌മിൻ അനുമതി നൽകുക"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"പുതിയ ഉപയോക്താക്കളെ സൃഷ്‌ടിക്കുക"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ഫോൺ കോളുകൾ വിളിക്കുക"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"കാറിന്റെ മൊബൈൽ ഡാറ്റ വഴി സന്ദേശമയയ്ക്കലും സ്വീകരിക്കലും"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"പുതിയ ആപ്പുകൾ ഇൻസ്‌റ്റാൾ ചെയ്യുക"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ആപ്പുകൾ അൺ ഇൻസ്‌റ്റാൾ ചെയ്യുക"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ഉപയോക്താവിനെ ചേര്‍ക്കുക"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"പുതിയ ഉപയോക്താവ്"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"പുതിയ ഉപയോക്താവിനെ ചേർക്കണോ?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"നിങ്ങളൊരു പുതിയ ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ, ആ വ്യക്തി സ്വന്തം ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ഏതൊരു ഉപയോക്താവിനും മറ്റെല്ലാ ഉപയോക്താക്കൾക്കുമായി ആപ്പുകൾ അപ്‌ഡേറ്റ് ചെയ്യാനാവും."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"ഉപയോക്തൃ പരിധി എത്തി"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">നിങ്ങൾക്ക് <xliff:g id="COUNT">%d</xliff:g> ഉപയോക്താക്കളെ വരെ സൃഷ്‌ടിക്കാനാവും.</item>
+      <item quantity="one">ഒരു ഉപയോക്താവിന് മാത്രമേ സൃഷ്‌ടിക്കാനാവൂ.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"പുതിയ ഉപയോക്താവിനെ സൃഷ്‌ടിക്കാനായില്ല"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ഈ ഉപയോക്താവിനെ ഇല്ലാതാക്കണോ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കപ്പെടും."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ഉപയോക്താവിനെ ഇല്ലാതാക്കാനായില്ല."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ഡിസ്‌മിസ്സ് ചെയ്യുക"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"വീണ്ടും ശ്രമിക്കുക"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"അവസാന ഉപയോക്താവിനെ ഇല്ലാതാക്കണോ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ഈ കാറിന്റെ ബാക്കിയുള്ള ഒരേയൊരു ഉപയോക്താവിനെ ഇല്ലാതാക്കിയ ശേഷം, ഒരു പുതിയ അഡ്‌മിൻ ഉപയോക്താവിനെ സൃഷ്‌ടിക്കും."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ഈ ഉപയോക്താവുമായി ബന്ധപ്പെട്ട എല്ലാ ഡാറ്റയും ക്രമീകരണവും ആപ്പുകളും ഇല്ലാതാക്കപ്പെടും. നിങ്ങൾ സിസ്‌റ്റം വീണ്ടും സജ്ജീകരിക്കേണ്ടതുണ്ട്."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"പുതിയ അഡ്‌മിനെ തിരഞ്ഞെടുക്കുക"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"ഒരു അഡ്‌മിൻ എങ്കിലും നിങ്ങൾക്ക് ആവശ്യമുണ്ട്. ഇത് ഇല്ലാതാക്കാൻ, നിലവിലുള്ളതിന്റെ ഒരു മാറ്റി സ്ഥാപിക്കൽ ആദ്യം തിരഞ്ഞെടുക്കുക."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"അഡ്‌മിനെ തിരഞ്ഞെടുക്കുക"</string>
+    <string name="user_guest" msgid="3465399481257448601">"അതിഥി"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"അതിഥി"</string>
     <string name="user_switch" msgid="6544839750534690781">"മാറുക"</string>
     <string name="current_user_name" msgid="3813671533249316823">"നിങ്ങൾ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"പേര്"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"സജ്ജീകരിച്ചിട്ടില്ല"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"ഉപയോക്തൃ നാമം എഡിറ്റ് ചെയ്യുക"</string>
     <string name="users_list_title" msgid="770764290290240909">"ഉപയോക്താക്കള്‍"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s-ന് അനുമതികൾ നൽകി"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"അക്കൗണ്ടുകൾ"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"ഉപയോക്താവ്"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"അക്കൗണ്ട് ചേർക്കുക"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"അക്കൗണ്ടുകളൊന്നും ചേർത്തില്ല"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> എന്ന ഉപയോക്താവിന്റെ അക്കൗണ്ടുകൾ"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ഡാറ്റ സ്വയമേവ സമന്വയിപ്പിക്കുക"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ഡാറ്റ സ്വയമേവ പുതുക്കിയെടുക്കാൻ ആപ്പുകളെ അനുവദിക്കുക"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ഡാറ്റാ സ്വയം സമന്വയം ഓണാക്കണോ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"വെബിൽ നിങ്ങളുടെ അക്കൗണ്ടുകളിൽ വരുത്തുന്ന മാറ്റങ്ങളെല്ലാം ഉപകരണത്തിലേക്ക് സ്വയമേവ പകർത്തും.\n\nഫോണിൽ വരുത്തുന്ന മാറ്റങ്ങളെല്ലാം ചില അക്കൗണ്ടുകൾ സ്വയമേവ വെബ്ബിലേക്കും പകർത്തിയേക്കാം. ഇങ്ങനെയാണ് Google അക്കൗണ്ട് പ്രവർത്തിക്കുന്നത്."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ഡാറ്റാ സ്വയം സമന്വയം ഓഫാക്കണോ?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ഇത് ഡാറ്റ ലാഭിക്കും, എന്നാൽ അടുത്തിടെയുള്ള വിവരം ശേഖരിക്കാൻ, നിങ്ങൾ ഓരോ അക്കൗണ്ടും നേരിട്ട് സമന്വയിപ്പിക്കേണ്ടിവരും. അപ്‌ഡേറ്റുകൾ നടക്കുമ്പോൾ അറിയിപ്പുകൾ ലഭിക്കുകയുമില്ല."</string>
     <string name="account_details_title" msgid="7529571432258448573">"അക്കൗണ്ട് വിവരം"</string>
     <string name="add_account_title" msgid="5988746086885210040">"അക്കൗണ്ട് ചേർക്കുക"</string>
     <string name="add_an_account" msgid="1072285034300995091">"ഒരു അക്കൗണ്ട് ചേർക്കുക"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"അക്കൗണ്ട് നീക്കം ചെയ്യുക"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"അക്കൗണ്ട് നീക്കം ചെയ്യണോ?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ഈ അക്കൗണ്ട് നീക്കം ചെയ്യുന്നതിലൂടെ, അതുമായി ബന്ധപ്പെട്ട എല്ലാ സന്ദേശങ്ങളും കോൺടാക്റ്റുകളും മറ്റ് വിവരങ്ങളും ഉപകരണത്തിൽ നിന്ന് ഇല്ലാതാക്കപ്പെടും!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ഈ മാറ്റം നിങ്ങളുടെ അഡ്‌മിൻ അനുവദിക്കുന്നില്ല"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"ഈ ഉപയോക്താവിനെ നീക്കണോ?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"ആപ്പുകളും ഡാറ്റയുമെല്ലാം ഇല്ലാതാക്കും."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"ഉപയോക്താവിനെ നീക്കംചെയ്യാനായില്ല."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"വീണ്ടും ശ്രമിക്കണോ?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"വീണ്ടും ശ്രമിക്കുക"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"പുതിയ ഉപയോക്താവിനെ ചേർക്കണോ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"നിങ്ങളൊരു പുതിയ ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ, ആ വ്യക്തി സ്വന്തം ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ഏതൊരു ഉപയോക്താവിനും മറ്റെല്ലാ ഉപയോക്താക്കൾക്കുമായി ആപ്പുകൾ അപ്‌ഡേറ്റ് ചെയ്യാനാവും."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"അക്കൗണ്ട് നീക്കാനായില്ല."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"അക്കൗണ്ട് സമന്വയം"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g>-ൽ, <xliff:g id="ID_1">%1$d</xliff:g> ഇനങ്ങൾക്ക് സമന്വയിപ്പിക്കൽ ഓണാക്കിയിരിക്കുന്നു"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"എല്ലാ ഇനങ്ങൾക്കും സമന്വയിപ്പിക്കൽ ഓണാക്കിയിരിക്കുന്നു"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"എല്ലാ ഇനങ്ങൾക്കും സമന്വയിപ്പിക്കൽ ഓഫാക്കിയിരിക്കുന്നു"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"സമന്വയം ഓഫാണ്"</string>
+    <string name="sync_error" msgid="6698021343089247914">"സമന്വയ പിശക്"</string>
+    <string name="last_synced" msgid="4745124489150101529">"അവസാനം സമന്വയിപ്പിച്ചത്, <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"ഇപ്പോൾ സമന്വയിപ്പിക്കുന്നു…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>, ഇപ്പോൾ സമന്വയിപ്പിക്കുന്നതിന് ടാപ്പ് ചെയ്യുക"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ഇപ്പോൾ സമന്വയിപ്പിക്കുക"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"സമന്വയിപ്പിക്കൽ റദ്ദാക്കുക"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"സമന്വയം നിലവിൽ പ്രശ്‌നങ്ങൾ നേരിടുകയാണ്. ഇത് ഉടൻ ശരിയാകും."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"സുരക്ഷ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"സ്ക്രീൻ ലോക്ക്"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ഒന്നുമില്ല"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"പിൻ"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"പാസ്‌വേഡ്"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"ഒരു ലോക്ക് ടൈപ്പ് തിരഞ്ഞെടുക്കുക"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"സ്‌ക്രീൻ ലോക്ക് ഓപ്ഷനുകള്‍"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"ലോക്ക് ചെയ്യൽ ഓപ്ഷനുകൾ"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"നിങ്ങളുടെ പാറ്റേൺ നൽകുക"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"സ്ഥിരീകരിക്കുക"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"വീണ്ടും വരയ്ക്കുക"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"ഒരു സ്‌ക്രീൻ ലോക്ക് സജ്ജീകരിക്കുക"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"പിൻ തിരഞ്ഞെടുക്കുക"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"പാറ്റേൺ തിരഞ്ഞെടുക്കൂ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"നിങ്ങളുടെ പാസ്‌വേഡ് തിരഞ്ഞെടുക്കുക"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"പാസ്‌വേഡ് തിരഞ്ഞെടുക്കുക"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"നിലവിലെ സ്‌ക്രീൻ ലോക്ക്"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"സുരക്ഷയ്‌ക്കായി, പാറ്റേൺ സജ്ജീകരിക്കുക"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"മായ്ക്കുക"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"നിങ്ങളുടെ IT അഡ്‌മിൻ സാധാരണ പാസ്‍വേഡുകൾ ബ്ലോക്ക് ചെയ്‌തിട്ടുണ്ട്. മറ്റൊരു പാസ്‍വേഡ് പരീക്ഷിക്കുക."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"അക്കങ്ങൾ ആരോഹണ ക്രമത്തിലോ അവരോഹണ ക്രമത്തിലോ അനുക്രമമായോ നൽകുന്നത് അനുവദനീയമല്ല."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"സ്‌ക്രീൻ ലോക്ക് ഓപ്ഷനുകള്‍"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ദിവസം മുമ്പ്"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"വിശ്വസ്‌ത ഉപകരണം ചേർക്കുക"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"വിശ്വസ്‌ത ഉപകരണങ്ങൾ"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ഉപകരണങ്ങൾ</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ഉപകരണം</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"നിങ്ങളുടെ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> കണക്റ്റ് ചെയ്‌തിരിക്കുമ്പോൾ അത് ഈ കാർ അൺലോക്ക് ചെയ്യും. ആരെങ്കിലും നിങ്ങളുടെ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> എടുക്കുകയാണെങ്കിൽ അവർക്ക് ഈ ഉപകരണം ആക്‌സസ് ചെയ്യാനായേക്കും"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"സ്ഥിരീകരിക്കുക"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"വിശ്വസ്‌ത ഉപകരണം നീക്കം ചെയ്യുക"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"ചെയ്‌തു"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"ഒരു വിശ്വസ്‌ത ഉപകരണം സജ്ജീകരിക്കാൻ, സഹകാരി ആപ്പ് ഉപയോഗിക്കുക. ഒരിക്കൽ സജ്ജീകരിച്ചാൽ, വാഹനം നിങ്ങളുടെ ഫോണിനെ കണ്ടെത്തിയാൽ നിങ്ങളുടെ ഉപയോക്തൃ പ്രൊഫൈൽ അൺലോക്ക് ചെയ്യാനാവും."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. നിങ്ങളുടെ ഫോണിൽ സഹകാരി ആപ്പ് ഡൗൺലോഡ് ചെയ്യുക"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. ഉപകരണങ്ങൾ ജോഡിയാക്കാൻ നിങ്ങളുടെ ഫോണിൽ <xliff:g id="CAR_NAME">%1$s</xliff:g> തിരഞ്ഞെടുക്കുക"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock-ന് ഈ ഉപകരണത്തിന്റെ സുരക്ഷാ ഫീച്ചറുകൾ തിരിച്ചറിയാനാവുന്നില്ല. നിങ്ങളുടെ കാർ പരിരക്ഷിക്കാൻ സഹായിക്കുന്നതിന്, നിങ്ങൾ മുമ്പേ തന്നെ അൺലോക്ക് ചെയ്‌തെങ്കിൽ മാത്രമേ ഉപകരണത്തിന് കാർ അൺലോക്ക് ചെയ്‌ത് നിലനിർത്താനാകൂ. നിങ്ങളുടെ കാർ മറ്റാരുടെയെങ്കിലും പക്കൽ ആണെങ്കിൽ പോലും, അത് സമീപത്തുണ്ടെങ്കിൽ നിങ്ങളുടെ വിശ്വസ്‌ത ഉപകരണത്തിന് അത് അൺലോക്ക് ചെയ്‌ത് നിലനിർത്താനാകും."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതിനെ ഒരു വിശ്വസ്‌ത ഉപകരണമായി ചേർക്കുക"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതിനെ വിശ്വസ്‌ത ഉപകരണമായി ചേർത്തു"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എൻറോൾമെന്റ് പരാജയപ്പെട്ടു"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ഒരു വിശ്വസ്‌ത ഉപകരണം ചേർക്കുന്നതിന്, അടുത്തതായി ഒരു പരിശോധിച്ചുറപ്പിക്കൽ രീതി നിങ്ങൾ സജ്ജീകരിക്കേണ്ടതുണ്ട്. വിശ്വസ്‌ത ഉപകരണം നിങ്ങളുടെ കൈവശമില്ലെങ്കിൽ, നിങ്ങളുടെ പ്രൊഫൈൽ ആക്‌സസ് ചെയ്യാൻ പരിശോധിച്ചുറപ്പിക്കൽ ആവശ്യമാണ്."</string>
     <string name="forget" msgid="3971143908183848527">"മറക്കുക"</string>
+    <string name="connect" msgid="5861699594602380150">"കണക്റ്റ് ചെയ്യുക"</string>
+    <string name="disconnect" msgid="6140789953324820336">"വിച്ഛേദിക്കുക"</string>
     <string name="delete_button" msgid="5840500432614610850">"ഇല്ലാതാക്കുക"</string>
     <string name="remove_button" msgid="6664656962868194178">"നീക്കം ചെയ്യുക"</string>
     <string name="cancel" msgid="750286395700355455">"റദ്ദാക്കുക"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ഡെമോ മോഡിൽ നിന്ന് പുറത്തുകടക്കുക"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ഇത് ഡെമോ അക്കൗണ്ട് ഇല്ലാതാക്കുകയും സിസ്‌റ്റം ഫാക്‌ടറി ഡാറ്റ പുനഃക്രമീകരിക്കുകയും ചെയ്യും. എല്ലാ ഉപയോക്തൃ ഡാറ്റയും നഷ്‌ടമാവും."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ഡെമോയിൽ നിന്ന് പുറത്തുകടക്കുക"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"സജ്ജീകരണം പൂർത്തിയാക്കുക"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ഇപ്പോൾ വേണ്ട"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ഡ്രൈവ് ചെയ്യുമ്പോൾ ഫീച്ചർ ലഭ്യമല്ല."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ഡ്രൈവ് ചെയ്യുമ്പോൾ ഉപയോക്താവിനെ ചേർക്കാനാവില്ല."</string>
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index b34bef6..3da0352 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"бүдэг гэрэлтэй дэлгэц, мэдрэмтгий дэлгэц, батерей"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"бүдэг гэрэлтэй дэлгэц, шөнө, уусгалт"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Шөнийн горим"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Сүлжээ &amp; интернэт"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мобайл сүлжээ"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобайл дата"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Мобайл сүлжээг ашиглан датад хандах"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Мобайл датаг унтраах уу?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Дата ашиглалт"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Дата ашиглалтын сануулга болон хязгаарлалт"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Аппын дата ашиглалтын мөчлөг"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Дата ашиглалтын сануулга тавих"</string>
+    <string name="data_warning" msgid="116776633806885370">"Дата ашиглалтын сануулга"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Дата ашиглалтын хязгаарлалт тогтоох"</string>
+    <string name="data_limit" msgid="227338836292511425">"Дата ашиглалтын хязгаарлалт"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Дата ашиглалтыг хязгаарлаж байна"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Таны тээврийн хэрэгслийн хөгжим тоглуулагч таны тогтоосон хязгаарлалтыг дуусмагц мобайл датаг унтраана.\n\nДата ашиглалтыг хөгжим тоглуулагч хэмждэг бөгөөд таны оператор компани ашиглалтыг өөрөөр тооцоолж магадгүй тул хязгаарлалтыг болгоомжтой тогтооно уу."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Утасгүй сүлжээний хандалтын цэгүүдийг тохируулах &amp; удирдах"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi-г асааж байна…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi-г унтрааж байна…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi жагсаалтыг ачаалж байна"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi-г идэвхгүй болгосон"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Сүлжээг мартаж чадсангүй"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Сүлжээнд холбогдож чадсангүй"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Сүлжээ нэмэх"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi-г идэвхгүй болгосон"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Холбох"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Нууц үг"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Нууц үгийг харуулах"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Сүлжээний нэр"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID-г оруулна уу"</string>
     <string name="wifi_security" msgid="158358046038876532">"Нууцлал"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Дохионы хүч"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Дохионы хүч"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Төлөв"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Холбоосны хурд"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Давтамж"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP хаяг"</string>
+    <string name="show_password" msgid="2074628020371139240">"Нууц үгийг харуулах"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Сүлжээний нэр оруулах"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Нууц үг оруулах"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Муу"</item>
-    <item msgid="2032262610626057081">"Дундаж"</item>
-    <item msgid="3859756017461098953">"Сайн"</item>
-    <item msgid="1521103743353335724">"Маш сайн"</item>
+    <item msgid="7683058295076342057">"Муу"</item>
+    <item msgid="1639222824821660744">"Дундаж"</item>
+    <item msgid="1838705897358163300">"Сайн"</item>
+    <item msgid="6067166649320533751">"Маш сайн"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth-г асаах"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth-г идэвхгүй болгосон"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 Гц"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 Гц"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Сүлжээний дэлгэрэнгүй"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC хаяг"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP хаяг"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Дэд сүлжээний маск"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 хаяг"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Гэйтвэй"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi тохиргоо"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi-г автоматаар асаах"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi таны гэрийн сүлжээ зэрэг ойролцоох хадгалсан өндөр чанартай сүлжээнд буцаж асах болно."</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Байршил унтраалттай тул боломжгүй байна. "<annotation id="link">"Байршлыг"</annotation>" асаана уу."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi хайлтыг асаах уу?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Асаах"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi хайлтыг асаасан"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Мобайл дата руу автоматаар шилжүүлэх"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi-н интернет холболт тасарсан үед мобайл дата ашиглана уу. Дата ашиглалтын төлбөр гарж болзошгүй."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Нэмэлт мэдээлэл авах"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Холболтуудыг удирдах, төхөөрөмжийн нэр &amp; илрэх байдлыг тохируулах"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Компьютер"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Чихэвч"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Утас"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Зураглал"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Чихэвч"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Нэмэлт оролт"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Хослуулсан төхөөрөмжүүд"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Боломжтой төхөөрөмжүүд"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Хослуулсан төхөөрөмжүүд алга"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Боломжтой төхөөрөмжүүд алга"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Хослуулсан төхөөрөмж"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Нэр"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Дараахад ашиглах"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth төхөөрөмжийн нэрийг өөрчлөх"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Нэргүй төхөөрөмж"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Хослуулсан төхөөрөмжүүд"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Шинэ төхөөрөмж хослуулах"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Хослуулахын тулд Bluetooth асна"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Төхөөрөмж салгах уу?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Таны тээврийн хэрэгсэл <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-с сална."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Тээврийн хэрэгслийн Bluetooth хаяг: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Төхөөрөмжийн Bluetooth хаяг: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Тээврийн хэрэгслийн нэр"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Энэ тээврийн хэрэгслийн нэрийг өөрчлөх"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Төхөөрөмжийн нэрийг өөрчлөх"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Нэр өөрчлөх"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Боломжтой төхөөрөмжүүд"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Профайлууд"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-г хослуулах хүсэлт"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Хослуулах &amp; холбох"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-н хослуулах код"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ПИН нь үсэг эсвэл дүрс тэмдэгт агуулдаг"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Хослуулах кодыг бичээд Буцах эсвэл Оруулах товчлуурыг дарна уу"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Ихэвчлэн 0000 эсвэл 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Хослуулах хүсэлт"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-тай хослуулахын тулд товшино уу."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Хэл"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Хэл &amp; оролт"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Гар"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Гарыг удирдах"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Текстийг яриа болгох гаралт"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Давуу хөдөлгүүр"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Одоогийн хөдөлгүүр"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Ярианы түвшин"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Авиа"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Шинэчлэх"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Дуу"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Хонх дуугаргах түвшин"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Шилжүүлгийн түвшин"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Медиа"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Хөгжим болон видеоны дууны түвшнийг тохируулах"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Сэрүүлэг"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Утасны хонхны ая"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Мэдэгдлийн өгөгдмөл ая"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Сэрүүлгийн өгөгдмөл ая"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Апп ба мэдэгдэл"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Бүх аппыг харуулах"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Өгөгдмөл апп"</string>
     <string name="applications_settings" msgid="794261395191035632">"Аппын мэдээлэл"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Хүчээр зогсоох"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Хүчээр зогсоох уу?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Та аппыг хүчээр зогсоосон тохиолдолд энэ нь буруу ажиллаж болзошгүй."</string>
     <string name="disable_text" msgid="4358165448648990820">"Идэвхгүй болгох"</string>
     <string name="enable_text" msgid="1794971777861881238">"Идэвхжүүлэх"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Устгах"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Та энэ аппыг идэвхгүй болгосон тохиолдолд Андройд болон бусад аппын хэвийн ажиллагаа тасалдаж болзошгүй."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Aппыг идэвхгүй болгох"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Зөвшөөрлүүд"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Хувилбар: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Зөвшөөрөл олгоогүй байна"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Хүссэн зөвшөөрөл алга"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Дата ашиглалт"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Аппын дата ашиглалт"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Хүчээр зогсоох"</string>
     <string name="computing_size" msgid="5791407621793083965">"Тооцоолж байна…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">Нэмэлт <xliff:g id="COUNT_1">%d</xliff:g> зөвшөөрөл</item>
       <item quantity="one">Нэмэлт <xliff:g id="COUNT_0">%d</xliff:g> зөвшөөрөл</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Туслах ба дуугаар оруулах"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Туслах апп"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Дэлгэцийн текстийг ашиглах"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Туслах аппад дэлгэцийн контентод текстээр хандахыг зөвшөөрөх"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Дэлгэцээс дарсан зургийг ашиглах"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Туслах аппад дэлгэцийн зурагт хандахыг зөвшөөрөх"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Автоматаар бөглөх үйлчилгээ"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Апп алга"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Сонгосон"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Туслах таны дэлгэцэд харагддаг эсвэл аппуудаас хандах боломжтой мэдээлэл зэрэг таны системд ашиглагддаг аппуудын талаарх мэдээллийг унших боломжтой болно."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Энэ аппад итгэдэг эсэхээ шалгана уу&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google-н Автоматаар бөглөх хэсэг&gt;%1$s&lt;/xliff:g&gt; автоматаар бөглөх боломжтой зүйлийг тодорхойлохын тулд таны дэлгэц дээрх зүйлийг ашигладаг."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Үйлчилгээ нэмэх"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Байршил"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Саяхны байршлын хүсэлтүүд"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Саяхны байршлын хүсэлт алга"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Аппын түвшний зөвшөөрөл"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Скан хийж байна"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Байршлын үйлчилгээ"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi скан хийх"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Апп болон үйлчилгээнд Wi‑Fi унтраалттай үед ч Wi‑Fi сүлжээг хүссэн үедээ скан хийхийг зөвшөөрнө үү. Үүнийг байршилд суурилсан онцлогууд болон үйлчилгээнүүд зэрэгт ашиглах боломжтой."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth скан хийх"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Апп болон үйлчилгээнд Bluetooth унтраалттай үед ч ойролцоох төхөөрөмжийг хүссэн үедээ скан хийхийг зөвшөөрнө үү. Үүнийг байршилд суурилсан онцлогууд болон үйлчилгээнүүд зэрэгт ашиглах боломжтой."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Системийн шинэчлэлтүүд"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Системийн шинэчлэлт"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Андройд хувилбар"</string>
     <string name="security_patch" msgid="4794276590178386903">"Андройдын аюулгүй байдлын patch-н түвшин"</string>
     <string name="model_info" msgid="4966408071657934452">"Загвар"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Долгион баригчийн хувилбар"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Кернел хувилбар"</string>
     <string name="build_number" msgid="3997326631001009102">"Хийцийн дугаар"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth хаяг"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Боломжгүй"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Төлөв"</string>
     <string name="device_status" msgid="267298179806290920">"Төлөв"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Зохиогчийн эрх"</string>
     <string name="license_title" msgid="936705938435249965">"Лиценз"</string>
     <string name="terms_title" msgid="5201471373602628765">"Ерөнхий нөхцөлүүд"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Системийн WebView-н лиценз"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Системийн WebView-н лиценз"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Ханын зураг"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Хиймэл дагуулын зураглал нийлүүлэгчид:\n© 2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Гуравдагч талын лиценз"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Лицензүүдийг ачаалах явцад алдаа гарлаа."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Ачаалж байна..."</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Танд хөгжүүлэгч болоход одоо <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> алхам дутуу байна.</item>
+      <item quantity="one">Танд хөгжүүлэгч болоход одоо <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> алхам дутуу байна.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Та одоо хөгжүүлэгч боллоо!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Та аль хэдийн хөгжүүлэгч болсон тул шаардлагагүй."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Хөгжүүлэгчийн тохиргоо"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Сонголтыг шинэчлэх"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Сүлжээ, апп эсвэл төхөөрөмжийг шинэчлэх"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Сүлжээг шинэчлэх"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Энэ нь сүлжээний бүх тохиргоог шинэчлэх бөгөөд үүнд дараах багтана:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобайл дата"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Бүх тээврийн хэрэгслийн eSIMs-г устгах"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Энэ таны үйлчилгээний төлөвлөгөөг цуцлахгүй."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM-г шинэчлэх боломжгүй байна"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Сүлжээг сонгох"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Тохиргоог шинэчлэх"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Шинэчлэх үү?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Сүлжээний бүх тохиргоог шинэчлэх үү? Та энэ үйлдлийг буцаах боломжгүй!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Тохиргоог шинэчлэх"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Сүлжээний тохиргоог шинэчиллээ"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Аппын тохиргоог шинэчлэх"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Энэ нь бүх тохиргоог шинэчлэх болно:\n\n"<li>" Идэвхгүй болгосон аппууд"</li>" \n"<li>"Идэвхгүй болгосон аппын мэдэгдлүүд "</li>\n" "<li>" Үйлдлийн өгөгдмөл аппууд"</li>\n<li>" Аппуудын арын датаны хязгаарлалт"</li>\n<li>" Дурын зөвшөөрлийн хязгаарлалт"</li>\n\n"Та аппын ямар ч өгөгдөл алдахгүй."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Аппуудыг шинэчлэх"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Аппын тохиргоог шинэчиллээ"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Бүх өгөгдлийг устгах (үйлдвэрийн тохиргоо руу шинэчлэх)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Энэ нь таны тээврийн хэрэгслийн үндсэн нэгжээс\n\n"<li>"таны Google бүртгэл"</li>",\n"<li>"Систем, аппын өгөгдөл болон тохиргоо"</li>",\n"<li>"татаж авсан аппууд"</li>" зэрэг бүх өгөгдлийг устгана"</string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Та одоогоор дараах бүртгэлд нэвтэрсэн байна:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Энэ тээврийн хэрэгсэл дээр өөр хэрэглэгч байна."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Тээврийн хэрэгслийг дахин тохируулах"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Дахин тохируулах уу?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Бүх хувийн мэдээллээ болон татаж авсан аппаа устгах уу? Та энэ үйлдлийг буцаах боломжгүй!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Бүгдийг устгах"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Устгаж байна"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Түр хүлээнэ үү..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Огноо &amp; цаг"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Огноо болон цагийг тохируулах"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Огноо, цаг, цагийн бүс &amp; форматуудыг тохируулах"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Цагийн бүсээр эрэмбэлэх"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Огноо"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Цаг"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Хэрэглэгч нэмэх"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Бүртгэл нэмэх"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Хэрэглэгчийг устгах"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Шинэ хэрэглэгч"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Зочин"</string>
     <string name="user_admin" msgid="1535484812908584809">"Админ"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Админаар нэвтэрсэн"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Бүх админы зөвшөөрөл"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Админ болгоно уу"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Тус хэрэглэгч бусад Aдмин зэрэг хэрэглэгчдийг устгах болон системийг үйлдвэрийн тохиргоонд шинэчлэх боломжтой болно."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Энэ үйлдлийг буцаах боломжгүй."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Тийм, админ болгоно уу"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Шинэ хэрэглэгчид үүсгэх"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Утасны дуудлагууд хийх"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Машины утасны датанаас мессеж бичих"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Шинэ аппууд суулгах"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Аппууд устгах"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Хэрэглэгч нэмэх"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Шинэ хэрэглэгч"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Шинэ хэрэглэгч нэмэх үү?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Таныг шинэ хэрэглэгч нэмэх үед тухайн хэрэглэгч хувийн орон зайгаа тохируулах шаардлагатай."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Бусад бүх хэрэглэгчийн аппуудыг дурын хэрэглэгч шинэчлэх боломжтой."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Хэрэглэгчийн хязгаарт хүрсэн"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Та <xliff:g id="COUNT">%d</xliff:g> хүртэлх хэрэглэгч үүсгэх боломжтой.</item>
+      <item quantity="one">Зөвхөн нэг хэрэглэгч үүсгэх боломжтой.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Шинэ хэрэглэгч үүсгэж чадсангүй"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Энэ хэрэглэгчийг устгах уу?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Бүх апп болон өгөгдлийг устгах болно."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Хэрэглэгчийг устгаж чадсангүй."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Үл хэрэгсэх"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Дахин оролдох"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Сүүлийн хэрэглэгчийг устгах уу?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Энэ машинд үлдсэн хэрэглэгчийг устгасны дараа шинэ админ хэрэглэгч үүсгэх болно."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Энэ хэрэглэгчтэй холбоотой бүх өгөгдөл, тохиргоо болон аппыг устгах болно. Та системийг дахин тохируулах шаардлагатай болно."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Шинэ админ сонгох"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Танд хамгийн багадаа нэг админ шаардлагатай. Үүнийг устгахын тулд эхлээд орлуулалтыг сонгоно уу."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Админ сонгох"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Зочин"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Зочин"</string>
     <string name="user_switch" msgid="6544839750534690781">"Сэлгэх"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Та (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Нэр"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Тохируулаагүй"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Хэрэглэгчийн нэрийг засах"</string>
     <string name="users_list_title" msgid="770764290290240909">"Хэрэглэгчид"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Зөвшөөрлийг %1$s-д олгосон"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Бүртгэл"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Хэрэглэгч"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Бүртгэл нэмэх"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Нэмсэн бүртгэл алга"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>-н бүртгэл"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Өгөгдлийг автоматаар синк хийх"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Өгөгдлийг автоматаар сэргээхийг аппад зөвшөөрөх"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Өгөгдлийг автоматаар синк хийхийг асаах уу?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Таны вэб дээрээс бүртгэлдээ оруулсан аливаа өөрчлөлтийг таны төхөөрөмжид автоматаар хуулах болно.\n\nЗарим бүртгэл нь таны утсан дээрээ оруулсан аливаа өөрчлөлтийг вэб рүү автоматаар хуулж болзошгүй. Google бүртгэл ингэж ажилладаг."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Өгөгдлийг автоматаар синк хийхийг унтраах уу?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Энэ нь датаг хэмнэх боловч та сүүлийн үеийн мэдээллийг цуглуулахын тулд бүртгэл бүрийг гараар синк хийх шаардлагатай болно. Мөн шинэчлэлтийг хийх үед та мэдэгдэл хүлээн авахгүй."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Бүртгэлийн мэдээлэл"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Бүртгэл нэмэх"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Бүртгэл нэмэх"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Бүртгэл хасах"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Бүртгэлийг устгах уу?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Энэ бүртгэлийг устгаснаар үүний бүх зурвас, харилцагч болон бусад өгөгдлийг төхөөрөмжөөс устгана!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Энэ өөрчлөлтийг таны админ зөвшөөрөөгүй байна"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Энэ хэрэглэгчийг устгах уу?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Бүх апп болон өгөгдлийг устгах болно."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Хэрэглэгчийг устгаж чадсангүй."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Дахин оролдох уу?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Үл хэрэгсэх"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Дахин оролдох"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Шинэ хэрэглэгч нэмэх үү?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Таныг шинэ хэрэглэгч нэмэх үед тухайн хэрэглэгч хувийн орон зайгаа тохируулах шаардлагатай."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Бусад бүх хэрэглэгчийн аппуудыг дурын хэрэглэгч шинэчлэх боломжтой."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Бүртгэлийг хасаж чадсангүй."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Бүртгэл синк хийх"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g>-с <xliff:g id="ID_1">%1$d</xliff:g> зүйлд синк асаалттай"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Бүх зүйлд синк асаалттай"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Бүх зүйлд синкийг унтраасан"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Синк хийх УНТРААЛТТАЙ байна"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Синк хийхэд алдаа гарлаа"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Хамгийн сүүлд <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>-д синк хийсэн"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Одоо синк хийж байна..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Одоо <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>-д синк хийхийн тулд товших"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Одоо синк хийх"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Синк хийхийг цуцлах"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Одоогоор синк хийхэд асуудал үүсээд байна. Удахгүй зүгээр болно."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Нууцлал"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Дэлгэцийн түгжээ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Байхгүй"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"ПИН"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Нууц үг"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Түгжих төрлийг сонгох"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Дэлгэцийн түгжээний сонголт"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Түгжих сонголтууд"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Хээгээ оруулна уу"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Баталгаажуулах"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Дахин зурах"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Дэлгэцийн түгжээ тохируулах"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Пин кодоо сонгоно уу"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Хээгээ сонгоно уу"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Нууц үгээ сонгоно уу"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Нууц үгээ сонгох"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Одоогийн дэлгэцийн түгжээ"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Аюулгүй байдлын үүднээс загвар тохируулах"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Устгах"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Таны IT админ түгээмэл нууц үгийг блоклосон байна. Өөр нууц үг оруулна уу."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Өсөж буй, буурч буй эсвэл давхардсан цифрийг зөвшөөрдөггүй."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Дэлгэцийн түгжээний сонголтууд"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> өдрийн өмнө"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Итгэмжлэгдсэн төхөөрөмж нэмэх"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Итгэмжлэгдсэн төхөөрөмжүүд"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> төхөөрөмж</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> төхөөрөмж</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Таны <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> холбогдсон үедээ энэ машины түгжээг тайлна. Таны <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>-г хэн нэгэн авсан тохиолдолд энэ төхөөрөмжид хандах боломжтой байж болзошгүй"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Баталгаажуулах"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Итгэмжлэгдсэн төхөөрөмжийг устгах"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Болсон"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Итгэмжлэгдсэн төхөөрөмжийг тохируулахын тулд дэмжигч аппыг ашиглана уу. Тохируулсны дараа тээврийн хэрэгсэл таны утсыг илрүүлсэн үед та хэрэглэгчийн профайлынхаа түгжээг тайлах боломжтой болно"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Утсандаа дэмжигч аппыг татаж авна уу"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Төхөөрөмжүүдийг хослуулахын тулд утаснаасаа <xliff:g id="CAR_NAME">%1$s</xliff:g>-г сонгоно уу"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock энэ төхөөрөмжийн аюулгүй байдлын онцлогуудыг илрүүлэх боломжгүй. Итгэмжлэгдсэн төхөөрөмж танд машинаа хамгаалахад туслах зорилгоор таныг машиныхаа түгжээг тайлсны дараа түгжээгүй байлгах боломжтой болно. Таны итгэмжлэгдсэн төхөөрөмж ойролцоо байх үед, үүнийг хэн нэгэн барьж байсан ч гэсэн таны машиныг түгжээгүй байлгах боломжтой."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-г итгэмжлэгдсэн төхөөрөмжөөр нэмэх"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-г итгэмжлэгдсэн төхөөрөмжөөр амжилттай нэмлээ"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-г бүртгүүлж чадсангүй"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Итгэмжлэгдсэн төхөөрөмж нэмснээр танаас дараа нь нотолгооны хэлбэр тохируулахыг шаарддаг. Хэрэв та итгэмжлэгдсэн төхөөрөмжөө өөртөө авч яваагүй бол нотлохын тулд профайлдаа хандахыг шаардана."</string>
     <string name="forget" msgid="3971143908183848527">"Мартах"</string>
+    <string name="connect" msgid="5861699594602380150">"Холбох"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Салгах"</string>
     <string name="delete_button" msgid="5840500432614610850">"Устгах"</string>
     <string name="remove_button" msgid="6664656962868194178">"Устгах"</string>
     <string name="cancel" msgid="750286395700355455">"Цуцлах"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Туршилтын горимоос гарах"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Энэ нь туршилтын бүртгэлийг устгах бөгөөд системийг үйлдвэрээс гарсан төлөвт шинэчилнэ. Хэрэглэгчийн бүх өгөгдөл устах болно."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Туршилтаас гарах"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"тохиргоог дуусгах"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"одоо биш"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ҮЛ ХЭРЭГСЭХ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Энэ онцлог жолоо барьж байх үед боломжгүй."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Жолоо барьж байх үед хэрэглэгч нэмэх боломжгүй."</string>
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 621c03b..27bad78 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"मंद स्क्रीन, टचस्क्रीन, बॅटरी"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"मंद स्क्रीन, रात्र, रंगछटा"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"नाइट मोड"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क आणि इंटरनेट"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"मोबाइल डेटा"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"मोबाइल नेटवर्क वापरून डेटा अॅक्सेस करा"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"मोबाइल डेटा बंद करायचा आहे का?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"डेटा वापर"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"डेटा चेतावणी आणि मर्यादा"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"अ‍ॅप डेटा वापर सायकल"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"डेटा चेतावणी सेट करा"</string>
+    <string name="data_warning" msgid="116776633806885370">"डेटा चेतावणी"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"डेटा मर्यादा सेट करा"</string>
+    <string name="data_limit" msgid="227338836292511425">"डेटा मर्यादा"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"डेटा वापर मर्यादित करत आहे"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"मोबाइल डेटाने तुम्ही सेट केलेली मर्यादा गाठल्यानंतर तुमच्या वाहनाचे मुख्य युनिट मोबाइल डेटा बंद करेल.\n\n मोबाइल डेटाचा वापर मुख्य युनिटमध्ये मोजला जात असल्यामुळे आणि तुमचा वाहक भिन्नपणे वापर लक्षात घेत असल्यामुळे, संवर्धन मर्यादा सेटिंग वापरण्याचा विचार करा."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"वाय-फाय"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"वायरलेस अ‍ॅक्सेस बिंदू सेट करा आणि व्यवस्थापित करा"</string>
     <string name="wifi_starting" msgid="473253087503153167">"वाय-फाय चालू करत आहे…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"वाय-फाय बंद करत आहे…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"वाय-फाय सूची लोड करत आहे"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"वाय-फाय बंद केले"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"नेटवर्क विसरता आले नाही"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"नेटवर्कशी कनेक्‍ट करता आले नाही"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"नेटवर्क जोडा"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"वाय-फाय बंद केले"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"कनेक्ट करा"</string>
     <string name="wifi_password" msgid="5565632142720292397">"पासवर्ड"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"पासवर्ड दाखवा"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"नेटवर्कचे नाव"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID एंटर करा"</string>
     <string name="wifi_security" msgid="158358046038876532">"सुरक्षितता"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"सिग्नल सामर्थ्य"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"सिग्नल सामर्थ्य"</string>
     <string name="wifi_status" msgid="5688013206066543952">"स्थिती"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"लिंक गती"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"किती वेळा"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"आयपी अॅड्रेस"</string>
+    <string name="show_password" msgid="2074628020371139240">"पासवर्ड दाखवा"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"नेटवर्कचे नाव एंटर करा"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"पासवर्ड एंटर करा"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"खराब"</item>
-    <item msgid="2032262610626057081">"चांगले"</item>
-    <item msgid="3859756017461098953">"उत्तम"</item>
-    <item msgid="1521103743353335724">"उत्कृष्ट"</item>
+    <item msgid="7683058295076342057">"खराब"</item>
+    <item msgid="1639222824821660744">"चांगली"</item>
+    <item msgid="1838705897358163300">"उत्तम"</item>
+    <item msgid="6067166649320533751">"उत्कृष्ट"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ब्लुटूथ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ब्लूटूथ चालू करा"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ब्लुटूथ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ब्लूटूथ बंद केले"</string>
-    <string name="bluetooth_settings_title" msgid="3794688574569688649">"ब्लुटूथ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"कनेक्शन व्यवस्थापित करा, डिव्हाइस नाव आणि शोधसुलभता सेट करा"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"कॉंप्युटर"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"हेडसेट"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"फोन"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"इमेज"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"हेडफोन"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"इनपुट पेरिफरल"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ब्लुटूथ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"पेअर केलेले डिव्हाइस"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"उपलब्ध डिव्हाइस"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"कोणतेही पेअर केलेले डिव्हाइस नाहीत"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"डिव्‍हाइस उपलब्‍ध नाही"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"पेअर केलेले डिव्हाइस"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"नाव"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"यासाठी वापरा"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"ब्लुटूथ डिव्हाइसचे नाव बदला"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"नेटवर्क तपशील"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC अॅड्रेस"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"आयपी अॅड्रेस"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"सबनेट मास्क"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 अॅड्रेस"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"गेटवे"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"वाय-फाय प्राधान्ये"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"वाय-फाय आपोआप सुरू करा"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"तुमच्या होम नेटवर्कसारख्या उच्च दर्जाच्या सेव्ह केलेल्या नेटवर्कजवळ वाय-फाय आपोआप परत चालू होईल"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"स्थान बंद केल्यामुळे उपलब्ध नाही. "<annotation id="link">"स्थान"</annotation>" सुरू करा."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"वाय-फाय स्कॅनिंग सुरू करायचे का?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"सुरू करा"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"वाय फाय स्कॅनिंग सुरू केले आहे"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"मोबाइल डेटावर आपोआप स्विच करा"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"वाय-फायवरून इंटरनेट अॅक्सेस नसताना मोबाइल डेटा वापरा. डेटा वापर शुल्क लागू शकते."</string>
+    <string name="learn_more" msgid="8214605928933358604">"अधिक जाणून घ्या"</string>
+    <string name="bluetooth_settings_title" msgid="3794688574569688649">"ब्लूटूथ"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"निनावी डिव्हाइस"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"पेअर केलेले डिव्हाइस"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"नवीन डिव्हाइस पेअर करा"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"पेअर करण्यासाठी ब्लूटूथ सुरू होईल"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"डिव्हाइस डिस्‍कनेक्‍ट करायचे?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"तुमचे डिव्हाइस <xliff:g id="DEVICE_NAME">%1$s</xliff:g>वरून डिस्कनेक्ट होईल."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"वाहनाचा ब्लूटूथ अ‍ॅड्रेस: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"डिव्हाइसचा ब्लूटूथ अ‍ॅड्रेस: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"वाहनाचे नाव"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"वाहनाचे नाव बदला"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"डिव्हाइसचे नाव बदला"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"नाव बदला"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"उपलब्ध डिव्हाइस"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"प्रोफाइल"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ब्लूटूथ पेअरींग विनंती"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"पेअर करा आणि कनेक्ट करा"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ब्लुटूथ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ब्लूटूथ पेअरींग कोड"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"पिन मध्ये अक्षरे किंवा चिन्हे आहेत"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"पेअरींग कोड टाइप करा नंतर परत या किंवा Enter दाबा"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"सामान्यतः ०००० किंवा १२३४"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"पेअरींग विनंती"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सह जोडण्यासाठी टॅप करा."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"भाषा"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"भाषा आणि इनपुट"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"कीबोर्ड"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"कीबोर्ड व्यवस्थापित करा"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"टेक्स्ट-टू-स्पीच आउटपुट"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"प्राधान्य असलेले इंजिन"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"वर्तमान इंजिन"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"स्पीच रेट"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"पिच"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"रीसेट करा"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ध्वनी"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"रिंग आवाज"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"नेव्हिगेशन आवाज"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"मीडिया"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"संगीत आणि व्हिडिओंसाठी व्हॉल्यूम सेट करा"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"अलार्म"</string>
-    <string name="applications_settings" msgid="794261395191035632">"अॅप माहिती"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"फोनची रिंगटोन"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"सूचनेचा डीफॉल्ट आवाज"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"अलार्मचा डीफॉल्ट आवाज"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"अ‍ॅप्स आणि सूचना"</string>
+    <string name="all_applications" msgid="7798210477486822168">"सर्व अ‍ॅप्स दाखवा"</string>
+    <string name="default_applications" msgid="1558183275638697087">"डीफॉल्ट अ‍ॅप्स"</string>
+    <string name="applications_settings" msgid="794261395191035632">"ॲप माहिती"</string>
+    <string name="force_stop" msgid="2153183697014720520">"सक्तीने थांबवा"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"सक्तीने थांबवायचे आहे का?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"तुम्ही सक्तीने अ‍ॅप थांबवल्यास, ते गैरवर्तन करू शकते."</string>
     <string name="disable_text" msgid="4358165448648990820">"बंद करा"</string>
     <string name="enable_text" msgid="1794971777861881238">"चालू करा"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"अनइंस्टॉल करा"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"तुम्ही हे अ‍ॅप बंद केल्यास, Android आणि इतर अ‍ॅप्स कदाचित यापुढे अपेक्षेप्रमाणे कार्य करू शकणार नाहीत."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"अ‍ॅप बंद करा"</string>
     <string name="permissions_label" msgid="2701446753515612685">"परवानग्या"</string>
     <string name="application_version_label" msgid="8556889839783311649">"आवृत्त्या: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"कोणत्याही परवानग्यांना मंजूरी दिली नाही"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"कोणत्याही परवानग्यांची विनंती केली नाही"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"डेटा वापर"</string>
-    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"अॅप डेटा वापर"</string>
-    <string name="force_stop" msgid="2153183697014720520">"सक्तीने थांबवा"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ॲप डेटा वापर"</string>
     <string name="computing_size" msgid="5791407621793083965">"गणना करत आहे…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> अतिरिक्त परवानगी</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> अतिरिक्त परवानग्या</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"साहाय्य आणि व्हॉइस इनपुट"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"साहाय्य अ‍ॅप"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"स्क्रीनवरील मजकूर वापरा"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"साहाय्यक अ‍ॅपला स्क्रीन आशय मजकूर म्हणून अ‍ॅक्सेस करण्याची अनुमती द्या"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"स्क्रीनशॉट वापरा"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"साहाय्यक अ‍ॅपला स्क्रीनची इमेज अ‍ॅक्सेस करण्याची अनुमती द्या"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"ऑटोफिल सेवा"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"काहीही नाही"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"निवडले"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"तुमच्या स्क्रीनवर दृश्‍यमान असलेल्या माहितीच्या किंवा अ‍ॅप्समध्ये अ‍ॅक्सेस करता येणाऱ्या माहितीच्या समावेशासह असिस्टंट तुमच्या सिस्टिमध्ये वापरल्या जाणाऱ्या अ‍ॅप्सबद्दलची माहिती वाचू शकेल."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;तुम्हाला अ‍ॅपवर विश्वास असल्याची खात्री करा&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ऑटोफिल काय होऊ शकते हे ठरवण्यासाठी तुमच्या स्क्रीनवर काय आहे याचा वापर करते."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"सेवा जोडा"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"स्थान"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"अलीकडील स्थान विनंत्या"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"अलीकडील कोणत्याही स्थान विनंत्या नाहीत"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ॲप पातळी परवानग्या"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"स्कॅन करत आहे"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"स्‍थान सेवा"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"वाय-फाय स्कॅन करत आहे"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"वाय-फाय बंद असले तरीही अ‍ॅप्स आणि सेवांना वाय-फाय नेटवर्क कधीही स्कॅन करण्याची अनुमती द्या. याचा वापर स्थान आधारित वैशिष्ट्ये आणि सेवा सुधारणे अशा कामांसाठी केला जाऊ शकतो."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ब्लूटूथ स्कॅन करत आहे"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ब्लूटूथ बंद असले, तरीही अ‍ॅप्स आणि सेवांना जवळपासची डिव्हाइस कधीही स्कॅन करण्याची अनुमती द्या. याचा वापर उदाहरणार्थ, स्थान आधारित वैशिष्ट्ये आणि सेवा सुधारण्यासाठी केला जाऊ शकतो."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"सिस्टम"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"सिस्टम अपडेट"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"सिस्टम अपडेट"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android आवृत्ती"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android सुरक्षितता पॅच पातळी"</string>
     <string name="model_info" msgid="4966408071657934452">"मॉडेल"</string>
     <string name="baseband_version" msgid="2370088062235041897">"बेसबँड आवृत्ती"</string>
     <string name="kernel_version" msgid="7327212934187011508">"कर्नेल आवृत्ती"</string>
     <string name="build_number" msgid="3997326631001009102">"बिल्ड नंबर"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ब्लूटूथ पत्ता"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"उपलब्ध नाही"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"स्थिती"</string>
     <string name="device_status" msgid="267298179806290920">"स्थिती"</string>
@@ -133,19 +208,56 @@
     <string name="about_summary" msgid="5374623866267691206">"Android <xliff:g id="VERSION">%1$s</xliff:g>"</string>
     <string name="about_settings_summary" msgid="7975072809083281401">"कायदेशीर माहिती, स्थिती, सॉफ्टवेअर आवृत्ती पहा"</string>
     <string name="legal_information" msgid="1838443759229784762">"कायदेशीर माहिती"</string>
-    <string name="contributors_title" msgid="7698463793409916113">"योगदानकर्ते"</string>
+    <string name="contributors_title" msgid="7698463793409916113">"कंट्रिब्युटर्स"</string>
     <string name="manual" msgid="4819839169843240804">"मॅन्युअल"</string>
     <string name="regulatory_labels" msgid="3165587388499646779">"नियामक लेबले"</string>
     <string name="safety_and_regulatory_info" msgid="1204127697132067734">"सुरक्षा आणि नियामक मॅन्युअल"</string>
     <string name="copyright_title" msgid="4220237202917417876">"कॉपीराइट"</string>
     <string name="license_title" msgid="936705938435249965">"परवाना"</string>
     <string name="terms_title" msgid="5201471373602628765">"अटी आणि नियम"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"सिस्टम WebView परवाना"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"सिस्टम वेबदृश्य परवाने"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"वॉलपेपर"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"उपग्रह इमेजरी पुरवठादार:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"तृतीय-पक्ष परवाने"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"परवाने लोड करताना समस्या आली."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"लोड करत आहे…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">आता तुम्ही डेव्हलपर होण्यापासून <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> पायरी लांब आहात.</item>
+      <item quantity="other">आता तुम्ही डेव्हलपर होण्यापासून <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> पायऱ्या लांब आहात.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"आता तुम्ही एक डेव्हलपर आहात!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"आवश्यकता नाही, तुम्ही आधीपासून डेव्हलपर आहात."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"डेव्‍हलपर पर्याय"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"रीसेट पर्याय"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"नेटवर्क, अॅप्स किंवा डिव्हाइस रीसेट"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"नेटवर्क रीसेट करा"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"हे सर्व नेटवर्क सेटिंग्ज रीसेट करेल, यामध्ये याचा समावेश आहे:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"वाय-फाय "</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"मोबाइल डेटा"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ब्लूटूथ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"सर्व वाहन eSIMs काढून टाका"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"तुमचा सेवा प्लॅन रद्द होणार नाही."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM रीसेट करू शकत नाही"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"नेटवर्क निवडा"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"सेटिंग्ज रीसेट करा"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"रीसेट करायचे?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"सर्व नेटवर्क सेटिंग्ज रीसेट करायच्या? तुम्ही ही क्रिया पूर्ववत करू शकत नाही!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"सेटिंग्ज रीसेट करा"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"नेटवर्क सेटिंग्ज रीसेट केल्या आहेत"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ॲप प्राधान्ये रीसेट करा"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"हे यासाठी सर्व प्राधान्ये रीसेट करेल:\n\n"<li>"बंद केलेली अ‍ॅप्स"</li>\n<li>"बंद केलेल्या अ‍ॅप्स सूचना"</li>\n<li>"क्रियांसाठी डीफॉल्ट अ‍ॅप्लिकेशन्स"</li>\n<li>"अ‍ॅप्ससाठी बॅकग्राउंड डेटा प्रतिबंध"</li>\n<li>"कोणतेही परवानगी प्रतिबंध"</li>\n\n"तुम्ही कोणताही अ‍ॅप डेटा गमावणार नाही."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"अॅप्स रीसेट करा"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ॲप प्राधान्ये रीसेट केली गेली आहेत"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"सर्व डेटा मिटवा (फॅक्टरी रीसेट)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"हे तुमच्या डिव्‍हाइसच्या मुख्य युनिटसह पुढील सर्व डेटा मिटवेल:\n\n"<li>"तुमचे Google खाते"</li>\n<li>"सिस्टम आणि अ‍ॅप डेटा आणि सेटिंग्ज"</li>\n<li>"डाउनलोड केलेली अ‍ॅप्स"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"तुम्ही खालील खात्यांवर सध्या साइन इन केले आहे:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"या डिव्‍हाइसवर इतर वापरकर्ते उपस्‍थित आहेत."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"डिव्हाइस रीसेट करा"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"रीसेट करायचे?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"तुमची सर्व वैयक्तिक माहिती आणि डाउनलोड केलेली अ‍ॅप्स मिटवायची का? तुम्ही ही क्रिया पूर्ववत करू शकत नाही!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"प्रत्येक गोष्ट मिटवा"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"मिटवत आहे"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"कृपया वाट पाहा…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"तारीख आणि वेळ"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"तारीख आणि वेळ सेट करा"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"तारीख, वेळ, टाइम झोन आणि फॉरमॅट सेट करा"</string>
@@ -153,7 +265,7 @@
     <string name="date_time_auto_summary" msgid="3311706425095342759">"नेटवर्कने-प्रदान केलेली वेळ वापरा"</string>
     <string name="zone_auto" msgid="3701878581920206160">"आपोआप टाइम झोन"</string>
     <string name="zone_auto_summary" msgid="4345856882906981864">"नेटवर्कने-प्रदान केलेला टाइम झोन वापरा"</string>
-    <string name="date_time_24hour_title" msgid="3025576547136168692">"24‑तास फॉरमॅट"</string>
+    <string name="date_time_24hour_title" msgid="3025576547136168692">"२४‑तास फॉरमॅट"</string>
     <string name="date_time_24hour" msgid="1137618702556486913">"२४-तास फॉरमॅट वापरा"</string>
     <string name="date_time_set_time_title" msgid="5884883050656937853">"वेळ"</string>
     <string name="date_time_set_time" msgid="6449555153906058248">"वेळ सेट करा"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"टाइम झोन नुसार क्रमवारी लावा"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"तारीख"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"वेळ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"वापरकर्ता जोडा"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"खाते जोडा"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"वापरकर्ता हटवा"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"नवीन वापरकर्ता"</string>
-    <string name="user_guest" msgid="3465399481257448601">"अतिथी"</string>
     <string name="user_admin" msgid="1535484812908584809">"प्रशासक"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"प्रशासक म्हणून साइन इन केले आहे"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"सर्व प्रशासकीय परवानग्या"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"प्रशासक करा"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"वापरकर्ता इतर प्रशासकांसह वापरकर्त्यांना हटवू शकेल आणि सिस्टीम फॅक्टरी रीसेट करू शकेल."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ही क्रिया परत उलट करता येणार नाही."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"होय, प्रशासक करा"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"नवीन वापरकर्ते तयार करा"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"फोन कॉल करा"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"कारच्या मोबाइल डेटाद्वारे मेसेजिंग"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"नवीन अॅप्स इंस्टॉल करा"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"अॅप्स अनइंस्टॉल करा"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"वापरकर्ता जोडा"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"नवीन वापरकर्ता"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"नवीन वापरकर्ता जोडायचा?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"तुम्ही नवीन वापरकर्त्याला जोडल्यावर, त्या व्यक्तीने त्यांचे स्थान सेट करणे आवश्यक असते."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"कोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अॅप्स अपडेट करू शकतो."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"वापरकर्ता मर्यादा गाठली"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">तुम्ही <xliff:g id="COUNT">%d</xliff:g> वापरकर्ता तयार करू शकता.</item>
+      <item quantity="other">तुम्ही <xliff:g id="COUNT">%d</xliff:g> वापरकर्ते तयार करू शकता.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"नवीन वापरकर्ता तयार करता आला नाही"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"हा वापरकर्ता हटवायचा?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"सर्व अॅप्स आणि डेटा हटवला जाईल."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"वापरकर्ता हटवता आला नाही."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"डिसमिस करा"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"पुन्हा प्रयत्न करा"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"शेवटचा वापरकर्ता हटवायचा?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"या कारसाठी फक्त उर्वरित वापरकर्ता हटवल्यानंतर नवीन प्रशासक तयार होईल."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"या वापरकर्त्याशी संबंधित सर्व डेटा, सेटिंग्ज आणि अॅप्स हटवले जातील. तुम्हाला पुन्हा सिस्टम सेट करण्याची आवश्यकता असेल"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"नवीन प्रशासक निवडा"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"तुमच्याकडे किमान एक प्रशासक आवश्यक आहे. हे हटवण्यासाठी, पहिले बदली निवडा."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"प्रशासक निवडा"</string>
+    <string name="user_guest" msgid="3465399481257448601">"अतिथी"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"अतिथी"</string>
     <string name="user_switch" msgid="6544839750534690781">"स्विच"</string>
     <string name="current_user_name" msgid="3813671533249316823">"तुम्ही (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"नाव"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"सेट केलेले नाही"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"वापरकर्ता नाव संपादित करा"</string>
     <string name="users_list_title" msgid="770764290290240909">"वापरकर्ते"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ला परवानग्या मंजूर केल्या"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"खाती"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"वापरकर्ता"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"खाते जोडा"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"खाती जोडली नाहीत"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> साठी खाती"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"डेटा आपोआप सिंक करा"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"अ‍ॅप्सना डेटा आपोआप रिफ्रेश करू द्या"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"डेटाचे ऑटो सिंक सुरू करायचे?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"तुम्ही वेबवरून तुमच्या खात्यामध्ये कोणतेही बदल करता ते तुमच्या फोनवर आपोआप कॉपी केले जातील.\n\nकाही खाती तुम्ही फोनवर केलेले कोणतेही बदल आपोआप वेबवर देखील कॉपी करू शकतात. Google खाते याप्रकारे कार्य करते."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"डेटाचे ऑटो सिंक बंद करायचे?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"हे डेटा वाचवेल, पण तुम्हाला अलीकडील माहिती गोळा करण्यासाठी तुम्ही प्रत्येक खाते मॅन्युअली सिंक करणे आवश्यक असेल. आणि अपडेट आल्यावर तुम्हाला सूचना मिळणार नाही."</string>
     <string name="account_details_title" msgid="7529571432258448573">"खाते माहिती"</string>
     <string name="add_account_title" msgid="5988746086885210040">"खाते जोडा"</string>
     <string name="add_an_account" msgid="1072285034300995091">"खाते जोडा"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"खाते काढा"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"खाते काढायचे?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"हे खाते काढल्याने त्याचे सर्व संदेश, संपर्क आणि डिव्हाइसवरील इतर डेटा हटवला जाईल!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"या बदलास तुमच्या प्रशासकाने अनुमती नाही"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"हा वापरकर्ता काढायचा?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"सर्व अॅप्स आणि डेटा हटवला जाईल."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"वापरकर्ता काढता आला नाही."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"पुन्हा प्रयत्न करायचा?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"डिसमिस करा"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"पुन्हा प्रयत्न करा"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"नवीन वापरकर्ता जोडायचा?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"तुम्ही नवीन वापरकर्त्याला जोडल्यावर, त्या व्यक्तीने त्यांचे स्थान सेट करणे आवश्यक असते."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"कोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अॅप्स अपडेट करू शकतो."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"खाते काढता आले नाही"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"खाते सिंक करा"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> पैकी <xliff:g id="ID_1">%1$d</xliff:g> आयटम सिंक करणे सुरू आहे"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"सर्व आयटम सिंक करणे चालू करा"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"सर्व आयटम सिंक करणे बंद करा"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"सिंक बंद आहे"</string>
+    <string name="sync_error" msgid="6698021343089247914">"सिंक एरर"</string>
+    <string name="last_synced" msgid="4745124489150101529">"<xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g> रोजी शेवटचे सिंक केले"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"आता सिंक करत आहे…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>आता सिंक करण्यासाठी टॅप करा"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"आता सिंक करा"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"सिंक रद्द करा"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"संकालनास सध्या समस्या येत आहेत. हे लवकरच परत येईल."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"सुरक्षितता"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"स्क्रीन लॉक"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"काहीही नाही"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"पिन"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"पासवर्ड"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"लॉक प्रकार निवडा"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"स्क्रीन लॉक पर्याय"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"लॉक पर्याय"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"तुमचा पॅटर्न एंटर करा"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"खात्री करा"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"पुन्हा रेखाटा"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"स्क्रीन लॉक सेट करा"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"तुमचा पिन निवडा"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"तुमचा पॅटर्न निवडा"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"तुमचा पासवर्ड निवडा"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"तुमचा पासवर्ड निवडा"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"सध्‍याचा स्क्रीन लॉक"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"सुरक्षिततेसाठी, एक पॅटर्न सेट करा"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"साफ करा"</string>
@@ -225,8 +377,8 @@
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"अनलॉक पॅटर्न रेखाटा"</string>
     <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"पूर्ण झाल्यावर बोट काढा"</string>
     <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"पॅटर्न रेकॉर्ड झाला"</string>
-    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"पुष्टी करण्यासाठी पुन्हा रेखांकित करा"</string>
-    <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"किमान ४ बिंदू कनेक्ट करा. पुन्हा प्रयत्न करा."</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"निश्चित करण्यासाठी पुन्हा रेखांकित करा"</string>
+    <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"किमान ४ बिंदू जोडा. पुन्हा प्रयत्न करा."</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"चुकीचा पॅटर्न"</string>
     <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"अनलॉक पॅटर्न कसा काढावा"</string>
     <string name="error_saving_lockpattern" msgid="2933512812768570130">"पॅटर्न सेव्ह करताना एरर आली"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"सामान्यत: वापरले जाणारे पासवर्ड तुमच्या IT प्रशासनाने ब्लॉक केलेले आहेत. दुसरा एखादा पासवर्ड वापरून पहा."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अंकांच्या चढत्या, उतरत्या किंवा पुनरावृत्त क्रमाला अनुमती नाही."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रीन लॉक पर्याय"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> दिवसांपूर्वी"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"विश्वसनीय डिव्हाइस जोडा"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"विश्वसनीय डिव्हाइस"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> डिव्हाइस</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> डिव्हाइस</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"ते कनेक्ट केलेले असते तेव्‍हा <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> तुमची कार अनलॉक करेल. एखाद्याने तुमचे <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> घेतल्यास, tकदाचित ते डिव्हाइस अ‍ॅक्सेस करू शकतील"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"खात्री करा"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"विश्वसनीय डिव्हाइस काढून टाका"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"पूर्ण झाले"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"विश्वसनीय डिव्हाइस सेट करण्यासाठी सहयोगी अ‍ॅप वापरा. एकदा सेट केल्यानंतर, वाहनाने तुमचा फोन शोधल्यावर तुम्ही तुमची वापरकर्ता प्रोफाईल अनलॉक करू शकाल"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"१. तुमच्या फोनवर सहयोगी अ‍ॅप डाउनलोड करा"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"२. डिव्हाइस पेअर करण्यासाठी तुमच्या फोनवर <xliff:g id="CAR_NAME">%1$s</xliff:g> निवडा"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"स्मार्ट लॉक या डिव्हाइसची सुरक्षितता वैशिष्ट्ये शोधू शकत नाही. तुमच्या कारचे संरक्षण करण्यात मदत करण्यासाठी, तुम्ही तुमची कार आधीपासून अनलॉक केल्यानंतर विश्वसनीय डिव्हाइस ती अनलॉक करू शकेल. तुमचे विश्वसनीय डिव्हाइस दुसऱ्या कोणाच्या हातात असताना देखील ते तुमची कार ती जवळपास असताना अनलॉक करू शकते."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> हे विश्वसनीय डिव्हाइस म्हणून जोडा"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> हे विश्वसनीय डिव्हाइस म्हणून यशस्वीरित्या जोडले आहे"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ची नोंदणी करता आली नाही"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"विश्वासू डिव्हाइस जोडण्यााठी तुम्हाला यापुढे ऑथेंटिकेशन सेट करण्याची आवश्यकता आहे. तुमच्याजवळ तुमचे विश्वासू डिव्हाइस नसल्यास, ऑथेंटिकेशनला तुमची प्रोफाइल अॅक्सेस करण्याची आवश्यकता असेल."</string>
     <string name="forget" msgid="3971143908183848527">"विसरा"</string>
+    <string name="connect" msgid="5861699594602380150">"कनेक्ट करा"</string>
+    <string name="disconnect" msgid="6140789953324820336">"डिस्कनेक्ट करा"</string>
     <string name="delete_button" msgid="5840500432614610850">"हटवा"</string>
     <string name="remove_button" msgid="6664656962868194178">"काढा"</string>
     <string name="cancel" msgid="750286395700355455">"रद्द करा"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"डेमो मोडमधून बाहेर पडा"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"हे डेमो खाते हटवेल आणि फॅक्टरी डेटा सिस्टम रीसेट करेल. सर्व वापरकर्ता डेटा गमावेल."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"डेमो मोडमधून बाहेर पडा"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"सेटअप समाप्त करा"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"आता नाही"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"डिसमिस करा"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ड्राइव्ह करताना वैशिष्ट्य उपलब्ध नाही."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ड्राइव्ह करत असताना वापरकर्त्याला जोडू शकत नाही."</string>
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index e89e2b6..cb052f0 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"malapkan skrin, skrin sentuh, bateri"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"malapkan skrin, malam, seri warna"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Mod malam"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Rangkaian &amp; Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Rangkaian mudah alih"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Data mudah alih"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Akses data menggunakan rangkaian mudah alih"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Matikan data mudah alih?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Penggunaan data"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Amaran data &amp; had"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Kitaran penggunaan data apl"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Tetapkan amaran data"</string>
+    <string name="data_warning" msgid="116776633806885370">"Amaran data"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Tetapkan had data"</string>
+    <string name="data_limit" msgid="227338836292511425">"Had data"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Mengehadkan penggunaan data"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Unit kepala kenderaan anda akan mematikan data mudah alih setelah mencapai had yang anda tetapkan.\n\nMemandangkan penggunaan data diukur oleh unit kepala dan pembawa anda mungkin mengira penggunaan secara berbeza, anda disyorkan supaya menetapkan had yang konservatif."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Sediakan &amp; urus titik capaian wayarles"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Menghidupkan Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Mematikan Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Memuatkan senarai Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi dilumpuhkan"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Gagal melupakan rangkaian"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Gagal menyambung ke rangkaian"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Tambah rangkaian"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi dilumpuhkan"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Sambung"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Kata Laluan"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Tunjukkan kata laluan"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nama rangkaian"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Masukkan SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Keselamatan"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Kekuatan isyarat"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Kekuatan isyarat"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Kelajuan sambungan"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekuensi"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Alamat IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Tunjukkan kata laluan"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Masukkan nama rangkaian"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Masukkan kata laluan"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Lemah"</item>
-    <item msgid="2032262610626057081">"Sederhana"</item>
-    <item msgid="3859756017461098953">"Bagus"</item>
-    <item msgid="1521103743353335724">"Sangat baik"</item>
+    <item msgid="7683058295076342057">"Lemah"</item>
+    <item msgid="1639222824821660744">"Sederhana"</item>
+    <item msgid="1838705897358163300">"Baik"</item>
+    <item msgid="6067166649320533751">"Sangat baik"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Hidupkan Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth dilumpuhkan"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Butiran rangkaian"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Alamat MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Alamat IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Topeng subnet"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Alamat IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Get laluan"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Pilihan Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Hidupkan Wi-Fi secara automatik"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi akan dihidupkan berdekatan rangkaian disimpan berkualiti, spt rangkaian rmh"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Tidak tersedia kerana lokasi dimatikan. Hidupkan "<annotation id="link">"lokasi"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Hidupkan pengimbasan Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Hidupkan"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Pengimbasan Wi‑Fi dihidupkan"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Beralih kepada data mudah alih secara automatik"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Gunakan data mudah alih apabila Wi-Fi tiada akses Internet. Caj penggunaan data mungkin dikenakan."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Ketahui lebih lanjut"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Urus sambungan, tetapkan nama peranti &amp; kebolehtemuan"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Komputer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Set kepala"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Pengimejan"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Fon kepala"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Persisian Input"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Peranti gandingan"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Peranti yang tersedia"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Tiada peranti digandingkan"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Tiada peranti yang tersedia"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Peranti digandingkan"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nama"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Gunakan untuk"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Tukar nama peranti Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Peranti tidak bernama"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Peranti gandingan"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Gandingkan peranti baharu"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth akan dihidupkan untuk bergandingan"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Putuskan sambungan peranti?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Kenderaan anda akan diputuskan sambungannya daripada <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Alamat Bluetooth kenderaan: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Alamat Bluetooth peranti: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nama kenderaan"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Namakan semula kenderaan ini"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Namakan semula peranti"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Namakan semula"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Peranti yang tersedia"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profil"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Permintaan penggandingan Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Gandingkan &amp; sambung"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kod penggandingan Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN mengandungi huruf atau simbol"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Taip kod berpasangan kemudian tekan Return atau Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Biasanya 0000 atau 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Permintaan penggandingan"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Sentuh untuk berganding dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Bahasa"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Bahasa &amp; input"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Papan kekunci"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Urus papan kekunci"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Output teks ke pertuturan"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Enjin pilihan"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Enjin semasa"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Kadar Pertuturan"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Pic"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Tetapkan semula"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Bunyi"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Kelantangan deringan"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Kelantangan navigasi"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Tetapkan kelantangan untuk muzik dan video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Penggera"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Nada dering telefon"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Bunyi pemberitahuan lalai"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Bunyi penggera lalai"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apl &amp; pemberitahuan"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Tunjukkan semua apl"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Apl lalai"</string>
     <string name="applications_settings" msgid="794261395191035632">"Maklumat apl"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Henti paksa"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Henti paksa?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Jika anda menghentikan apl secara paksa, fungsinya mungkin terganggu."</string>
     <string name="disable_text" msgid="4358165448648990820">"Lumpuhkan"</string>
     <string name="enable_text" msgid="1794971777861881238">"Dayakan"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Nyahpasang"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jika anda melumpuhkan apl ini, Android dan apl lain mungkin tidak berfungsi seperti yang dimaksudkan lagi."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Lumpuhkan apl"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Kebenaran"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versi: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Tiada kebenaran diberikan"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Tiada kebenaran diminta"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Penggunaan data"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Penggunaan data apl"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Henti paksa"</string>
     <string name="computing_size" msgid="5791407621793083965">"Mengira…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> kebenaran tambahan</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> kebenaran tambahan</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Bantu &amp; input suara"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Apl Bantu"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Gunakan teks daripada skrin"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Benarkan apl bantu mengakses kandungan skrin sebagai teks"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Gunakan tangkapan skrin"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Benarkan apl bantu mengakses imej skrin"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Perkhidmatan autolengkap"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Tiada"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Dipilih"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Pembantu akan dapat membaca maklumat tentang apl yang sedang digunakan pada sistem anda, termasuk maklumat yang kelihatan pada skrin atau yang dapat diakses dalam apl."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Pastikan anda mempercayai apl ini&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; menggunakan item yang terdapat pada skrin anda untuk menentukan perkara yang boleh dilengkapkan secara automatik."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Tambahkan perkhidmatan"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lokasi"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Permintaan Lokasi Terbaharu"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Tiada permintaan lokasi terbaharu"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Kebenaran tahap apl"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Mengimbas"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Perkhidmatan Lokasi"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Pengimbasan Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Benarkan apl dan perkhidmatan mengimbas untuk mengesan rangkaian Wi-Fi pada bila-bila masa, meskipun apabila Wi-Fi dimatikan. Ini dapat digunakan, contohnya, untuk meningkatkan ciri dan perkhidmatan berasaskan lokasi."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Pengimbasan Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Benarkan apl dan perkhidmatan mengimbas untuk mengesan peranti berdekatan pada bila-bila masa, meskipun apabila Bluetooth dimatikan. Ini dapat digunakan, contohnya, untuk meningkatkan ciri dan perkhidmatan berasaskan lokasi."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Kemas kini sistem"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Kemas kini sistem"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versi Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Tahap tampung keselamatan Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versi jalur dasar"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versi inti"</string>
     <string name="build_number" msgid="3997326631001009102">"Nombor binaan"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Alamat Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Tidak tersedia"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Hak cipta"</string>
     <string name="license_title" msgid="936705938435249965">"Lesen"</string>
     <string name="terms_title" msgid="5201471373602628765">"Terma dan syarat"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Lesen Paparan Web Sistem"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Lesen Paparan Web Sistem"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Kertas dinding"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Pembekal imej satelit:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Lesen pihak ketiga"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Terdapat masalah memuatkan lesen."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Memuatkan…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Anda kini <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> langkah daripada menjadi seorang pembangun.</item>
+      <item quantity="one">Anda kini <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> langkah daripada menjadi seorang pembangun.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Anda kini seorang pembangun!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Tidak perlu, anda sudah pun menjadi seorang pembangun."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Pilihan pembangun"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Pilihan tetapan semula"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Tetapan semula rangkaian, apl atau peranti"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Tetapkan semula rangkaian"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Ini akan menetapkan semula semua tetapan rangkaian, termasuk:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Data mudah alih"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Padamkan semua eSIM kenderaan"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Tindakan ini tidak akan membatalkan pelan perkhidmatan anda."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Tidak dapat menetapkan semula eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Pilih rangkaian"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Tetapkan semula tetapan"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Tetapkan semula?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Tetapkan semula semua tetapan rangkaian? Anda tidak boleh membuat asal tindakan ini!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Tetapkan semula tetapan"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Tetapan rangkaian telah ditetapkan semula"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Tetapkan semula pilihan apl"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Tindakan ini akan menetapkan semula semua pilihan untuk:\n\n"<li>"Apl dilumpuhkan"</li>\n<li>"Pemberitahuan apl dilumpuhkan"</li>\n<li>"Aplikasi lalai untuk tindakan"</li>\n<li>"Sekatan data latar belakang untuk apl"</li>\n<li>"Sebarang sekatan kebenaran"</li>\n\n"Anda tidak akan kehilangan sebarang data apl."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Tetapkan semula apl"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Pilihan apl telah ditetapkan semula"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Padamkan semua data (ttpn semula kilang)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Tindakan ini akan memadamkan semua data daripada unit kepala kenderaan anda, termasuk:\n\n"<li>"Akaun Google anda"</li>\n<li>"Data dan tetapan sistem dan apl"</li>\n<li>"Apl yang dimuat turun"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Pada masa ini, anda telah dilog masuk ke akaun berikut:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Terdapat pengguna lain pada kenderaan ini."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Tetapkan semula kenderaan"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Tetapkan semula?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Padamkan semua maklumat peribadi anda dan aplikasi yang dimuat turun? Anda tidak boleh membuat asal tindakan ini!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Padamkan semua"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Memadam"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Sila tunggu..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tarikh &amp; masa"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Tetapkan tarikh dan masa"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Tetapkan tarikh, masa, zon waktu &amp; format"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Isih mengikut zon waktu"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Tarikh"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Masa"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Tambah pengguna"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Tambah akaun"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Padamkan pengguna"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Pengguna baharu"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Tetamu"</string>
     <string name="user_admin" msgid="1535484812908584809">"Pentadbir"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Dilog masuk sebagai pentadbir"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Semua kebenaran pentadbir"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Jadikan Pentadbir"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Pengguna tersebut dapat memadamkan pengguna, termasuk Pentadbir lain, dan membuat tetapan semula kilang pada sistem."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Tindakan ini tidak boleh diterbalikkan."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ya, jadikan pentadbir"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Buat pengguna baharu"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Buat panggilan telefon"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Pmsjn melalui data mdh alih kereta"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Pasang apl baharu"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Nyahpasang apl"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Tambah pengguna"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Pengguna baharu"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Tambah pengguna baharu?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Apabila anda menambahkan pengguna baharu, orang itu perlu menyediakan ruang mereka."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Mana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Had pengguna dicapai"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Anda boleh membuat hingga <xliff:g id="COUNT">%d</xliff:g> pengguna.</item>
+      <item quantity="one">Hanya satu pengguna yang boleh dibuat.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Gagal membuat pengguna baharu"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Padamkan pengguna ini?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Semua apl dan data akan dipadamkan."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Gagal memadamkan pengguna."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ketepikan"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Cuba semula"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Padamkan pengguna terakhir?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Selepas memadamkan satu-satunya pengguna yang tinggal untuk kereta ini, pengguna pentadbir baharu akan dibuat."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Semua data, tetapan dan apl yang dikaitkan dengan pengguna ini akan dipadamkan. Anda perlu menyediakan sistem sekali lagi."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Pilih pentadbir baharu"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Anda memerlukan sekurang-kurangnya satu pentadbir. Untuk memadamkan pentadbir ini, pilih pengganti dahulu."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Pilih pentadbir"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Tetamu"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Tetamu"</string>
     <string name="user_switch" msgid="6544839750534690781">"Tukar"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Anda (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nama"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Tidak disediakan"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Edit nama pengguna"</string>
     <string name="users_list_title" msgid="770764290290240909">"Pengguna"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Kebenaran diberikan kpd %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Akaun"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Pengguna"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Tambah akaun"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Tiada akaun yang ditambahkan"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Akaun untuk <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Segerakkan data secara automatik"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Benarkan apl memuatkan semula data secara automatik"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Hidupkan autosegerak data?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Sebarang perubahan yang anda buat pada akaun anda di web akan disalin secara automatik ke peranti anda.\n\nSesetengah akaun juga boleh menyalin secara automatik sebarang perubahan yang anda buat pada telefon ke web. Akaun Google berfungsi dengan cara ini."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Matikan autosegerak data?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Tindakan ini akan menjimatkan data tetapi anda perlu menyegerakkan setiap akaun secara manual untuk mengumpul maklumat terbaharu. Anda juga tidak akan menerima pemberitahuan apabila kemas kini terjadi."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Maklumat akaun"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Tambah akaun"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Tambah akaun"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Alih keluar akaun"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Alih keluar akaun?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Pengalihan keluar akaun ini akan memadamkan semua mesej, kenalan dan data lain daripada peranti!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Perubahan ini tidak dibenarkan oleh pentadbir anda"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Alih keluar pengguna ini?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Semua apl dan data akan dipadamkan."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Gagal mengalih keluar pengguna."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Cuba lagi?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Ketepikan"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Cuba semula"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Tambah pengguna baharu?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Apabila anda menambahkan pengguna baharu, orang itu perlu menyediakan ruang mereka."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Mana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Gagal mengalih keluar iklan."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Penyegerakan akaun"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Penyegerakan dihidupkan untuk <xliff:g id="ID_1">%1$d</xliff:g> daripada <xliff:g id="ID_2">%2$d</xliff:g> item"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Penyegerakan dihidupkan untuk semua item"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Penyegerakan dimatikan untuk semua item"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Segerak DIMATIKAN"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Ralat penyegerakan"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Terakhir disegerakkan <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Menyegerak sekarang…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Ketik untuk menyegerak sekarang<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Segerakkan sekarang"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Batalkan penyegerakan"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Penyegerakan sedang mengalami masalah. Ciri ini akan kembali sebentar lagi."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Keselamatan"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Kunci skrin"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Tiada"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Kata Laluan"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Pilih jenis kunci"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Pilihan kunci skrin"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Pilihan kunci"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Masukkan corak anda"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Sahkan"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Lukis semula"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Tetapkan kunci skrin"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Pilih PIN anda"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Pilih corak anda"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Pilih kata laluan anda"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Pilih kata laluan anda"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Kunci skrin semasa"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Untuk keselamatan, tetapkan corak"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Kosongkan"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Kata laluan lazim disekat oleh pentadbir IT anda. Cuba kata laluan yang lain."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Angka menaik, menurun atau jujukan berulang tidak dibenarkan."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Pilihan kunci skrin"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> hari lalu"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Tambah peranti dipercayai"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Peranti dipercayai"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> peranti</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> peranti</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> anda akan membuka kunci kereta ini apabila disambungkan. Jika seseorang mengambil <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> anda, orang itu mungkin dapat mengakses peranti ini"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Sahkan"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Alih keluar peranti yang dipercayai"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Selesai"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Gunakan apl rakan untuk menyediakan peranti yang dipercayai. Setelah peranti disediakan, anda akan dapat membuka kunci profil pengguna anda apabila telefon anda dikesan oleh kenderaan"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Muat turun apl rakan pada telefon anda"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Pilih <xliff:g id="CAR_NAME">%1$s</xliff:g> pada telefon anda untuk menggandingkan peranti tersebut"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock tidak dapat mengesan ciri keselamatan peranti ini. Untuk melindungi kereta anda, peranti yang dipercayai hanya dapat memastikan kereta anda kekal tidak berkunci setelah anda membuka kunci kereta anda itu. Peranti yang dipercayai boleh memastikan kereta anda kekal tidak berkunci apabila berada berdekatan, walaupun orang lain yang memegang peranti itu."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Tambahkan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> sebagai peranti yang dipercayai"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> berjaya ditambah sebagai peranti yang dipercayai"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Pendaftaran <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gagal"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Penambahan peranti yang dipercayai memerlukan anda menetapkan kaedah pengesahan selepas ini. Jika peranti yang dipercayai tiada dengan anda, pengesahan perlu mengakses profil anda."</string>
     <string name="forget" msgid="3971143908183848527">"Lupakan"</string>
+    <string name="connect" msgid="5861699594602380150">"Sambung"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Putuskan sambungan"</string>
     <string name="delete_button" msgid="5840500432614610850">"Padam"</string>
     <string name="remove_button" msgid="6664656962868194178">"Alih keluar"</string>
     <string name="cancel" msgid="750286395700355455">"Batal"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Keluar drpd mod tunjuk cara"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Tindakan ini akan memadamkan akaun tunjuk cara dan membuat tetapan semula data kilang pada sistem. Semua data pengguna akan hilang."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Keluar drpd Tunjuk Cara"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"selesaikan persediaan"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"bukan sekarang"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"KETEPIKAN"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Ciri tidak tersedia semasa anda memandu."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Tidak dapat menambah pengguna semasa memandu."</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 0395e88..719f276 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,68 +29,109 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"မျက်နှာပြင် မှိန်ရန်၊ ထိတွေ့မှုမျက်နှာပြင်၊ ဘက်ထရီ"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"မျက်နှာပြင်ကို မှိန်ရန်၊ ည၊ အရောင်သန်းခြင်း"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ညသုံးမုဒ်"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"ကွန်ရက်နှင့် အင်တာနက်"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"မိုဘိုင်းကွန်ရက်"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"မိုဘိုင်းဒေတာ"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"မိုဘိုင်းကွန်ရက်သုံးပြီး ဒေတာကို ဝင်သုံးခွင့်ပေးပါ"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"မိုဘိုင်းဒေတာ ပိတ်လိုသလား။"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ဒေတာသုံးစွဲမှု"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ဒေတာ သတိပေးချက်နှင့် ကန့်သတ်ချက်"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"အက်ပ်ဒေတာ အသုံးပြုမှု စက်ဝန်း"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ဒေတာသတိပေးချက် သတ်မှတ်ရန်"</string>
+    <string name="data_warning" msgid="116776633806885370">"ဒေတာသတိပေးချက်"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ဒေတာကန့်သတ်ရန်"</string>
+    <string name="data_limit" msgid="227338836292511425">"ဒေတာ အကန့်အသတ်"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ဒေတာအသုံးပြုမှု ကန့်သတ်ခြင်း"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"သင်သတ်မှတ်ထားသည့် ကန့်သတ်ချက်ရောက်သည်နှင့် သင့်ယာဉ်၏ ဦးပိုင်းယူနစ်သည် မိုဘိုင်းဒေတာကို ပိတ်သွားပါမည်။\n\nဒေတာသုံးစွဲမှုကို ဦးပိုင်းယူနစ်က တိုင်းတာခြင်းဖြစ်ပြီး ဖုန်းလိုင်းဝန်ဆောင်မှုပေးသူ၏ တွက်ချက်မှုနှင့် ကွာခြားနိုင်သောကြောင့် ကန့်သတ်ချက်မကျော်လွန်အောင် သတ်မှတ်ပါ။"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"ကြိုးမဲ့ချိတ်ဆက်ပွိုင့်များကို စနစ်ထည့်သွင်းခြင်းနှင့် စီမံခြင်း"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi ကို ဖွင့်နေသည်…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi ကို ပိတ်နေသည်…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi စာရင်း ဖွင့်နေသည်"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi ကို ပိတ်ထားသည်"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"ကွန်ရက်ကို မေ့ပစ်၍ မရပါ"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ကွန်ရက်သို့ ချိတ်ဆက်၍ မရပါ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ကွန်ရက်ထည့်ရန်"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi ကို ပိတ်ထားသည်"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ချိတ်ရန်"</string>
     <string name="wifi_password" msgid="5565632142720292397">"စကားဝှက်"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"စကားဝှက်ကို ပြရန်"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ကွန်ရက် အမည်"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID ထည့်သွင်းရန်"</string>
     <string name="wifi_security" msgid="158358046038876532">"လုံခြုံရေး"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"လိုင်းဆွဲအား"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"လိုင်းဆွဲအား"</string>
     <string name="wifi_status" msgid="5688013206066543952">"အခြေအနေ"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"လိုင်းအမြန်နှုန်း"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"ကြိမ်နှုန်း"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP လိပ်စာ"</string>
+    <string name="show_password" msgid="2074628020371139240">"စကားဝှက် ပြရန်"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"ကွန်ရက်အမည် ထည့်ပါ"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"စကားဝှက် ထည့်ပါ"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ညံ့သည်"</item>
-    <item msgid="2032262610626057081">"အတင့်အသင့်"</item>
-    <item msgid="3859756017461098953">"ကောင်းသည်"</item>
-    <item msgid="1521103743353335724">"အလွန်ကောင်းသည်"</item>
+    <item msgid="7683058295076342057">"အားနည်းသည်"</item>
+    <item msgid="1639222824821660744">"အတင့်အသင့်"</item>
+    <item msgid="1838705897358163300">"ကောင်းသည်"</item>
+    <item msgid="6067166649320533751">"အလွန်ကောင်းသည်"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ဘလူးတုသ်"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ဘလူးတုသ်ကို ဖွင့်ရန်"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ဘလူးတုသ်"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ဘလူးတုသ် ပိတ်ထားသည်"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"၂.၄ GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"၅ GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ကွန်ရက် အသေးစိတ်များ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC လိပ်စာ"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"အိုင်ပီ လိပ်စာ"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"ကွန်ရက်အခွဲ နံပါတ်"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 လိပ်စာများ"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ဂိတ်ဝ"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi သတ်မှတ်ချက်များ"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi-Fi အလိုအလျောက် ဖွင့်ပါ"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"နေအိမ်ကွန်ရက်ကဲ့သို့ သိမ်းထားသည့် အဆင့်မြင့်ကွန်ရက်အနီးတွင် Wi‑Fi ပြန်ဖွင့်မည်"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"တည်နေရာကို ပိတ်ထားသောကြောင့် မရနိုင်ပါ။ "<annotation id="link">"တည်နေရာ"</annotation>" ကို ဖွင့်ပါ။"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi ရှာဖွေမှု ဖွင့်လိုသလား။"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ဖွင့်ရန်"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi ရှာဖွေမှု ဖွင့်ထားသည်"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"မိုဘိုင်းဒေတာစနစ်သို့ အလိုအလျောက် ပြောင်းပါ"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi တွင် အင်တာနက် ချိတ်ဆက်မှု မရှိသည့်အခါ မိုဘိုင်းဒေတာကို အသုံးပြုပါ။ ဒေတာသုံးစွဲခများ ကျသင့်နိုင်ပါသည်။"</string>
+    <string name="learn_more" msgid="8214605928933358604">"ပိုမိုလေ့လာရန်"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ဘလူးတုသ်"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"ချိတ်ဆက်မှုများကို စီမံခြင်း၊ စက်ပစ္စည်းအမည်နှင့် ရှာဖွေနိုင်မှုကို သတ်မှတ်ခြင်း"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"ကွန်ပျူတာ"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"မိုက်ခွက်ပါနားကြပ်"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ဖုန်း"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ဓာတ်ပုံဆိုင်ရာ"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"နားကြပ်"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ချိတ်ဆက်အသုံးပြုရသည့် စက်ပစ္စည်းများ"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ဘလူးတုသ်"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"တွဲချိတ်ထားသည့် စက်ပစ္စည်းများ"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"ရနိုင်သည့် စက်ပစ္စည်းများ"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"တွဲချိတ်ထားသည့် စက်ပစ္စည်းမရှိပါ"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"မည်သည့် စက်ပစ္စည်းမျှ မရှိပါ"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"တွဲချိတ်ထားသည့် စက်ပစ္စည်း"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"အမည်"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"အတွက် သုံးရန်"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"\'ဘလူးတုသ်\' စက် အမည်ကို ပြောင်းပါ"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"အမည်ပေးမထားသော စက်"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"တွဲချိတ်ထားသည့် စက်များ"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"စက်အသစ် တွဲချိတ်ပါ"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"တွဲချိတ်ရန် ဘလူးတုသ်ကို ဖွင့်ပါမည်"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"စက်ကို ချိတ်ဆက်မှုရပ်လိုသလား။"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"သင့်ယာဉ်ကို <xliff:g id="DEVICE_NAME">%1$s</xliff:g> နှင့် ချိတ်ဆက်မှုရပ်လိုက်ပါမည်။"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"ယာဉ်၏ ဘလူးတုသ်လိပ်စာ- <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"စက်၏ ဘလူးတုသ်လိပ်စာ- <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"ယာဉ်အမည်"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ဤယာဉ်ကို အမည်ပြောင်းပါ"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"စက် အမည်ပြောင်းပါ"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"အမည်ပြောင်းရန်"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ရနိုင်သည့် စက်များ"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"ပရိုဖိုင်များ"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ဘလူးတုသ်တွဲချိတ်ရန် တောင်းဆိုချက်"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"တွဲချိတ်ရန်နှင့် ချိတ်ဆက်ရန်"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ဘလူးတုသ်"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ဘလူးတုသ် တွဲချိတ်ခြင်းကုဒ်"</string>
-    <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ပင်နံပါတ်တွင် စကားလုံးနှင့် သင်္ကေတများပါဝင်သည်"</string>
-    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"တွဲချိတ်ရန်ကုဒ်ကို ထည့်ပြီး \'Return\' သို့မဟုတ် \'Enter\' ကို နှိပ်ပါ"</string>
-    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့် တွဲချိတ်လိုပါသလား။"</string>
+    <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ပင်နံပါတ်တွင် စာလုံး သို့မဟုတ် သင်္ကေတများပါဝင်သည်"</string>
+    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"တွဲချိတ်ရန်ကုဒ်ကို ထည့်ပြီး Return သို့မဟုတ် Enter ကို နှိပ်ပါ"</string>
+    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> နှင့် တွဲချိတ်လိုပါသလား။"</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"သင်၏ အဆက်အသွယ်များနှင့် ခေါ်ဆိုမှုမှတ်တမ်းကို <xliff:g id="DEVICE_NAME">%1$s</xliff:g> အား အသုံးပြုခွင့်ပေးပါ"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"ဤပင်နံပါတ်ကို အခြား စက်ပစ္စည်းတွင်လည်း ထည့်သွင်းရန် လိုအပ်နိုင်သည်။"</string>
     <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"ဤလျှို့ဝှက်ကုဒ်ကို အခြား စက်ပစ္စည်းတွင်လည်း ထည့်သွင်းရန် လိုအပ်နိုင်သည်။"</string>
     <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"ဂဏန်း ၁၆ လုံး ရှိရမည်"</string>
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"ပုံမှန် ၀၀၀၀ (သို့) ၁၂၃၄"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"တွဲချိတ်ရန် တောင်းဆိုချက်"</string>
-    <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့် တွဲချိတ်ရန် တို့ပါ။"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
+    <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> နှင့် တွဲချိတ်ရန် တို့ပါ။"</string>
     <string name="language_settings" msgid="2079258598337245546">"ဘာသာစကားများ"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ဘာသာစကားနှင့် ထည့်သွင်းမှုစနစ်"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"လက်ကွက်"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"လက်ကွက်များ စီမံခန့်ခွဲရန်"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"စာသားမှ စကားပြောသို့ အထွက်"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ဦးစားပေးအင်ဂျင်"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"လက်ရှိ အင်ဂျင်"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"စကားပြောနှုန်း"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"အသံအနိမ့်အမြင့်"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"ပြင်ဆင်သတ်မှတ်ရန်"</string>
     <string name="sound_settings" msgid="3072423952331872246">"အသံ"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"ဖုန်းမြည်သံ အတိုးအကျယ်"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"လမ်းညွှန်မှု အသံ"</string>
@@ -100,30 +140,66 @@
     <string name="media_volume_title" msgid="6697416686272606865">"မီဒီယာ"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"တေးဂီတနှင့် ဗီဒီယိုအတွက် အသံချိန်ရန်"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"နှိုးစက်"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ဖုန်းမြည်သံ"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"အကြောင်းကြားချက် မူရင်းအသံ"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"မူရင်းနှိုးစက်သံ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"အက်ပ်များနှင့် အကြောင်းကြားချက်များ"</string>
+    <string name="all_applications" msgid="7798210477486822168">"အက်ပ်အားလုံး ပြရန်"</string>
+    <string name="default_applications" msgid="1558183275638697087">"မူရင်း အက်ပ်များ"</string>
     <string name="applications_settings" msgid="794261395191035632">"အက်ပ်အချက်အလက်များ"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ချက်ချင်း ရပ်ရန်"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"မဖြစ်မနေ ရပ်ခိုင်းမလား။"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"အက်ပ်ကို မဖြစ်မနေရပ်ခိုင်းလျှင် ပုံမှန် အလုပ်လုပ်တော့မည် မဟုတ်ပါ။"</string>
     <string name="disable_text" msgid="4358165448648990820">"ပိတ်ရန်"</string>
     <string name="enable_text" msgid="1794971777861881238">"ဖွင့်ရန်"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"ဖြုတ်ရန်"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ဤအက်ပ်ကို ပိတ်လိုက်လျှင် Android နှင့် အခြားအက်ပ်များ ပုံမှန် အလုပ်လုပ်တော့မည် မဟုတ်ပါ။"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"အက်ပ်ကို ပိတ်ရန်"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ခွင့်ပြုချက်များ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ဗားရှင်း− %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ခွင့်ပြုထားသည့် အရာများ မရှိပါ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"တောင်းဆိုထားသော ခွင့်ပြုချက်များ မရှိပါ"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ဒေတာသုံးစွဲမှု"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"အက်ပ်ဒေတာ သုံးစွဲမှု"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ချက်ချင်း ရပ်ရန်"</string>
     <string name="computing_size" msgid="5791407621793083965">"တွက်ချက်နေသည်…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">နောက်ထပ် ခွင့်ပြုချက် <xliff:g id="COUNT_1">%d</xliff:g> ခု</item>
       <item quantity="one">နောက်ထပ် ခွင့်ပြုချက် <xliff:g id="COUNT_0">%d</xliff:g> ခု</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"အကူနှင့် အသံဖြင့်စာရိုက်ခြင်း"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"အကူအညီ အက်ပ်"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ဖန်သားပြင်မှ စာသားကိုသုံးခြင်း"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"ဖန်သားပြင်မှအကြောင်းအရာများကို စာသားအဖြစ်ရယူရန် အကူအညီအက်ပ်ကို ခွင့်ပြုသည်"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ဖန်သားပြင်ဓာတ်ပုံ သုံးခြင်း"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"ဖန်သားပြင်၏ပုံ အသုံးပြုရန် အကူအညီအက်ပ်ကို ခွင့်ပြုသည်"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"အော်တိုဖြည့် ဝန်ဆောင်မှု"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"မရှိ"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"ရွေးထားသည်"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"ကူညီပေးသူသည် သင်၏ မျက်နှာပြင်ပေါ်တွင် မြင်ရသည့် သို့မဟုတ် အက်ပ်များအထဲတွင် ရယူသုံးနိုင်သည့် အချက်အလက်များအပါအဝင် သင်၏ စနစ်ထဲတွင် သုံးနေသည့် အက်ပ်များအကြောင်း အချက်အလက်များကို ဖတ်ရှုနိုင်မည်။"</string>
+    <!-- syntax error in translation for autofill_confirmation_message (1832984461556991378) org.xmlpull.v1.XmlPullParserException: expected: /string read: xliff:g (position:END_TAG </xliff:g>@1:230 in     <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;သင်သည် ဤအက်ပ်ကို ယုံကြည်ခြင်း ရှိမရှိ စစ်ဆေးပါ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill>%1$s</xliff:g> သည် သင်၏မျက်နှာပြင်ပေါ်ရှိ အရာများကို အသုံးပြု၍ မည်သည့်အရာများကို အော်တိုဖြည့်နိုင်ကြောင်း သတ်မှတ်သည်။"</string>
+)  -->
+    <string name="autofill_add_service" msgid="6413893366443609951">"ဝန်ဆောင်မှုထည့်ပါ"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"တည်နေရာ"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"လတ်တလော တည်နေရာတောင်းဆိုချက်များ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"လတ်တလော တည်နေရာတောင်းဆိုချက်များ မရှိပါ"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"အက်ပ်အဆင့် ခွင့်ပြုချက်များ"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"စကင်ဖတ်နေသည်"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"တည်နေရာဝန်ဆောင်မှုများ"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi ရှာဖွေနေသည်"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Wi‑Fi ကို ပိတ်ထားသော်လည်း အနီးအနားရှိ Wi-Fi ကွန်ရက်များကို အချိန်မရွေးရှာဖွေရန် အက်ပ်နှင့် ဝန်ဆောင်မှုများအား ခွင့်ပြုပါ။ ဥပမာအားဖြင့် ၎င်းကို တည်နေရာအခြေပြု လုပ်ဆောင်ချက်နှင့် ဝန်ဆောင်မှုများ တိုးတက်လာစေရန် အသုံးပြုနိုင်ပါသည်။"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ဘလူးတုသ် ရှာဖွေနေသည်"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ဘလူးတုသ်ကို ပိတ်ထားသော်လည်း အနီးအနားရှိ စက်ပစ္စည်းများကို အချိန်မရွေးရှာဖွေရန် အက်ပ်နှင့် ဝန်ဆောင်မှုများအား ခွင့်ပြုပါ။ ဥပမာအားဖြင့် ၎င်းကို တည်နေရာအခြေပြု လုပ်ဆောင်ချက်နှင့် ဝန်ဆောင်မှုများ တိုးတက်လာစေရန် အသုံးပြုနိုင်ပါသည်။"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"စနစ်"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"စနစ်အပ်ဒိတ်များ"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"စနစ်အပ်ဒိတ်များ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ဗားရှင်း"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android လုံခြုံရေးပက်ချ်အဆင့်"</string>
     <string name="model_info" msgid="4966408071657934452">"မော်ဒယ်"</string>
     <string name="baseband_version" msgid="2370088062235041897">"baseband ဗားရှင်း"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel ဗားရှင်း"</string>
-    <string name="build_number" msgid="3997326631001009102">"တည်ဆောင်မှုနံပါတ်"</string>
+    <string name="build_number" msgid="3997326631001009102">"တည်ဆောက်မှုနံပါတ်"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ဘလူးတုသ်လိပ်စာ"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"မရနိုင်ပါ"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"အခြေအနေ"</string>
     <string name="device_status" msgid="267298179806290920">"အခြေအနေ"</string>
@@ -131,7 +207,7 @@
     <string name="device_status_summary" product="default" msgid="9130360324418117815">"ဖုန်းနံပါတ်၊ လိုင်းဆွဲအား စသည်။"</string>
     <string name="about_settings" msgid="4329457966672592345">"အကြောင်း"</string>
     <string name="about_summary" msgid="5374623866267691206">"Android <xliff:g id="VERSION">%1$s</xliff:g>"</string>
-    <string name="about_settings_summary" msgid="7975072809083281401">"ဥပဒေဆိုင်ရာအချက်အလက်၊ အခြေအနေ၊ ဆော့ဝဲလ်ဗားရှင်ကို ကြည့်ရှုရန်"</string>
+    <string name="about_settings_summary" msgid="7975072809083281401">"ဥပဒေဆိုင်ရာအချက်အလက်၊ အခြေအနေ၊ ဆော့ဝဲလ်ဗားရှင်းကို ကြည့်ရှုရန်"</string>
     <string name="legal_information" msgid="1838443759229784762">"ဥပဒေဆိုင်ရာ အချက်အလက်များ"</string>
     <string name="contributors_title" msgid="7698463793409916113">"ပံ့ပိုးသူများ"</string>
     <string name="manual" msgid="4819839169843240804">"ကိုယ်တိုင်ထည့်သွင်းရန်"</string>
@@ -139,13 +215,50 @@
     <string name="safety_and_regulatory_info" msgid="1204127697132067734">"လုံခြုံရေးနှင့် ထိန်းသိမ်းမှုလမ်းညွှန်"</string>
     <string name="copyright_title" msgid="4220237202917417876">"မူပိုင်ခွင့်"</string>
     <string name="license_title" msgid="936705938435249965">"လိုင်စင်"</string>
-    <string name="terms_title" msgid="5201471373602628765">"စည်းမျဉ်းများနှင့် အခြေအနေများ"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"စနစ် WebView လိုင်စင်"</string>
+    <string name="terms_title" msgid="5201471373602628765">"ဝန်ဆောင်မှုစည်းမျဉ်းများ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"စနစ်၏ ဝဘ်မြင်ကွင်း လိုင်စင်များ"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"နောက်ခံပုံများ"</string>
-    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ဂြိုလ်တုဓာတ်ပုံ ဝန်ဆောင်မှုပေးသူများ−\n©2014 CNES / Astrium၊ DigitalGlobe၊ Bluesky"</string>
+    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ဂြိုဟ်တုဓာတ်ပုံ ဝန်ဆောင်မှုပေးသူများ−\n©2014 CNES / Astrium၊ DigitalGlobe၊ Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"ပြင်ပကုမ္ပဏီလိုင်စင်များ"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"လိုင်စင်များကို ဖွင့်ရာတွင် ပြသနာရှိနေသည်။"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"ဖွင့်နေသည်…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">သင် ဆော့ဖ်ဝဲအင်ဂျင်နီယာ ဖြစ်ရန် အဆင့် <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ဆင့် လိုပါသေးသည်။</item>
+      <item quantity="one">သင် ဆော့ဖ်ဝဲအင်ဂျင်နီယာ ဖြစ်ရန် အဆင့် <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> ဆင့် လိုပါသေးသည်။</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"သင် ဆော့ဖ်ဝဲအင်ဂျင်နီယာ ဖြစ်သွားပါပြီ။"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"မလိုပါ၊ သင်က ဆော့ဖ်ဝဲအင်ဂျင်နီယာ ဖြစ်ပြီးသားပါ။"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"တီထွင်သူများရွေးစရာ"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ပြင်ဆင်သတ်မှတ်ရန် ရွေးစရာများ"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ကွန်ရက်၊ အက်ပ်များ (သို့) စက်ပစ္စည်း ပြင်ဆင်သတ်မှတ်ခြင်း"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"ကွန်ရက် ပြင်ဆင်သတ်မှတ်ရန်"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"၎င်းသည် အောက်ပါတို့အပါအဝင် ကွန်ရက်ဆက်တင်များအားလုံးကို ပြင်ဆင်သတ်မှတ်လိုက်ပါမည်−"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"မိုဘိုင်းဒေတာ"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ဘလူးတုသ်"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"ယာဉ် eSIM အားလုံးကို ဖျက်ပါ"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"၎င်းက သင်၏ ဝန်ဆောင်မှုအစီအစဉ်ကို ပယ်ဖျက်မည်မဟုတ်ပါ။"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM များ ပြင်ဆင်သတ်မှတ်၍မရပါ"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"ကွန်ရက် ရွေးပါ"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ဆက်တင်ပြင်ဆင်သတ်မှတ်ရန်"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"ပြင်ဆင်သတ်မှတ်လိုပါသလား။"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"ကွန်ရက်ဆက်တင်များ အားလုံးကို ပြင်ဆင်သတ်မှတ်လိုပါသလား။ ဤလုပ်ဆောင်ချက်ကို ပြန်ပြင်၍ မရပါ။"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ဆက်တင်ပြင်ဆင်သတ်မှတ်ရန်"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"ကွန်ရက်ဆက်တင်များကို ပြင်ဆင်သတ်မှတ်ပြီးပါပြီ"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"အက်ပ်သတ်မှတ်ချက်များ ပြင်ဆင်သတ်မှတ်ရန်"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"၎င်းက အောက်ပါတို့အားလုံးကို ပြင်ဆင်သတ်မှတ်ပါမည်-\n\n"<li>" အက်ပ်များ ပိတ်ခြင်း"</li>\n<li>" အက်ပ်အကြောင်းကြားချက်များ ပိတ်ခြင်း"</li>\n<li>" လုပ်ဆောင်ချက်အတွက် မူရင်းအက်ပ် သတ်မှတ်ခြင်း"</li>\n<li>" အက်ပ်များအတွက် နောက်ခံဒေတာအသုံးပြုမှု ကန့်သတ်ခြင်း"</li>\n<li>" ခွင့်ပြုမှု ကန့်သတ်ချက်အားလုံး"</li>\n\n"သင်၏အက်ပ်ဒေတာများကို ဆုံးရှုံးမည်မဟုတ်ပါ။"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"အက်ပ်များ ပြင်ဆင်သတ်မှတ်ရန်"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"အက်ပ်သတ်မှတ်ချက်များ ပြင်ဆင်သတ်မှတ်ပြီးပါပြီ"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"ဒေတာအားလုံး ဖျက်ပါ (စက်ရုံထုတ်သတ်မှတ်ပါ)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ဤသို့ပြုလုပ်ခြင်းကြောင့် သင့်စက်ပစ္စည်း၏ ဦးခန်းပိုင်းယူနစ်အတွင်းရှိ- \n\n"<li>"သင့် Google အကောင့်"</li>\n<li>"\'စနစ်\' နှင့် အက်ပ်ဒေတာများနှင့် ဆက်တင်များ"</li>\n<li>"ဒေါင်းလုဒ်လုပ်ထားသော အက်ပ်များ"</li>" အပါအဝင် ဒေတာအားလုံးကို ဖျက်ပါမည်။"</string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"သင်သည် လက်ရှိတွင် အောက်ပါအကောင့်များကို ဝင်ရောက်ထားပါသည်-"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ဤစက်ပစ္စည်းပေါ်တွင် အခြားအသုံးပြုသူများလည်း ရှိသည်။"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"စက်ပစ္စည်း ပြင်ဆင်သတ်မှတ်ရန်"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ပြင်ဆင်သတ်မှတ်လိုပါသလား။"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"သင့်ကိုယ်ရေးကိုယ်တာအချက်လက်များနှင့် ဒေါင်းလုဒ်ချထားသောအက်ပ်များ အားလုံးကို ဖျက်မည်လား။ ဤလုပ်ဆောင်ချက်ကို တစ်ဆင့် နောက်ပြန်၍ မရပါ။"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"အားလုံးကိုဖျက်ရန်"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"ဖျက်နေသည်"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"ခဏစောင့်ပါ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ရက်စွဲနှင့် အချိန်"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"ရက်စွဲနှင့် အချိန် သတ်မှတ်ခြင်း"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ရက်စွဲ၊ အချိန်၊ စံတော်ချိန်နှင့် စနစ်များကို သတ်မှတ်ပါ"</string>
@@ -165,23 +278,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"စံတော်ချိန်အလိုက် စီရန်"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"ရက်စွဲ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"အချိန်"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"အသုံးပြုသူ ထည့်ရန်"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"အကောင့်ထည့်ရန်"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"သုံးစွဲသူကို ဖျက်ရန်"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"အသုံးပြုသူ အသစ်"</string>
-    <string name="user_guest" msgid="3465399481257448601">"ဧည့်သည်"</string>
     <string name="user_admin" msgid="1535484812908584809">"စီမံခန့်ခွဲသူ"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"စီမံခန့်ခွဲသူအဖြစ် ဝင်ထားသည်"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"စီမံခန့်ခွဲသူ ခွင့်ပြုချက်အားလုံး"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"စီမံခန့်ခွဲသူ အဖြစ်ပြောင်းရန်"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"အသုံးပြုသူသည် အခြား \'စီမံခန့်ခွဲသူများ\' အပါအဝင် အသုံးပြုသူများကို ဖျက်ခြင်းနှင့် စနစ်ကို ပြင်ဆင်သတ်မှတ်ခြင်း ပြုလုပ်နိုင်ပါမည်။"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ဤလုပ်ရပ်ကို ပြန်ပြင်၍မရပါ။"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"စီမံခန့်ခွဲသူအဖြစ် ပြောင်းရန်"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"အသုံးပြုသူအသစ်များ ပြုလုပ်ရန်"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ဖုန်းခေါ်ဆိုမှုများ ပြုလုပ်ရန်"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ကား၏ မိုဘိုင်းဒေတာဖြင့် စာပို့ရန်"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"အက်ပ်အသစ်များ ထည့်သွင်းရန်"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"အက်ပ်များ ဖယ်ရှားရန်"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"အသုံးပြုသူ ထည့်ရန်"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"အသုံးပြုသူ အသစ်"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"အသုံးပြုသူအသစ် ထည့်မလား။"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"အသုံးပြုသူအသစ် ထည့်သည့်အခါ ထိုသူသည် မိမိ၏ နေရာကို စနစ်ထည့်သွင်းရပါမည်။"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"မည်သူမဆို အသုံးပြုသူအားလုံးအတွက် အက်ပ်များကို အပ်ဒိတ်လုပ်နိုင်သည်။"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"အသုံးပြုသူ အကန့်အသတ် ပြည့်သွားပါပြီ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">အသုံးပြုသူ <xliff:g id="COUNT">%d</xliff:g> ဦးအထိ သင်ဖန်တီးနိုင်သည်။</item>
+      <item quantity="one">အသုံးပြုသူ တစ်ဦးသာ ထည့်နိုင်သည်။</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"အသုံးပြုသူအသစ် ပြုလုပ်၍မရပါ"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ဤအသုံးပြုသူကို ဖျက်မလား။"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"အက်ပ်နှင့် ဒေတာများ အားလုံးကို ဖျက်လိုက်ပါမည်။"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"အသုံးပြုသူကို ဖျက်၍မရပါ။"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ပယ်ရန်"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ထပ်စမ်းကြည့်ရန်"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"နောက်ဆုံးတစ်ဦး ဖျက်မလား။"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ဤကားအတွက် တစ်ဦးတည်းကျန်ရှိသော အသုံးပြုသူကို ဖျက်ပြီးလျှင် စီမံခန့်ခွဲသည့် အသုံးပြုသူအသစ် ပြုလုပ်ပါမည်။"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ဤအသုံးပြုသူနှင့် ဆက်စပ်နေသော ဒေတာ၊ ဆက်တင်နှင့် အက်ပ်အားလုံးကို ဖျက်ပါမည်။ သင် စနစ်ပြန်လည်ထည့်သွင်းရန် လိုအပ်ပါမည်။"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"စီမံခန့်ခွဲသူအသစ် ရွေးခြင်း"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"အနည်းဆုံး စီမံခန့်ခွဲသူတစ်ဦး လိုအပ်ပါသည်။ လူစား ဦးစွာရွေးချယ်ပြီးမှ ဤတစ်ဦးကိုဖျက်ပါ။"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"စီမံခန့်ခွဲသူ ရွေးရန်"</string>
+    <string name="user_guest" msgid="3465399481257448601">"ဧည့်သည်"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ဧည့်သည်"</string>
     <string name="user_switch" msgid="6544839750534690781">"ပြောင်းရန်"</string>
     <string name="current_user_name" msgid="3813671533249316823">"သင် (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"အမည်"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"စနစ်ထည့်သွင်းထားခြင်း မရှိပါ"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"အသုံးပြုသူအမည် တည်းဖြတ်ခြင်း"</string>
     <string name="users_list_title" msgid="770764290290240909">"အသုံးပြုသူများ"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ကိုပေးထားသော ခွင့်ပြုချက်"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"အကောင့်များ"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"အသုံးပြုသူ"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"အကောင့်ထည့်ရန်"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"အကောင့်များ ထည့်မထားပါ"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> အတွက် အကောင့်များ"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ဒေတာ အော်တိုစင့်ခ်လုပ်ရန်"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ဒေတာများကို အလိုအလျောက်ပြန်လည်စတင်ရန် အက်ပ်များကိုခွင့်ပြုပါ"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ဒေတာ အော်တိုစင့်ခ်ကို ဖွင့်မလား။"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ဝဘ်ပေါ်တွင် သင်၏ အကောင့်အတွက်လုပ်သည့် အပြောင်းအလဲအားလုံးကို သင့်စက်ပစ္စည်းသို့ အလိုအလျောက် ကူးပေးမည်။ \n\nအချို့အကောင့်များသည် သင့်ဖုန်းအတွင်းပြုလုပ်ထားသည့် အပြောင်းအလဲများကို ဝဘ်ဆီသို့ အလိုအလျောက် ကူးပေးနိုင်ပါသည်။ Google အကောင့်၏ အလုပ်လုပ်ပုံ ဖြစ်ပါသည်။"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ဒေတာ အော်တိုစင့်ခ်ကို ပိတ်မလား။"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"၎င်းသည် ဒေတာများကို ကာကွယ်ထားမည်ဖြစ်သော်လည်း မကြာသေးခင်က အချက်အလက်များကို စုဆောင်းရန် အကောင့်တစ်ခုစီကို ကိုယ်တိုင်စင့်ခ်လုပ်ရပါမည်။ အပ်ဒိတ်ပြုလုပ်နေစဉ် အကြောင်းကြားချက်များ လက်ခံ၍မရပါ။"</string>
     <string name="account_details_title" msgid="7529571432258448573">"အကောင့်အချက်အလက်"</string>
     <string name="add_account_title" msgid="5988746086885210040">"အကောင့်ထည့်ရန်"</string>
     <string name="add_an_account" msgid="1072285034300995091">"အကောင့်တစ်ခု ထည့်ရန်"</string>
@@ -189,24 +338,28 @@
     <string name="remove_account_title" msgid="8840386525787836381">"အကောင့်ကို ဖယ်ရှားရန်"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"အကောင့်ကို ဖယ်ရှားမလား။"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ဤအကောင့်ကို ဖယ်ရှားလိုက်ခြင်းဖြင့် စက်ပစ္စည်းထဲရှိ မက်ဆေ့ဂျ်၊ အဆက်အသွယ်နှင့် အခြားဒေတာများ အားလုံးကို ဖျက်လိုက်ပါမည်။"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ဤပြောင်းလဲမှုကို သင့်စီမံခန့်ခွဲသူက ခွင့်မပြုပါ"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"ဤသူကို ဖယ်ရှားလိုပါသလား။"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"အက်ပ်အားလုံးနှင့် ဒေတာများကို ဖျက်လိုက်ပါမည်။"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"အသုံးပြုသူကို ဖယ်ရှား၍ မရပါ။"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"ထပ်စမ်းလိုသလား။"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"ပယ်ရန်"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ထပ်စမ်းကြည့်ရန်"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"အသုံးပြုသူအသစ် ထည့်မလား။"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"အသုံးပြုသူအသစ် ထည့်သည့်အခါ ထိုသူသည် မိမိ၏ နေရာကို စနစ်ထည့်သွင်းရပါမည်။"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"မည်သူမဆို အသုံးပြုသူအားလုံးအတွက် အက်ပ်များကို အပ်ဒိတ်လုပ်နိုင်သည်။"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"အကောင့်ဖယ်ရှား၍ မရပါ။"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"အကောင့် စင့်ခ်လုပ်ရန်"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> ခုအနက်မှ <xliff:g id="ID_1">%1$d</xliff:g> ခုအတွက် စင့်ခ်ဖွင့်ထားသည်"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"အရာအားလုံးအတွက် စင့်ခ်ဖွင့်ထားသည်"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"အရာအားလုံးအတွက် စင့်ခ်ပိတ်ထားသည်"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"စင့်ခ်လုပ်ခြင်းပိတ်ထားသည်"</string>
+    <string name="sync_error" msgid="6698021343089247914">"စင့်ခ်လုပ်ခြင်း အမှား"</string>
+    <string name="last_synced" msgid="4745124489150101529">"<xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g> တွင် နောက်ဆုံး စင့်ခ်လုပ်ထားသည်"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"ယခု စင့်ခ်လုပ်နေသည်…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"ယခုစင့်ခ်လုပ်ရန် တို့ပါ<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ယခု စင့်ခ်လုပ်ရန်"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"စင့်ခ် ပယ်ဖျက်ရန်"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"စင့်ခ်လုပ်ရန် လက်ရှိတွင် ပြဿနာရှိနေပါသည်။ ခဏကြာလျှင် ပြန်လည်ရရှိပါမည်။"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"လုံခြုံရေး"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"မျက်နှာပြင်လော့ခ်"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"မရှိ"</string>
     <string name="security_lock_pattern" msgid="1174352995619563104">"ပုံစံ"</string>
     <string name="security_lock_pin" msgid="4891899974369503200">"ပင်နံပါတ်"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"စကားဝှက်"</string>
-    <string name="lock_settings_picker_title" msgid="6590330165050361632">"လော့ခ်အမျိုးအစား ရွေးပါ"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"မျက်နှာပြင်လော့ခ်ချရန် ရွေးချယ်စရာများ"</string>
+    <string name="lock_settings_picker_title" msgid="6590330165050361632">"လော့ခ်ဖွင့်နည်း ရွေးပါ"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"လော့ခ်ရွေးစရာများ"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"သင့်လော့ခ်ဖွင့်ပုံစံ ထည့်ခြင်း"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"အတည်ပြုရန်"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"ပြန်ဆွဲပါ"</string>
@@ -216,7 +369,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"မျက်နှာပြင်လော့ခ်တစ်ခု သတ်မှတ်ခြင်း"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"သင့် PIN နံပါတ် ရွေးချယ်ခြင်း"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"သင့်လော့ခ်ဖွင့်ပုံစံ ရွေးပါ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"သင့်စကားဝှက် ရွေးချယ်ခြင်း"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"သင့်စကားဝှက်ကိုရွေးချယ်ပါ"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"လက်ရှိ မျက်နှာပြင်လော့ခ်"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"လုံခြုံရေးအတွက် ပုံစံတစ်ခု သတ်မှတ်ပါ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"ရှင်းရန်"</string>
@@ -228,7 +381,7 @@
     <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"ပုံစံကိုထပ်ဆွဲပြီး အတည်ပြုရန်"</string>
     <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"အနည်းဆုံးအမှတ် ၄ မှတ်ချိတ်ပါ။ ထပ်လုပ်ပါ။"</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"ပုံစံ မှားနေသည်"</string>
-    <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"လော့ခ်ဖွင့်ရန်ပုံစံ ဆွဲရန်နည်းလမ်း"</string>
+    <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"လော့ခ်ဖွင့်ရန်ပုံစံ ဆွဲနည်း"</string>
     <string name="error_saving_lockpattern" msgid="2933512812768570130">"ပုံစံကို သိမ်းရာတွင် အမှားရှိနေသည်"</string>
     <string name="okay" msgid="4589873324439764349">"OK"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"မျက်နှာပြင်လော့ခ် ဖယ်လိုသလား။"</string>
@@ -260,8 +413,8 @@
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"၎င်းတွင် မမှန်ကန်သည့် အက္ခရာများ ပါဝင်၍မရပါ။"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"စကားဝှက် မမှန်ပါ၊ အနည်းဆုံး အက္ခရာ ၄ လုံး ရှိရမည်။"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
-      <item quantity="other">အနည်းဆုံး စကားလုံး <xliff:g id="COUNT">%d</xliff:g> လုံးပါဝင်ရမည်</item>
-      <item quantity="one">အနည်းဆုံး စကားလုံး ၁ လုံးပါဝင်ရမည်</item>
+      <item quantity="other">အနည်းဆုံး စာလုံး <xliff:g id="COUNT">%d</xliff:g> လုံးပါဝင်ရမည်</item>
+      <item quantity="one">အနည်းဆုံး စာလုံး ၁ လုံးပါဝင်ရမည်</item>
     </plurals>
     <plurals name="lockpassword_password_requires_lowercase" formatted="false" msgid="2267487180744744833">
       <item quantity="other">အနည်းဆုံး စာလုံးငယ် <xliff:g id="COUNT">%d</xliff:g> လုံးပါဝင်ရမည်</item>
@@ -288,7 +441,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"အသုံးပြုလေ့ရှိသော စကားဝှက်များကို သင်၏ IT စီမံခန့်ခွဲသူက ပိတ်ထားသည်။ အခြား စကားဝှက်တစ်ခုဖြင့် စမ်းကြည့်ပါ။"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"အစဉ်လိုက်ဖြစ်နေသော ဂဏန်း အငယ်မှအကြီး၊ အကြီးမှအငယ် သို့မဟုတ် ထပ်နေသည့် နံပါတ်စဉ်များကို ခွင့်မပြုပါ။"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"မျက်နှာပြင်လော့ခ်ချခြင်း ရွေးချယ်စရာများ"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> - လွန်ခဲ့သော <xliff:g id="NUM_DAYS">%3$s</xliff:g> ရက်"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"ယုံကြည်ရသည့် စက်ကိုထည့်ရန်"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"ယုံကြည်ရသည့် စက်များ"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other">စက်ပစ္စည်း <xliff:g id="COUNT_1">%d</xliff:g> ခု</item>
+      <item quantity="one">စက်ပစ္စည်း <xliff:g id="COUNT_0">%d</xliff:g> ခု</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"ချိတ်ဆက်သည့်အခါ သင့် <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> က ဤကားကို လော့ခ်ဖွင့်ပါမည်။ တစ်စုံတစ်ယောက်က သင့် <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ကိုယူသွားလျှင် သူသည် ဤကိရိယာကို အသုံးပြုခွင့်ရရှိနိုင်ပါသည်"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"အတည်ပြုရန်"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"ယုံကြည်ရသော ကိရိယာ ဖယ်ရှားရန်"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"ပြီးပြီ"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"စိတ်ချရသည့် စက်ပစ္စည်းကို စတင်သတ်မှတ်ရန် တွဲဖက်အက်ပ်ကို သုံးပါ။ သတ်မှတ်ပြီးသည်နှင့် စက်က သင့်ဖုန်းကို တွေ့သည့်အခါ သင့်အသုံးပြုသူ ပရိုဖိုင်ကို ဖွင့်နိုင်ပါမည်"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"၁။ တွဲဖက် အက်ပ်ကို သင့်ဖုန်းတွင် ဒေါင်းလုဒ်လုပ်ပါ"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"၂။ စက်ပစ္စည်းနှင့်အတူ တွဲချိတ်ရန် သင့်ဖုန်းတွင် <xliff:g id="CAR_NAME">%1$s</xliff:g> ကို ရွေးပေးပါ"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock က ဤစက်ပစ္စည်း၏ လုံခြုံရေးဝန်ဆောင်မှုများကို မတွေ့ပါ။ သင့်ကားကို ကာကွယ်ပေးရန် သင် လော့ခ်ဖွင့်ပြီးမှသာ စိတ်ချရသည့် စက်ပစ္စည်းက သင့်ဖုန်းကို လော့ခ်ဖွင့်နိုင်မည်ဖြစ်သည်။ အခြားသူတစ်ဦးက ကိုင်ဆောင်ထားစေကာမူ သင့် စိတ်ချရသည့်စက်ပစ္စည်းက အနီးတဝိုက်တွင် ရှိနေလျှင် သင့်ဖုန်းကို လော့ခ်ဖွင့်ပေးနိုင်ပါသည်။"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို ယုံကြည်သည့် စက်ပစ္စည်းအဖြစ် ထည့်ပါ"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စိတ်ချရသည့် စက်ပစ္စည်းအဖြစ် ထည့်ပြီးပါပြီ"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စာရင်းသွင်း၍ မရပါ"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"စိတ်ချရသည့် ကိရိယာတစ်ခုကို ထည့်ပြီးပါက အထောက်အထားစိစစ်ခြင်း နည်းလမ်းတစ်ခုကို သတ်မှတ်ရပါမည်။ သင့်တွင် စိတ်ချရသည့် ကိရိယာ အတူပါမလာပါက သင့်ပရိုဖိုင်ကို ဝင်သုံးခွင့်ရရန် အထောက်အထားစိစစ်ခြင်း လိုအပ်ပါလိမ့်မည်။"</string>
     <string name="forget" msgid="3971143908183848527">"မေ့ပစ်ရန်"</string>
+    <string name="connect" msgid="5861699594602380150">"ချိတ်ရန်"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ချိတ်ဆက်မှု ဖြုတ်ရန်"</string>
     <string name="delete_button" msgid="5840500432614610850">"ဖျက်ရန်"</string>
     <string name="remove_button" msgid="6664656962868194178">"ဖယ်ရှားရန်"</string>
     <string name="cancel" msgid="750286395700355455">"မလုပ်တော့"</string>
@@ -298,8 +472,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"သရုပ်ပြမုဒ်မှ ထွက်ရန်"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"၎င်းက သရုပ်ပြအကောင့်ကို ဖျက်ပြီး စနစ်ကို စက်ရုံထုတ်အခြေအနေပြန်ယူပါမည်။ အသုံးပြုသူ ဒေတာအားလုံး ရှိတော့မည်မဟုတ်ပါ။"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"သရုပ်ပြမှ ထွက်ရန်"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"စနစ်ထည့်သွင်းမှု အပြီးသတ်ရန်"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ယခုမလုပ်ပါ"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ပယ်ရန်"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ကားမောင်းနေစဉ် ဝန်ဆောင်မှု မရနိုင်ပါ။"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ကားမောင်းနေစဉ် အသုံးပြုသူကို ထည့်၍မရပါ။"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 259de29..a881e93 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"dim skjermen, berøringsskjerm, batteri"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"dim skjermen, natt, fargetone"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nattmodus"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Nettverk og internett"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnettverk"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobildata"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Bruk data via mobilnettverket"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vil du slå av mobildata?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Databruk"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Datavarsel og -grense"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Syklus for appdatabruk"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Angi varsel om databruk"</string>
+    <string name="data_warning" msgid="116776633806885370">"Varsel om databruk"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Angi datagrense"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datagrense"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Begrensning av databruk"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Kjøretøyets hovedenhet slår av mobildata når den når grensen du angir.\n\nSiden databruken måles av hovedenheten og operatøren din kan beregne bruken annerledes, kan det være lurt å angi en lav grense."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Konfigurer og administrer trådløse tilgangspunkter"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Slår på Wi-Fi …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Slår av Wi-Fi …"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Laster inn Wi‑Fi-liste"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi er slått av"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Kunne ikke glemme nettverket"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Kunne ikke koble til nettverket"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Legg til nettverk"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi er slått av"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Koble til"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Passord"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Vis passordet"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nettverksnavn"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Skriv inn SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Sikkerhet"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signalstyrke"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signalstyrke"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Tilkoblingshastighet"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvens"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-adresse"</string>
+    <string name="show_password" msgid="2074628020371139240">"Se passordet"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Angi nettverksnavnet"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Skriv inn passordet"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Dårlig"</item>
-    <item msgid="2032262610626057081">"OK"</item>
-    <item msgid="3859756017461098953">"Bra"</item>
-    <item msgid="1521103743353335724">"Utmerket"</item>
+    <item msgid="7683058295076342057">"Dårlig"</item>
+    <item msgid="1639222824821660744">"OK"</item>
+    <item msgid="1838705897358163300">"Bra"</item>
+    <item msgid="6067166649320533751">"Utmerket"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Slå på Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth er slått av"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Nettverksdetaljer"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-adresse"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-adresse"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Nettverksmaske"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-adresser"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi-innstillinger"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Slå på Wi‑Fi automatisk"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi slås på igjen i nærheten av lagrede nettverk av høy kvalitet, for eksempel hjemmenettverket"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Utilgjengelig fordi Posisjon er slått av. Slå på "<annotation id="link">"Posisjon"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vil du slå på Wi‑Fi-skanning?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Slå på"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi-skanning er slått på"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Bytt til mobildata automatisk"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Bruk mobildata når Wi-Fi ikke har internettilgang. Avgifter for databruk kan påløpe."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Finn ut mer"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Administrer tilkoblinger, angi enhetsnavn og synlighet"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Datamaskin"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Hodetelefoner"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Bildefremviser"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Hodetelefoner"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Ekstern enhet for inndata"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Tilkoblede enheter"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Tilgjengelige enheter"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Ingen tilkoblede enheter"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Ingen tilgjengelige enheter"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Tilkoblet enhet"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Navn"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Bruk for"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Endre navnet til Bluetooth-enheten"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Enhet uten navn"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Tilkoblede enheter"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Koble til en ny enhet"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth slås på for å koble til"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Vil du koble fra enheten?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Kjøretøyet ditt kobles fra <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Kjøretøyets Bluetooth-adresse: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Enhetens Bluetooth-adresse: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Kjøretøynavn"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Gi kjøretøyet nytt navn"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Gi enheten nytt navn"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Gi nytt navn"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Tilgjengelige enheter"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiler"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Forespørsel om Bluetooth-tilkobling"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Koble sammen og koble til"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-tilkoblingskode"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN-koden inneholder bokstaver eller symboler"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Skriv inn sammenkoblingskoden, og trykk på Retur eller Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Vanligvis 0000 eller 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Tilkoblingsforespørsel"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Trykk for å koble til <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Språk"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Språk og inndata"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastatur"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Administrer tastaturer"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Tekst til tale-utdata"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Foretrukket motor"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Nåværende motor"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Talehastighet"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Stemmeleie"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Tilbakestill"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Lyd"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Ringevolum"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigasjonsvolum"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Medier"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Volum for musikk og video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Telefonringelyd"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Standard varsellyd"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standard alarmlyd"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apper og varsler"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Vis alle apper"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Standardapper"</string>
     <string name="applications_settings" msgid="794261395191035632">"App-info"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Tving til å avslutte"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vil du tvinge avslutning?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Hvis du tvinger avslutning av en app, kan det oppstå problemer."</string>
     <string name="disable_text" msgid="4358165448648990820">"Slå av"</string>
     <string name="enable_text" msgid="1794971777861881238">"Slå på"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Avinstaller"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Hvis du slår av denne appen, slutter muligens Android og andre apper å fungere som de skal."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktiver appen"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Tillatelser"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versjon: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ingen tillatelser er gitt"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ingen tillatelser er forespurt"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Databruk"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Appens databruk"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Tving til å avslutte"</string>
     <string name="computing_size" msgid="5791407621793083965">"Beregner …"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> tillatelser til</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> tillatelse til</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistent og taleinndata"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assistentapp"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Bruk teksten fra skjermen"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Gi assistentappen tilgang til skjerminnholdet som tekst"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Bruk skjermdumpen"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Gi assistentappen tilgang til et bilde av skjermen"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Autofylltjeneste"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ingen"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Valgt"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Assistenten kan lese informasjon om appene du bruker i systemet ditt, inkludert informasjon som er synlig på skjermen eller tilgjengelig i appene."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Sørg for at appen er pålitelig&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google autofyll&gt;%1$s&lt;/xliff:g&gt; bruker det som er på skjermen, til å fastslå hva som kan fylles ut automatisk."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Legg til tjeneste"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Posisjon"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nylige posisjonsforespørsler"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ingen nylige posisjonsforespørsler"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Tillatelser på appnivå"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Søking"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Posisjonstjenester"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi-skanning"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"La apper og tjenester skanne etter enheter i nærheten når som helst, selv når Wi-Fi er slått av. Dette kan for eksempel brukes til å forbedre posisjonsbaserte funksjoner og tjenester."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-skanning"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"La apper og tjenester søke etter enheter i nærheten når som helst, selv når Bluetooth er slått av. Dette kan for eksempel brukes til å forbedre posisjonsbaserte funksjoner og tjenester."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Systemoppdateringer"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Systemoppdateringer"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-versjon"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-sikkerhetsoppdatering"</string>
     <string name="model_info" msgid="4966408071657934452">"Modell"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Basisbåndversjon"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kjerneversjon"</string>
     <string name="build_number" msgid="3997326631001009102">"Delversjonsnummer"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adresse"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Ikke tilgjengelig"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Opphavsrett"</string>
     <string name="license_title" msgid="936705938435249965">"Lisens"</string>
     <string name="terms_title" msgid="5201471373602628765">"Vilkår"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Systemets WebView-lisens"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"WebView-lisenser på systemet"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Bakgrunner"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Leverandører av satellittbilder:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Tredjepartslisenser"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Det oppsto et problem ved innlasting av lisensene."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Laster inn …"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Du er nå <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> trinn fra å bli en utvikler.</item>
+      <item quantity="one">Du er nå <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> trinn fra å bli en utvikler.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Du er en utvikler nå!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Det trengs ikke. Du er allerede en utvikler."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Utvikleralternativer"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Alternativer for tilbakestilling"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Tilbakestilling av nettverk, apper eller enhet"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Tilbakestill nettverket"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Dette tilbakestiller alle nettverksinnstillingene, blant annet"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobildata"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Slett alle e-SIM-kortene på kjøretøyet"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Dette kansellerer ikke serviceavtalen din."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Kan ikke tilbakestille e-SIM-kort"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Velg nettverk"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Tilbakestill innstillingene"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Vil du tilbakestille?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Vil du tilbakestille alle nettverksinnstillingene? Du kan ikke angre denne handlingen."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Tilbakestill innstillingene"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Nettverksinnstillingene er tilbakestilt"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Tilbakestill appinnstillingene"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Dette tilbakestiller alle innstillinger for\n\n"<li>"deaktiverte apper"</li>\n<li>"deaktiverte appvarsler"</li>\n<li>"standardapper for handlinger"</li>\n<li>"begrensninger for bakgrunnsdata for apper"</li>\n<li>"eventuelle tillatelsesbegrensninger"</li>\n\n"Du kommer ikke til å miste appdata."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Tilbakestill apper"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Appinnstillingene er tilbakestilt"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Slett alle data (tilbakestill)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Dette sletter alle dataene fra kjøretøyets hovedenhet, inkludert\n\n"<li>"Google-kontoen din"</li>\n<li>"system- og appdata samt innstillinger"</li>\n<li>"nedlastede apper"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Du er for øyeblikket pålogget følgende kontoer:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Andre brukere er til stede i dette kjøretøyet."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Tilbakestill kjøretøyet"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vil du tilbakestille?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vil du slette den personlige informasjonen din og nedlastede apper? Du kan ikke angre denne handlingen."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Tøm alt"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Tømmer"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Vent litt."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dato og klokkeslett"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Angi dato og klokkeslett"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Angi dato, klokkeslett, tidssone og formater"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sortér etter tidssone"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Dato"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Klokkeslett"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Legg til bruker"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Legg til konto"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Slett bruker"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Ny bruker"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gjest"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Logget på som administrator"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle administratortillatelser"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Gjør brukeren til administrator"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Administratorer kan slette brukere, inkludert andre administratorer, og tilbakestille systemet til fabrikkstandard."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Denne handlingen kan ikke angres."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, gjør brukeren til administrator"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Opprett nye brukere"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Ring"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Meldinger via bilens mobildata"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Installer nye apper"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Avinstaller apper"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Legg til bruker"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Ny bruker"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Vil du legge til denne brukeren?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Når du legger til en ny bruker, må vedkommende konfigurere sitt eget område."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alle brukere kan oppdatere apper for alle andre brukere."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Grensen for antall brukere er nådd"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Du kan opprette opptil <xliff:g id="COUNT">%d</xliff:g> brukere.</item>
+      <item quantity="one">Du kan bare opprette én bruker.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Kunne ikke opprette noen ny bruker"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Vil du slette brukeren?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alle appene og dataene slettes."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Kunne ikke slette brukeren."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Avvis"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Prøv på nytt"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Slett den siste brukeren?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Når du har slettet den eneste gjenværende brukeren for bilen, blir en ny administratorbruker opprettet."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alle dataene, innstillingene og appene som er knyttet til bruken, blir slettet. Du må konfigurere systemet på nytt."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Velg en ny administrator"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Du trenger minst én administrator. For å slette denne administratoren må du først finne en erstatter."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Velg en administrator"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gjest"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gjest"</string>
     <string name="user_switch" msgid="6544839750534690781">"Bytt"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Deg (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Navn"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Ikke konfigurert"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Endre brukernavnet"</string>
     <string name="users_list_title" msgid="770764290290240909">"Brukere"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Tillatelse er gitt til %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Kontoer"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Bruker"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Legg til konto"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Ingen kontoer er lagt til"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Kontoer for <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Synkroniser data automatisk"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"La apper oppdatere data automatisk"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Slå på auto-synkronisering?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Alle endringene du gjør i kontoene dine på nettet, kopieres automatisk til enheten din.\n\nNoen kontoer kan også automatisk kopiere endringer du gjør på telefonen, til nettet. Google-kontoer fungerer på denne måten."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Slå av auto-synkronisering?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Dette gir lavere databruk, men du må synkronisere hver konto manuelt for å samle inn ny informasjon. Og du mottar ikke varsler ved oppdateringer."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Kontoinformasjon"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Legg til konto"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Legg til en konto"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Fjern kontoen"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Vil du fjerne kontoen?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Hvis du fjerner denne kontoen, slettes alle tilhørende e-poster, kontakter og andre data fra enheten."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Denne endringen er ikke tillatt av administratoren"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Vil du fjerne brukeren?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Alle apper og data slettes."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Kunne ikke fjerne brukeren."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Vil du prøve på nytt?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Avvis"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Prøv på nytt"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Legg til en ny bruker?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Når du legger til en ny bruker, må vedkommende konfigurere sitt eget område."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alle brukere kan oppdatere apper for alle andre brukere."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Kunne ikke fjerne kontoen."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Kontosynkronisering"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synkronisering er slått på for <xliff:g id="ID_1">%1$d</xliff:g> av <xliff:g id="ID_2">%2$d</xliff:g> elementer"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synkronisering er slått på for alle elementene"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synkronisering er slått av for alle elementene"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synkronisering er av"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Synkroniseringsfeil"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Sist synkronisert <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synkroniserer nå …"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Trykk for å synkronisere nå<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synkroniser nå"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Avbryt synkroniseringen"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Det er midlertidige problemer med synkroniseringen. Vent litt."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Sikkerhet"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skjermlås"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Ingen"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-kode"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Passord"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Velg låsen du vil bruke"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Alternativer for skjermlås"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Låsealternativer"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Skriv inn mønsteret ditt"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Bekreft"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Tegn på nytt"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Angi en skjermlås"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Velg PIN-koden din"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Velg mønster"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Velg passordet ditt"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Velg passordet ditt"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Gjeldende skjermlås"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Angi et mønster for sikkerheten"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Fjern"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Vanlige passord er blokkert av IT-administratoren din. Prøv et annet passord."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"En sekvens av stigende, synkende eller like sifre er ikke tillatt."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Alternativer for skjermlås"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : for <xliff:g id="NUM_DAYS">%3$s</xliff:g> dager siden"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Legg til en pålitelig enhet"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Pålitelige enheter"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> enheter</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> enhet</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> låser opp denne bilen når den er tilkoblet. Hvis noen tar <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, får vedkommende tilgang til denne enheten."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bekreft"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Fjern pålitelig enhet"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Ferdig"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Bruk følgeappen for å konfigurere en pålitelig enhet. Når den er konfigurert, kan du låse opp brukerprofilen din når telefonen din oppdages av kjøretøyet."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Last ned følgeappen på telefonen din"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Velg <xliff:g id="CAR_NAME">%1$s</xliff:g> på telefonen for å koble til enhetene"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock kan ikke registrere sikkerhetsfunksjoner på denne enheten. For å beskytte bilen din kan pålitelige enheter bare holde bilen din ulåst når den allerede er låst opp av deg. Den pålitelige enheten din kan holde bilen din ulåst når den er i nærheten – selv om noen andre holder den."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Legg til <xliff:g id="DEVICE_NAME">%1$s</xliff:g> som en pålitelig enhet"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> er lagt til som en pålitelig enhet"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Kunne ikke registrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Hvis du legger til en pålitelig enhet, må du angi en autentiseringsmetode. Hvis du ikke har den pålitelige enheten din med deg, kreves autentisering for å få tilgang til profilen din."</string>
     <string name="forget" msgid="3971143908183848527">"Glem"</string>
+    <string name="connect" msgid="5861699594602380150">"Koble til"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Koble fra"</string>
     <string name="delete_button" msgid="5840500432614610850">"Slett"</string>
     <string name="remove_button" msgid="6664656962868194178">"Fjern"</string>
     <string name="cancel" msgid="750286395700355455">"Avbryt"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Avslutt demomodus"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Dette sletter demokontoen og tilbakestiller systemet til fabrikkstandard. Alle brukerdataene går tapt."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Avslutt demomodus"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"fullfør konfigureringen"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ikke nå"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"AVVIS"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funksjonen er ikke tilgjengelig når du kjører."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Du kan ikke legge til en bruker mens du kjører."</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 2d0a64e..2fac200 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,58 +29,91 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"मधुरो स्क्रिन, टचस्क्रिन, ब्याट्री"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"मधुरो स्क्रिन, रात, हल्का रङ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"रात्रि मोड"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क र इन्टरनेट"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"मोबाइल डेटा"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"मोबाइल नेटवर्क प्रयोग गरी डेटामाथि पहुँच राख्नु…"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"मोबाइल डेटा निष्क्रिय पार्ने हो?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"डेटाको प्रयोग"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"डेटासम्बन्धी चेतावनी तथा सीमा"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"अनुप्रयोगको डेटा प्रयोगको चक्र"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"डेटासम्बन्धी चेतावनी सेट गर्नु"</string>
+    <string name="data_warning" msgid="116776633806885370">"डेटासम्बन्धी चेतावनी"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"डेटाको सीमा सेट गर्नुहोस्"</string>
+    <string name="data_limit" msgid="227338836292511425">"डेटाको सीमा"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"डेटाको प्रयोग सीमित गर्दै"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"तपाईंले सेट गर्नुभएको अधिकतम डेटा प्रयोगको सीमामा पुगेपछि तपाईंको सवारी साधनको मुख्य भागले मोबाइल डेटालाई निष्क्रिय पार्ने छ।\n\nतपाईंको सवारी साधनको मुख्य भागले र तपाईंको सेवा प्रदायकले फरक तरिकाले डेटा प्रयोगको मापन गर्ने हुनाले विवेकपूर्ण तरिकाले यसको सीमा सेट गर्ने कुराबारे विचार गर्नुहोस्।"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"ताररहित पहुँच बिन्दुहरू सेटअप र प्रबन्ध गर्नुहोस्"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi सक्रिय गरिँदै…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi निष्क्रिय पारिँदै…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi को सूची लोड गर्दै"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi असक्षम पारिएको छ"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"नेटवर्कलाई बिर्सन सकिएन"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"नेटवर्कमा जडान गर्न सकिएन"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"नेटवर्क थप्नुहोस्"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi असक्षम पारिएको छ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"जडान गर्ने"</string>
     <string name="wifi_password" msgid="5565632142720292397">"पासवर्ड"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"पासवर्ड देखाउनुहोस्"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"नेटवर्कको नाम"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID प्रविष्टि गर्नुहोस्"</string>
     <string name="wifi_security" msgid="158358046038876532">"सुरक्षा"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"सिग्नलको क्षमता"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"सिङ्केतको क्षमता"</string>
     <string name="wifi_status" msgid="5688013206066543952">"स्थिति"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"लिङ्कको गति"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"आवृत्ति"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP ठेगाना"</string>
+    <string name="show_password" msgid="2074628020371139240">"पासवर्ड देखाउनुहोस्"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"नेटवर्कको नाम प्रविष्टि गर्नुहोस्"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"पासवर्ड प्रविष्टि गर्नुहोस्"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"कमजोर"</item>
-    <item msgid="2032262610626057081">"ठिकै"</item>
-    <item msgid="3859756017461098953">"राम्रो"</item>
-    <item msgid="1521103743353335724">"उत्कृष्ट"</item>
+    <item msgid="7683058295076342057">"कमजोर"</item>
+    <item msgid="1639222824821660744">"ठिकठाक"</item>
+    <item msgid="1838705897358163300">"राम्रो"</item>
+    <item msgid="6067166649320533751">"उत्कृष्ट"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ब्लुटुथ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ब्लुटुथ सक्रिय गर्नुहोस्"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ब्लुटुथ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ब्लुटुथ असक्षम गरियो"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"२.४ GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"५ GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"नेटवर्कसम्बन्धी विवरणहरू"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ठेगाना"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ठेगाना"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"सबनेट मास्क"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ठेगानाहरू"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"गेटवे"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi का प्राथमिकताहरू"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi स्वतः सक्रिय गर्नुहोस्"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"तपाईंको घरको नेटवर्क जस्ता सुरक्षित गरिएका उच्च गुणस्तरका नेटवर्कहरू नजिक हुँदा Wi‑Fi फेरि सक्रिय हुने छ"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"स्थान निष्क्रिय पारिएको हुनाले उपलब्ध छैन। "<annotation id="link">"स्थान"</annotation>" सक्रिय गर्नुहोस्।"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi स्क्यान गर्ने सुविधा सक्रिय गर्ने हो?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"सक्रिय गर्नुहोस्"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi स्क्यान गर्ने सेवा सक्रिय छ"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Wi-Fi  बाट बदलेर स्वतः मोबाइल डेटा प्रयोग गर्नुहोस्"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi मार्फत इन्टरनेट उपलब्ध नभएको बेलामा मोबाइल डेटाको प्रयोग गर्नुहोस्। डेटा प्रयोगको शुल्क लाग्न सक्छ।"</string>
+    <string name="learn_more" msgid="8214605928933358604">"थप जान्नुहोस्"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ब्लुटुथ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"जडानहरूको व्यवस्थापन गर्नुहोस्, यन्त्रको नाम तथा भेटिने क्षमता नामक सेवा सेट गर्नुहोस्"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"कम्प्युटर"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"हेडसेट"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"फोन"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"इमेजिङ"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"हेडफोन"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"इनपुटसम्बन्धी परिधीय यन्त्र"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ब्लुटुथ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"जोडा बनाइएका यन्त्रहरू"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"उपलब्ध यन्त्रहरू"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"जोडा बनाइएका कुनै यन्त्रहरू छैनन्"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"कुनै पनि उपलब्ध ब्लुटुथ यन्त्रहरू छैनन्"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"जोडा बनाइएको यन्त्र"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"नाम"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"यसका लागि प्रयोग गर्नुहोस्"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth यन्त्रको नाम परिवर्तन गर्नुहोस्"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"बेनामी यन्त्र"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"जोडा बनाइएका यन्त्रहरू"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"नयाँ यन्त्रलाई जोडा बनाउनुहोस्"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"जोडा बनाउनका लागि ब्लुटुथ सक्रिय हुने छ"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"यन्त्र विच्छेद गर्ने हो?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"तपाईंको यन्त्र <xliff:g id="DEVICE_NAME">%1$s</xliff:g> बाट विच्छेद हुने छ।"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"सवारी साधनको ब्लुटुथ ठेगाना: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"यन्त्रको ब्लुटुथ ठेगाना: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"यन्त्रको नाम"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"यो सवारी साधनको पुनः नामकरण गर्नुहोस्"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"यन्त्रको पुनः नामकरण गर्नुहोस्"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"पुनः नामकरण गर्नुहोस्"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"उपलब्ध यन्त्रहरू"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"प्रोफाइलहरू"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ब्लुटुथसँग जोडा बनाउने अनुरोध"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"जोडा बनाउनुहोस् र जडान गर्नुहोस्"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ब्लुटुथ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ब्लुटुथसँग जोडा बनाउने कोड"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN मा अक्षर वा प्रतीकहरू समाविष्ट हुन्छन्"</string>
-    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"जोडा मिलाउने कोड टाइप गर्नुहोस् त्यसपछि फिर्ता गर्नुहोस् वा प्रविष्ट गर्नुहोस् नामक बटन थिच्नुहोस्"</string>
+    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"जोडा मिलाउने कोड टाइप गर्नुहोस् त्यसपछि फिर्ता गर्नुहोस् वा प्रविष्टि गर्नुहोस् नामक बटन थिच्नुहोस्"</string>
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग जोडा बनाउने हो?"</string>
     <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>लाई तपाईंका सम्पर्क ठेगानाहरू र फोन सम्पर्कको इतिहासमाथि पहुँच गर्न अनुमति दिनुहोस्"</string>
     <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"तपाईंले अर्को यन्त्रमा पनि यो PIN टाइप गर्नु पर्ने हुन सक्छ।"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"सामान्यतया ०००० वा १२३४"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"जोडा बनाउनका लागि गरिएको अनुरोध"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>सँग जोडा बनाउन ट्याप गर्नुहोस्।"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"भाषाहरू"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"भाषा र इनपुट"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"किबोर्ड"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"किबोर्डहरू व्यवस्थित गर्नुहोस्"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"पाठवाचकको आउटपुट"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"रुचाइएको इन्जिन"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"हालको इन्जिन"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"वाणीको दर"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"पिच"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"रिसेट गर्नुहोस्"</string>
     <string name="sound_settings" msgid="3072423952331872246">"आवाज"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"घन्टीको भोल्युम"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"नेभिगेसन भोल्युम"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"मिडिया"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"सङ्गीत र भिडियोहरूका लागि भोल्युम सेट गर्नुहोस्"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"अलार्म"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"फोनको रिङटोन"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"सूचनाको पूर्वनिर्धारित ध्वनि"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"अलार्मको पूर्वनिर्धारित ध्वनि"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"अनुप्रयोग तथा सूचनाहरू"</string>
+    <string name="all_applications" msgid="7798210477486822168">"सबै अनुप्रयोगहरू देखाउनुहोस्"</string>
+    <string name="default_applications" msgid="1558183275638697087">"पूर्वनिर्धारित अनुप्रयोगहरू"</string>
     <string name="applications_settings" msgid="794261395191035632">"अनुप्रयोगसम्बन्धी जानकारी"</string>
+    <string name="force_stop" msgid="2153183697014720520">"जबर्जस्ती रोक्नुहोस्"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"जबरजस्ती रोक्ने हो?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"तपाईंले कुनै अनुप्रयोगलाई जबरजस्ती रोक्नुभयो भने त्यसले सही तरिकाले काम नगर्न सक्छ।"</string>
     <string name="disable_text" msgid="4358165448648990820">"असक्षम पार्नुहोस्"</string>
     <string name="enable_text" msgid="1794971777861881238">"सक्षम पार्नुहोस्"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"स्थापना रद्द गर्नुहोस्"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"तपाईंले यो अनुप्रयोगलाई असक्षम पार्नुभयो भने Android र अन्य अनुप्रयोगहरूले अब उप्रान्त अपेक्षाअनुसार कार्य नगर्न सक्छन्।"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"अनुप्रयोगलाई असक्षम पार्नुहोस्"</string>
     <string name="permissions_label" msgid="2701446753515612685">"अनुमतिहरू"</string>
     <string name="application_version_label" msgid="8556889839783311649">"संस्करण: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"कुनै पनि अनुमति प्रदान गरिएको छैन"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"कुनै पनि अनुमतिका लागि अनुरोध गरिएको छैन"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"डेटाको प्रयोग"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"अनुप्रयोगको डेटाको प्रयोग"</string>
-    <string name="force_stop" msgid="2153183697014720520">"जबर्जस्ती रोक्नुहोस्"</string>
     <string name="computing_size" msgid="5791407621793083965">"गणना गरिँदै…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> अतिरिक्त अनुमतिहरू</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> अतिरिक्त अनुमति</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"सहायक र आवाज संलग्न इनपुट"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"सहायक अनुप्रयोग"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"स्क्रिनमा रहेको पाठ प्रयोग गर्नुहोस्"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"सहायक अनुप्रयोगलाई स्क्रिनमा रहेको कुनै सामग्रीमाथि पाठका रूपमा पहुँच राख्ने अनुमति दिनुहोस्"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"स्क्रिसट प्रयोग गर्नुहोस्"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"सहायक अनुप्रयोगलाई स्क्रिनमा रहेको कुनै छविमाथि पहुँच राख्ने अनुमति दिनुहोस्"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"स्वतः भरण सेवा"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"कुनै पनि होइन"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"चयन गरिएको"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"सहायकले तपाईंको स्क्रिनमा देख्न सकिने वा अनुप्रयोगहरूभित्र पहुँच राख्न सकिने जानकारीलगायत तपाईंको प्रणालीमा प्रयोगमा रहेका अनुप्रयोगहरूबारे जानकारी पढ्न सक्ने छ।"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;तपाईं यो अनुप्रयोगमाथि भरोसा गर्नुहुन्छ भन्ने कुरा सुनिश्चित गर्नुहोस्&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; यस अनुप्रयोगले स्वतः भर्न सकिने कुराहरूको निर्धारण गर्न तपाईंको स्क्रिनमा भएका वस्तुहरूको प्रयोग गर्छ।"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"सेवा थप्नुहोस्"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"स्थान"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"हालका स्थानसम्बन्धी अनुरोधहरू"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"हालसालैका स्थानसम्बन्धी कुनै पनि अनुरोध छैन"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"अनुप्रयोग स्तरीय अनुमति"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"स्क्यान गर्दै"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"स्थानसम्बन्धी सेवाहरू"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi स्क्यान हुँदै"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"अनुप्रयोग र सेवाहरूलाई जुनसुकै बेला (Wi‑Fi निष्क्रिय भएको बेलामा पनि) वरपरका Wi-Fi नेटवर्कहरू स्क्यान गर्न अनुमति दिनुहोस्। यसलाई स्थानमा आधारित सुविधा तथा सेवाहरू सुधार गर्ने जस्ता कार्यहरू गर्नाका लागि प्रयोग गर्न सकिन्छ।"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ब्लुटुथ स्क्यान हुँदै"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"अनुप्रयोग तथा सेवाहरूलाई जुनसुकै बेला (ब्लुटुथ निष्क्रिय भएको बेलामा पनि) वरपरका यन्त्रहरू स्क्यान गर्न अनुमति दिनुहोस्‌। यसलाई स्थानमा आधारित सुविधा तथा सेवाहरू सुधार गर्ने जस्ता कार्यहरू गर्नाका लागि प्रयोग गर्न सकिन्छ।"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"प्रणाली"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"प्रणालीसम्बन्धी अद्यावधिकहरू"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"प्रणालीसम्बन्धी अद्यावधिकहरू"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android संस्करण"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android सुरक्षा प्याचको चरण"</string>
     <string name="model_info" msgid="4966408071657934452">"मोडेल"</string>
     <string name="baseband_version" msgid="2370088062235041897">"बेसब्यान्ड संस्करण"</string>
     <string name="kernel_version" msgid="7327212934187011508">"कर्नेल संस्करण"</string>
     <string name="build_number" msgid="3997326631001009102">"बिल्डको नम्बर"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ब्लुटुथ ठेगाना"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"उपलब्ध छैन"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"स्थिति"</string>
     <string name="device_status" msgid="267298179806290920">"स्थिति"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"प्रतिलिपि अधिकार"</string>
     <string name="license_title" msgid="936705938435249965">"इजाजतपत्र"</string>
     <string name="terms_title" msgid="5201471373602628765">"सेवाका सर्तहरू"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"प्रणालीको WebView इजाजतपत्र"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"प्रणालीका WebView इजाजतपत्रहरू"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"वालपेपरहरू"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"स्याटेलाइटमार्फत इमेजरी प्रदायकहरू:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"तेस्रो पक्षीय इजाजतपत्रहरू"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"इजाजतपत्रहरू लोड गर्दा समस्या भयो।"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"लोड गर्दै…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">तपाईं अब एउटा विकासकर्ता हुनबाट <xliff:g id="STEP_COUNT_1">%1$d</xliff:g>चरण टाढा हुनुहुन्छ।</item>
+      <item quantity="one">तपाईं अब एउटा विकासकर्ता हुनबाट <xliff:g id="STEP_COUNT_0">%1$d</xliff:g>चरण टाढा हुनुहुन्छ।</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"तपाईं अब एउटा विकासकर्ता हुनुहुन्छ!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"आवश्यक छैन, तपाईं आफैँ नै एउटा विकासकर्ता हुनुहुन्छ।"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"विकासकर्ताका विकल्पहरू"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"रिसेटका विकल्पहरू"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"नेटवर्क, अनुप्रयोग वा यन्त्रको रिसेटसम्बन्धी विकल्प"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"नेटवर्क रिसेट गर्नुहोस्"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"यस कार्यले निम्नलगायत नेटवर्कसम्बन्धी सम्पूर्ण सेटिङहरू रिसेट गर्ने छ:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"मोबाइल डेटा"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ब्लुटुथ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"सबै सवारीका eSIM हरू मेट्नुहोस्‌"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"यस कार्यले तपाईंको सेवाको योजना रद्द गर्ने छैन।"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM हरू रिसेट गर्न सकिएन"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"नेटवर्क चयन गर्नुहोस्"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"सेटिङहरू रिसेट गर्नुहोस्"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"रिसेट गर्ने हो?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"नेटवर्कसम्बन्धी सबै सेटिङहरू रिसेट गर्ने हो? तपाईं यो कार्य अन्डू गर्न सक्नुहुन्न!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"सेटिङहरू रिसेट गर्नुहोस्"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"नेटवर्कसम्बन्धी सेटिङहरू रिसेट गरिएको छ"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"अनुप्रयोगका प्राथमिकताहरू रिसेट गर्नुहोस्"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"यस कार्यले निम्न सुविधाहरूका सबै प्राथमिकताहरूलाई रिसेट गर्ने छ:\n\n"<li>"असक्षम पारिएका अनुप्रयोगहरू"</li>\n<li>"असक्षम पारिएका अनुप्रयोगका सूचनाहरू"</li>\n<li>"कारबाहीका लागि पूर्वनिर्धारित अनुप्रयोगहरू"</li>\n<li>"अनुप्रयोगका लागि पृष्ठभूमिका डेटासम्बन्धी बन्देजहरू"</li>\n<li>"अनुमतिसम्बन्धी सबै बन्देजहरू"</li>\n\n"तपाईं अनुप्रयोगको कुनै पनि डेटा गुमाउनु हुने छैन।"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"अनुप्रयोगहरू रिसेट गर्नुहोस्"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"अनुप्रयोगका प्राथमिकताहरू रिसेट गरिएको छ"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"सबै डेटा मेटाउनुहोस् (फ्याक्ट्री रिसेट गर्नुहोस्)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"यस कार्यले तपाईंको सवारी साधनाको मुख्य भागबाट सम्पूर्ण डेटा मेटाउने छ, जसमा निम्न कुराहरू पर्दछन्:\n\n"<li>"तपाईंको Google खाता"</li>\n<li>"प्रणाली र अनुप्रयोगका डेटा तथा सेटिङहरू"</li>\n<li>"डाउनलोड गरिएका अनुप्रयोगहरू"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"तपाईं अहिले निम्न खाताहरूमा साइन इन हुनुहुन्छ:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"यस सवारी साधनमा अन्य प्रयोगकर्ताहरू छन्।"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"सवारी साधन रिसेट गर्नुहोस्"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"रिसेट गर्ने हो?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"तपाईंका सबै व्यक्तिगत जानकारी र डाउनलोड गरिएका अनुप्रयोगहरू मेट्ने हो? तपाईं यो कार्य अन्डू गर्न सक्नुहुन्न!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"सबै कुरा मेटाउनुहोस्"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"मेटाउँदै"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"कृपया प्रतीक्षा गर्नुहोला..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"मिति र समय"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"मिति र समय सेट गर्नुहोस्"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"मिति, समय, समय क्षेत्र र प्रारूपहरू सेट गर्नुहोस्"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"समय क्षेत्रका आधारमा क्रमबद्ध गर्नुहोस्"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"मिति"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"समय"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"प्रयोगकर्ता थप्नुहोस्"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"खाता थप्नुहोस्"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"प्रयोगकर्ता मेटाउनुहोस्"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"नयाँ प्रयोगकर्ता"</string>
-    <string name="user_guest" msgid="3465399481257448601">"अतिथि"</string>
     <string name="user_admin" msgid="1535484812908584809">"प्रशासक"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"प्रशासकका रूपमा साइन इन गरियो"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"सबै प्रशासकीय अनुमति"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"व्यवस्थापक बनाउनुहोस्"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"उक्त प्रयोगकर्ता अन्य प्रशासकहरू लगायतका प्रयोगकर्ताहरूलाई मेट्न र प्रणालीलाई फ्याक्ट्री रिसेट गर्न सक्ने छन्।"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"यो कारबाही उल्टाउन मिल्दैन।"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"हो, व्यवस्थापक बनाउनुहोस्"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"नयाँ प्रयोगकर्ताहरू सिर्जना गर्नु…"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"फोन कल गर्नुहोस्"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"कारको मोबाइल डेटामार्फत सन्देश पठाउँदै"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"नयाँ अनुप्रयोगहरू स्थापना गर्नुहोस्"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"अनुप्रयोग स्थापना रद्द गर्नुहोस्"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"प्रयोगकर्ता थप्नुहोस्"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"नयाँ प्रयोगकर्ता"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"नयाँ प्रयोगकर्ता थप्ने?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"तपाईंले नयाँ प्रयोगकर्ता थप्दा, ती व्यक्तिले आफ्नो स्थान सेटअप गर्नु पर्नेे हुन्छ।"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"कुनै पनि प्रयोगकर्ताले अन्य सबै प्रयोगकर्ताहरूका लागि अनुप्रयोगहरू अद्यावधिक गर्न सक्नुहुन्छ।"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"प्रयोगकर्ताको सीमा पुग्यो"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">तपाईं अधिकतम <xliff:g id="COUNT">%d</xliff:g> प्रयोगकर्ताहरू सिर्जना गर्न सक्नुहुन्छ।</item>
+      <item quantity="one">एउटा प्रयोगकर्ता मात्र सिर्जना गर्न सकिन्छ।</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"कुनै नयाँ प्रयोगकर्ता सिर्जना गर्न सकिएन"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"यस प्रयोगकर्तालाई हटाउने हो?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"सबै अनुप्रयोग र डेटा मेटाइने छन्।"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"प्रयोगकर्ता मेटाउन सकिएन।"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"खारेज गर्नुहोस्"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"पुनः प्रयास गर्नुहोस्"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"पछिल्लो प्रयोगकर्ता मेटाउने हो?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"यो कारको बाँकी रहेको प्रयोगकर्ता मेटाए पछि नयाँ प्रशासक प्रयोगकर्ता सिर्जना गरिने छ।"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"यो प्रयोगकर्तासँग सम्बन्धित सबै डेटा, सेटिङ र अनुप्रयोगहरू मेटिने छन्। तपाईंले प्रणाली फेरि सेट अप गर्न पर्ने छ।"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"नयाँ प्रशासक छनौट गर्नुहोस्‌"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"तपाईंलाई कम्तिमा एक प्रशासक चाहिन्छ। यो मेट्न पहिले प्रतिस्थापन छनौट गर्नुहोस्‌।"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"प्रशासक छनौट गर्नुहोस्‌"</string>
+    <string name="user_guest" msgid="3465399481257448601">"अतिथि"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"अतिथि"</string>
     <string name="user_switch" msgid="6544839750534690781">"बदल्नुहोस्‌"</string>
     <string name="current_user_name" msgid="3813671533249316823">"तपाईं (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"नाम"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"सेटअप गरिएको छैन"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"प्रयोगकर्ताको नाम सम्पादन गर्नु…"</string>
     <string name="users_list_title" msgid="770764290290240909">"प्रयोगकर्ताहरू"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s लाई अनुमति प्रदान गरियो"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"खाताहरू"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"प्रयोगकर्ता"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"खाता थप्नुहोस्"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"कुनै पनि खाता थपिएन"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> को खाता"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"डेटा स्वतः सिंक गर्नुहोस्"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"अनुप्रयोगहरूलाई डेटा स्वतः पुनः ताजा गर्न दिनुहोस्"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"डेटा स्वतः सिंक गर्ने कार्य सक्रिय गर्ने हो?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"तपाईंले वेबमार्फत आफ्नो खातामा गर्ने सबै परिवर्तनहरू स्वतः तपाईंको यन्त्रमा प्रतिलिपि गरिने छन्।\n\nकेही खाताहरूले तपाईंले फोनमा गर्ने सबै परिवर्तनहरूलाई वेबमा स्वतः प्रतिलिपि गर्न पनि सक्छन्। Google खाताले यसरी काम गर्दछ।"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"डेटा स्वतः सिंक गर्ने कार्य निष्क्रिय पार्ने हो?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"यस कार्यले डेटाको बचत गर्ने छ तर तपाईंले हालसालको जानकारी सङ्कलन गर्न प्रत्येक खातालाई म्यानुअल तरिकाले सिंक गर्नु पर्ने हुन्छ। यसका अतिरिक्त, अद्याविधिक हुँदा तपाईं सूचना प्राप्त गर्नु हुने छैन।"</string>
     <string name="account_details_title" msgid="7529571432258448573">"खातासम्बन्धी जानकारी"</string>
     <string name="add_account_title" msgid="5988746086885210040">"खाता थप्नुहोस्"</string>
     <string name="add_an_account" msgid="1072285034300995091">"खाता थप्नुहोस्"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"खाता हटाउनुहोस्"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"खाता हटाउने हो?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"यो खातालाई हटाउनुले यस यन्त्रबाट यस खातामा रहेका सम्पूर्ण सन्देश, सम्पर्कहरू र अन्य डेटा मेटाउने छ!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"तपाईंका प्रशासकले यो परिवर्तनलाई अनुमति दिनुहुन्न"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"यो प्रयोगकर्ता हटाउने हो?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"सबै अनुप्रयोगहरू र डेटा मेटाइने छन्।"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"प्रयोगकर्ता हटाउन सकिएन"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"फेरि प्रयास गर्ने हो?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"खारेज गर्नुहोस्"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"पुनः प्रयास गर्नुहोस्"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"नयाँ प्रयोगकर्ता थप्ने?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"तपाईंले नयाँ प्रयोगकर्ता थप्दा, ती व्यक्तिले आफ्नो स्थान सेटअप गर्नु पर्नेे हुन्छ।"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"कुनै पनि प्रयोगकर्ताले अन्य सबै प्रयोगकर्ताहरूका लागि अनुप्रयोगहरू अद्यावधिक गर्न सक्नुहुन्छ।"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"खाता हटाउन सकिएन।"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"खाताको सिंक"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> मध्ये <xliff:g id="ID_1">%1$d</xliff:g> वस्तुहरूका लागि सिंक गर्ने सेवा सक्रिय छ"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"सबै वस्तुहरूका लागि सिंक गर्ने सेवा सक्रिय छ"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"सबै वस्तुहरूका लागि सिंक गर्ने सेवा निष्क्रिय छ"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"सिंक निष्क्रिय छ"</string>
+    <string name="sync_error" msgid="6698021343089247914">"सिंकसम्बन्धी त्रुटि"</string>
+    <string name="last_synced" msgid="4745124489150101529">"पछिल्लो पटक सिंक गरिएको मिति: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"अहिले सिंक गर्दै..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"अहिले सिंक गर्न ट्याप गर्नुहोस् <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"अहिले नै सिंक गर्नुहोस्"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"सिंक गर्ने कार्य रद्द गर्नु…"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"सिंक गर्ने प्रक्रियामा हाल समस्याहरू आइरहेको छन्। यसले छिट्टै काम गर्ने छ।"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"सुरक्षा"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"स्क्रिन लक"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"कुनै पनि होइन"</string>
@@ -206,8 +358,8 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"पासवर्ड"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"लकको प्रकार चयन गर्ने"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"स्क्रिन लकका विकल्पहरू"</string>
-    <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"आफ्नो ढाँचा प्रविष्ट गर्नुहोस्"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"लक गर्ने विकल्पहरू"</string>
+    <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"आफ्नो ढाँचा प्रविष्टि गर्नुहोस्"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"पुष्टि गर्नुहोस्"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"पुनः चित्रण गर्नुहोस्"</string>
     <string name="continue_button_text" msgid="5129979170426836641">"जारी राख्नुहोस्"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"स्क्रिन लक सेट गर्नुहोस्"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"आफ्नो PIN छनौट गर्नुहोस्"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"आफ्नो ढाँचा छनौट गर्नुहोस्"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"आफ्नो पासवर्ड छनौट गर्नुहोस्"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"आफ्नो पासवर्ड छनौट गर्नुहोस्"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"हालको स्क्रिन लक"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"सुरक्षाका लागि ढाँचा सेट गर्नुहोस्"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"खाली गर्नुहोस्"</string>
@@ -233,10 +385,10 @@
     <string name="okay" msgid="4589873324439764349">"ठिक छ"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"स्क्रिन लक हटाउने हो?"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"यस कार्यले जुनसुकै व्यक्तिलाई तपाईंको खातामाथि पहुँच राख्न दिने छ"</string>
-    <string name="lock_settings_enter_pin" msgid="1669172111244633904">"आफ्नो PIN प्रविष्ट गर्नुहोस्"</string>
-    <string name="lock_settings_enter_password" msgid="2636669926649496367">"आफ्नो पासवर्ड प्रविष्ट गर्नुहोस्"</string>
+    <string name="lock_settings_enter_pin" msgid="1669172111244633904">"आफ्नो PIN प्रविष्टि गर्नुहोस्"</string>
+    <string name="lock_settings_enter_password" msgid="2636669926649496367">"आफ्नो पासवर्ड प्रविष्टि गर्नुहोस्"</string>
     <string name="choose_lock_pin_message" msgid="2963792070267774417">"सुरक्षाका ला‍गि एउटा PIN सेट गर्नुहोस्"</string>
-    <string name="confirm_your_pin_header" msgid="9096581288537156102">"आफ्नो PIN पुन: प्रविष्ट गर्नुहोस्"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"आफ्नो PIN पुन: प्रविष्टि गर्नुहोस्"</string>
     <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PIN कम्तीमा ४ अङ्कको हुनै पर्ने"</string>
     <string name="lockpin_invalid_pin" msgid="2149191577096327424">"Pin अमान्य छ, यसमा अनिवार्य रूपमा कम्तीमा ४ अङ्क हुनु पर्छ।"</string>
     <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PIN हरू मेल खाँदैनन्"</string>
@@ -244,7 +396,7 @@
     <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"गलत PIN"</string>
     <string name="lockscreen_wrong_password" msgid="5757087577162231825">"गलत पासवर्ड"</string>
     <string name="choose_lock_password_message" msgid="6124341145027370784">"सुरक्षाका लागि पासवर्ड सेट गर्नुहोस्"</string>
-    <string name="confirm_your_password_header" msgid="7052891840366724938">"आफ्नो पासवर्ड पुन: प्रविष्ट गर्नुहोस्"</string>
+    <string name="confirm_your_password_header" msgid="7052891840366724938">"आफ्नो पासवर्ड पुन: प्रविष्टि गर्नुहोस्"</string>
     <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"पासवर्डहरू मेल खाँदैनन्"</string>
     <string name="lockpassword_clear_label" msgid="6363680971025188064">"खाली गर्नुहोस्"</string>
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"रद्द गर्नुहोस्"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"तपाईंका IT व्यवस्थापकले धेरै प्रयोग हुने पासवर्डहरूमाथि रोक लगाउनु भएको छ। कुनै फरक पासवर्ड प्रयोग गरी हेर्नुहोस्।"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अङ्कहरूको बढ्दो, घट्दो वा दोहोरिएको अनुक्रम निषेध गरिएको छ।"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रिन लकका विकल्पहरू"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> दिनअघि"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"विश्वसनीय यन्त्र थप्नुहोस्"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"विश्वसनीय यन्त्रहरू"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> यन्त्रहरू</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> यन्त्र</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"तपाईंको <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> जडान भएका बेला यसले यो कार अनलक गर्ने छ कुनै व्यक्तिले तपाईंको <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> लैजानुभयो भने उहाँले यो यन्त्रमाथि पहुँच राख्न सक्ने सम्भावना छ।"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"पुष्टि गर्नुहोस्"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"विश्वसनीय यन्त्रलाई हटाउनुहोस्"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"सम्पन्न भयो"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"कुनै विश्वसनीय यन्त्र सेटअप गर्न सहयोगी अनुप्रयोग प्रयोग गर्नुहोस्। सेटअप भएपछि, सवारी साधनले तपाईंको फोन पत्ता लागाएपछि तपाईं आफ्नो प्रयोगकर्ता प्रोफाइल अनलक गर्न सक्नु हुने छ"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"१. आफ्नो फोनमा सहयोगी अनुप्रयोग डाउनलोड गर्नुहोस्"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"२. यन्त्रहरूको जोडा बनाउन आफ्नो फोनमा <xliff:g id="CAR_NAME">%1$s</xliff:g> चयन गर्नुहोस्"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ले यस यन्त्रका सुरक्षासम्बन्धी सुविधाहरू पत्ता लगाउन सक्दैन। तपाईंको कारलाई सुरक्षित राख्न मद्दत गर्नका लागि विश्वसनीय यन्त्रले तपाईंले अनलक गरेपछि मात्र तपाईंको कार अनलक अवस्थामा राख्न सक्ने छ। तपाईंको विश्वसनीय यन्त्र जोसुकैका हातमा भए तापनि त्यसले तपाईंको कार वरपर हुँदा त्यसलाई अनलक अवस्थामा राख्न सक्छ।"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> लाई विश्वसनीय यन्त्रका रूपमा थप्नुहोस्"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> लाई सफलतापूर्वक कुनै विश्वसनीय यन्त्रका रूपमा थपियो"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> दर्ता गर्न सकिएन"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"कुनै विश्वसनीय यन्त्र थप्दा तपाईंले यसपछिको चरणमा प्रमाणीकरण विधि सेट गर्नु पर्छ। तपाईंसँग आफ्नो विश्वसनीय यन्त्र छैन भने तपाईंको प्रोफाइलमाथि पहुँच राख्न प्रमाणीकरणको आवश्यकता पर्ने छ।"</string>
     <string name="forget" msgid="3971143908183848527">"बिर्सनुहोस्"</string>
+    <string name="connect" msgid="5861699594602380150">"जडान गर्नुहोस्"</string>
+    <string name="disconnect" msgid="6140789953324820336">"विच्छेद गर्नुहोस्"</string>
     <string name="delete_button" msgid="5840500432614610850">"मेट्नुहोस्"</string>
     <string name="remove_button" msgid="6664656962868194178">"हटाउनुहोस्"</string>
     <string name="cancel" msgid="750286395700355455">"रद्द गर्नुहोस्"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"डेमो मोडबाट बाहिरिनुहोस्"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"यस कार्यले डेमो खाता मेटाउनुका साथै प्रणालीमा फ्याक्ट्रीको डेटा रिसेट गर्दछ। प्रयोगकर्ताका सबै डेटा गुम्ने छन्।"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"डेमो मोडबाट बाहिरिनुहोस्"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"सेटअप सम्पन्न गर्नुहोस्"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"अहिले होइन"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"खारेज गर्नुहोस्"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"सवारी साधन चलाइरहेको बेला यो सुविधा उपलब्ध छैन।"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"सवारी साधन चलाइरहेको बेला प्रयोगकर्तालाई थप्न सकिँदैन।"</string>
 </resources>
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
deleted file mode 100644
index be2c363..0000000
--- a/res/values-night/colors.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 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.
--->
-<resources>
-    <color name="toggle_bg_disabled">@color/car_grey_800</color>
-    <color name="toggle_icon_disabled">@color/car_grey_400</color>
-    <color name="google_blue_600">@color/google_blue_600_light</color>
-
-    <color name="car_user_switcher_add_user_background_color">@color/car_dark_blue_grey_600</color>
-    <color name="car_user_switcher_current_user_color">@color/car_teal_200</color>
-</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index dde4565..1e178e3 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"scherm dimmen, touchscreen, batterij"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"scherm dimmen, nacht, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nachtmodus"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Netwerk en internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobiel netwerk"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiele data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Datatoegang via mobiel netwerk"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobiele data uitschakelen?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Datagebruik"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Datawaarschuwing- en limiet"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Gebruikscyclus app-data"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Datawaarschuwing instellen"</string>
+    <string name="data_warning" msgid="116776633806885370">"Datawaarschuwing"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Datalimiet instellen"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datalimiet"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Datagebruik beperken"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"De hoofdeenheid van je voertuig schakelt mobiele data uit zodra je de ingestelde limiet bereikt.\n\nAangezien het datagebruik wordt gemeten door de hoofdeenheid en je provider het gebruik op een andere manier kan berekenen, kun je overwegen een conservatieve limiet in te stellen."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wifi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Draadloze toegangspunten instellen en beheren"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wifi inschakelen…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wifi uitschakelen…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wifi-lijst laden…"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wifi uitgeschakeld"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Vergeten van netwerk is mislukt"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Kan geen verbinding maken met het netwerk"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Netwerk toevoegen"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wifi uitgeschakeld"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Connect"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Wachtwoord"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Wachtwoord weergeven"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Netwerknaam"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Geef de SSID op"</string>
     <string name="wifi_security" msgid="158358046038876532">"Beveiliging"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signaalsterkte"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signaalsterkte"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Linksnelheid"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequentie"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-adres"</string>
+    <string name="show_password" msgid="2074628020371139240">"Wachtwoord weergeven"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Netwerknaam opgeven"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Wachtwoord opgeven"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Slecht"</item>
-    <item msgid="2032262610626057081">"OK"</item>
-    <item msgid="3859756017461098953">"Goed"</item>
-    <item msgid="1521103743353335724">"Uitstekend"</item>
+    <item msgid="7683058295076342057">"Slecht"</item>
+    <item msgid="1639222824821660744">"OK"</item>
+    <item msgid="1838705897358163300">"Goed"</item>
+    <item msgid="6067166649320533751">"Uitstekend"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth inschakelen"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth uitgeschakeld"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Netwerkgegevens"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-adres"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-adres"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnetmasker"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-adressen"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wifi-voorkeuren"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wifi automatisch inschakelen"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wifi schakelt in bij opgeslagen kwaliteitsnetwerken, zoals je thuisnetwerk"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Niet beschikbaar: locatie uitgeschakeld. Schakel "<annotation id="link">"locatie"</annotation>" in."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wifi-scannen inschakelen?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Inschakelen"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wifi-scannen ingeschakeld"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automatisch overschakelen naar mobiele data"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Mobiele data gebruiken wanneer er geen internettoegang via wifi is. Er kunnen kosten voor datagebruik in rekening worden gebracht."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Meer informatie"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Verbindingen beheren, apparaatnaam en vindbaarheid instellen"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefoon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Replicatieapparaat"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Hoofdtelefoon"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Randapparaat voor invoer"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Gekoppelde apparaten"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Beschikbare apparaten"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Geen gekoppelde apparaten"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Geen beschikbare apparaten"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Gekoppeld apparaat"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Naam"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Gebruiken voor"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Naam van Bluetooth-apparaat wijzigen"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Naamloos apparaat"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Gekoppelde apparaten"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Nieuw apparaat koppelen"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth wordt ingeschakeld om te koppelen"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Apparaat ontkoppelen?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Je voertuig wordt ontkoppeld van <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth-adres van voertuig: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth-adres van apparaat: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Naam van voertuig"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Naam van dit voertuig wijzigen"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Naam van apparaat wijzigen"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Naam wijzigen"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Beschikbare apparaten"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profielen"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth-koppelingsverzoek"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Koppelen en verbinden"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth-koppelingscode"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Pincode bevat letters of symbolen"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Typ de koppelingscode en druk op Return of Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Meestal 0000 of 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Koppelingsverzoek"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tik om te koppelen met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Talen"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Talen en invoer"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Toetsenbord"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Toetsenborden beheren"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Tekst-naar-spraak-uitvoer"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Voorkeursengine"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Huidige engine"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Spreeksnelheid"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Hoogte"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Resetten"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Geluid"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Beltoonvolume"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigatievolume"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Volume voor muziek en video\'s instellen"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Beltoon telefoon"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Standaard meldingsgeluid"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standaard wekkergeluid"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps en meldingen"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Alle apps weergeven"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Standaard-apps"</string>
     <string name="applications_settings" msgid="794261395191035632">"App-info"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Gedwongen stoppen"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Gedwongen stoppen?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Als je een app gedwongen stopt, kan deze onverwacht gedrag vertonen."</string>
     <string name="disable_text" msgid="4358165448648990820">"Uitschakelen"</string>
     <string name="enable_text" msgid="1794971777861881238">"Inschakelen"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Verwijderen"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Als je deze app uitschakelt, werken Android en andere apps mogelijk niet meer zoals bedoeld."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"App uitschakelen"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Machtigingen"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versie: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Geen machtigingen verleend"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Geen machtigingen aangevraagd"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Datagebruik"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Gegevensgebruik van app"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Gedwongen stoppen"</string>
     <string name="computing_size" msgid="5791407621793083965">"Berekenen…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> aanvullende rechten</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> aanvullend recht</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"De Assistent en spraakinvoer"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"App voor assistentie"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Tekst van scherm gebruiken"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Toestaan dat de app voor assistentie toegang krijgt tot de scherminhoud als tekst"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Screenshot gebruiken"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Toestaan dat de app voor assistentie toegang krijgt tot een afbeelding van het scherm"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Service voor automatisch aanvullen"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Geen"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Geselecteerd"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"De Assistent kan informatie over de gebruikte apps in je systeem lezen, waaronder informatie die zichtbaar is op je scherm of toegankelijk is in de apps."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Zorg dat je deze app vertrouwt&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; maakt gebruik van de content op je scherm om te bepalen wat automatisch kan worden aangevuld."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Service toevoegen"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Locatie"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recente locatieverzoeken"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Geen recente locatieverzoeken"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Machtigingen op app-niveau"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Scannen"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Locatieservices"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wifi-scannen"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Apps en services toestaan altijd te scannen naar wifi-netwerken in de buurt, zelfs als wifi is uitgeschakeld. Dit kan bijvoorbeeld worden gebruikt om locatiegebaseerde functies en services te verbeteren."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-scannen"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Apps en services toestaan altijd te scannen naar apparaten in de buurt, zelfs als Bluetooth is uitgeschakeld. Dit kan bijvoorbeeld worden gebruikt om locatiegebaseerde functies en services te verbeteren."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Systeem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Systeemupdates"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Systeemupdates"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-versie"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android-beveiligingspatchniveau"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Smalbandversie"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel-versie"</string>
     <string name="build_number" msgid="3997326631001009102">"Build-nummer"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adres"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Niet beschikbaar"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licentie"</string>
     <string name="terms_title" msgid="5201471373602628765">"Algemene voorwaarden"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Systeemlicentie voor webweergave"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Systeemlicenties voor WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Achtergronden"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Providers van satellietbeelden:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licenties van derden"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Er is een probleem bij het laden van de licenties."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Laden…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Je moet nog <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> stappen uitvoeren om ontwikkelaar te worden.</item>
+      <item quantity="one">Je moet nog <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> stap uitvoeren om ontwikkelaar te worden.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Je bent nu ontwikkelaar!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Niet nodig, je bent al ontwikkelaar."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Ontwikkelaarsopties"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opties voor resetten"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Netwerk, apps of apparaat resetten"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Netwerk resetten"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Hiermee worden alle netwerkinstellingen gereset, waaronder:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wifi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobiele data"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Alle e-simkaarten van voertuig wissen"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Hiermee wordt je abonnement niet opgezegd."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Kan e-simkaarten niet resetten"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Netwerk selecteren"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Instellingen resetten"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Resetten?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Alle netwerkinstellingen resetten? Je kunt deze actie niet ongedaan maken."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Instellingen resetten"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Netwerkinstellingen zijn gereset"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"App-voorkeuren resetten"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Hiermee worden alle voorkeuren gereset voor:\n\n"<li>"Uitgeschakelde apps"</li>\n<li>"Uitgeschakelde app-meldingen"</li>\n<li>"Standaardapps voor acties"</li>\n<li>"Beperkingen voor achtergrondgegevens voor apps"</li>\n<li>"Beperkingen voor machtigingen"</li>\n\n"Je verliest geen app-gegevens."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Apps resetten"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"App-voorkeuren zijn gereset"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Alle gegevens wissen (fabrieksreset)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Hiermee worden alle gegevens van de hoofdunit van je voertuig gewist, waaronder:\n\n"<li>"Je Google-account"</li>\n<li>"Gegevens en instellingen van het systeem en de apps"</li>\n<li>"Gedownloade apps"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Je bent momenteel ingelogd op de volgende accounts:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Er zijn andere gebruikers aanwezig in dit voertuig."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Voertuig resetten"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Resetten?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Al je persoonlijke informatie en gedownloade apps verwijderen? Je kunt deze actie niet ongedaan maken."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Alles wissen"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Wissen"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Even geduld..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum en tijd"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Datum en tijd instellen"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Datum, tijd, tijdzone en notaties instellen"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sorteren op tijdzone"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Tijd"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Gebruiker toevoegen"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Account toevoegen"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Gebruiker verwijderen"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nieuwe gebruiker"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gast"</string>
     <string name="user_admin" msgid="1535484812908584809">"Beheerder"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Ingelogd als beheerder"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alle beheerdersrechten"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Beheerder maken"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"De gebruiker kan gebruikers (waaronder andere beheerders) verwijderen en het systeem terugzetten op de fabrieksinstellingen."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Deze actie kan niet ongedaan worden gemaakt."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, beheerder maken"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Nieuwe gebruikers maken"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Bellen"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Sms\'en via mobiele data van auto"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Nieuwe apps installeren"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Installatie van apps ongedaan maken"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Gebruiker toevoegen"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nieuwe gebruiker"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Nieuwe gebruiker?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Wanneer je een nieuwe gebruiker toevoegt, moet die persoon zijn eigen profiel instellen."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Elke gebruiker kan apps updaten voor alle andere gebruikers"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Gebruikerslimiet bereikt"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Je kunt maximaal <xliff:g id="COUNT">%d</xliff:g> gebruikers maken.</item>
+      <item quantity="one">Er kan maar één gebruiker worden gemaakt.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Kan geen nieuwe gebruiker maken"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Deze gebruiker verwijderen?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alle apps en gegevens worden verwijderd."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Kan gebruiker niet verwijderen."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Sluiten"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Opnieuw proberen"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Laatste gebruiker verwijderen?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Nadat de enige overblijvende gebruiker voor deze auto is verwijderd, wordt er een nieuwe beheerder gemaakt."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alle gegevens, instellingen en apps die aan deze gebruiker zijn gekoppeld, worden verwijderd. Je moet het systeem opnieuw instellen."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Nieuwe beheerder kiezen"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Je hebt ten minste één beheerder nodig. Als je deze beheerder wilt verwijderen, moet je eerst een vervanger kiezen."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Beheerder kiezen"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gast"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gast"</string>
     <string name="user_switch" msgid="6544839750534690781">"Wijzigen"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Jij (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Naam"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Niet ingesteld"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Gebruikersnaam bewerken"</string>
     <string name="users_list_title" msgid="770764290290240909">"Gebruikers"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Rechten verleend aan %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Accounts"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Gebruiker"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Account toevoegen"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Geen accounts toegevoegd"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Accounts voor <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Gegevens automatisch synchroniseren"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Apps automatisch gegevens laten vernieuwen"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Auto-synchronisatie inschakelen?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Wijzigingen die je op internet aanbrengt in je accounts, worden automatisch naar je apparaat gekopieerd.\n\nBij sommige accounts worden mogelijk ook de wijzigingen die je op de telefoon aanbrengt, naar internet gekopieerd. Dit geldt bijvoorbeeld voor Google-accounts."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Auto-synchr. uitschakelen?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Hiermee bespaar je data. Je moet elk account echter handmatig synchroniseren om recente informatie te verzamelen. Je ontvangt geen meldingen wanneer er updates plaatsvinden."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Accountgegevens"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Account toevoegen"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Een account toevoegen"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Account verwijderen"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Account verwijderen?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Als dit account wordt verwijderd, worden ook alle bijbehorende berichten, contacten en andere gegevens van het apparaat verwijderd."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Deze wijziging is niet toegestaan door je beheerder"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Gebruiker verwijderen?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Alle apps en gegevens worden verwijderd."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Kan gebruiker niet verwijderen."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Opnieuw proberen?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Sluiten"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Opnieuw proberen"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Nieuwe gebruiker?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Wanneer je een nieuwe gebruiker toevoegt, moet die persoon zijn eigen profiel instellen."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Elke gebruiker kan apps updaten voor alle andere gebruikers"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Kan account niet verwijderen."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Accountsynchronisatie"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synchronisatie is ingeschakeld voor <xliff:g id="ID_1">%1$d</xliff:g> van de <xliff:g id="ID_2">%2$d</xliff:g> items"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synchronisatie is ingeschakeld voor alle items"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synchronisatie is uitgeschakeld voor alle items"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synchroniseren uitgeschakeld"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Fout bij synchroniseren"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Laatst gesynchroniseerd: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Nu synchroniseren…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tik om nu te synchroniseren<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Nu synchroniseren"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Synchronisatie annuleren"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Er zijn momenteel problemen met de synchronisatie. Synchronisatie wordt snel opnieuw uitgevoerd."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Beveiliging"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Schermvergrendeling"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Geen"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Pincode"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Wachtwoord"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Vergrend.type kiezen"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Schermvergrendelingsopties"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Vergrendelingsopties"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Geef je patroon op"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Bevestigen"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Opnieuw tekenen"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Een schermvergrendeling instellen"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Je pincode kiezen"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Je patroon kiezen"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Je wachtwoord kiezen"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Je wachtwoord kiezen"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Huidige schermvergrendeling"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Stel wachtwoord in voor beveiliging"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Wissen"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Veelvoorkomende wachtwoorden worden geblokkeerd door je IT-beheerder. Probeer een ander wachtwoord."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Een oplopende, aflopende of herhaalde reeks cijfers is niet toegestaan."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Schermvergrendelingsopties"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dagen geleden"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Vertrouwd apparaat toevoegen"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Vertrouwde apparaten"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> apparaten</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> apparaat</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Je <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ontgrendelt deze auto wanneer je apparaat is verbonden. Als iemand je <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> in handen krijgt, kan die persoon mogelijk toegang krijgen tot dit apparaat."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bevestigen"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Veilig apparaat verwijderen"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Klaar"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Gebruik de bijbehorende app om een vertrouwd apparaat in te stellen. Na het instellen kun je je gebruikersprofiel ontgrendelen wanneer je telefoon wordt gedetecteerd door het voertuig."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download de bijbehorende app op je telefoon"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecteer <xliff:g id="CAR_NAME">%1$s</xliff:g> op je telefoon om de apparaten te koppelen"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock kan de beveiligingsfuncties van dit apparaat niet detecteren. Ter beveiliging van je auto kan het vertrouwde apparaat je auto alleen ontgrendeld houden nadat je deze zelf al hebt ontgrendeld. Je vertrouwde apparaat kan je auto ontgrendeld houden wanneer het in de buurt is, ook als iemand anders het apparaat vasthoudt."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> toevoegen als vertrouwd apparaat"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> is toegevoegd als vertrouwd apparaat"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Inschrijving van <xliff:g id="DEVICE_NAME">%1$s</xliff:g> mislukt"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Als je een vertrouwd apparaat toevoegt, moet je daarna een verificatiemethode instellen. Als je je vertrouwde apparaat niet bij je hebt, is verificatie vereist voor toegang tot je profiel."</string>
     <string name="forget" msgid="3971143908183848527">"Vergeten"</string>
+    <string name="connect" msgid="5861699594602380150">"Verbinden"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Verbinding verbreken"</string>
     <string name="delete_button" msgid="5840500432614610850">"Verwijderen"</string>
     <string name="remove_button" msgid="6664656962868194178">"Verwijderen"</string>
     <string name="cancel" msgid="750286395700355455">"Annuleren"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demomodus afsluiten"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Hiermee wordt het demo-account verwijderd en wordt het systeem teruggezet op de fabrieksinstellingen. Alle gebruikersgegevens gaan verloren."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demo afsluiten"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"instellen voltooien"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"niet nu"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"SLUITEN"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Functie niet beschikbaar tijdens het rijden."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Kan geen gebruikers toevoegen tijdens het rijden."</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
new file mode 100644
index 0000000..d41b012
--- /dev/null
+++ b/res/values-or/strings.xml
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+    Copyright 2018 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="settings_label" msgid="5147911978211079839">"ସେଟିଙ୍ଗ"</string>
+    <string name="more_settings_label" msgid="3867559443480110616">"ଅଧିକ"</string>
+    <string name="display_settings" msgid="5325515247739279185">"ଡିସ୍‌ପ୍ଲେ"</string>
+    <string name="brightness" msgid="2919605130898772866">"ଉଜ୍ଜ୍ୱଳତା ସ୍ତର"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"ଅନୁକୂଳ ଉଜ୍ଜ୍ୱଳତା"</string>
+    <string name="auto_brightness_summary" msgid="4741887033140384352">"ଉପଲବ୍ଧ ଆଲୋକ ପାଇଁ ଉଜ୍ଜ୍ୱଳତା ଅନୁକୂଳ କରନ୍ତୁ"</string>
+    <string name="condition_night_display_title" msgid="3777509730126972675">"ରାତି ଆଲୋକ ଅନ୍ ହୋଇଛି"</string>
+    <string name="keywords_display" msgid="3978416985146943922">"ସ୍କ୍ରୀନ୍‌, ଟଚ୍‌ସ୍କ୍ରୀନ୍‌"</string>
+    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"ଡିମ୍‌ ସ୍କ୍ରିନ୍‌, ଟଚ୍‌ସ୍କ୍ରିନ୍‌, ବ୍ୟାଟେରୀ"</string>
+    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ଡିମ୍‌ ସ୍କ୍ରିନ୍‌, ଟଚ୍‌ସ୍କ୍ରିନ୍‌, ବ୍ୟାଟେରୀ"</string>
+    <string name="keywords_display_night_display" msgid="2922294576679769957">"ଅଳ୍ପ ଆଲୋକ ଥିବା ସ୍କ୍ରୀନ୍‌, ରାତି, ଟିଣ୍ଟ"</string>
+    <string name="night_mode_tile_label" msgid="6603597795502131664">"ନାଇଟ୍ ମୋଡ୍"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"ନେଟ୍‌ୱର୍କ ଓ ଇର୍ଣ୍ଟନେଟ୍"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"ମୋବାଇଲ୍‌ ନେଟ୍‌ୱର୍କ"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"ମୋବାଇଲ୍ ଡାଟା"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ମୋବାଇଲ୍ ନେଟ୍‌ୱର୍କକୁ ବ୍ୟବହାରକରି ଡାଟା ଆକ୍ସେସ୍ କରନ୍ତୁ"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"ମୋବାଇଲ୍‌ ଡାଟା ବନ୍ଦ କରିବେ?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ଡାଟାର ବ୍ୟବହାର"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ଡାଟା ଚେତାବନୀ ଓ ସୀମା"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ଆପ୍ ଡାଟା ବ୍ୟବହାର ଚକ୍ର"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ଡାଟା ଚେତାବନୀ ସେଟ୍ କରନ୍ତୁ"</string>
+    <string name="data_warning" msgid="116776633806885370">"ଡାଟା ଚେତାବନୀ"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ଡାଟା ସୀମା ସେଟ୍ କରନ୍ତୁ"</string>
+    <string name="data_limit" msgid="227338836292511425">"ଡାଟା ସୀମା"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ଡାଟା ବ୍ୟବହାର ସୀମିତ କରିବା"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ଡାଟାର ବ୍ୟବହାର ଆପଣ ସେଟ୍ କରିଥିବା ସୀମାରେ ପହଞ୍ଚିଗଲେ, ଆପଣଙ୍କ ବାହାନର ହେଡ୍ ୟୁନିଟ୍ ମୋବାଇଲ୍ ଡାଟାକୁ ବନ୍ଦ କରିଦେବ।\n\nଯେହେତୁ ବାହାନର ହେଡ୍ ୟୁନିଟ୍ ଡାଟା ବ୍ୟବହାରର ହିସାବ ରଖିଥାଏ ଏବଂ ଆପଣଙ୍କ ବାହାକ ଦ୍ୱାରା ରଖାଯାଇଥିବା ହିସାବ ସାମାନ୍ୟ ଭିନ୍ନ ହୋଇପାରେ, ତେଣୁ ମୋବାଇଲ୍ ଡାଟାର ବ୍ୟବହାର କମ୍ ହେବ, ଏକ ରକ୍ଷଣଶୀଳ ସୀମା ସେଟିଂ କରନ୍ତୁ।"</string>
+    <string name="wifi_settings" msgid="7701477685273103841">"ୱାଇ-ଫାଇ"</string>
+    <string name="wifi_starting" msgid="473253087503153167">"ୱାଇ-ଫାଇ ଅନ୍‌ କରୁଛି…"</string>
+    <string name="wifi_stopping" msgid="3534173972547890148">"ୱାଇ-ଫାଇ ବନ୍ଦ‌ ହେଉଛି…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"ୱାଇ-ଫାଇ ତାଲିକା ଲୋଡ୍‍ ହେଉଛି"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"ୱାଇ-ଫାଇ ଅକ୍ଷମ କରାଯାଇଛି"</string>
+    <string name="wifi_failed_forget_message" msgid="121732682699377206">"ନେଟ୍‌ୱର୍କ ଭୁଲିଯିବାରେ ବିଫଳ ହେଲା"</string>
+    <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ନେଟ୍‌ୱର୍କକୁ ସଂଯୋଗ କରିପାରିଲା ନାହିଁ।"</string>
+    <string name="wifi_setup_add_network" msgid="3660498520389954620">"ନେଟ୍‌ୱର୍କ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="wifi_setup_connect" msgid="3512399573397979101">"ସଂଯୋଗ"</string>
+    <string name="wifi_password" msgid="5565632142720292397">"ପାସୱର୍ଡ"</string>
+    <string name="wifi_show_password" msgid="8423293211933521097">"ପାସ୍‍ୱର୍ଡ ଦେଖାନ୍ତୁ"</string>
+    <string name="wifi_ssid" msgid="488604828159458741">"ନେଟୱାର୍କ ନାମ"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID ଲେଖନ୍ତୁ"</string>
+    <string name="wifi_security" msgid="158358046038876532">"ସୁରକ୍ଷା"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"ସିଗ୍‍ନାଲ୍‌ ଦକ୍ଷତା"</string>
+    <string name="wifi_status" msgid="5688013206066543952">"ସ୍ଥିତି"</string>
+    <string name="wifi_speed" msgid="1650692446731850781">"ଲିଙ୍କର ବେଗ"</string>
+    <string name="wifi_frequency" msgid="8951455949682864922">"ବାରମ୍ଵାରତା"</string>
+    <string name="wifi_ip_address" msgid="3128140627890954061">"IP ଠିକଣା"</string>
+    <string name="show_password" msgid="2074628020371139240">"ପାସ୍‍ୱାର୍ଡ ଦେଖାନ୍ତୁ"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"ନେଟ୍‌ୱର୍କର ନାମ ଲେଖନ୍ତୁ"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"ପାସ୍‌ୱର୍ଡ ଲେଖନ୍ତୁ"</string>
+    <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
+  <string-array name="wifi_signals">
+    <item msgid="4897376984576812606">"ଖରାପ"</item>
+    <item msgid="7683058295076342057">"ଖରାପ"</item>
+    <item msgid="1639222824821660744">"ଠିକ୍‍‍ଠାକ୍‍"</item>
+    <item msgid="1838705897358163300">"ଭଲ"</item>
+    <item msgid="6067166649320533751">"ସର୍ବୋତ୍ତମ"</item>
+  </string-array>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ନେଟ୍‍ୱର୍କ ବିବରଣୀ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ଠିକଣା"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ଠିକଣା"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"ସବ୍‌ନେଟ୍‌ ମାସ୍କ"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ଠିକଣା"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ଗେଟ୍‌ୱେ"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"ୱାଇ-ଫାଇ ଅଗ୍ରାଧିକାରଗୁଡ଼ିକ"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"ୱାଇ-ଫାଇ ସ୍ୱଚାଳିତ ଭାବେ ଚାଲୁ କରନ୍ତୁ"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"ୱାଇ-ଫାଇ ଆପଣଙ୍କର ମୂଳ ନେଟ୍‌ୱର୍କ ପରି ଉଚ୍ଚ ଗୁଣବତ୍ତାର ସେଭ୍ ହୋଇଥିବା ନେଟ୍‌ୱର୍କରେ ଫେରିଆସିବ"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"ଲୋକେସନ୍ ବନ୍ଦ ଥିବା କାରଣରୁ ଉପଲବ୍ଧ ନାହିଁ। "<annotation id="link">"ଲୋକେସନ୍"</annotation>" ଚାଲୁ କରନ୍ତୁ।"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"ୱାଇ-ଫାଇ ସ୍କାନିଂକୁ ଚାଲୁ କରିବେ?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ଚାଲୁ କରନ୍ତୁ"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"ୱାଇ-ଫାଇ ସ୍କାନିଂ ଚାଲୁ ଅଛି"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"ସ୍ୱଚାଳିତ ଭାବେ ମୋବାଇଲ୍ ଡାଟାକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi‑Fiର ଇଣ୍ଟର୍ନେଟ୍ ଆକ୍ସେସ୍ ନଥିବା ବେଳେ ମୋବାଇଲ୍ ଡାଟା ବ୍ୟବହାର କରନ୍ତୁ। ଡାଟା ବ୍ୟବହାର ଦେୟ ଲାଗୁ ହୋଇପାରେ।"</string>
+    <string name="learn_more" msgid="8214605928933358604">"ଅଧିକ ଜାଣନ୍ତୁ"</string>
+    <string name="bluetooth_settings_title" msgid="3794688574569688649">"ବ୍ଲୁଟୁଥ୍‌"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"ନାମହୀନ ଡିଭାଇସ୍‍"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"ପେୟାର୍‌ ହୋଇଥିବା ଡିଭାଇସ୍‌ଗୁଡ଼ିକ"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"ନୂଆ ଡିଭାଇସ୍‌କୁ ପେୟାର୍‌ କରନ୍ତୁ"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"ପେୟାର୍ କରିବାକୁ ବ୍ଲୁ-ଟୂଥ୍‍ ଚାଲୁ ହେବ"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ଡିଭାଇସ୍‌ ବିଚ୍ଛିନ୍ନ କରିବେ?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"ଆପଣଙ୍କ ଗାଡି <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ରୁ ବିଚ୍ଛିନ୍ନ ହେବ।"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"ଗାଡିର ବ୍ଲୁ-ଟୂଥ୍‍‌ ଠିକଣା : <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ଡିଭାଇସ୍‌ର ବ୍ଲୁଟୁଥ୍‌ ଠିକଣା: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"ଗାଡିର ନାମ"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ଏହି ଗାଡିକୁ ରିନେମ୍‌ କରନ୍ତୁ"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ଡିଭାଇସକୁ ରିନେମ୍‌ କରନ୍ତୁ"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"ରିନେମ୍‌ କରନ୍ତୁ"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ଉପଲବ୍ଧ ଥିବା ଡିଭାଇସ୍"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"ପ୍ରୋଫାଇଲ୍‌ଗୁଡିକ"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
+    <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ବ୍ଲୁଟୂଥ୍‍ ପେୟାର୍ କରିବା ପାଇଁ ଅନୁରୋଧ"</string>
+    <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ପେୟାର୍‌ ଓ ସଂଯୋଗ"</string>
+    <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ବ୍ଲୁଟୂଥ୍‌ ପେୟାରିଂ କୋଡ୍"</string>
+    <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ପିନ୍‌ରେ ଅକ୍ଷର କିମ୍ୱା ସଙ୍କେତ ରହିଥାଏ"</string>
+    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"ପେୟାରିଂ କୋଡ୍ ଟାଇପ୍‌ କରନ୍ତୁ ତାପରେ ଫେରନ୍ତୁ କିମ୍ବା ପ୍ରବେଶ ଦବାନ୍ତୁ"</string>
+    <string name="bluetooth_pairing_request" msgid="4769675459526556801">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ ପେୟାର୍‌ କରିବେ?"</string>
+    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"ଆପଣଙ୍କ ଯୋଗାଯୋଗ ଓ କଲ୍‌ ହିଷ୍ଟୋରୀକୁ ଆକ୍‌ସେସ୍‌ କରିବାକୁ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>କୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+    <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"ଆପଣ ଏହି PIN ଅନ୍ୟ ଡିଭାଇସ୍‌ରେ ମଧ୍ୟ ଟାଇପ୍‌ କରିବା ଆବଶ୍ୟକ କରିପାରନ୍ତି।"</string>
+    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"ଏହି ପାସ୍‌-କୀକୁ ଅନ୍ୟ ଡିଭାଇସ୍‌ରେ ମଧ୍ୟ ଟାଇପ୍‌ କରିବା ଆବଶ୍ୟକ ହୋଇପରେ।"</string>
+    <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"16 ଅଙ୍କ ବିଶିଷ୍ଟ ହେବା ଦରକାର"</string>
+    <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"ସାଧାରଣତଃ 0000 କିମ୍ବା 1234"</string>
+    <string name="bluetooth_notif_title" msgid="8374602799367803335">"ପେୟାରିଙ୍ଗ ଅନୁରୋଧ"</string>
+    <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ ପେୟାର୍‌ କରିବାକୁ ଟାପ୍‌ କରନ୍ତୁ"</string>
+    <string name="language_settings" msgid="2079258598337245546">"ଭାଷା"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ଭାଷା ଓ ଇନ୍‌‌ପୁଟ୍‌"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"କୀବୋର୍ଡ"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"କୀବୋର୍ଡଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"ଟେକ୍ସଟ୍‍-ରୁ-ସ୍ପିଚ୍‍ ଆଉଟ୍‍ପୁଟ୍"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ଅଗ୍ରାଧିକାର ଦିଆଯାଇଥିବା ଇଞ୍ଜିନ୍"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ସାମ୍ପ୍ରତିକ ଇଞ୍ଜିନ୍"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"ସ୍ପୀଚ୍‌ ହାର"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"ପିଚ୍‌"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"ରିସେଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="sound_settings" msgid="3072423952331872246">"ଶବ୍ଦ"</string>
+    <string name="ring_volume_title" msgid="3135241004980719442">"ରିଙ୍ଗ ଭଲ୍ୟୁମ୍"</string>
+    <string name="navi_volume_title" msgid="946292066759195165">"ନେଭିଗେସନ୍‌ ଭଲ୍ୟୁମ୍‌"</string>
+    <string name="incoming_call_volume_title" msgid="6972117872424656876">"ରିଙ୍ଗଟୋନ୍‌"</string>
+    <string name="notification_volume_title" msgid="6749411263197157876">"ବିଜ୍ଞପ୍ତି"</string>
+    <string name="media_volume_title" msgid="6697416686272606865">"ମିଡିଆ"</string>
+    <string name="media_volume_summary" msgid="2961762827637127239">"ମ୍ୟୁଜିକ୍‌ ଓ ଭିଡିଓଗୁଡିକ ପାଇଁ ଭଲ୍ୟୁମ ସେଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="alarm_volume_title" msgid="840384014895796587">"ଆଲାର୍ମ"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ଫୋନ୍‌ ରିଙ୍ଗଟୋନ୍‌"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"ଡିଫଲ୍ଟ ବିଜ୍ଞପ୍ତି ସାଉଣ୍ଡ"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"ଡିଫଲ୍ଟ ଆଲାର୍ମ ସାଉଣ୍ଡ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ଆପ୍ସ ଓ ବିଜ୍ଞପ୍ତି"</string>
+    <string name="all_applications" msgid="7798210477486822168">"ସମସ୍ତ ଆପ୍ସ ଦେଖାନ୍ତୁ"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ଡିଫଲ୍ଟ ଆପ୍ସ"</string>
+    <string name="applications_settings" msgid="794261395191035632">"ଆପ୍‌ ସୂଚନା"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ବାଧ୍ୟତାର ସହ ବନ୍ଦ କର"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"ଜବରଦସ୍ତି ବନ୍ଦ କରିବେ?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"ଯଦି ଆପଣ ଏକ ଆପ୍ ଜବରଦସ୍ତ ବନ୍ଦ କରନ୍ତି, ତେବେ ଏହା ଅସାମାନ୍ୟ ବ୍ୟବହାର କରିପାରେ।"</string>
+    <string name="disable_text" msgid="4358165448648990820">"ଅକ୍ଷମ"</string>
+    <string name="enable_text" msgid="1794971777861881238">"ସକ୍ଷମ"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"ଅନ୍‍ଇନ୍‍ଷ୍ଟଲ୍ କରନ୍ତୁ"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ଯଦି ଆପଣ ଏହି ଆପ୍‌କୁ ନିଷ୍କ୍ରିୟ କରନ୍ତି, ତେବେ Android ଓ ଅନ୍ୟାନ୍ୟ ଆପ୍ସ ଆଉ କାମ ନକରିପାରେ।"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ଆପ୍ ଅକ୍ଷମ କରନ୍ତୁ"</string>
+    <string name="permissions_label" msgid="2701446753515612685">"ଅନୁମତିଗୁଡ଼ିକ"</string>
+    <string name="application_version_label" msgid="8556889839783311649">"ଭର୍ସନ୍‌: %1$s"</string>
+    <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"କୌଣସି ଅନୁମତି ଦିଆଯାଇ ନାହିଁ"</string>
+    <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"କୌଣସି ଅନୁମତିର ଅନୁରୋଧ କରାଯାଇ ନାହିଁ"</string>
+    <string name="data_usage_summary_title" msgid="4368024763485916986">"ଡାଟାର ବ୍ୟବହାର"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ଆପ୍‌ ଦ୍ୱାରା ଡାଟା ବ୍ୟବହାର"</string>
+    <string name="computing_size" msgid="5791407621793083965">"ଗଣୁଛି…"</string>
+    <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ଟି ଅତିରିକ୍ତ ଅନୁମତି</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ଟି ଅତିରିକ୍ତ ଅନୁମତି</item>
+    </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"ଆସିଷ୍ଟାଣ୍ଟ ଓ ଭଏସ୍‌ ଇନପୁଟ୍‌"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"ସହାୟକ ଆପ୍‌"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ସ୍କ୍ରିନ୍‌ରୁ ଟେକ୍ସଟ୍‌ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"ସ୍କ୍ରିନ୍‌ ବିଷୟବସ୍ତୁଗୁଡ଼ିକୁ ଟେକ୍ସଟ୍‌ ଭଳି ଆକ୍ସେସ୍‌ କରିବା ପାଇଁ ସହାୟକ ଆପ୍‌କୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ସ୍କ୍ରିନ୍‌ଶଟ୍‌ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"ସ୍କ୍ରିନ୍‌ର ଛବିକୁ ଆକ୍ସେସ୍‌ କରିବାକୁ ସହାୟକ ଆପ୍‌କୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"ସ୍ୱତଃପୂରଣ ସେବା"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"କୌଣସିଟି ନୁହେଁ"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"ଚୟନିତ"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"ଏହି ସହାୟକ, ସ୍କ୍ରିନ୍‌ରେ ଦେଖାଦେଉଥିବା କିମ୍ୱା ଆପ୍‌ଗୁଡ଼ିକ ମଧ୍ୟରେ ଆକ୍ସେସ୍ ହୋଇପାରିବା ଭଳି ସୂଚନା ସମେତ ଆପଣଙ୍କ ସିଷ୍ଟମ୍‌ରେ ଥିବା ଆପ୍‌ଗୁଡ଼ିକ ବିଷୟରେ ସୂଚନା ପଢ଼ିପାରିବ।"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ଆପଣ ଏହି ଆପ୍‌କୁ ବିଶ୍ୱାସ କରୁଥିବା ନିଶ୍ଚିତ କରନ୍ତୁ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google ଅଟୋଫିଲ୍‌&gt;%1$s&lt;/xliff:g&gt; କଣ ଅଟୋଫିଲ୍‌ କରାଯାଇ ପାରିବ ନିର୍ଦ୍ଧାରଣ କରିବାକୁ ଆପଣଙ୍କ ସ୍କ୍ରିନ୍‌ରେ ଯାହା ଥାଏ ତାହା ବ୍ୟବହାର କରେ।"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"ସେବା ଯୋଗ କରନ୍ତୁ"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"ଲୋକେସନ୍‌"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ସାମ୍ପ୍ରତିକ ଲୋକେସନ୍‌ ଅନୁରୋଧ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"କୌଣସି ନିକଟର ଲୋକେସନ୍‍ ଅନୁରୋଧ ହୋଇନାହିଁ"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ଆପ୍‌-ସ୍ତରୀୟ ଅନୁମତି"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"ସ୍କାନିଂ"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"ଲୋକେସନ୍‌ ସମ୍ପର୍କିତ ସେବା"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"ୱାଇ-ଫାଇ ସ୍କାନିଂ"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"ଏପରିକି ୱାଇ-ଫାଇ ଅଫ୍‌ ଥିଲେ ମଧ୍ୟ, ଆପ୍ ଓ ସେବାଗୁଡ଼ିକୁ ଯେକୌଣସି ସମୟରେ ୱାଇ-ଫାଇ ନେଟ୍‌ୱର୍କ ସ୍କାନ୍‍ କରିବାକୁ ଅନୁମତି ଦିଏ। ଏହାକୁ ଲୋକେସନ୍‌ ଆଧାରିତ ଫିଚର୍ ଓ ସେବା ଇତ୍ୟାଦିକୁ ଉନ୍ନତ କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଇପାରେ।"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ବ୍ଲୁଟୁଥ୍‍ ସ୍କାନିଂ"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ଏପରିକି ବ୍ଲୁଟୁଥ୍‍‌ ବନ୍ଦ ଥିଲେ ମଧ୍ୟ, ଆପ୍ ଓ ସେବାଗୁଡ଼ିକୁ ଯେକୌଣସି ସମୟରେ ଆଖପାଖରେ ଥିବା ଡିଭାଇସ୍‌ ଖୋଜିବାକୁ ଦିଏ। ଏହାକୁ ଲୋକେସନ୍‌ ଆଧାରିତ ଫିଚର୍ ଓ ସେବା ଇତ୍ୟାଦିକୁ ଉନ୍ନତ କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଇପାରେ।"</string>
+    <string name="system_setting_title" msgid="6864599341809463440">"ସିଷ୍ଟମ୍‌"</string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"ସିଷ୍ଟମ୍‌ ଅପ୍‌ଡେଟ୍"</string>
+    <string name="firmware_version" msgid="8491753744549309333">"Android ଭର୍ସନ୍‌"</string>
+    <string name="security_patch" msgid="4794276590178386903">"Android ସୁରକ୍ଷା ପାଚ୍‌ ସ୍ତର"</string>
+    <string name="model_info" msgid="4966408071657934452">"ମଡେଲ୍‌"</string>
+    <string name="baseband_version" msgid="2370088062235041897">"ବେସ୍‌ବ୍ୟାଣ୍ଡ ଭର୍ସନ୍‌"</string>
+    <string name="kernel_version" msgid="7327212934187011508">"କର୍ନେଲ୍‌ ଭର୍ସନ୍‌"</string>
+    <string name="build_number" msgid="3997326631001009102">"ନମ୍ୱ‍ର୍‌ ଗଠନ କରନ୍ତୁ"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ବ୍ଲୁଟୁଥ୍ ଠିକଣା"</string>
+    <string name="device_info_not_available" msgid="2095601973977376655">"ଉପଲବ୍ଧ ନାହିଁ"</string>
+    <string name="device_status_activity_title" msgid="4083567497305368200">"ସ୍ଥିତି"</string>
+    <string name="device_status" msgid="267298179806290920">"ସ୍ଥିତି"</string>
+    <string name="device_status_summary" product="tablet" msgid="600543254608862075">"ବ୍ୟାଟେରୀ, ନେଟ୍‌ୱର୍କର ସ୍ଥିତି ଓ ଅନ୍ୟାନ୍ୟ ସୂଚନା"</string>
+    <string name="device_status_summary" product="default" msgid="9130360324418117815">"ଫୋନ ନମ୍ୱର, ସିଗ୍ନାଲ ଆଦି"</string>
+    <string name="about_settings" msgid="4329457966672592345">"ପରିଚୟ"</string>
+    <string name="about_summary" msgid="5374623866267691206">"Android <xliff:g id="VERSION">%1$s</xliff:g>"</string>
+    <string name="about_settings_summary" msgid="7975072809083281401">"ଆଇନଗତ ସୂଚନା, ଷ୍ଟେଟସ୍, ସଫ୍ଟୱେର୍‌ ଭର୍ସନ୍‌ ଦେଖନ୍ତୁ"</string>
+    <string name="legal_information" msgid="1838443759229784762">"ଆଇନ ସୂଚନା"</string>
+    <string name="contributors_title" msgid="7698463793409916113">"ଅବଦାନକାରୀ"</string>
+    <string name="manual" msgid="4819839169843240804">"ମାନୁଆଲ୍‌"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"ରେଗୁଲେଟରୀ ଲେବଲ୍ସ"</string>
+    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"ସୁରକ୍ଷା ଓ ନିୟାମକ ପୁସ୍ତିକା"</string>
+    <string name="copyright_title" msgid="4220237202917417876">"କପୀରାଇଟ୍‌"</string>
+    <string name="license_title" msgid="936705938435249965">"ଲାଇସେନ୍ସ"</string>
+    <string name="terms_title" msgid="5201471373602628765">"ନିୟମ ଓ ସର୍ତ୍ତାବଳୀ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"ସିଷ୍ଟମ୍‍ WebView ଲାଇସେନ୍ସ"</string>
+    <string name="wallpaper_attributions" msgid="9201272150014500697">"ୱାଲପେପର୍‌"</string>
+    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ସ୍ୟାଟେଲାଇଟ୍‌ ଇମେଜେରୀ ପ୍ରଦାତା:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
+    <string name="settings_license_activity_title" msgid="8499293744313077709">"ତୃତୀୟ-ପକ୍ଷ ଲାଇସେନ୍ସ"</string>
+    <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"ଲାଇସେନ୍ସ ଲୋଡ୍‌ କରିବାରେ ସମସ୍ୟା ହୋଇଛି।"</string>
+    <string name="settings_license_activity_loading" msgid="6163263123009681841">"ଲୋଡ୍ କରୁଛି…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">ଆପଣ ଜଣେ ଡେଭେଲପର୍‍ ହେବାରେ ଆପଣ ବର୍ତ୍ତମାନ <xliff:g id="STEP_COUNT_1">%1$d</xliff:g>ଟି ଷ୍ଟେପ୍‍ ଦୂରରେ ଅଛନ୍ତି।</item>
+      <item quantity="one">ଆପଣ ଜଣେ ଡେଭେଲପର୍‍ ହେବାରେ ଆପଣ ବର୍ତ୍ତମାନ <xliff:g id="STEP_COUNT_0">%1$d</xliff:g>ଟି ଷ୍ଟେପ୍‍ ଦୂରରେ ଅଛନ୍ତି।</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"ବର୍ତ୍ତମାନ ଆପଣ ଜଣେ ଡେଭେଲପର୍‌ ଅଟନ୍ତି!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"ଆବଶ୍ୟକତା ନାହିଁ, ଆପଣ ଜଣେ ଡେଭେଲପର୍‍ ଅଟନ୍ତି।"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ଡେଭ୍‌ଲପର୍‌ମାନଙ୍କ ପାଇଁ ବିକଳ୍ପଗୁଡ଼ିକ"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ରିସେଟ୍‌ କରିବାର ବିକଳ୍ପମାନ"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ନେଟ୍‌ୱାର୍କ, ଆପ୍‌, କିମ୍ବା ଡିଭାଇସ୍‌ ରିସେଟ୍‍"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"ନେଟ୍‍ୱାର୍କ ରିସେଟ୍‍ କରନ୍ତୁ"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"ଏହା ସମସ୍ତ ନେଟ୍‍ୱାର୍କ ସେଟିଂକୁ ରିସେଟ୍‍ କରିବ, ଅନ୍ତର୍ଭୁକ୍ତ ଅଟେ:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"ୱାଇ-ଫାଇ"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"ମୋବାଇଲ୍‍ ଡାଟା"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ବ୍ଲୁଟୁଥ୍‍"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"ସମସ୍ତ ଗାଡି eSIM ଖାଲି କରିଦିଅନ୍ତୁ"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ଏହା ଆପଣଙ୍କ ସେବା ପ୍ଲାନ୍‍ ବାତିଲ୍‌ କରିବ ନାହିଁ।"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM ରିସେଟ୍‌ କରିପାରିବ ନାହିଁ"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"ନେଟ୍‍ୱାର୍କ ବାଛନ୍ତୁ"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ସେଟିଂ ରିସେଟ୍‍ କରନ୍ତୁ"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"ରିସେଟ୍‌ କରିବେ?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"ସବୁ ନେଟ୍‌ୱାର୍କ ସେଟିଂ ରିସେଟ୍‌ କରିବେ? ଏହାକୁ ଆପଣ ଆଉ ପୂର୍ବବତ୍‍ କରିପାରିବେ ନାହିଁ!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ସେଟିଂ ରିସେଟ୍‍ କରନ୍ତୁ"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"ନେଟ୍‌ୱାର୍କ ସେଟିଂ ରିସେଟ୍‌ କରିଦିଆଯାଇଛି"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ଆପ୍‌ ଅଗ୍ରାଧିକାରଗୁଡିକୁ ରିସେଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ଏହା ପାଇଁ ଏହା ଆପଣଙ୍କ ସମସ୍ତ ଅଗ୍ରାଧିକାରଗୁଡ଼ିକୁ ରିସେଟ୍‍ କରିବ:\n\n"<li>" ଅକ୍ଷମ କରାଯାଇଥିବା ଆପ୍ସ"</li>\n<li>" ଅକ୍ଷମ କରାଯାଇଥିବା ଆପ୍‍ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</li>\n<li>" କାର୍ଯ୍ୟ ପାଇଁ ଡିଫଲ୍ଟ ଆପ୍ଲିକେସନ୍‍"</li>\n<li>" ଆପ୍ସ ପାଇଁ ପୃଷ୍ଠଭୂମି ଡାଟା ପ୍ରତିବନ୍ଧଗୁଡ଼ିିକ"</li>\n<li>" ଯେକୌଣସି ଅନୁମତି ପ୍ରତିବନ୍ଧ"</li>\n\n"ଆପଣ କୌଣସି ଆପ୍‍ ଡାଟା ହରାଇବେ ନାହିଁ।"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ଆପ୍ସ ରିସେଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ଆପ୍‍ ଅଗ୍ରାଧିକାର ରିସେଟ୍‍ ହୋଇଛି"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"ସମସ୍ତ ଡାଟା ଲିଭାନ୍ତୁ (ଫ୍ୟାକ୍ଟୋରୀ ରିସେଟ୍‌)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ଏହା ଆପଣଙ୍କ ବାହାନର ମୁଖ୍ୟ ଭାଗରୁ ସମସ୍ତ ଡାଟା ଖାଲି କରିଦେବ, ଯେପରିକି:\n\n"<li>"ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟ"</li>\n<li>"ସିିିିଷ୍ଟମ୍‍ ଏବଂ ଆପ୍‍ ଡାଟା ଏବଂ ସେଟିଂସ୍‍"</li>\n<li>"ଡାଉନ୍‍‍ଲୋଡ୍‍ କରାଯାଇଥିବା ଆପ୍ସ"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"ଆପଣଙ୍କ ବର୍ତ୍ତମାନ ନିମ୍ନୋକ୍ତ ଆକାଉଣ୍ଟକୁ ସାଇନ୍ ଇନ୍ ହୋଇଛନ୍ତି:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ଏହି ବାହନରେ ଅନ୍ୟ ଉପଯୋଗକର୍ତ୍ତାମାନେ ଅଛନ୍ତି।"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"ବାହାନ ରିସେଟ୍‍ କରନ୍ତୁ"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ରିସେଟ୍‌ କରିବେ?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ନିଜର ସମସ୍ତ ବ୍ୟକ୍ତିଗତ ସୂଚନା ଏବଂ ଡାଉନ୍‌ଲୋଡ୍‌ କରିଥିବା ଆପ୍‌ଗୁଡ଼ିକୁ ଲିଭାଇ ଦେବେ? ଏହି କାମକୁ ଆପଣ ପୂର୍ବାବସ୍ଥାକୁ ଫେରାଇ ଆଣିପାରିବେ ନାହିଁ!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ସବୁକିଛି ଖାଲି କରିଦିଅନ୍ତୁ"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"ଲିଭାଉଛି"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"ଦୟାକରି ଅପେକ୍ଷା କରନ୍ତୁ..."</string>
+    <string name="date_and_time_settings_title" msgid="4058492663544475485">"ତାରିଖ ଓ ସମୟ"</string>
+    <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"ତାରିଖ ଓ ସମୟ ସେଟ କରନ୍ତୁ"</string>
+    <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ତାରିଖ, ସମୟ, ସମୟ ଅଞ୍ଚଳ, ଓ ଫର୍ମାଟ୍‌ ସେଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="date_time_auto" msgid="3570339569471779767">"ଅଟୋମେଟିକ୍ ତାରିଖ ଓ ସମୟ"</string>
+    <string name="date_time_auto_summary" msgid="3311706425095342759">"ନେଟ୍‌ୱର୍କ ପ୍ରଦତ୍ତ ସମୟ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+    <string name="zone_auto" msgid="3701878581920206160">"ସ୍ୱଚାଳିତ ସମୟ କ୍ଷେତ୍ର"</string>
+    <string name="zone_auto_summary" msgid="4345856882906981864">"ନେଟ୍‌ୱର୍କ ପ୍ରଦତ୍ତ ସମୟ କ୍ଷେତ୍ର ବ୍ୟବହାର କରନ୍ତୁ"</string>
+    <string name="date_time_24hour_title" msgid="3025576547136168692">"24‑ଘଣ୍ଟିଆ ଫର୍ମାଟ୍‌"</string>
+    <string name="date_time_24hour" msgid="1137618702556486913">"24-ଘଣ୍ଟିଆ ଫର୍ମାଟ ବ୍ୟବହାର କରନ୍ତୁ"</string>
+    <string name="date_time_set_time_title" msgid="5884883050656937853">"ସମୟ"</string>
+    <string name="date_time_set_time" msgid="6449555153906058248">"ସମୟ ସେଟ୍ କରନ୍ତୁ"</string>
+    <string name="date_time_set_timezone_title" msgid="3001779256157093425">"ଟାଇମ୍‌ ଜୋନ୍‌"</string>
+    <string name="date_time_set_timezone" msgid="4759353576185916944">"ସମୟ କ୍ଷେତ୍ର ବାଛନ୍ତୁ"</string>
+    <string name="date_time_set_date_title" msgid="6834785820357051138">"ତାରିଖ"</string>
+    <string name="date_time_set_date" msgid="2537494485643283230">"ତାରିଖ ସେଟ୍‍ କରନ୍ତୁ"</string>
+    <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"ବର୍ଣ୍ଣାନୁକ୍ରମିକ ସର୍ଟ୍ କରନ୍ତୁ"</string>
+    <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"ସମୟ କ୍ଷେତ୍ର ଦ୍ୱାରା କ୍ରମବଦ୍ଧ"</string>
+    <string name="date_picker_title" msgid="1533614225273770178">"ତାରିଖ"</string>
+    <string name="time_picker_title" msgid="7436045944320504639">"ସମୟ"</string>
+    <string name="user_admin" msgid="1535484812908584809">"ଆଡ୍‌ମିନ୍‌"</string>
+    <string name="signed_in_admin_user" msgid="1267225622818673274">"ଆଡ୍‍ମିନ୍‍ ଭାବରେ ସାଇନ୍‍ ଇନ୍‍ କରିଛନ୍ତି"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ସମସ୍ତ ଆଡ୍‌ମିନ୍‌ ଅନୁମତିଗୁଡିକ"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ଆଡ୍‍ମିନ୍‍ କରନ୍ତୁ"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ଉପଯୋଗକର୍ତ୍ତାଗଣ ଅନ୍ୟ ଆଡ୍‌ମିନ୍‌, ଏବଂ ଫ୍ୟାକ୍ଟେରୀ ରିସେଟ୍‌ ସିଷ୍ଟମ୍‌ ସହ, ଉପଯୋଗକର୍ତ୍ତାଗଣଙ୍କୁ ଡିଲିଟ୍‌ କରିପାରିବେ।"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ଏହି କାର୍ଯ୍ୟକୁ ଫେରାଇ ନେଇ ହେବ ନାହିଁ।"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"ହଁ, ଆଡ୍‍ମି‍ନ୍‍ କରନ୍ତୁ"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରନ୍ତୁ"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ଫୋନ୍ କଲ୍‌ କରନ୍ତୁ"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"କାର୍\'ର ମୋବାଇଲ୍ ଡାଟା ମାଧ୍ୟମରେ ମେସେଜିଂ"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"ନୂଆ ଆପ୍ସ ଇନ୍‌ଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ଆପ୍‌ଗୁଡ଼ିକ ଅନ୍‌ଇଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ୟୁଜର୍‍ଙ୍କୁ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"ନୂଆ ୟୁଜର୍‌"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"ନୂତନ ୟୁଜର୍‍ ଯୋଡ଼ିବେ?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ଜଣେ ନୂଆ ୟୁଜର୍‍ଙ୍କୁ ଯୋଡ଼ିବାବେଳେ, ସେହି ବ୍ୟକ୍ତି ତାଙ୍କ ସ୍ଥାନ ସେଟ୍‍ ଅପ୍‌ କରିବା ଆବଶ୍ୟକ କରନ୍ତି।"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ସମସ୍ତ ୟୁଜର୍‌ଙ୍କ ପାଇଁ ଯେକୌଣସି ୟୁଜର୍‌ ଆପ୍‌ ଅପଡେଟ୍‌ କରିପାରିବେ।"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"ଉପଯୋଗକର୍ତ୍ତା ସୀମାରେ ପହଞ୍ଚିଛି"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">ଆପଣ <xliff:g id="COUNT">%d</xliff:g> ଜଣ ପର୍ଯ୍ୟନ୍ତ ବ୍ୟବହାରକାରୀ ତିଆରି କରିହେବ।</item>
+      <item quantity="one">କେବଳ ଜଣେ ବ୍ୟବହାରକାରୀ ତିଆରି କରିହେବ।</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି ହୋଇପାରିଲା ନାହିଁ"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ଏହି ୟୁଜର୍‍ ଡିଲିଟ୍‍ କରିବେ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ସମସ୍ତ ଏପ୍ସ ଓ ଡାଟା ଡିଲିଟ୍‍ କରିଦିଆ ଯିବ।"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ଉପଯୋଗକର୍ତ୍ତା ଡିଲିଟ୍‍ କରିପାରିଲା ନାହିଁ।"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ଖାରଜ କରନ୍ତୁ"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ବିଗତ ୟୁଜର୍ ଡିଲିଟ୍‍ କରିବେ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ଏହି କାର୍‍ ପାଇଁ କେବଳ ବାକିରହିଥିବା ଉପଯୋଗକର୍ତ୍ତା ଡିଲିଟ୍‍ କରିବା ପରେ, ଜଣେ ନୂଆ ଆଡ୍‍ମିନ୍‍ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି ହେବ।"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ସମସ୍ତ ଡାଟା, ସେଟିଂସ, ଏବଂ ଆପ୍‍ ଏହି ଉପଯୋଗକର୍ତ୍ତା ସହିତ ସହଭାଗୀ ହୋଇଥିବ ତାହା ଡିଲିଟ୍‍ ହେବ। ଆପଣଙ୍କୁ ପୁଣି ଏକ ସିଷ୍ଟମ୍‍ ସେଟ୍‍ ଅପ୍‍ କରିବା ଆବଶ୍ୟକ ଅଟେ।"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"ନୂଆ ଆଡ୍‌ମିନ୍‌ ବାଛନ୍ତୁ"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"ଆପଣ ଅତିକମ୍‍ରେ ଜଣେ ଆଡ୍‌ମିନ୍‌ ଆବଶ୍ଯକ କରନ୍ତି। ଏହା ଡିଲିଟ୍‍ କରିବାକୁ, ପ୍ରଥମେ ଏକ ପ୍ରତ୍ୟାବର୍ତ୍ତନ ବାଛନ୍ତୁ।"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"ଆଡ୍‌ମିନ୍‌ ବାଛନ୍ତୁ"</string>
+    <string name="user_guest" msgid="3465399481257448601">"ଅତିଥି"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ଅତିଥି"</string>
+    <string name="user_switch" msgid="6544839750534690781">"ବଦଳାନ୍ତୁ"</string>
+    <string name="current_user_name" msgid="3813671533249316823">"ଆପଣ (%1$s)"</string>
+    <string name="user_name_label" msgid="3210832645046206845">"ନାମ"</string>
+    <string name="user_summary_not_set_up" msgid="1473688119241224145">"ସେଟ୍ ହୋଇନାହିଁ"</string>
+    <string name="edit_user_name_title" msgid="6890782937520262478">"ୟୁଜର୍‍ ନାମକୁ ଏଡିଟ୍ କରନ୍ତୁ"</string>
+    <string name="users_list_title" msgid="770764290290240909">"ୟୁଜର୍"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ପାଇଁ ଅନୁମତି ଅନୁମୋଦିତ ହୋଇଛି"</string>
+    <string name="accounts_settings_title" msgid="436190037084293471">"ଆକାଉଣ୍ଟ"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"ଆକାଉଣ୍ଟ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="no_accounts_added" msgid="5148163140691096055">"କୌଣସି ଆକାଉଣ୍ଟ ଯୋଡ଼ାଯାଇନାହିଁ"</string>
+    <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> ପାଇଁ ଆକାଉଣ୍ଟ"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ସ୍ୱଚାଳିତ ଭାବେ ଡାଟା ସିଙ୍କ ହେଉ"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ଆପ୍‌କୁ ସ୍ୱଚାଳିତ ଭାବେ ଡାଟା ସତେଜ କରିବାକୁ ଦିଅନ୍ତୁ"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ସ୍ୱଚାଳିତ-ସିଙ୍କ ଡାଟା ଚାଲୁ କରିବେ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ୱେବ୍‌ରେ ଆପଣ ନିଜ ଆକାଉଣ୍ଟରେ ଯାହାକିଛି ବି ପରିବର୍ତ୍ତନ କରିବେ, ତାହା ଅଟୋମେଟିକାଲୀ ଆପଣଙ୍କ ଡିଭାଇସ୍‌କୁ ଚାଲିଆସିବ।\n\nକେତେକ ଆକାଉଣ୍ଟ, ଫୋନ୍‌ରେ କରାଯାଇଥିବା ପରିବର୍ତ୍ତନକୁ ଅଟୋମେଟିକଲୀ ୱେବ୍‌କୁ ନେଇଯାଆନ୍ତି। ଗୋଟିଏ ଗୁଗଲ୍‌ ଆକାଉଣ୍ଟ, ଏହିପରି କାମ କରିଥାଏ।"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ସ୍ୱଚାଳିତ ଭାବେ ଡାଟା ସିଙ୍କ ହେବାକୁ ଅଫ୍‌ କରିବେ?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ଏହା ମୋବାଇଲ୍ ଡାଟା କମ୍ ବ୍ୟବହାର ହେବ, କିନ୍ତୁ ତାଜା ସୂଚନା ସଂଗ୍ରହ କରିବା ପାଇଁ ପ୍ରତ୍ୟେକ ଆକାଉଣ୍ଟକୁ ମାନୁଆଲୀ ସିଙ୍କ କରିବାକୁ ପଡ଼ିବ ଏବଂ ଆପଣ ଅପ୍‌ଡେଟ୍‌ ହେଲେ ଆପଣ ବିଜ୍ଞପ୍ତି ପ୍ରାପ୍ତ କରିବେ ନାହିଁ।"</string>
+    <string name="account_details_title" msgid="7529571432258448573">"ଆକାଉଣ୍ଟ ସୂଚନା"</string>
+    <string name="add_account_title" msgid="5988746086885210040">"ଆକାଉଣ୍ଟ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="add_an_account" msgid="1072285034300995091">"ଗୋଟିଏ ଆକାଉଣ୍ଟ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"ପ୍ରତିବନ୍ଧିତ ପ୍ରୋଫାଇଲ୍‌ଗୁଡ଼ିକ ଆକାଉଣ୍ଟ ଆଡ୍‌ କରିପାରିବ ନାହିଁ"</string>
+    <string name="remove_account_title" msgid="8840386525787836381">"ଆକାଉଣ୍ଟ କାଢ଼ିଦିଅନ୍ତୁ"</string>
+    <string name="really_remove_account_title" msgid="3555164432587924900">"ଆକାଉଣ୍ଟ କାଢ଼ିଦେବେ?"</string>
+    <string name="really_remove_account_message" msgid="4296769280849579900">"ଏହି ଆକାଉଣ୍ଟକୁ କାଢ଼ିଦେଲେ, ଡିଭାଇସ୍‌ରେ ଥିବା ସମସ୍ତ ମେସେଜ୍‌, ଯୋଗାଯୋଗ ଓ ଅନ୍ୟାନ୍ୟ ଡାଟା ଡିଲିଟ୍‌ ହୋଇଯିବ!"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"ଆକାଉଣ୍ଟ କାଢ଼ିହେଲା ନାହିଁ।"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"ଆକାଉଣ୍ଟ ସିଙ୍କ୍‍"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g>ଟି ମଧ୍ୟରୁ <xliff:g id="ID_1">%1$d</xliff:g>ଟି ଆଇଟମ୍ ପାଇଁ ସିଙ୍କ୍ ଚାଲୁ ଅଛି"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"ସମସ୍ତ ଆଇଟମ୍‌ଗୁଡ଼ିକ ପାଇଁ ସିଙ୍କ୍‌ ଚାଲୁ ଅଛି"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"ସବୁ ଆଇଟମ୍‌ ପାଇଁ ସିଙ୍କ୍‍ ବନ୍ଦ ହୋଇଛି"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"ସିଙ୍କ୍‌ ବନ୍ଦ ଅଛି"</string>
+    <string name="sync_error" msgid="6698021343089247914">"ସିଙ୍କ୍‌ରେ ତ୍ରୁଟି"</string>
+    <string name="last_synced" msgid="4745124489150101529">"ଶେଷଥର <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g> ରେ  ସିଙ୍କ୍‌ ହୋଇଥିଲା"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"ଏବେ ସିଙ୍କ୍‌ କରୁଛି…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"ବର୍ତ୍ତମାନ <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g> ରେ  ସିଙ୍କ୍‌ କରିବାକୁ ଟାପ୍‌ କରନ୍ତୁ"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ବର୍ତ୍ତମାନ ସିଙ୍କ କରନ୍ତୁ"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ସିଙ୍କ୍‌ କ୍ୟାନ୍ସଲ୍‌‌ କରନ୍ତୁ"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"ସମ୍ପ୍ରତି ସିଙ୍କ କରିବାରେ ସମସ୍ୟା ହେଉଛି। ଏହା ଖୁବ୍‌ ଶୀଘ୍ର ଫେରିବ।"</string>
+    <string name="security_settings_title" msgid="6955331714774709746">"ସୁରକ୍ଷା"</string>
+    <string name="security_settings_subtitle" msgid="2244635550239273229">"ସ୍କ୍ରୀନ୍‌ ଲକ୍‌"</string>
+    <string name="security_lock_none" msgid="1054645093754839638">"କିଛି ନାହିଁ"</string>
+    <string name="security_lock_pattern" msgid="1174352995619563104">"ପାଟର୍ନ"</string>
+    <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
+    <string name="security_lock_password" msgid="4420203740048322494">"ପାସୱର୍ଡ"</string>
+    <string name="lock_settings_picker_title" msgid="6590330165050361632">"ଏକ ଲକ୍‌ ପ୍ରକାର ବାଛନ୍ତୁ"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"ବିକଳ୍ପ ଲକ୍‍ କରନ୍ତୁ"</string>
+    <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"ଆପଣଙ୍କର ପାଟର୍ନ ଆଙ୍କନ୍ତୁ"</string>
+    <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"ନିଶ୍ଚିତ"</string>
+    <string name="lockpattern_restart_button_text" msgid="9355771277617537">"ପୁନଃଅଙ୍କନ"</string>
+    <string name="continue_button_text" msgid="5129979170426836641">"ଜାରି ରଖନ୍ତୁ"</string>
+    <string name="lockscreen_retry_button_text" msgid="5314212350698701242">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
+    <string name="lockscreen_skip_button_text" msgid="3755748786396198091">"ଛାଡ଼ିଦିଅନ୍ତୁ"</string>
+    <string name="set_screen_lock" msgid="5239317292691332780">"ଏକ ସ୍କ୍ରିନ୍‌ ଲକ୍‌ ସେଟ୍ କରନ୍ତୁ"</string>
+    <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"ନିଜ ପିନ୍‌ ନମ୍ବର ବାଛନ୍ତୁ"</string>
+    <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"ନିଜ ପାର୍ଟନ୍‌ ବାଛନ୍ତୁ"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"ଅନ୍‍ଲକ୍‍ ପାଇଁ ନିଜର ପାସ୍‌ୱର୍ଡ ବାଛନ୍ତୁ"</string>
+    <string name="current_screen_lock" msgid="637651611145979587">"ବର୍ତ୍ତମାନର ସ୍କ୍ରୀନ୍‌ ଲକ୍‌"</string>
+    <string name="choose_lock_pattern_message" msgid="6242765203541309524">"ସୁରକ୍ଷା ପାଇଁ ଗୋଟିଏ ପାଟର୍ନ ସେଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"ଖାଲି କରନ୍ତୁ"</string>
+    <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"କ୍ୟାନ୍ସଲ୍‍ କରନ୍ତୁ"</string>
+    <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"ଆପଣଙ୍କର ନୂଆ ଅନ୍‌ଲକ୍‌ ପାଟର୍ନ"</string>
+    <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"ଏକ ଅନଲକ ପାଟର୍ନ ଆଙ୍କନ୍ତୁ"</string>
+    <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"ହୋଇଯିବା ପରେ ଆଙ୍ଗୁଠି କାଢ଼ିଦିଅନ୍ତୁ"</string>
+    <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"ପାଟର୍ନ ରେକର୍ଡ ହେଲା"</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"ନିଶ୍ଚିତ କରିବାକୁ ପାଟର୍ନ ପୁନଃ ଅଙ୍କନ କରନ୍ତୁ"</string>
+    <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"ଅତିକମ୍‌ରେ 4ଟି ଡଟ୍ସ ସହ ସଂଯୋଗ କରନ୍ତୁ। ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
+    <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"ଭୁଲ ପାଟର୍ନ"</string>
+    <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"ଏକ ଅନ୍‌ଲକ୍‌ ପାଟର୍ନ କିପରି ଅଙ୍କାଯିବ"</string>
+    <string name="error_saving_lockpattern" msgid="2933512812768570130">"ପାଟର୍ନ ସେଭ୍‌ କରିବାରେ ତ୍ରୁଟି"</string>
+    <string name="okay" msgid="4589873324439764349">"ଓକେ"</string>
+    <string name="remove_screen_lock_title" msgid="1234382338764193387">"ସ୍କ୍ରୀନ ଲକ୍ ରିମୁଭ୍‍ କରିବେ କି?"</string>
+    <string name="remove_screen_lock_message" msgid="6675850371585564965">"ଏହା ଯେକୌଣସି ବ୍ୟକ୍ତି ଆପଣଙ୍କ ଆକାଉଣ୍ଟରେ ପ୍ରବେଶ ପାଇଁ ଅନୁମତି ଦେବ"</string>
+    <string name="lock_settings_enter_pin" msgid="1669172111244633904">"ନିଜର PIN ଲେଖନ୍ତୁ"</string>
+    <string name="lock_settings_enter_password" msgid="2636669926649496367">"ନିଜ ପାସ୍‌ୱର୍ଡ ଲେଖନ୍ତୁ"</string>
+    <string name="choose_lock_pin_message" msgid="2963792070267774417">"ସୁରକ୍ଷା ପାଇଁ, ଏକ PIN ସେଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"ନିଜ PIN ପୁଣି ପ୍ରବେଶ କରନ୍ତୁ"</string>
+    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PINରେ ଅତିକମ୍‌ରେ 4ଟିଅଙ୍କ ରହିବା ଦରକାର"</string>
+    <string name="lockpin_invalid_pin" msgid="2149191577096327424">"Pin ଅମାନ୍ୟ ଅଟେ, ଅତିକମରେ 4ଟି ସଂଖ୍ୟା ରହିବା ଆବଶ୍ୟକ।"</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PINଗୁଡିକ ମେଳ ଖାଉ ନାହିଁ"</string>
+    <string name="error_saving_lockpin" msgid="9011960139736000393">"PIN ସେଭ୍‌ କରିବାରେ ତ୍ରୁଟି"</string>
+    <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"ଭୁଲ PIN"</string>
+    <string name="lockscreen_wrong_password" msgid="5757087577162231825">"ଭୁଲ ପାସ୍‌ୱର୍ଡ"</string>
+    <string name="choose_lock_password_message" msgid="6124341145027370784">"ସୁରକ୍ଷା ପାଇଁ ଗୋଟିଏ ପାସ୍‌ୱର୍ଡ ସେଟ୍‌ କରନ୍ତୁ"</string>
+    <string name="confirm_your_password_header" msgid="7052891840366724938">"ପାସ୍‌ୱର୍ଡ ପୁନଃ-ପ୍ରବେଶ କରନ୍ତୁ"</string>
+    <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"ପାସ୍‌ୱର୍ଡ ମେଳ ଖାଉନାହିଁ"</string>
+    <string name="lockpassword_clear_label" msgid="6363680971025188064">"ଖାଲି କରନ୍ତୁ"</string>
+    <string name="lockpassword_cancel_label" msgid="5791237697404166450">"କ୍ୟାନ୍ସଲ୍‍ କରନ୍ତୁ"</string>
+    <string name="lockpassword_confirm_label" msgid="5918463281546146953">"ନିଶ୍ଚିତ"</string>
+    <string name="choose_lock_password_hints" msgid="3903696950202491593">"ଅତିକମ୍‌ରେ 4 ଅକ୍ଷର ରହିବା ଦରକାର"</string>
+    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"ଅତିକମ୍‌ରେ <xliff:g id="COUNT">%d</xliff:g> ଅକ୍ଷର ରହିବା ଦରକାର"</string>
+    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN ଅତିକମ୍‌ରେ <xliff:g id="COUNT">%d</xliff:g> ଅଙ୍କ ବିଶିଷ୍ଟ ହେବା ଦରକାର"</string>
+    <string name="lockpassword_password_too_long" msgid="7530214940279491291">"<xliff:g id="NUMBER">%d</xliff:g> ଅକ୍ଷରଠାରୁ କମ୍‌ ହେବା ଦରକାର"</string>
+    <string name="lockpassword_pin_too_long" msgid="62957683396974404">"<xliff:g id="NUMBER">%d</xliff:g> ଅଙ୍କରୁ କମ୍‌ ରହିବା ଦରକାର"</string>
+    <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"କେବଳ 0-9 ପର୍ଯ୍ୟନ୍ତ ସଂଖ୍ୟା ରହିବା ଦରକାର"</string>
+    <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"ଏକ ସାମ୍ପ୍ରତିକ ପିନ୍‌ର ବ୍ୟବହାରକୁ ଡିଭାଇସ୍‌ ଆଡ୍‌ମିନ୍‌ ଅନୁମତି ଦେବନାହିଁ"</string>
+    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"ସାଧାରଣ PINଗୁଡିକ ଆପଣଙ୍କ IT ଆଡମିନ୍‌ଙ୍କ ଦ୍ୱାରା ଅବରୋଧ କରିଦିଆଯାଇଛି। ଭିନ୍ନ PIN ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
+    <string name="lockpassword_illegal_character" msgid="1984970060523635618">"ଏହା ଗୋଟିଏ ଭୁଲ ଅକ୍ଷରକୁ ଯୋଡ଼ିପାରିବନାହିଁ"</string>
+    <string name="lockpassword_invalid_password" msgid="1690956113717418430">"ପାସ୍‍ୱର୍ଡ ଭୁଲ ଅଟେ, ଅତିକମ୍‌ରେ 4 ଅକ୍ଷର ରହିବା ଦରକାର।"</string>
+    <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
+      <item quantity="other">ଅତିକମରେ <xliff:g id="COUNT">%d</xliff:g>ଟି ଅକ୍ଷର ରହିବା ଦରକାର</item>
+      <item quantity="one">ଅତିକମରେ ୧ଟି ଅକ୍ଷର ରହିବା ଦରକାର</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_lowercase" formatted="false" msgid="2267487180744744833">
+      <item quantity="other">ଅତିକମ୍‌ରେ <xliff:g id="COUNT">%d</xliff:g> ଟି ଲୋୱର୍‌କେସ୍‌ ଅକ୍ଷର ରହିବା ଦରକାର</item>
+      <item quantity="one">ଅତିକମ୍‌ରେ 1ଟି ଲୋୱର୍‍କେସ୍ ଅକ୍ଷର ରହିବା ଦରକାର</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_uppercase" formatted="false" msgid="7999264563026517898">
+      <item quantity="other">ଅତିକମ୍‌ରେ <xliff:g id="COUNT">%d</xliff:g>ଟି ବଡ଼ ଅକ୍ଷର ଆବଶ୍ୟକ</item>
+      <item quantity="one"> ଅତିକମ୍‌ରେ 1ଟି ବଡ଼ ଅକ୍ଷର ଆବଶ୍ୟକ</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_numeric" formatted="false" msgid="7935079851855168646">
+      <item quantity="other">ଅତିକମ୍‌ରେ <xliff:g id="COUNT">%d</xliff:g>ଟି ସଂଖ୍ୟା ନିହାତି ରହିବା ଦରକାର</item>
+      <item quantity="one">ଅତିକମ୍‌ରେ 1ଟି ସଂଖ୍ୟା ନିହାତି ରହିବା ଦରକାର</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_symbols" formatted="false" msgid="3994046435150094132">
+      <item quantity="other">ଅତିକମ୍‌ରେ <xliff:g id="COUNT">%d</xliff:g> ଟି ବିଶେଷ ସଙ୍କେତ ରହିଥିବା ଜରୁରୀ</item>
+      <item quantity="one">ଅତିକମ୍‌ରେ 1 ବିଶେଷ ସଙ୍କେତ ରହିଥିବା ଜରୁରୀ</item>
+    </plurals>
+    <plurals name="lockpassword_password_requires_nonletter" formatted="false" msgid="6878486326748506524">
+      <item quantity="other">ଅତିକମ୍‌ରେ <xliff:g id="COUNT">%d</xliff:g>ଟି ବିଶେଷ ଅକ୍ଷର କିମ୍ୱା ସଂଖ୍ୟା ଆବଶ୍ୟକ</item>
+      <item quantity="one">ଅତିକମ୍‌ରେ 1ଟି ବିଶେଷ ଅକ୍ଷର କିମ୍ୱା ସଂଖ୍ୟା ଆବଶ୍ୟକ</item>
+    </plurals>
+    <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"ଏକ ସମ୍ପ୍ରତି ପାସ୍‌ୱର୍ଡ ବ୍ୟବହାର କରିବାକୁ ଡିଭାଇସ୍‌ ଆଡମିନ୍‌ ଅନୁମତି ଦିଅନ୍ତି ନାହିଁ"</string>
+    <string name="error_saving_password" msgid="8334882262622500658">"ପାସୱର୍ଡ ସେଭ୍‌ କରିବାରେ ତ୍ରୁଟି"</string>
+    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ଆପଣଙ୍କର ଆଇଟି ଆଡ୍‌ମିନ୍‌ ଦ୍ୱାରା ସାଧାରଣ ପାସ୍‌ୱର୍ଡଗୁଡ଼ିକୁ ରୋକିଦିଆଯାଇଛି। ଏକ ଭିନ୍ନ ପାସ୍‌ୱର୍ଡ ଦିଅନ୍ତୁ।"</string>
+    <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ସଂଖ୍ୟାର କ୍ରମବୃଦ୍ଧି, କ୍ରମହ୍ରାସ, କିମ୍ବା କ୍ରମ ଦୋହରାଇବାର ଅନୁମତି ନାହିଁ।"</string>
+    <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ସ୍କ୍ରୀନ୍‌ ଲକ୍‌ ବିକଳ୍ପମାନ"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ଦିନ ପୂର୍ବେ"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍‍‍‍ ଯୋଗ କରନ୍ତୁ"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ଟି ଡିଭାଇସ୍</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ଟିି ଡିିିଭାଇସ୍</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"ଏହା ସଂଯୋଗ ହେଲେ ଆପଣଙ୍କର <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ଏହି କାର୍‍ ଅନ୍‍ଲକ‍ କରିବ। ଯଦି କେହିଜଣେ ଆପଣଙ୍କର <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ନିଏ, ସେମାନେ ହୁଏତ ଏହି ଡିଭାଇସ୍‍ ଆକ୍ସେସ୍‍ କରିବାକୁ ସକ୍ଷମ ହୋଇପାରନ୍ତି"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"ନିଶ୍ଚିତ କରନ୍ତୁ"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍ କାଢ଼ିଦିଅନ୍ତୁ"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"ହୋଇଗଲା"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"ଏକ ବିଶ୍ବସ୍ତ ଡିଭାଇସ୍ ସେଟ୍‍ ଅପ୍ କରିବାକୁ ସହଯୋଗୀ ଆପ୍ ବ୍ୟବହାର କରନ୍ତୁ। ଥରେ ସେଟ୍‍ ଅପ୍ ହେଲେ, ଗାଡ଼ି ଆପଣଙ୍କର ଫୋନ୍‍କୁ ଚିହ୍ନଟ କଲେ ଆପଣ ଆପଣଙ୍କର ଉପଯୋଗକର୍ତ୍ତା ପ୍ରୋଫାଇଲ୍ ଅନ୍‍ଲକ୍ କରିବାକୁ ସକ୍ଷମ ହେବେ"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ଆପଣଙ୍କର ଫୋନ୍‍‍ରେ ସହଯୋଗୀ ଆପ୍ ଡାଉନ୍‍ଲୋଡ୍ କରନ୍ତୁ"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. ଡିଭାଇସ୍ ପେୟାର୍ କରିବାକୁ ଆପଣଙ୍କ ଫୋନ୍‍‍ରୁ <xliff:g id="CAR_NAME">%1$s</xliff:g> ବାଛନ୍ତୁ"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"ସ୍ମାର୍ଟ ଲକ୍ ଏହି ଡିଭାଇସ୍‍ର ସୁରକ୍ଷା ବୈଶିଷ୍ଟ୍ୟ କରିପାରିବ ନାହିଁ। ଆପଣଙ୍କର କାର୍‍‍ର ସୁରକ୍ଷାରେ ସାହାଯ୍ୟ କରିବାକୁ, ଚିହ୍ନା ଡିଭାଇସ୍ କେବଳ ଆପଣ ପୂର୍ବରୁ ଆପଣଙ୍କ କାର୍ ଥରେ ଅନ୍‍ଲକ୍ କରିଥିଲେ ହିଁ ଆପଣଙ୍କ କାର୍‍କୁ ଅନ୍‍ଲକ୍ କରି ରଖିବ। ଅନ୍ୟ କେହି ଜଣେ ମଧ୍ୟ ତାହା ବ୍ୟବହାର କରୁଥିଲେ ମଧ୍ୟ, ଆପଣଙ୍କର ଚିହ୍ନା ଡିଭାଇସ୍ ନିକଟସ୍ଥ ରହିଥିଲେ ଆପଣଙ୍କ କାର୍‍ ଅନ୍‍ଲକ୍ କରି ରଖିପାରିବ।"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"ଏକ ଚିହ୍ନା ଡିଭାଇସ୍‌‍ଭାବରେ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ଯୋଗ କରନ୍ତୁ"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ଏକ ବିଶ୍ବସ୍ତ ଡିଭାଇସ୍‍ଭାବରେ ସଫଳତାପୂର୍ବକ ଯୋଗ କରାଯାଇଛି"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ନାମାଙ୍କନ ହୋଇପାରିଲା ନାହିଁ"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ଏହାପରେ ଏକ ବିଶ୍ୱସନୀୟ ଡିଭାଇସ୍‌ ଯୋଗ କରିବାରେ ଆପଣଙ୍କୁ ପ୍ରମାଣିକରଣର ଉପାୟ ସେଟ୍‍ କରିବାକୁ ହେବ। ଯଦି ଆପଣଙ୍କ ପାଖରେ ବିଶ୍ୱସନୀୟ ଡିଭାଇସ୍‌ ନାହିଁ, ତେବେ ଆପଣଙ୍କ ପ୍ରୋଫାଇଲ୍‌ ଆକ୍ସେସ୍‌ କରିବାକୁ ପ୍ରମାଣିକରଣ ଆବଶ୍ୟକ ହେବ।"</string>
+    <string name="forget" msgid="3971143908183848527">"ଭୁଲିଗଲେ"</string>
+    <string name="connect" msgid="5861699594602380150">"ସଂଯୋଗ କରନ୍ତୁ"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ବିଛିନ୍ନ କରନ୍ତୁ"</string>
+    <string name="delete_button" msgid="5840500432614610850">"ଡିଲିଟ୍‍"</string>
+    <string name="remove_button" msgid="6664656962868194178">"କାଢ଼ିଦିଅନ୍ତୁ"</string>
+    <string name="cancel" msgid="750286395700355455">"କ୍ୟାନ୍ସଲ୍‍ କରନ୍ତୁ"</string>
+    <string name="backspace_key" msgid="1545590866688979099">"Backspace କୀ"</string>
+    <string name="enter_key" msgid="2121394305541579468">"କୀ ଦବାନ୍ତୁ"</string>
+    <string name="exit_retail_button_text" msgid="6093240315583384473">"ଡେମୋରୁ ବାହାରିଯା’ନ୍ତୁ"</string>
+    <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ଡେମୋ ମୋଡ୍‌ରୁ ବାହାରିଯା’ନ୍ତୁ"</string>
+    <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ଏହା ଡେମୋ ଆକାଉଣ୍ଟକୁ ଡିଲିଟ୍ କରିଦେବ ଏବଂ ଫ୍ୟାକ୍ଟୋରୀ ଡାଟା ସିଷ୍ଟମ୍‍କୁ ରିସେଟ୍ କରିବ। ସମସ୍ତ ୟୁଜର୍ ଡାଟା ନଷ୍ଟ ହୋ‍ଇଯିବ।"</string>
+    <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ଡେମୋରୁ ବାହାରିଯା’ନ୍ତୁ"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ଖାରଜ କରନ୍ତୁ"</string>
+    <string name="restricted_while_driving" msgid="6217369093121968299">"ଗାଡ଼ି ଚଲାଇବାବେଳେ ଫିଚର୍ ଉପଲବ୍ଧ ହେବନାହିଁ।"</string>
+    <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ଗାଡ଼ି ଚଲାଇବା ବେଳେ ୟୁଜର୍ ଯୋଡ଼ିପାରିବେ ନାହିଁ।"</string>
+</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 3a2d03f..8b25c95 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ਡਿਮ ਸਕ੍ਰੀਨ, ਟੱਚਸਕ੍ਰੀਨ, ਬੈਟਰੀ"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ਡਿਮ ਸਕ੍ਰੀਨ, ਰਾਤ ਵਾਲਾ ਮੋਡ, ਭਾਹ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"ਰਾਤ ਵਾਲਾ ਮੋਡ"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"ਮੋਬਾਈਲ ਡਾਟਾ"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਵਰਤ ਕੇ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"ਕੀ ਮੋਬਾਈਲ ਡਾਟਾ ਬੰਦ ਕਰਨਾ ਹੈ?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ਡਾਟਾ ਵਰਤੋਂ"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ਡਾਟਾ ਚਿਤਾਵਨੀ ਅਤੇ ਸੀਮਾ"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ਐਪ ਦੀ ਡਾਟਾ ਵਰਤੋਂ ਦਾ ਚੱਕਰ"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ਡਾਟਾ ਚਿਤਾਵਨੀ ਸੈੱਟ ਕਰੋ"</string>
+    <string name="data_warning" msgid="116776633806885370">"ਡਾਟਾ ਚਿਤਾਵਨੀ"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ਡਾਟਾ ਸੀਮਾ ਸੈੱਟ ਕਰੋ"</string>
+    <string name="data_limit" msgid="227338836292511425">"ਡਾਟਾ ਸੀਮਾ"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ਡਾਟਾ ਵਰਤੋਂ ਸੀਮਤ ਕਰਨਾ"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ਤੁਹਾਡੇ ਵਾਹਨ ਦੀ ਸਕ੍ਰੀਨ ਤੋਂ ਤੁਹਾਡੇ ਵੱਲੋਂ ਸੈੱਟ ਕੀਤੀ ਮੋਬਾਈਲ ਡਾਟੇ ਦੀ ਸੀਮਾ ਉੱਤੇ ਪਹੁੰਚਣ \'ਤੇ ਮੋਬਾਈਲ ਡਾਟਾ ਬੰਦ ਕਰ ਦੇਵੇਗਾ।\n\nਕਿਉਂਕਿ ਡਾਟਾ ਵਰਤੋਂ ਤੁਹਾਡੇ ਸਕ੍ਰੀਨ ਵੱਲੋਂ ਮਾਪੀ ਜਾਂਦੀ ਹੈ ਅਤੇ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡਾ ਕੈਰੀਅਰ ਵਰਤੋਂ ਦਾ ਹਿਸਾਬ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਲਗਾਵੇ, ਇਸ ਕਰਕੇ ਕੋਈ ਕੰਜੂਸੀਕਾਰੀ ਸੀਮਾ ਸੈੱਟ ਕਰਨ ਬਾਰੇ ਵਿਚਾਰ ਕਰੋ।"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"ਵਾਈ-ਫਾਈ"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"ਵਾਇਰਲੈਸ ਪਹੁੰਚ ਬਿੰਦੂਆਂ ਦਾ ਸੈੱਟਅੱਪ ਅਤੇ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
     <string name="wifi_starting" msgid="473253087503153167">"ਵਾਈ‑ਫਾਈ ਚਾਲੂ ਹੋ ਰਿਹਾ ਹੈ…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"ਵਾਈ‑ਫਾਈ ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"ਵਾਈ-ਫਾਈ ਦੀ ਸੂਚੀ ਲੋਡ ਹੋ ਰਹੀ ਹੈ"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"ਵਾਈ-ਫਾਈ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"ਨੈੱਟਵਰਕ ਛੱਡਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ਨੈੱਟਵਰਕ ਸ਼ਾਮਲ ਕਰੋ"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"ਵਾਈ-ਫਾਈ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"ਪਾਸਵਰਡ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"ਪਾਸਵਰਡ ਦਿਖਾਓ"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ਨੈੱਟਵਰਕ ਦਾ ਨਾਮ"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID ਦਾਖਲ ਕਰੋ"</string>
     <string name="wifi_security" msgid="158358046038876532">"ਸੁਰੱਖਿਆ"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"ਸਿਗਨਲ ਦੀ ਤੀਬਰਤਾ"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"ਸਿਗਨਲ ਦੀ ਤੀਬਰਤਾ"</string>
     <string name="wifi_status" msgid="5688013206066543952">"ਸਥਿਤੀ"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"ਲਿੰਕ ਸਪੀਡ"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"ਬਾਰੰਬਾਰਤਾ"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP ਪਤਾ"</string>
+    <string name="show_password" msgid="2074628020371139240">"ਪਾਸਵਰਡ ਦਿਖਾਓ"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"ਨੈੱਟਵਰਕ ਦਾ ਨਾਮ ਦਾਖਲ ਕਰੋ"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"ਪਾਸਵਰਡ ਦਾਖਲ ਕਰੋ"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ਕਮਜ਼ੋਰ"</item>
-    <item msgid="2032262610626057081">"ਠੀਕ-ਠਾਕ"</item>
-    <item msgid="3859756017461098953">"ਵਧੀਆ"</item>
-    <item msgid="1521103743353335724">"ਸ਼ਾਨਦਾਰ"</item>
+    <item msgid="7683058295076342057">"ਕਮਜ਼ੋਰ"</item>
+    <item msgid="1639222824821660744">"ਠੀਕ-ਠਾਕ"</item>
+    <item msgid="1838705897358163300">"ਵਧੀਆ"</item>
+    <item msgid="6067166649320533751">"ਸ਼ਾਨਦਾਰ"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"ਬਲੂਟੁੱਥ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"ਬਲੂਟੁੱਥ ਚਾਲੂ ਕਰੋ"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"ਬਲੂਟੁੱਥ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"ਬਲੂਟੁੱਥ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ਨੈੱਟਵਰਕ ਵੇਰਵੇ"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ਪਤਾ"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ਪਤਾ"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"ਸਬਨੈੱਟ ਮਾਸਕ"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ਪਤੇ"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"ਗੇਟਵੇ"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"ਵਾਈ‑ਫਾਈ ਤਰਜੀਹਾਂ"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਵਾਈ‑ਫਾਈ ਚਾਲੂ ਕਰੋ"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"ਘਰੇਲੂ ਨੈੱਟਵਰਕ ਵਰਗੇ ਵਧੀਆ ਰੱਖਿਅਤ ਨੈੱਟਵਰਕਾਂ ਨੇੜੇ ਹੋਣ \'ਤੇ ਵਾਈ-ਫਾਈ ਚਾਲੂ ਹੋਵੇਗਾ"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"ਅਣਉਪਲਬਧ ਕਿਉਂਕਿ ਟਿਕਾਣਾ ਬੰਦ ਹੈ। "<annotation id="link">"ਟਿਕਾਣਾ"</annotation>" ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"ਕੀ ਵਾਈ-ਫਾਈ ਸਕੈਨ ਚਾਲੂ ਕਰਨਾ ਹੈ?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ਚਾਲੂ ਕਰੋ"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"ਵਾਈ-ਫਾਈ ਸਕੈਨ ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਮੋਬਾਈਲ ਡਾਟਾ ਵਰਤੋ"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"ਵਾਈ‑ਫਾਈ ਕੋਲ ਕੋਈ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਾ ਹੋਣ \'ਤੇ ਮੋਬਾਈਲ ਡਾਟਾ ਵਰਤੋ। ਡਾਟਾ ਵਰਤੋਂ ਵਾਸਤੇ ਖਰਚੇ ਲਏ ਜਾ ਸਕਦੇ ਹਨ।"</string>
+    <string name="learn_more" msgid="8214605928933358604">"ਹੋਰ ਜਾਣੋ"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"ਬਲੂਟੁੱਥ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"ਕਨੈਕਸ਼ਨ ਵਿਵਸਥਿਤ ਕਰੋ, ਡੀਵਾਈਸ ਨਾਮ ਅਤੇ ਖੋਜਯੋਗਤਾ ਸੈੱਟ ਕਰੋ"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"ਕੰਪਿਊਟਰ"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ਹੈੱਡਸੈੱਟ"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ਫ਼ੋਨ"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ਚਿੱਤਰ"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"ਹੈੱਡਫ਼ੋਨ"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ਇਨਪੁੱਟ ਪੈਰੀਫੈਰਲ"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"ਬਲੂਟੁੱਥ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"ਜੋੜਾਬੱਧ ਕੀਤੇ ਡੀਵਾਈਸ"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"ਉਪਲਬਧ ਡੀਵਾਈਸ"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"ਕੋਈ ਜੋੜਾਬੱਧ ਕੀਤੇ ਡੀਵਾਈਸ ਨਹੀਂ ਹਨ"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"ਕੋਈ ਡੀਵਾਈਸ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"ਜੋੜਾਬੱਧ ਕੀਤਾ ਡੀਵਾਈਸ"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"ਨਾਮ"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"ਇਸ ਲਈ ਵਰਤੋ"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"ਬਲੂਟੁੱਥ ਡੀਵਾਈਸ ਦਾ ਨਾਮ ਬਦਲੋ"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"ਬੇਨਾਮ ਡੀਵਾਈਸ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"ਜੋੜਾਬੱਧ ਕੀਤੇ ਡੀਵਾਈਸ"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"ਨਵਾਂ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰੋ"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"ਜੋੜਾਬੱਧ ਕਰਨ ਲਈ ਬਲੂਟੁੱਥ ਚਾਲੂ ਹੋਵੇਗਾ"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"ਕੀ ਡੀਵਾਈਸ ਡਿਸਕਨੈਕਟ ਕਰਨਾ ਹੈ?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"ਤੁਹਾਡਾ ਵਾਹਨ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਤੋਂ ਡਿਸਕਨੈਕਟ ਹੋ ਜਾਵੇਗਾ।"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"ਵਾਹਨ ਦਾ ਬਲੂਟੁੱਥ ਪਤਾ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ਡੀਵਾਈਸ ਦਾ ਬਲੂਟੁੱਥ ਪਤਾ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"ਵਾਹਨ ਦਾ ਨਾਮ"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ਇਸ ਵਾਹਨ ਦਾ ਨਾਮ ਬਦਲੋ"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"ਡੀਵਾਈਸ ਦਾ ਨਾਮ ਬਦਲੋ"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"ਨਾਮ ਬਦਲੋ"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"ਉਪਲਬਧ ਡੀਵਾਈਸਾਂ"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"ਪ੍ਰੋਫਾਈਲਾਂ"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"ਬਲੂਟੁੱਥ ਜੋੜਾਬੱਧ ਕਰਨ ਦੀ ਬੇਨਤੀ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ਜੋੜਾਬੱਧ ਕਰੋ ਅਤੇ ਕਨੈਕਟ ਕਰੋ"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"ਬਲੂਟੁੱਥ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"ਬਲੂਟੁੱਥ ਜੋੜਾਬੱਧਕਰਨ ਕੋਡ"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"ਪਿੰਨ ਵਿੱਚ ਅੱਖਰ ਜਾਂ ਚਿੰਨ੍ਹ ਹਨ"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"ਜੋੜਾਬੱਧ ਕਰਨ ਦਾ ਕੋਡ ਟਾਈਪ ਕਰੋ ਫਿਰ \'ਵਾਪਸ ਜਾਓ\' ਜਾਂ \'ਦਾਖਲ ਕਰੋ\' ਨੂੰ ਦਬਾਓ"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"ਆਮ ਤੌਰ \'ਤੇ 0000 ਜਾਂ 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"ਜੋੜਾਬੱਧ ਕਰਨ ਦੀ ਬੇਨਤੀ"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨਾਲ ਜੋੜਾ ਬਣਾਉਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ਭਾਸ਼ਾਵਾਂ"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਇਨਪੁੱਟ"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"ਕੀ-ਬੋਰਡ"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"ਕੀ-ਬੋਰਡਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"ਲਿਖਤ ਤੋਂ ਬੋਲੀ ਆਊਟਪੁੱਟ"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ਤਰਜੀਹੀ ਇੰਜਣ"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ਮੌਜੂਦਾ ਇੰਜਣ"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"ਬੋਲਣ ਦੀ ਗਤੀ"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"ਪਿੱਚ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"ਰੀਸੈੱਟ ਕਰੋ"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ਧੁਨੀ"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"ਰਿੰਗ ਵੌਲਿਊਮ"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"ਨੈਵੀਗੇਸ਼ਨ ਵੌਲਿਊਮ"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"ਮੀਡੀਆ"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"ਸੰਗੀਤ ਅਤੇ ਵੀਡੀਓ ਲਈ ਵੌਲਿਊਮ ਸੈੱਟ ਕਰੋ"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"ਅਲਾਰਮ"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ਫ਼ੋਨ ਦੀ ਰਿੰਗਟੋਨ"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੂਚਨਾ ਧੁਨੀ"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਅਲਾਰਮ ਧੁਨੀ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ਐਪਾਂ ਅਤੇ ਸੂਚਨਾਵਾਂ"</string>
+    <string name="all_applications" msgid="7798210477486822168">"ਸਾਰੀਆਂ ਐਪਾਂ ਦਿਖਾਓ"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਐਪਾਂ"</string>
     <string name="applications_settings" msgid="794261395191035632">"ਐਪ ਜਾਣਕਾਰੀ"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ਜ਼ਬਰਦਸਤੀ ਬੰਦ ਕਰੋ"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"ਕੀ ਜ਼ਬਰਦਸਤੀ ਬੰਦ ਕਰਨਾ ਹੈ?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਐਪ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਇਹ ਠੀਕ ਤਰ੍ਹਾਂ ਕੰਮ ਨਾ ਕਰੇ।"</string>
     <string name="disable_text" msgid="4358165448648990820">"ਬੰਦ ਕਰੋ"</string>
     <string name="enable_text" msgid="1794971777861881238">"ਚਾਲੂ ਕਰੋ"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"ਅਣਸਥਾਪਤ ਕਰੋ"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ਜੇ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ Android ਅਤੇ ਹੋਰ ਐਪਾਂ ਉਸ ਤਰ੍ਹਾਂ ਕੰਮ ਨਾ ਕਰਨ ਜਿਵੇਂ ਇਹਨਾਂ ਤੋਂ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ਐਪ ਨੂੰ ਬੰਦ ਕਰੋ"</string>
     <string name="permissions_label" msgid="2701446753515612685">"ਇਜਾਜ਼ਤਾਂ"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ਵਰਜਨ: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ਕੋਈ ਇਜਾਜ਼ਤਾਂ ਨਹੀਂ ਦਿੱਤੀਆਂ ਗਈਆਂ"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ਕਿਸੇ ਇਜਾਜ਼ਤਾਂ ਦੀ ਬੇਨਤੀ ਨਹੀਂ ਕੀਤੀ ਗਈ"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ਡਾਟਾ ਵਰਤੋਂ"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ਐਪ ਡਾਟਾ ਵਰਤੋਂ"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ਜ਼ਬਰਦਸਤੀ ਬੰਦ ਕਰੋ"</string>
     <string name="computing_size" msgid="5791407621793083965">"ਗਣਨਾ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਵਧੀਕ ਇਜਾਜ਼ਤ</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਵਧੀਕ ਇਜਾਜ਼ਤਾਂ</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"\'ਅਸਿਸਟੈਂਟ\' ਅਤੇ ਵੌਇਸ ਇਨਪੁਟ"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"ਸਹਾਇਕ ਐਪ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ਸਕ੍ਰੀਨ ਤੋਂ ਲਿਖਤ ਵਰਤੋ"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"ਸਹਾਇਕ ਐਪ ਨੂੰ ਲਿਖਤ ਵਜੋਂ ਸਕ੍ਰੀਨ ਸਮੱਗਰੀਆਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦਿਓ"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ਸਕ੍ਰੀਨਸ਼ਾਟ ਵਰਤੋ"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"ਸਹਾਇਕ ਐਪ ਨੂੰ ਸਕ੍ਰੀਨ ਦੇ ਚਿੱਤਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦਿਓ"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"ਆਟੋਫਿਲ ਸੇਵਾ"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ਕੋਈ ਨਹੀਂ"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"ਚੁਣੀ ਗਈ"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"\'ਅਸਿਸਟੈਂਟ\' ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਸਣਯੋਗ ਜਾਂ ਐਪਾਂ ਵਿੱਚ ਪਹੁੰਚਯੋਗ ਜਾਣਕਾਰੀ ਸਮੇਤ ਤੁਹਾਡੇ ਸਿਸਟਮ \'ਤੇ ਵਰਤੋਂ ਵਿੱਚ ਐਪਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪੜ੍ਹ ਸਕੇਗੀ।"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਇਸ ਐਪ \'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹੋ&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ਐਪ ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਮੌਜੂਦ ਆਪਣੇ-ਆਪ ਭਰੀਆਂ ਜਾ ਸਕਣ ਵਾਲੀਆਂ ਥਾਂਵਾਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦੀ ਹੈ।"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"ਸੇਵਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"ਟਿਕਾਣਾ"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ਹਾਲੀਆ ਟਿਕਾਣਾ ਬੇਨਤੀਆਂ"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ਕੋਈ ਹਾਲੀਆ ਟਿਕਾਣਾ ਬੇਨਤੀਆਂ ਨਹੀਂ"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ਐਪ-ਪੱਧਰ ਇਜਾਜ਼ਤਾਂ"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"ਵਾਈ‑ਫਾਈ ਸਕੈਨਿੰਗ"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"ਵਾਈ-ਫਾਈ ਬੰਦ ਹੋਣ \'ਤੇ ਵੀ ਐਪਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਨੂੰ ਕਿਸੇ ਵੀ ਵੇਲੇ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕਾਂ ਲਈ ਸਕੈਨ ਕਰਨ ਦਿਓ। ਇਸਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟਿਕਾਣਾ-ਆਧਾਰਿਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਵਰਗੀਆਂ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"ਬਲੂਟੁੱਥ ਸਕੈਨਿੰਗ"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ਬਲੂਟੁੱਥ ਬੰਦ ਹੋਣ \'ਤੇ ਵੀ ਐਪਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਨੂੰ ਕਿਸੇ ਵੀ ਵੇਲੇ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਲਈ ਸਕੈਨ ਕਰਨ ਦਿਓ। ਇਸਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟਿਕਾਣਾ-ਆਧਾਰਿਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਵਰਗੀਆਂ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"ਸਿਸਟਮ"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"ਸਿਸਟਮ ਅੱਪਡੇਟ"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"ਸਿਸਟਮ ਅੱਪਡੇਟ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ਵਰਜਨ"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android ਸੁਰੱਖਿਆ ਪੈਚ ਪੱਧਰ"</string>
     <string name="model_info" msgid="4966408071657934452">"ਮਾਡਲ"</string>
     <string name="baseband_version" msgid="2370088062235041897">"ਬੇਸਬੈਂਡ ਵਰਜਨ"</string>
     <string name="kernel_version" msgid="7327212934187011508">"ਕਰਨਲ ਵਰਜਨ"</string>
     <string name="build_number" msgid="3997326631001009102">"ਬਿਲਡ ਨੰਬਰ"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ਬਲੂਟੁੱਥ ਪਤਾ"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"ਸਥਿਤੀ"</string>
     <string name="device_status" msgid="267298179806290920">"ਸਥਿਤੀ"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"ਕਾਪੀਰਾਈਟ"</string>
     <string name="license_title" msgid="936705938435249965">"ਲਾਇਸੰਸ"</string>
     <string name="terms_title" msgid="5201471373602628765">"ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"ਸਿਸਟਮ WebView ਲਾਇਸੰਸ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"ਸਿਸਟਮ WebView ਲਾਇਸੰਸ"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"ਵਾਲਪੇਪਰ"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ਸੈਟੇਲਾਈਟ ਇਮੇਜਰੀ ਪ੍ਰਦਾਨਕ:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"ਤੀਜੀ-ਧਿਰ ਦੇ ਲਾਇਸੰਸ"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"ਲਾਇਸੰਸ ਲੋਡ ਕਰਨ ਵਿੱਚ ਇੱਕ ਸਮੱਸਿਆ ਹੈ।"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">ਤੁਸੀਂ ਹੁਣ ਇੱਕ ਵਿਕਾਸਕਾਰ ਬਣਨ ਤੋਂ<xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ਕਦਮ ਦੂਰ ਹੋ।</item>
+      <item quantity="other">ਤੁਸੀਂ ਹੁਣ ਇੱਕ ਵਿਕਾਸਕਾਰ ਬਣਨ ਤੋਂ <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ਕਦਮ ਦੂਰ ਹੋ।</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"ਹੁਣ ਤੁਸੀਂ ਇੱਕ ਵਿਕਾਸਕਾਰ ਹੋ!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"ਕੋਈ ਲੋੜ ਨਹੀਂ, ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਵਿਕਾਸਕਾਰ ਹੋ।"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ਵਿਕਾਸਕਾਰ ਚੋਣਾਂ"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ਰੀਸੈੱਟ ਵਿਕਲਪ"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ਨੈੱਟਵਰਕ, ਐਪਾਂ ਜਾਂ ਡੀਵਾਈਸ ਰੀਸੈੱਟ"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"ਨੈੱਟਵਰਕ ਰੀਸੈੱਟ ਕਰੋ"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"ਇਹ  ਸਾਰੀਆਂ ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ ਰੀਸੈੱਟ ਕਰ ਦੇਵੇਗਾ, ਜਿਸ ਵਿੱਚ ਇਹ ਵੀ ਸ਼ਾਮਲ ਹਨ:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"ਵਾਈ-ਫਾਈ"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"ਮੋਬਾਈਲ ਡਾਟਾ"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"ਬਲੂਟੁੱਥ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"ਸਾਰੇ ਵਾਹਨ ਈ-ਸਿਮਾਂ ਨੂੰ ਮਿਟਾਓ"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ਇਸ ਨਾਲ ਤੁਹਾਡਾ ਸੇਵਾ ਪਲਾਨ ਰੱਦ ਨਹੀਂ ਹੋਵੇਗਾ।"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"ਈ-ਸਿਮ ਰੀਸੈੱਟ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"ਨੈੱਟਵਰਕ ਚੁਣੋ"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ਸੈਟਿੰਗਾਂ ਰੀਸੈੱਟ ਕਰੋ"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"ਕੀ ਰੀਸੈੱਟ ਕਰਨੀਆਂ ਹਨ?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"ਕੀ ਸਾਰੀਆਂ ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ ਰੀਸੈੱਟ ਕਰਨੀਆਂ ਹਨ? ਤੁਸੀਂ ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਅਣਕੀਤਾ ਨਹੀ ਕਰ ਸਕਦੇ!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ਸੈਟਿੰਗਾਂ ਰੀਸੈੱਟ ਕਰੋ"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ ਰੀਸੈੱਟ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ਐਪ ਤਰਜੀਹਾਂ ਰੀਸੈੱਟ ਕਰੋ"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ਇੰਝ ਕਰਨ ਨਾਲ ਇਹ ਇਹਨਾਂ ਲਈ ਸਾਰੀਆਂ ਤਰਜੀਹਾਂ ਰੀਸੈੱਟ ਕਰ ਦੇਵੇਗਾ:\n\n"<li>" ਬੰਦ ਕੀਤੀਆਂ ਐਪਾਂ"</li>\n<li>"ਬੰਦ ਕੀਤੀਆਂ ਐਪ ਸੂਚਨਾਵਾਂ"</li>\n<li>"ਕਾਰਵਾਈਆਂ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਐਪਲੀਕੇਸ਼ਨਾਂ"</li>\n<li>" ਐਪਾਂ ਲਈ ਬੈਕਗ੍ਰਾਊਂਡ ਡਾਟੇ ਸੰਬੰਧੀ ਪਾਬੰਦੀਆਂ"</li>\n<li>"ਕੋਈ ਵੀ ਇਜਾਜ਼ਤ ਸੰਬੰਧੀ ਪਾਬੰਦੀਆਂ"</li>\n\n"ਤੁਸੀਂ ਕੋਈ ਵੀ ਐਪ ਡਾਟਾ ਨਹੀਂ ਗੁਆਓਗੇ।"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ਐਪਾਂ ਰੀਸੈੱਟ ਕਰੋ"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ਐਪ ਤਰਜੀਹਾਂ ਰੀਸੈੱਟ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"ਸਭ ਡਾਟਾ ਮਿਟਾਓ (ਫੈਕਟਰੀ ਰੀਸੈੱਟ)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ਇਹ ਤੁਹਾਡੇ ਵਾਹਨ ਦੀ ਸਕ੍ਰੀਨ ਤੋਂ ਸਾਰਾ ਡਾਟਾ ਮਿਟਾ ਦੇਵੇਗਾ, ਇਹਨਾਂ ਸਮੇਤ:\n\n"<li>"ਤੁਹਾਡਾ Google ਖਾਤਾ"</li>\n<li>"ਸਿਸਟਮ ਅਤੇ ਐਪ ਡਾਟਾ ਅਤੇ ਸੈਟਿੰਗਾਂ"</li>\n<li>"ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਐਪਾਂ"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"ਤੁਸੀਂ ਇਸ ਵੇਲੇ ਇਹਨਾਂ ਖਾਤਿਆਂ \'ਤੇ ਸਾਈਨ-ਇਨ ਹੋ:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ਇਸ ਵਾਹਨ \'ਤੇ ਹੋਰ ਵਰਤੋਂਕਾਰ ਮੌਜੂਦ ਨਹੀਂ ਹਨ।"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"ਵਾਹਨ ਰੀਸੈੱਟ ਕਰੋ"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"ਕੀ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ਕੀ ਆਪਣੀ ਸਾਰੀ ਨਿੱਜੀ ਜਾਣਕਾਰੀ ਅਤੇ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਐਪਾਂ ਮਿਟਾਉਣੀਆਂ ਹਨ? ਤੁਸੀਂ ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਅਣਕੀਤਾ ਨਹੀਂ ਕਰ ਸਕਦੇ!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ਸਭ ਕੁਝ ਮਿਟਾਓ"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"ਮਿਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ ਸੈੱਟ ਕਰੋ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ਤਾਰੀਖ, ਸਮਾਂ, ਸਮਾਂ ਖੇਤਰ ਅਤੇ ਵੰਨਗੀ ਸੈੱਟ ਕਰੋ"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"ਸਮਾਂ ਖੇਤਰ ਮੁਤਾਬਕ ਕ੍ਰਮ-ਬੱਧ ਕਰੋ"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"ਤਾਰੀਖ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"ਸਮਾਂ"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰੋ"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"ਵਰਤੋਂਕਾਰ ਨੂੰ ਮਿਟਾਓ"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ"</string>
-    <string name="user_guest" msgid="3465399481257448601">"ਮਹਿਮਾਨ"</string>
     <string name="user_admin" msgid="1535484812908584809">"ਪ੍ਰਸ਼ਾਸਕ"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ਪ੍ਰਸ਼ਾਸਕ ਵਜੋਂ ਸਾਈਨ ਇਨ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"ਸਾਰੀਆਂ ਪ੍ਰਸ਼ਾਸਕ ਇਜਾਜ਼ਤਾਂ"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"ਪ੍ਰਸ਼ਾਸਕ ਬਣਾਓ"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ਵਰਤੋਂਕਾਰ ਹੋਰ ਪ੍ਰਸ਼ਾਸਕਾਂ ਸਮੇਤ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਮਿਟਾ ਸਕੇਗਾ ਅਤੇ ਸਿਸਟਮ ਨੂੰ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਕਰ ਸਕੇਗਾ।"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ਇਹ ਕਾਰਵਾਈ ਪਲਟਾਉਣਯੋਗ ਨਹੀਂ ਹੈ।"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"ਹਾਂ, ਪ੍ਰਸ਼ਾਸਕ ਬਣਾਓ"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"ਨਵੇਂ ਵਰਤੋਂਕਾਰ ਬਣਾਓ"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ਫ਼ੋਨ ਕਾਲਾਂ ਕਰੋ"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"ਕਾਰ ਦੇ ਮੋਬਾਈਲ ਡਾਟੇ ਰਾਹੀਂ ਸੁਨੇਹਾ ਭੇਜਣਾ"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"ਨਵੀਆਂ ਐਪਾਂ ਸਥਾਪਤ ਕਰੋ"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ਐਪਾਂ ਅਣਸਥਾਪਤ ਕਰੋ"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰੀਏ?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ, ਤਾਂ ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਆਪਣੀ ਜਗ੍ਹਾ ਸੈੱਟਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਹੋਰ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਐਪਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਸਕਦਾ ਹੈ।"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਸੀਮਾ ਪੂਰੀ ਹੋਈ"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">ਤੁਸੀਂ <xliff:g id="COUNT">%d</xliff:g> ਵਰਤੋਂਕਾਰ ਬਣਾ ਸਕਦੇ ਹੋ।</item>
+      <item quantity="other">ਤੁਸੀਂ <xliff:g id="COUNT">%d</xliff:g> ਵਰਤੋਂਕਾਰ ਬਣਾ ਸਕਦੇ ਹੋ।</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣਾ ਅਸਫਲ ਰਿਹਾ"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਮਿਟਾਈਏ?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਮਿਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ਵਰਤੋਂਕਾਰ ਮਿਟਾਉਣਾ ਅਸਫਲ ਰਿਹਾ।"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ਖਾਰਜ ਕਰੋ"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ਪਿਛਲਾ ਵਰਤੋਂਕਾਰ ਮਿਟਾਈਏ?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ਇਸ ਕਾਰ ਦੇ ਇੱਕੋ ਬਚੇ ਹੋਏ ਵਰਤੋਂਕਾਰ ਨੂੰ ਮਿਟਾਉਣ ਤੋਂ ਬਾਅਦ, ਕੋਈ ਨਵਾਂ ਪ੍ਰਸ਼ਾਸਕ ਵਰਤੋਂਕਾਰ ਬਣਾਇਆ ਜਾਵੇਗਾ।"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ਇਸ ਵਰਤੋਂਕਾਰ ਨਾਲ ਸੰਬੰਧਿਤ ਸਾਰੇ ਡਾਟੇ, ਸੈਟਿੰਗਾਂ ਅਤੇ ਐਪਾਂ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਤੁਹਾਨੂੰ ਦੁਬਾਰਾ ਸਿਸਟਮ ਸੈੱਟਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"ਨਵਾਂ ਪ੍ਰਸ਼ਾਸਕ ਚੁਣੋ"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"ਤੁਹਾਨੂੰ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਪ੍ਰਸ਼ਾਸਕ ਦੀ ਲੋੜ ਹੈ। ਇਸ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਮਿਟਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਇਸਦੇ ਬਦਲੇ ਕੋਈ ਹੋਰ ਚੁਣੋ।"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"ਪ੍ਰਸ਼ਾਸਕ ਚੁਣੋ"</string>
+    <string name="user_guest" msgid="3465399481257448601">"ਮਹਿਮਾਨ"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ਮਹਿਮਾਨ"</string>
     <string name="user_switch" msgid="6544839750534690781">"ਅਦਲਾ-ਬਦਲੀ ਕਰੋ"</string>
     <string name="current_user_name" msgid="3813671533249316823">"ਤੁਸੀਂ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ਨਾਮ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਹੈ"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"ਵਰਤੋਂਕਾਰ ਨਾਮ ਦਾ ਸੰਪਾਦਨ ਕਰੋ"</string>
     <string name="users_list_title" msgid="770764290290240909">"ਵਰਤੋਂਕਾਰ"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ਨੂੰ ਇਜਾਜ਼ਤਾਂ ਦਿੱਤੀਆਂ ਗਈਆਂ"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"ਖਾਤੇ"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"ਵਰਤੋਂਕਾਰ"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"ਕੋਈ ਖਾਤੇ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤੇ ਗਏ"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> ਦੇ ਖਾਤੇ"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਡਾਟੇ ਦਾ ਸਮਕਾਲੀਕਰਨ ਕਰੋ"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ਐਪਾਂ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਡਾਟਾ ਰਿਫ੍ਰੈਸ਼ ਕਰਨ ਦਿਓ"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ਡਾਟੇ ਦਾ ਸਵੈ-ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਕਰੀਏ?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"ਤੁਸੀਂ ਵੈੱਬ ਤੇ ਆਪਣੇ ਖਾਤਿਆਂ ਵਿੱਚ ਜੋ ਕੋਈ ਵੀ ਤਬਦੀਲੀ ਕਰਦੇ ਹੋ, ਉਹ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਕਾਪੀ ਕੀਤੀ ਜਾਵੇਗੀ।\n\nਕੁਝ ਖਾਤੇ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਉਹ ਤਬਦੀਲੀ ਕਾਪੀ ਕਰ ਸਕਦੇ ਹਨ ਜੋ ਤੁਸੀਂ ਵੈੱਬ \'ਤੇ ਆਪਣੇ ਫ਼ੋਨ ਵਿੱਚ ਕਰਦੇ ਹੋ। ਇੱਕ Google ਖਾਤਾ ਇਸ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ।"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ਡਾਟੇ ਦਾ ਸਵੈ-ਸਮਕਾਲੀਕਰਨ ਬੰਦ ਕਰੀਏ?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ਇੰਝ ਕਰਨ ਨਾਲ ਡਾਟਾ ਬਚੇਗਾ, ਪਰ ਤੁਹਾਨੂੰ ਹਾਲੀਆ ਜਾਣਕਾਰੀ ਇਕੱਤਰ ਕਰਨ ਲਈ ਹਰੇਕ ਖਾਤੇ ਦਾ ਹੱਥੀਂ ਸਮਕਾਲੀਕਰਨ ਕਰਨਾ ਪਵੇਗਾ। ਅਤੇ ਅੱਪਡੇਟ ਹੋਣ \'ਤੇ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਮਿਲਣਗੀਆਂ।"</string>
     <string name="account_details_title" msgid="7529571432258448573">"ਖਾਤਾ ਜਾਣਕਾਰੀ"</string>
     <string name="add_account_title" msgid="5988746086885210040">"ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="add_an_account" msgid="1072285034300995091">"ਇੱਕ ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"ਖਾਤਾ ਹਟਾਓ"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"ਕੀ ਖਾਤਾ ਹਟਾਉਣਾ ਹੈ?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ਇਸ ਖਾਤੇ ਨੂੰ ਹਟਾਉਣ ਨਾਲ ਡੀਵਾਈਸ ਤੋਂ ਇਸਦੇ ਸਾਰੇ ਸੁਨੇਹੇ, ਸੰਪਰਕ ਅਤੇ ਹੋਰ ਡਾਟਾ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਇਸ ਬਦਲਾਅ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"ਕੀ ਇਹ ਵਰਤੋਂਕਾਰ ਹਟਾਉਣਾ ਹੈ?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਮਿਟਾ ਦਿੱਤੇ ਜਾਣਗੇ।"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"ਵਰਤੋਂਕਾਰ ਹਟਾਉਣਾ ਅਸਫਲ ਰਿਹਾ।"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"ਕੀ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨੀ ਹੈ?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"ਖਾਰਜ ਕਰੋ"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰੀਏ?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ, ਤਾਂ ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਆਪਣੀ ਜਗ੍ਹਾ ਸੈੱਟਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਹੋਰ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਐਪਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਸਕਦਾ ਹੈ।"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"ਖਾਤਾ ਹਟਾਉਣਾ ਅਸਫਲ ਰਿਹਾ।"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"ਖਾਤਾ ਸਮਕਾਲੀਕਰਨ"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> ਵਿੱਚੋਂ <xliff:g id="ID_1">%1$d</xliff:g> ਆਈਟਮਾਂ ਲਈ ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਹੈ"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਲਈ ਸਮਕਾਲੀਕਰਨ ਚਾਲੂ ਹੈ"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਲਈ ਸਮਕਾਲੀਕਰਨ ਬੰਦ ਹੈ"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"ਸਮਕਾਲੀਕਰਨ ਬੰਦ ਹੈ"</string>
+    <string name="sync_error" msgid="6698021343089247914">"ਸਿੰਕ ਅਸ਼ੁੱਧੀ"</string>
+    <string name="last_synced" msgid="4745124489150101529">"ਪਿਛਲਾ ਸਮਕਾਲੀਕਰਨ <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"ਹੁਣ ਸਮਕਾਲੀਕਰਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"ਹੁਣੇ ਸਮਕਾਲੀ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ਹੁਣ ਸਮਕਾਲੀਕਰਨ ਕਰੋ"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ਸਮਕਾਲੀਕਰਨ ਰੱਦ ਕਰੋ"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"ਇਸ ਵੇਲੇ ਸਮਕਾਲੀਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆਵਾਂ ਆ ਰਹੀਆਂ ਹਨ। ਇਹ ਜਲਦੀ ਹੀ ਠੀਕ ਹੋ ਜਾਣਗੀਆਂ।"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ਸੁਰੱਖਿਆ"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ਸਕ੍ਰੀਨ ਲਾਕ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ਕੋਈ ਨਹੀਂ"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"ਪਿੰਨ"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"ਪਾਸਵਰਡ"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"ਕੋਈ ਲਾਕ ਕਿਸਮ ਚੁਣੋ"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"ਸਕ੍ਰੀਨ ਲਾਕ ਦੇ ਵਿਕਲਪ"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"ਲਾਕ ਵਿਕਲਪ"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"ਆਪਣਾ ਪੈਟਰਨ ਦਾਖਲ ਕਰੋ"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"ਪੁਸ਼ਟੀ ਕਰੋ"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"ਮੁੜ-ਉਲੀਕੋ"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"ਕੋਈ ਸਕ੍ਰੀਨ ਲਾਕ ਸੈੱਟ ਕਰੋ"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"ਆਪਣਾ ਪਿੰਨ ਚੁਣੋ"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"ਆਪਣਾ ਪੈਟਰਨ ਚੁਣੋ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"ਆਪਣਾ ਪਾਸਵਰਡ ਚੁਣੋ"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"ਆਪਣਾ ਪਾਸਵਰਡ ਚੁਣੋ"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"ਮੌਜੂਦਾ ਸਕ੍ਰੀਨ ਲਾਕ"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"ਸੁਰੱਖਿਆ ਲਈ, ਕੋਈ ਪੈਟਰਨ ਸੈੱਟ ਕਰੋ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"ਕਲੀਅਰ ਕਰੋ"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ਆਮ ਪਾਸਵਰਡ ਤੁਹਾਡੇ IT ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤੇ ਗਏ ਹਨ। ਕੋਈ ਵੱਖਰਾ ਪਾਸਵਰਡ ਵਰਤੋ।"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ਅੰਕਾਂ ਦਾ ਵਧਦਾ ਕ੍ਰਮ, ਘਟਦਾ ਕ੍ਰਮ, ਜਾਂ ਦੁਹਰਾਈ ਗਈ ਲੜੀ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ਸਕ੍ਰੀਨ ਲਾਕ ਦੇ ਵਿਕਲਪ"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ਦਿਨ ਪਹਿਲਾਂ"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸਾਂ"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਡੀਵਾਈਸ</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਡੀਵਾਈਸਾਂ</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"ਤੁਹਾਡਾ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ਇਸ ਕਾਰ ਨੂੰ ਅਣਲਾਕ ਕਰ ਦੇਵੇਗਾ, ਜਦੋਂ ਇਹ ਕਨੈਕਟ ਕੀਤਾ ਹੋਇਆ ਹੋਵੇਗਾ। ਜੇਕਰ ਕੋਈ ਤੁਹਾਡਾ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ਲੈ ਲੈਂਦਾ ਹੈ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਉਹ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਪਹੁੰਚ ਕਰਨ ਦੇ ਯੋਗ ਹੋ ਜਾਵੇ।"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"ਪੁਸ਼ਟੀ ਕਰੋ"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਹਟਾਓ"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"ਹੋ ਗਿਆ"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"ਕਿਸੇ ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਸੰਬੰਧੀ ਐਪ ਵਰਤੋ। ਸੈੱਟਅੱਪ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਵਾਹਨ ਵੱਲੋਂ ਤੁਹਾਡੇ ਫ਼ੋਨ ਦਾ ਪਤਾ ਲਗਾਉਣ \'ਤੇ ਤੁਸੀਂ ਆਪਣੇ ਵਰਤੋਂਕਾਰ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਅਣਲਾਕ ਕਰ ਸਕੋਗੇ"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ਆਪਣੇ ਫ਼ੋਨ \'ਤੇ ਸੰਬੰਧੀ ਐਪ ਡਾਊਨਲੋਡ ਕਰੋ"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. ਡੀਵਾਈਸਾਂ ਨੂੰ ਜੋੜਾਬੱਧ ਕਰਨ ਲਈ ਆਪਣੇ ਫ਼ੋਨ \'ਤੇ <xliff:g id="CAR_NAME">%1$s</xliff:g> ਚੁਣੋ"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"ਸਮਾਰਟ ਲਾਕ ਇਸ ਡੀਵਾਈਸ ਦੀਆਂ ਸੁਰੱਖਿਆ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਪਤਾ ਨਹੀਂ ਲਗਾ ਸਕਦਾ। ਤੁਹਾਡੀ ਕਾਰ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਵਿੱਚ ਮਦਦ ਲਈ, ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਤੁਹਾਡੀ ਕਾਰ ਨੂੰ ਸਿਰਫ਼ ਤਾਂ ਹੀ ਅਣਲਾਕ ਰੱਖ ਸਕੇਗਾ, ਜੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਕਾਰ ਨੂੰ ਅਣਲਾਕ ਕੀਤਾ ਹੋਵੇ। ਤੁਹਾਡਾ ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਤੁਹਾਡੀ ਕਾਰ ਨਜ਼ਦੀਕ ਹੋਣ \'ਤੇ ਉਸਨੂੰ ਅਣਲਾਕ ਰੱਖ ਸਕਦਾ ਹੈ, ਭਾਵੇਂ ਡੀਵਾਈਸ ਨੂੰ ਕਿਸੇ ਹੋਰ ਨੇ ਫੜ੍ਹਿਆ ਹੋਵੇ।"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨੂੰ ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਵਜੋਂ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨੂੰ ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਵਜੋਂ ਸਫਲਤਾਪੂਰਵਕ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨੂੰ ਦਰਜ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅੱਗੇ ਤੁਹਾਨੂੰ ਪ੍ਰਮਾਣੀਕਰਨ ਵਿਧੀ ਸੈੱਟ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਤੁਹਾਡਾ ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਨਹੀਂ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਆਪਣੇ ਪ੍ਰੋਫ਼ਾਈਲ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਪ੍ਰਮਾਣੀਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।"</string>
     <string name="forget" msgid="3971143908183848527">"ਛੱਡੋ"</string>
+    <string name="connect" msgid="5861699594602380150">"ਕਨੈਕਟ ਕਰੋ"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
     <string name="delete_button" msgid="5840500432614610850">"ਮਿਟਾਓ"</string>
     <string name="remove_button" msgid="6664656962868194178">"ਹਟਾਓ"</string>
     <string name="cancel" msgid="750286395700355455">"ਰੱਦ ਕਰੋ"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ਡੈਮੋ ਮੋਡ ਤੋ ਬਾਹਰ ਜਾਓ"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ਇਹ ਡੈਮੋ ਖਾਤੇ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗਾ ਅਤੇ ਸਿਸਟਮ ਦਾ ਫੈਕਟਰੀ ਡਾਟਾ ਰੀਸੈੱਟ ਹੋ ਜਾਵੇਗਾ। ਸਾਰਾ ਵਰਤੋਂਕਾਰ ਡਾਟਾ ਗੁੰਮ ਹੋ ਜਾਵੇਗਾ।"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ਡੈਮੋ ਮੋਡ ਤੋ ਬਾਹਰ ਜਾਓ"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰੋ"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ਹੁਣੇ ਨਹੀਂ"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ਖਾਰਜ ਕਰੋ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ਗੱਡੀ ਚਲਾਉਣ ਵੇਲੇ ਵਿਸ਼ੇਸ਼ਤਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ਗੱਡੀ ਚਲਾਉਣ ਦੌਰਾਨ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 7a337e2..23230df 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"przyciemnij ekran, ekran dotykowy, bateria"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"przyciemnij ekran, noc, odcień"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Tryb nocny"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Sieć i internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Sieć komórkowa"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilna transmisja danych"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Korzystaj z danych przy użyciu sieci komórkowej"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Wyłączyć mobilną transmisję danych?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Użycie danych"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Dane i limit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cykl użycia danych w aplikacjach"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Ustaw próg ostrzegawczy"</string>
+    <string name="data_warning" msgid="116776633806885370">"Ostrzeżenie: użycie danych"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Ustaw limit danych"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limit danych"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ograniczanie użycia danych"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Po osiągnięciu ustawionego przez Ciebie limitu serwer pojazdu wyłączy mobilną transmisję danych.\n\nPonieważ transmisję danych mierzy serwer i może to robić inaczej niż operator, dobrze jest ustawić mniejszy limit."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Konfiguruj punkty dostępu sieci bezprzewodowej i zarządzaj nimi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Włączam Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wyłączam Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wczytuję listę sieci Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi wyłączone"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Nie udało się zapomnieć sieci"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Nie udało się połączyć z siecią"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj sieć"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi wyłączone"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Połącz"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Hasło"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Pokaż hasło"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nazwa sieci"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Wpisz identyfikator SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Zabezpieczenia"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Siła sygnału"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Siła sygnału"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Stan"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Szybkość łącza"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Częstotliwość"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Adres IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Pokaż hasło"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Wpisz nazwę sieci"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Wpisz hasło"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Słaba"</item>
-    <item msgid="2032262610626057081">"Dostateczna"</item>
-    <item msgid="3859756017461098953">"Dobra"</item>
-    <item msgid="1521103743353335724">"Doskonała"</item>
+    <item msgid="7683058295076342057">"Słaba"</item>
+    <item msgid="1639222824821660744">"Dostateczna"</item>
+    <item msgid="1838705897358163300">"Dobra"</item>
+    <item msgid="6067166649320533751">"Doskonała"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Włącz Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth wyłączony"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Szczegóły sieci"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Adres MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Adres IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Maska podsieci"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adresy IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Brama"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Ustawienia Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Włącz Wi-Fi automatycznie"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi włączy się w pobliżu zapisanych sieci wysokiej jakości, np. Twojej sieci domowej"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Niedostępne, bo lokalizacja jest wyłączona. Włącz "<annotation id="link">"ją"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Włączyć skanowanie Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Włącz"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Skanowanie Wi-Fi włączone"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automatycznie przełączaj na mobilną transmisję danych"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Używaj mobilnej transmisji danych, gdy sieć Wi-Fi nie ma dostępu do internetu. Mogą obowiązywać opłaty za użycie danych."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Więcej informacji"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Zarządzaj połączeniami, ustaw nazwę urządzenia i możliwość wykrycia"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Komputer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Zestaw słuchawkowy"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Obrazowanie"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Słuchawki"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Peryferyjne urządzenie wejściowe"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Sparowane urządzenia"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dostępne urządzenia"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Brak sparowanych urządzeń"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Brak dostępnych urządzeń"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Sparowane urządzenie"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nazwa"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Używaj do:"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Zmień nazwę urządzenia Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Urządzenie bez nazwy"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Sparowane urządzenia"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Sparuj nowe urządzenie"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth włączy się, by sparować urządzenia"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Rozłączyć urządzenie?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Pojazd odłączy się od urządzenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Adres Bluetooth pojazdu: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Adres Bluetooth urządzenia: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nazwa pojazdu"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Zmień nazwę tego pojazdu"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Zmień nazwę urządzenia"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Zmień nazwę"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dostępne urządzenia"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profile"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Prośba o sparowanie Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sparuj i połącz"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kod parowania Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Kod PIN zawiera litery lub symbole"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Wpisz kod parowania i naciśnij Return lub Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Zazwyczaj 0000 lub 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Prośba o sparowanie"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Dotknij, by sparować z: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Języki"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Języki i metody wprowadzania"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Klawiatura"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Zarządzaj klawiaturami"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Zamiana tekstu na mowę"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Preferowany mechanizm"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Używany mechanizm"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Szybkość mowy"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Ton"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Resetuj"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Dźwięk"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Głośność dzwonka"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Głośność nawigacji"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Multimedia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Ustaw głośność muzyki i filmów"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Dzwonek telefonu"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Domyślny dźwięk powiadomienia"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Domyślny dźwięk alarmu"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikacje i powiadomienia"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Pokaż wszystkie aplikacje"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplikacje domyślne"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacje o aplikacji"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Wymuś zatrzymanie"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Wymusić zatrzymanie?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Jeśli wymusisz zatrzymanie aplikacji, może ona zadziałać nieprawidłowo."</string>
     <string name="disable_text" msgid="4358165448648990820">"Wyłącz"</string>
     <string name="enable_text" msgid="1794971777861881238">"Włącz"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Odinstaluj"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Jeśli wyłączysz tę aplikację, Android i inne aplikacje mogą działać nieprawidłowo."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Wyłącz aplikację"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Uprawnienia"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Wersja %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Brak przyznanych uprawnień"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Brak próśb o przyznanie uprawnień"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Użycie danych"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Aplikacja – użycie danych"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Wymuś zatrzymanie"</string>
     <string name="computing_size" msgid="5791407621793083965">"Przetwarzam…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dodatkowe uprawnienia</item>
@@ -117,15 +168,39 @@
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dodatkowego uprawnienia</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dodatkowe uprawnienie</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asystent i rozpoznawanie mowy"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplikacja asystująca"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Używanie tekstu na ekranie"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Zezwól aplikacji asystującej na dostęp do tekstowej zawartości ekranu"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Używanie zrzutu ekranu"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Zezwól aplikacji asystującej na dostęp do obrazu ekranu"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Usługa autouzupełniania"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Brak"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Wybrana"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Asystent będzie mógł odczytywać informacje o aplikacjach używanych w systemie. Obejmuje to też informacje widoczne na ekranie i dostępne w aplikacjach."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Sprawdź, czy ta aplikacja jest zaufana&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Autouzupełnianie Google&gt;%1$s&lt;/xliff:g&gt; na podstawie zawartości ekranu określa, co można uzupełnić automatycznie."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Dodaj usługę"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lokalizacja"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Ostatnie prośby o lokalizację"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Brak ostatnich próśb o lokalizację"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Uprawnienia na poziomie aplikacji"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Skanowanie"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Usługi lokalizacyjne"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Skanowanie Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Zezwól na wyszukiwanie urządzeń w pobliżu przez aplikacje i usługi w dowolnym momencie, nawet gdy Wi-Fi jest wyłączone. Może to np. pomóc usprawnić działanie funkcji i usług opartych na lokalizacji."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Skanowanie Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Zezwól na wyszukiwanie urządzeń w pobliżu przez aplikacje i usługi w dowolnym momencie, nawet gdy Bluetooth jest wyłączony. Może to np. pomóc usprawnić działanie funkcji i usług opartych na lokalizacji."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Aktualizacje systemu"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizacje systemu"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Wersja Androida"</string>
     <string name="security_patch" msgid="4794276590178386903">"Stan aktualizacji zabezpieczeń Androida"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Wersja pasma podstawowego"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Wersja jądra"</string>
     <string name="build_number" msgid="3997326631001009102">"Numer kompilacji"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Adres Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Niedostępna"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Stan"</string>
     <string name="device_status" msgid="267298179806290920">"Stan"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"Prawa autorskie"</string>
     <string name="license_title" msgid="936705938435249965">"Licencja"</string>
     <string name="terms_title" msgid="5201471373602628765">"Warunki i zasady korzystania"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Systemowa licencja na WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licencje systemowe WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Tapety"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Dostawcy zdjęć satelitarnych:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licencje innych firm"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Wystąpił problem z wczytaniem licencji."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Ładuję…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="few">Od zostania programistą dzielą Cię już tylko <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> kroki.</item>
+      <item quantity="many">Od zostania programistą dzieli Cię już tylko <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> kroków.</item>
+      <item quantity="other">Od zostania programistą dzieli Cię już tylko <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> kroku.</item>
+      <item quantity="one">Od zostania programistą dzieli Cię już tylko <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> krok.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Jesteś teraz programistą."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"W porządku, jesteś już programistą."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opcje programisty"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Resetowanie opcji"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Resetowanie ustawień sieci, aplikacji lub urządzenia"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Zresetuj sieć"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Spowoduje to zresetowanie wszystkich ustawień sieci, w tym:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobilna transmisja danych"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Wykasuj dane wszystkich kart eSIM w pojeździe"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Nie anuluje to Twojego abonamentu."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Nie udało się zresetować kart eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Wybieranie sieci"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Zresetuj ustawienia"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Zresetować?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Zresetować wszystkie ustawienia sieci? Tego działania nie można cofnąć."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Zresetuj ustawienia"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Ustawienia sieci zostały zresetowane"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Resetuj ustawienia aplikacji"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Zresetuje to wszystkie ustawienia:\n\n"<li>"wyłączonych aplikacji,"</li>\n<li>"wyłączonych powiadomień z aplikacji,"</li>\n<li>"domyślnych aplikacji dla wybranych czynności,"</li>\n<li>"ograniczeń korzystania przez aplikacje z danych w tle,"</li>\n<li>"wszystkich ograniczeń dotyczących uprawnień."</li>\n\n"Nie stracisz żadnych danych aplikacji."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Resetuj aplikacje"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Ustawienia aplikacji zostały zresetowane"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Wykasuj wszystkie dane"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Zostaną usunięte wszystkie dane z radioodtwarzacza pojazdu, między innymi:\n\n"<li>"Twoje konto Google,"</li>\n<li>"dane i ustawienia aplikacji i systemu,"</li>\n<li>"pobrane aplikacje."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"W tej chwili używasz kont:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"W tym pojeździe są też zapisani inni użytkownicy."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Zresetuj pojazd"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Zresetować?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Wymazać wszystkie Twoje dane osobowe i pobrane aplikacje? Tego działania nie można cofnąć."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Wymaż wszystko"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Wymazuję"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Zaczekaj…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data i godzina"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Ustaw datę i godzinę"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Ustaw datę, godzinę, strefę czasową i formaty."</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sortuj według strefy czasowej"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Czas"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj użytkownika"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj konto"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Usuwanie użytkownika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nowy użytkownik"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gość"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Zalogowano jako administratora"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Wszystkie uprawnienia administratora"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Przyznaj uprawnienia administratora"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Użytkownik będzie mógł usuwać innych użytkowników (również administratorów) i przywracać ustawienia fabryczne systemu."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Tego działania nie można cofnąć."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Tak, przyznaj uprawnienia administratora"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Tworzenie nowych użytkowników"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Dzwonienie"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Wysyłanie SMS-ów przez sieć pojazdu"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalowanie nowych aplikacji"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Odinstalowywanie aplikacji"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodaj użytkownika"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nowy użytkownik"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Dodać nowego użytkownika?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Gdy dodasz nowego użytkownika, musi on skonfigurować swój profil."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Każdy użytkownik może aktualizować aplikacje wszystkich innych użytkowników."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Osiągnięto limit użytkowników"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="few">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> użytkowników.</item>
+      <item quantity="many">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> użytkowników.</item>
+      <item quantity="other">Możesz utworzyć maksymalnie <xliff:g id="COUNT">%d</xliff:g> użytkownika.</item>
+      <item quantity="one">Można utworzyć tylko jednego użytkownika.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Nowy użytkownik nie został utworzony"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Usunąć tego użytkownika?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Zostaną usunięte wszystkie aplikacje i dane."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Nie udało się usunąć użytkownika."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Zamknij"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Ponów"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Usunąć użytkownika?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Usunięcie ostatniego aktywnego użytkownika tego samochodu spowoduje utworzenie nowego administratora."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Zostaną usunięte wszystkie dane, ustawienia i aplikacje powiązane z tym użytkownikiem. Konieczne będzie ponowne skonfigurowanie systemu."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Wybierz nowego administratora"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Potrzebujesz co najmniej jednego administratora. Aby usunąć tego, najpierw wybierz jego następcę."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Wybierz administratora"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gość"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gość"</string>
     <string name="user_switch" msgid="6544839750534690781">"Przełącz"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Ty (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nazwa"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nieskonfigurowany"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Edytowanie nazwy użytkownika"</string>
     <string name="users_list_title" msgid="770764290290240909">"Użytkownicy"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Uprawnienia użytkownika %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Konta"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Użytkownik"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj konto"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nie dodano kont"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Konta użytkownika <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automatycznie synchronizuj dane"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Pozwól aplikacjom automatycznie odświeżać dane"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Włączyć autosynchronizację?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Wszystkie zmiany, które wprowadzisz na swoich kontach w internecie, zostaną automatycznie skopiowane na Twoje urządzenie.\n\nNiektóre konta mogą też automatycznie kopiować do wersji internetowej wszystkie zmiany, które wprowadzisz na telefonie. W ten sposób działa właśnie konto Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Wyłączyć autosynchronizację?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Pozwoli to przesyłać mniej danych, ale pobranie najnowszych informacji będzie wymagało ręcznej synchronizacji każdego konta. Nie będziesz też otrzymywać powiadomień o aktualizacjach."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informacje o koncie"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Dodaj konto"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Dodaj konto"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Usuń konto"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Usunąć konto?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Usunięcie tego konta spowoduje usunięcie z urządzenia wszystkich wiadomości, kontaktów i innych danych powiązanych z kontem."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Ta zmiana nie jest dozwolona przez administratora"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Usunąć tego użytkownika?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Wszystkie aplikacje i dane zostaną usunięte."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Nie udało się usunąć użytkownika."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Ponowić?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Zamknij"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Ponów"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodać nowego użytkownika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Gdy dodasz nowego użytkownika, musi on skonfigurować swój profil."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Każdy użytkownik może aktualizować aplikacje wszystkich innych użytkowników."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Nie udało się usunąć konta."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Synchronizacja konta"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Włącz synchronizację <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g> elementów"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Włącz synchronizację wszystkich elementów"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Wyłącz synchronizację wszystkich elementów"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synchronizacja jest wyłączona"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Błąd synchronizacji"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Ostatnia synchronizacja: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synchronizuję…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Dotknij, by zsynchronizować teraz <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synchronizuj teraz"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Anuluj synchronizację"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Podczas synchronizacji wystąpiły problemy. Zostanie ona wkrótce wznowiona."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Zabezpieczenia"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Blokada ekranu"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Brak"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Kod PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Hasło"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Wybierz rodzaj blokady"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opcje blokady ekranu"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opcje blokady"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Narysuj wzór"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Potwierdź"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Narysuj ponownie"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ustawianie blokady ekranu"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Ustaw kod PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Wybierz wzór"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Ustaw hasło"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Wybierz hasło"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Aktualna blokada ekranu"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Ze względów bezpieczeństwa ustaw wzór"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Wyczyść"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Popularne hasła zostały zablokowane przez administratora. Użyj innego hasła."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ciąg cyfr rosnących, malejących lub powtarzających się jest niedozwolony."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcje blokady ekranu"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dni temu"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Dodaj zaufane urządzenie"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Zaufane urządzenia"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> urządzenia</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> urządzeń</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> urządzenia</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> urządzenie</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> odblokuje ten samochód, gdy się z nim połączy. Jeśli <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> znajdzie się w niepowołanych rękach, taka osoba będzie mogła uzyskać dostęp do tego urządzenia."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potwierdź"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Usuń zaufane urządzenie"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"OK"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Skonfiguruj zaufane urządzenie w aplikacji towarzyszącej. Dzięki temu Twój profil użytkownika zostanie odblokowany, gdy tylko samochód wykryje Twój telefon."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Pobierz aplikację towarzyszącą na telefon"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Na telefonie wybierz <xliff:g id="CAR_NAME">%1$s</xliff:g>, by sparować urządzenia"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock nie może wykryć funkcji zabezpieczeń na tym urządzeniu. Aby chronić Twój samochód, zaufane urządzenie będzie zapobiegać automatycznemu zamknięciu pojazdu tylko wtedy, gdy wcześniej samodzielnie go otworzysz. Zaufane urządzenie zapobiega automatycznemu zamknięciu, gdy znajduje się w pobliżu samochodu, nawet jeśli urządzenie trzyma ktoś inny."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Dodaj urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> jako zaufane"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Dodano urządzenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> jako zaufane"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Nie udało się zarejestrować urządzenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Po dodaniu zaufanego urządzenia musisz wybrać metodę uwierzytelniania. Dzięki niej uzyskasz dostęp do swojego profilu, gdy akurat nie będziesz mieć zaufanego urządzenia przy sobie."</string>
     <string name="forget" msgid="3971143908183848527">"Zapomnij"</string>
+    <string name="connect" msgid="5861699594602380150">"Połącz"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Odłącz"</string>
     <string name="delete_button" msgid="5840500432614610850">"Usuń"</string>
     <string name="remove_button" msgid="6664656962868194178">"Usuń"</string>
     <string name="cancel" msgid="750286395700355455">"Anuluj"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Zamknij tryb demonstracyjny"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Spowoduje to usunięcie konta demonstracyjnego i przywrócenie danych fabrycznych systemu. Utracisz wszystkie swoje dane użytkownika."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Zamknij tryb demo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"dokończ konfigurację"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"nie teraz"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ZAMKNIJ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funkcja niedostępna podczas jazdy."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Nie można dodać użytkownika podczas jazdy."</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index c9af603..0b954b8 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"escurecer ecrã, ecrã tátil, bateria"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"escurecer ecrã, noite, tonalidade"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo noturno"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Rede móvel"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dados móveis"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Aceder aos dados através de rede móvel"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Pretende desativar os dados móveis?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Utilização de dados"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Limite e aviso de dados"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciclo de utilização de dados da aplic."</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Definir aviso de dados"</string>
+    <string name="data_warning" msgid="116776633806885370">"Aviso de dados"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Definir limite de dados"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limite de dados"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitação da utilização de dados"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"A unidade principal do seu veículo desativa os dados móveis quando alcança o limite definido.\n\nUma vez que a utilização de dados é medida pela unidade principal e o seu operador pode calcular a utilização de forma diferente, considere definir um limite de precaução."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configurar e gerir pontos de acesso sem fios"</string>
     <string name="wifi_starting" msgid="473253087503153167">"A ligar Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"A desligar Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"A carregar a lista de Wi‑Fi…"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi desativado"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Não foi possível esquecer a rede."</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Não foi possível estabelecer ligação à rede."</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Adicionar rede"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi desativado"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Ligar"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Palavra-passe"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar palavra-passe"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nome da rede"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Introduza o SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Segurança"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Intensidade do sinal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Intensidade do sinal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Estado"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Velocidade da ligação"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequência"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Endereço IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Mostrar palavra-passe"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Introduzir nome da rede"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Introduzir palavra-passe"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Fraca"</item>
-    <item msgid="2032262610626057081">"Razoável"</item>
-    <item msgid="3859756017461098953">"Boa"</item>
-    <item msgid="1521103743353335724">"Excelente"</item>
+    <item msgid="7683058295076342057">"Fraca"</item>
+    <item msgid="1639222824821660744">"Razoável"</item>
+    <item msgid="1838705897358163300">"Boa"</item>
+    <item msgid="6067166649320533751">"Excelente"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Ativar Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth desativado."</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalhes da rede"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Endereço MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Endereço IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Máscara de sub-rede"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Endereços IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferências de Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Ativar o Wi‑Fi automaticamente"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi é reativ. quando perto de redes de alta qual. guard., como a rede domést."</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Indisp. porque a localiz. está desativ. Ative a "<annotation id="link">"localização"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Pretende ativar a procura de Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Ativar"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Procura de Wi-Fi ativada"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Mude automaticamente para os dados móveis"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Utilize os dados móveis quando não tiver acesso à Internet via Wi-Fi. Podem aplicar-se custos de utilização de dados."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Saiba mais"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Gerir ligações, definir nome e deteção do dispositivo"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computador"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Auscultadores com microfone integrado"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telemóvel"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Dispositivo de imagem"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Auscultadores"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periférico de entrada"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Dispositivos sincronizados"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dispositivos disponíveis"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Sem dispositivos sincronizados"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nenhum dispositivo disponível"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Dispositivo sincronizado"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nome"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Utilizar para"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Altere o nome do disp. Bluetooth."</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Dispositivo sem nome"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositivos sincronizados"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Sincronizar novo dispositivo"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"O Bluetooth será ativado para a sincronização."</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Desassociar o dispositivo?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"O veículo irá desassociar-se do dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Endereço Bluetooth do veículo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Endereço Bluetooth do dispositivo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nome do veículo"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Mudar o nome deste veículo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Mudar o nome do dispositivo"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Mudar nome"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dispositivos disponíveis"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Perfis"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Pedido de sincronização de Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Sincronizar e ligar"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de sincronização Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"O PIN contém letras ou símbolos."</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Introduza o código de sincronização e, em seguida, prima Return ou Enter."</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Geralmente 0000 ou 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Pedido de sincronização"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Toque para sincronizar com o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Idiomas"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Idiomas e introdução"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Teclado"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Efetue a gestão dos teclados"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Saída de síntese de voz"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor preferido"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motor atual"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Taxa de voz"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tom"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Repor"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Som"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volume do toque"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volume da navegação"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Multimédia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Definir volume para música e vídeos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarme"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Toque do telemóvel"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Som de notificação predefinido"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Som de alarme predefinido"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplicações e notificações"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Mostrar todas as aplicações"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplicações predefinidas"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informações da aplicação"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Forçar paragem"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Pretende forçar a paragem?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Se forçar a paragem de uma aplicação, esta poderá apresentar um comportamento anormal."</string>
     <string name="disable_text" msgid="4358165448648990820">"Desativar"</string>
     <string name="enable_text" msgid="1794971777861881238">"Ativar"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Se desativar esta aplicação, o Android e outras aplicações podem deixar de funcionar corretamente."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desativar aplicação"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Autorizações"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versão: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nenhuma autorização concedida."</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nenhuma autorização solicitada."</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Utilização de dados"</string>
-    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Utiliz. dados da aplic."</string>
-    <string name="force_stop" msgid="2153183697014720520">"Forçar paragem"</string>
+    <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Utiliz. dados da app"</string>
     <string name="computing_size" msgid="5791407621793083965">"A calcular…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorizações adicionais.</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> autorização adicional.</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistente e entrada de texto por voz"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplicação de assistência"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Utilizar o texto do ecrã"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Permitir que a aplicação de assistência aceda ao conteúdo do ecrã como texto"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Utilizar a captura de ecrã"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Permitir que a aplicação de assistência aceda a uma imagem do ecrã"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Serviço de preenchimento automático"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Nenhuma"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Selecionada"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"O assistente pode ler informações sobre aplicações utilizadas no seu sistema, incluindo informações visíveis no ecrã ou acessíveis nas aplicações."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Certifique-se de que confia nesta aplicação&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=O Preenchimento automático do Google&gt;%1$s&lt;/xliff:g&gt; utiliza o que está no ecrã para determinar o que pode ser preenchido automaticamente."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Adicionar serviço"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Localização"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Pedidos de localização recentes"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Sem pedidos de localização recentes."</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorizações de nível de aplicação"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Procura"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Serviços de localização"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Procurar por Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Permita que as aplicações e os serviços procurem redes Wi‑Fi em qualquer altura, mesmo quando o Wi-Fi estiver desativado. Isto pode ser utilizado, por exemplo, para melhorar as funcionalidades e os serviços baseados na localização."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Procurar por Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permita que as aplicações e os serviços procurem dispositivos próximos em qualquer altura, mesmo quando o Bluetooth estiver desativado. Isto pode ser utilizado para, p. ex., melhorar as funcionalidades e os serviços baseados na localização."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Atualizações do sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Atualizações do sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versão do Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nível do patch de segurança do Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modelo"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versão da banda de base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versão do kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Número de compilação"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Endereço Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Não disponível"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Estado"</string>
     <string name="device_status" msgid="267298179806290920">"Estado"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Direitos de autor"</string>
     <string name="license_title" msgid="936705938435249965">"Licença"</string>
     <string name="terms_title" msgid="5201471373602628765">"Termos de Utilização"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licença WebView do sistema"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licenças WebView do sistema"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Imagens de fundo"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Fornecedores de imagens de satélite:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licenças de terceiros"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Ocorreu um problema ao carregar as licenças."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"A carregar…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Está agora a <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> passos de se tornar um programador.</item>
+      <item quantity="one">Está agora a <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> passo de se tornar um programador.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Agora é um programador!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Não é necessário, já é um programador."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opções de programador"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opções de reposição"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Reposição da rede, de aplicações ou do dispositivo"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Repor rede"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Esta ação repõe todas as definições de rede, incluindo:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Dados móveis"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Apagar todos os eSIMs do veículo"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Esta opção não cancela o seu plano de serviço."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Não é possível repor os eSIMs"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Selecionar rede"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Repor definições"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Pretende repor?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Pretende repor todas as definições de rede? Não é possível anular esta ação."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Repor definições"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"As definições de rede foram repostas."</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Repor preferências das aplicações"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Esta ação irá repor todas as preferências de:\n\n"<li>"Aplicações desativadas"</li>\n<li>"Notificações de aplicações desativadas"</li>\n<li>"Aplicações predefinidas para ações"</li>\n<li>"Restrições de dados de segundo plano para aplicações"</li>\n<li>"Todas as restrições de autorização"</li>\n\n"Não irá perder quaisquer dados das aplicações."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Repor aplicações"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"As preferências das aplicações foram repostas."</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Apagar todos os dados (repor dados de fábrica)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Esta ação irá apagar todos os dados da unidade principal do veículo, incluindo:\n\n"<li>"A Conta Google"</li>\n<li>"Dados e definições do sistema e da aplicação"</li>\n<li>"Aplicações transferidas"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Atualmente, tem sessão iniciada nas seguintes contas:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Existem outros utilizadores presentes neste veículo."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Repor veículo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Pretende repor?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Pretende apagar todas as informações pessoais e as aplicações transferidas? Não é possível anular esta ação!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Apagar tudo"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"A apagar…"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Aguarde…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data e hora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Definir data e hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Definir data, hora, fuso horário e formatos"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Ordenar por fuso horário"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Hora"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Adicionar utilizador"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Adicionar conta"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Eliminar utilizador"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novo utilizador"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Convidado"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrador"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Sessão iniciada como administrador"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todas as autorizações de administrador"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Tornar administrador"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"O utilizador poderá eliminar utilizadores, incluindo outros administradores, e repor os dados de fábrica do sistema."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Esta ação não é reversível."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Sim, tornar administrador"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Criar novos utilizadores"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Fazer chamadas telefónicas"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mensagem via dados móveis do carro"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar novas aplicações"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar aplicações"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Adicionar utilizador"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Novo utilizador"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Adicion. novo utilizador?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ao adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualquer utilizador pode atualizar aplicações para todos os outros utilizadores."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite de utilizadores alcançado"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Pode criar até <xliff:g id="COUNT">%d</xliff:g> utilizadores.</item>
+      <item quantity="one">Apenas é possível criar um utilizador.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Falha ao criar um novo utilizador"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Eliminar este utilizador?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Todas as aplicações e os dados serão eliminados."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Falha ao eliminar o utilizador"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ignorar"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Tentar novamente"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Elim. último utilizador?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Depois de eliminar o único utilizador restante deste automóvel, será criado um novo administrador."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Todos os dados, as definições e as aplicações associados a este utilizador serão eliminados. Terá de configurar o sistema novamente."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Escolher novo administrador"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Necessita de, pelo menos, um administrador. Para eliminar este, primeiro escolha um substituto."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Escolher administrador"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Convidado"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Convidado"</string>
     <string name="user_switch" msgid="6544839750534690781">"Mudar"</string>
     <string name="current_user_name" msgid="3813671533249316823">"O utilizador (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nome"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Não configurado"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Editar o nome do utilizador"</string>
     <string name="users_list_title" msgid="770764290290240909">"Utilizadores"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Autorizações concedidas a %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Contas"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Utilizador"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Adicionar conta"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nenhuma conta adicionada."</string>
     <string name="account_list_title" msgid="7631588514613843065">"Contas de <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronizar dados automaticamente"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permitir que as aplicações atualizem dados automaticamente"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Ativar sincron. autom. de dados?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Qualquer alteração que efetue nas contas a partir da Web será copiada automaticamente para o dispositivo.\n\nAlgumas contas também podem copiar automaticamente para a Web qualquer alteração que efetue no telemóvel. É assim que funciona uma Conta Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Desativar sincroniz. automática?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Esta ação irá conservar os dados, mas é necessário sincronizar manualmente cada conta para recolher informações recentes. Além disso, não receberá notificações quando ocorrem atualizações."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informações da conta"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Adicionar conta"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Adicionar uma conta"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Remover conta"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Pretende remover a conta?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"A remoção desta conta elimina todas as mensagens, os contactos e outros dados do dispositivo."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"O administrador não permite esta alteração."</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Remover este utilizador?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Todas as aplicações e os dados serão eliminados."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Falha ao remover o utilizador"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Pretende tentar novamente?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Ignorar"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Tentar novamente"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Adicion. novo utilizador?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ao adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualquer utilizador pode atualizar aplicações para todos os outros utilizadores."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Falha ao remover a conta"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronização da conta"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sincronização ativada para <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g> itens"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronização ativada para todos os itens"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronização desativada para todos os itens"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sincronização desativada"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Erro de sincronização"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Última sincronização: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"A sincronizar agora…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tocar para sincronizar agora<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronizar agora"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronização"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"A sincronização está atualmente com problemas e será retomada em breve."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Segurança"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueio de ecrã"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nenhum"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Palavra-passe"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Escolher tipo bloqueio"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opções de bloqueio de ecrã"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opções de bloqueio"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Introduza o padrão"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirmar"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Redesenhar"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Definir um bloqueio de ecrã"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Escolher o PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Escolher o padrão"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Escolher a palavra-passe"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Escolher a palavra-passe"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Bloqueio de ecrã atual"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Por segurança, defina um padrão."</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Limpar"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"As palavras-passe comuns estão bloqueadas pelo seu gestor de TI. Experimente outra palavra-passe."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Não é permitida uma sequência de dígitos ascendente, descendente ou repetida."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opções de bloqueio de ecrã"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: há <xliff:g id="NUM_DAYS">%3$s</xliff:g> dias"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Adicionar disposit. fidedigno"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Disposit. fidedignos"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"O dispositivo <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> irá desbloquear este automóvel quando for ligado. Se alguém pegar no dispositivo <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, essa pessoa pode aceder ao mesmo."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remover dispositivo fidedigno"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Concluído"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Utilize a aplicação associada para configurar um dispositivo fidedigno. Após a configuração, poderá desbloquear o perfil do utilizador quando o telemóvel for detetado pelo veículo."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Transfira a aplicação associada no telemóvel."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecione o automóvel <xliff:g id="CAR_NAME">%1$s</xliff:g> no telemóvel para sincronizar os dispositivos."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"O Smart Lock não consegue detetar funcionalidades de segurança deste dispositivo. Para ajudar a proteger o seu automóvel, o dispositivo fidedigno só pode manter o automóvel desbloqueado após já ter sido desbloqueado por si. O dispositivo fidedigno pode manter o automóvel desbloqueado quando estiver próximo, mesmo se outra pessoa estiver a utilizá-lo."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Adicione o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> como um dispositivo fidedigno"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"O dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> foi adicionado com êxito como um dispositivo fidedigno."</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Falha ao inscrever o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ao adicionar um dispositivo fidedigno, tem de definir um método de autenticação a seguir. Se não tiver o dispositivo fidedigno consigo, será necessária a autenticação para aceder ao seu perfil."</string>
     <string name="forget" msgid="3971143908183848527">"Esquecer"</string>
+    <string name="connect" msgid="5861699594602380150">"Ligar"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Desligar"</string>
     <string name="delete_button" msgid="5840500432614610850">"Eliminar"</string>
     <string name="remove_button" msgid="6664656962868194178">"Remover"</string>
     <string name="cancel" msgid="750286395700355455">"Cancelar"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Sair do modo de demonstração"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Esta ação elimina a conta de demonstração e efetua a reposição de dados de fábrica do sistema. Todos os dados do utilizador são perdidos."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Sair da demonstração"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"concluir configuração"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"agora não"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORAR"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funcionalidade não disponível durante a condução."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Não é possível adicionar o utilizador durante a condução."</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 184ee4c..5781005 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"escurecer tela, touchscreen, bateria"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"escurecer tela, noite, tingir"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modo noturno"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Rede móvel"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dados móveis"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Acessar os dados pela rede móvel"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Desativar os dados móveis?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Uso de dados"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Aviso e limite de dados"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciclo de uso de dados do app"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Definir aviso de dados"</string>
+    <string name="data_warning" msgid="116776633806885370">"Aviso de dados"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Definir limite de dados"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limite de dados"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitar uso de dados"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"A unidade principal do veículo desativará os dados móveis quando o limite especificado for atingido.\n\nComo o uso de dados é calculado pela unidade principal, e sua operadora pode entender o uso de forma diferente, defina um limite moderado."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configurar e gerenciar pontos de acesso sem fio"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Ativando Wi-Fi..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Desativando Wi-Fi..."</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Carregando lista de Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi desativado"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Falha ao esquecer a rede"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Falha ao conectar à rede"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Adicionar rede"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi desativado"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectar"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Senha"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Mostrar senha"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nome da rede"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Digite o SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Segurança"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Potência do sinal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Potência do sinal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Velocidade do link"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequência"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Endereço IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Exibir senha"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Digite nome da rede"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Digite a senha"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Fraca"</item>
-    <item msgid="2032262610626057081">"Regular"</item>
-    <item msgid="3859756017461098953">"Boa"</item>
-    <item msgid="1521103743353335724">"Excelente"</item>
+    <item msgid="7683058295076342057">"Fraca"</item>
+    <item msgid="1639222824821660744">"Regular"</item>
+    <item msgid="1838705897358163300">"Boa"</item>
+    <item msgid="6067166649320533751">"Excelente"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Ativar Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth desativado"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalhes da rede"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Endereço MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Endereço IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Máscara de sub-rede"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Endereços IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferências de Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Ativar o Wi‑Fi automaticamente"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"O Wi‑Fi será ativado perto de redes salvas de alta qualidade, como sua rede doméstica"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Indisponível porque o local está desativado. Ative o"<annotation id="link">"local"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Ativar a busca por Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Ativar"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Busca por Wi‑Fi ativada"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Alternar para dados móveis automaticamente"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Usar dados móveis quando o Wi-Fi perder o acesso à Internet. Cobranças de dados podem ser aplicadas."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Saiba mais"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Gerenciar conexões, definir o nome e detecção do dispositivo"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computador"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Fone de ouvido"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefone"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imagem"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Fone de ouvido"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periférico de entrada"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Dispositivos pareados"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dispositivos disponíveis"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nenhum dispositivo pareado"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nenhum dispositivo disponível"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Dispositivo pareado"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nome"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Usar para"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Altere o nome do dispos. Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Dispositivo sem nome"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispositivos pareados"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Parear novo dispositivo"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"O Bluetooth será ativado para o pareamento"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Desconectar dispositivo?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Seu veículo será desconectado do <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Endereço Bluetooth do veículo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Endereço Bluetooth do dispositivo: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Nome do veículo"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Renomear este veículo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Renomear dispositivo"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Renomear"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dispositivos disponíveis"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Perfis"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitação de pareamento Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Parear e conectar"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Código de pareamento Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"O PIN contém letras ou símbolos"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Digite o código de pareamento e pressione Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Geralmente, 0000 ou 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Solicitação de pareamento"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Toque para parear com <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Idiomas"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Idiomas e entrada"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Teclado"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Gerenciar teclados"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Converter texto em voz"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Mecanismo preferencial"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Mecanismo atual"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Velocidade da fala"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tom da fala"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Redefinir"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Som"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volume do toque"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volume de navegação"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Mídia"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Definir o volume para música e vídeos"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarme"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Toque do telefone"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Som de notificação padrão"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Som de alarme padrão"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Apps e notificações"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Mostrar todos os apps"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Apps padrão"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informações do app"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Forçar fechamento"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Forçar fechamento?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Se você forçar o fechamento de um app, ele poderá apresentar mau funcionamento."</string>
     <string name="disable_text" msgid="4358165448648990820">"Desativar"</string>
     <string name="enable_text" msgid="1794971777861881238">"Ativar"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Desinstalar"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Se você desativar esse app, o Android e outros apps poderão deixar de funcionar como deveriam."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Desativar app"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permissões"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versão: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nenhuma permissão concedida"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nenhuma permissão solicitada"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Uso de dados"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uso de dados do app"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Forçar fechamento"</string>
     <string name="computing_size" msgid="5791407621793083965">"Calculando…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> permissão adicional</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> permissões adicionais</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistente e entrada de texto por voz"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"App assistivo"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Usar texto da tela"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Permitir que o app assistivo acesse o conteúdo da tela como texto"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Usar captura de tela"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Permitir que o app assistivo acesse uma imagem da tela"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Preenchimento automático"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Nenhum"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Selecionado"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"O assistente lerá informações sobre apps em uso no seu sistema, incluindo informações visíveis na tela ou as que podem ser acessadas nos apps."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Você precisa confiar nesse app&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=O Preenchimento automático do Google&gt;%1$s&lt;/xliff:g&gt; usa o que está na sua tela para determinar o que pode ser preenchido automaticamente."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Adicionar serviço"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Local"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitações recentes"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nenhuma solicitação recente de local"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permissões no app"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Verificação"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Serviços de localização"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Busca por Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Permitir que apps e serviços procurem redes Wi‑Fi a qualquer momento, mesmo quando o Wi‑Fi estiver desativado. Essa configuração pode ser usada, por exemplo, para melhorar recursos e serviços baseados na localização."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Verificação de Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permitir que apps e serviços procurem dispositivos próximos a qualquer momento, mesmo quando o Bluetooth estiver desativado. Essa configuração pode ser usada, por exemplo, para melhorar recursos e serviços baseados na localização."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Atualizações do sistema"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Atualizações do sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versão do Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nível do patch de segurança do Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modelo"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versão da banda de base"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versão do kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Número da versão"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Endereço Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Não disponível"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Direitos autorais"</string>
     <string name="license_title" msgid="936705938435249965">"Licença"</string>
     <string name="terms_title" msgid="5201471373602628765">"Termos e Condições"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licença do sistema Webview"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licenças do sistema WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Planos de fundo"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Provedores de imagens via satélite:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licenças de terceiros"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Ocorreu um problema ao carregar as licenças."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Carregando…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Falta <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> etapa para você se tornar um desenvolvedor.</item>
+      <item quantity="other">Faltam <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> etapas para você se tornar um desenvolvedor.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Você agora é um desenvolvedor!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Não é necessário. Você já é um desenvolvedor."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opções do desenvolvedor"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opções de redefinição"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Redefinição de rede, apps ou dispositivo"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Redefinir rede"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Isso redefinirá todas as configurações de rede, incluindo:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Dados móveis"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Limpar todos os eSIMs do veículo"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Essa ação não cancelará seu plano de serviços."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Não é possível redefinir os eSIMs"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Selecionar rede"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Redefinir configurações"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Redefinir?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Redefinir todas as configurações de rede? Não é possível desfazer essa ação."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Redefinir configurações"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"As configurações de rede foram redefinidas"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Redefinir preferências de apps"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Isso redefinirá todas as preferências para:\n\n"<li>" apps desativados;"</li>" \n "<li>"notificações de apps desativados; "</li>\n<li>"apps padrão para ações;"</li>\n<li>"restrições de dados em segundo plano para apps; "</li>\n<li>"qualquer restrição de permissão."</li>\n\n"Você não perderá os dados dos apps."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Redefinir apps"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"As preferências do app foram redefinidas"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Limpar todos os dados"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Essa ação limpará todos os dados da unidade principal do seu veículo, incluindo:\n\n"<li>"sua Conta do Google;"</li>\n<li>"dados e configurações do sistema e do app;"</li>\n<li>"apps transferidos."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"No momento, as seguintes contas estão conectadas:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Há outros usuários neste veículo."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Redefinir veículo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Redefinir?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Limpar todas as suas informações pessoais e apps transferidos por download? Não é possível desfazer essa ação."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Apagar tudo"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Apagando"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Aguarde…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data e hora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Definir data e hora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Definir data, hora, fuso horário e formatos"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Classificar por fuso horário"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Hora"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Adicionar usuário"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Adicionar conta"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Excluir usuário"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Novo usuário"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Convidado"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrador"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Conectado como administrador"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Todas as permissões de administrador"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Tornar administrador"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"O usuário poderá excluir outros usuários, incluindo administradores, e redefinir o sistema para a configuração original."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Esta ação não pode ser revertida."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Sim, tornar administrador"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Criar novos usuários"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Fazer chamadas telefônicas"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mensagens com dados móveis do carro"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalar novos apps"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Desinstalar apps"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Adicionar usuário"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Novo usuário"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Adicionar novo usuário?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Quando você adiciona um usuário novo, essa pessoa precisa configurar o espaço dela."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualquer usuário pode atualizar os apps para todos os demais."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limite de usuários atingido"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">É possível criar até <xliff:g id="COUNT">%d</xliff:g> usuário.</item>
+      <item quantity="other">É possível criar até <xliff:g id="COUNT">%d</xliff:g> usuários.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Falha ao criar um novo usuário"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Excluir este usuário?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Todos os apps e dados serão excluídos."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Falha ao excluir usuário."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Dispensar"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Tentar novamente"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Excluir o último usuário?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Após a exclusão do único usuário restante deste carro, um novo usuário administrador será criado."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Todos os dados, configurações e apps associados ao usuário serão excluídos. Será necessário configurar o sistema novamente."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Escolher novo administrador"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Você precisa de pelo menos um administrador. Para excluir este, primeiro escolha um substituto."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Escolher administrador"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Convidado"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Visitante"</string>
     <string name="user_switch" msgid="6544839750534690781">"Alternar"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Você (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nome"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Não configurado"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Editar nome de usuário"</string>
     <string name="users_list_title" msgid="770764290290240909">"Usuários"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permissões concedidas a %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Contas"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Usuário"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Adicionar conta"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nenhuma conta adicionada"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Contas de <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronizar dados automaticamente"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permitir que os apps atualizem dados automaticamente"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Ativar sincronização automática?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"As alterações feitas nas suas contas na Web serão automaticamente copiadas para o dispositivo.\n\nEm algumas contas, as alterações feitas no smartphone também poderão ser copiadas automaticamente para a Web. É o caso de uma Conta do Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Desativar sincroniz. automática?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Isso economizará dados, mas será necessário sincronizar manualmente cada conta para coletar as informações mais recentes. Além disso, você não receberá notificações quando as atualizações ocorrerem."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informações da conta"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Adicionar conta"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Adicionar uma conta"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Remover conta"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Remover conta?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"A remoção desta conta excluirá do dispositivo todas as mensagens, os contatos e outros dados dela."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Esta alteração não é permitida pelo administrador"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Remover este usuário?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Todos os apps e dados serão excluídos."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Falha ao remover usuário."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Tentar novamente?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Dispensar"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Tentar novamente"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Adicionar novo usuário?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Quando você adiciona um usuário novo, essa pessoa precisa configurar o espaço dela."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qualquer usuário pode atualizar os apps para todos os demais."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Falha ao remover a conta."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronização da conta"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sincronização ativada para <xliff:g id="ID_1">%1$d</xliff:g> de <xliff:g id="ID_2">%2$d</xliff:g> itens"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronização ativada para todos os itens"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronização desativada para todos os itens"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sincronização DESATIVADA"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Erro na sincronização"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Última sincronização: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sincronizando agora…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Toque para sincronizar agora<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronizar agora"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar a sincronização"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"A sincronização está enfrentando problemas no momento. Ela será retomada em breve."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Segurança"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueio de tela"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Nenhum"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Senha"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Escolher tipo de bloqueio"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opções de bloqueio de tela"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opções de bloqueio"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Digite seu padrão"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirmar"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Desenhar novamente"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Definir bloqueio de tela"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Escolha seu PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Escolha seu padrão"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Escolha sua senha"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Escolha sua senha"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Bloqueio de tela atual"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Por segurança, defina um padrão"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Limpar"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Senhas comuns foram bloqueadas pelo seu administrador de TI. Tente uma senha diferente."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Não é permitido usar uma sequência de dígitos em ordem crescente, decrescente ou repetidos."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opções de bloqueio de tela"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> dias atrás"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Adicionar disp. confiável"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Disp. confiáveis"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dispositivo</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Seu <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> desbloqueará este carro quando estiver conectado. Se alguém pegar o <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, essa pessoa pode conseguir acessar este dispositivo."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remover dispositivo confiável"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Concluído"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Use o app complementar para configurar um dispositivo confiável. Após a configuração, será possível desbloquear seu perfil de usuário quando o smartphone for detectado pelo veículo."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Faça o download do app complementar no smartphone."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecione <xliff:g id="CAR_NAME">%1$s</xliff:g> no smartphone para parear os dispositivos."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Os recursos de segurança deste dispositivo não podem ser detectados pelo Smart Lock. Para ajudar a proteger seu carro, será possível mantê-lo destrancado com o dispositivo confiável apenas depois que você destrancá-lo. É possível manter o carro destrancado com o dispositivo confiável por perto mesmo que outra pessoa o esteja segurando."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Adicionar <xliff:g id="DEVICE_NAME">%1$s</xliff:g> como dispositivo confiável"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"O <xliff:g id="DEVICE_NAME">%1$s</xliff:g> foi definido como um dispositivo confiável"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Falha na inscrição do <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Depois de adicionar um dispositivo confiável, é necessário configurar um método de autenticação. Se o dispositivo confiável não estiver com você, a autenticação será necessária para acessar seu perfil."</string>
     <string name="forget" msgid="3971143908183848527">"Ignorar"</string>
+    <string name="connect" msgid="5861699594602380150">"Conectar"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Desconectar"</string>
     <string name="delete_button" msgid="5840500432614610850">"Excluir"</string>
     <string name="remove_button" msgid="6664656962868194178">"Remover"</string>
     <string name="cancel" msgid="750286395700355455">"Cancelar"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Sair do modo de demonstração"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Isso excluirá a conta de demonstração e redefinirá o sistema para a configuração original. Todos os dados do usuário serão perdidos."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Sair da demonstração"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"concluir configuração"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"agora não"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"DISPENSAR"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Recurso não disponível enquanto você dirige."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Não é possível adicionar usuários enquanto você dirige."</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index f894963..ebdca72 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"reduceți luminozitatea ecranului, ecran tactil, baterie"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"reduceți luminozitatea ecranului, noapte, nuanță"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modul noapte"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Rețea și internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Rețea mobilă"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Date mobile"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accesați datele folosind rețeaua mobilă"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Dezactivați datele mobile?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Utilizarea datelor"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Avertisment și limită de date"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Ciclu de utilizare a datelor aplicației"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Setați avertisment pentru date"</string>
+    <string name="data_warning" msgid="116776633806885370">"Avertisment pentru date"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Setați o limită date"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limită de date"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Limitarea utilizării datelor"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Unitatea principală a vehiculului va dezactiva datele mobile când se atinge limita specificată.\n\nDeoarece utilizarea datelor este măsurată de unitatea principală, iar operatorul poate contoriza în mod diferit utilizarea, vă recomandăm să stabiliți o limită prudentă."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Configurați și gestionați punctele de acces wireless"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Se activează Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Se dezactivează Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Se încarcă lista de conexiuni Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi dezactivat"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Nu s-a putut elimina rețeaua"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Nu s-a realizat conexiunea la rețea"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Adăugați o rețea"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi dezactivat"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Conectați"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parolă"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Afișează parola"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Numele rețelei"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Introduceți identificatorul SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Securitate"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Puterea semnalului"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Puterea semnalului"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Stare"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Viteza conexiunii"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frecvență"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Adresă IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Afișați parola"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Introduceți numele rețelei"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Introduceți parola"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Slab"</item>
-    <item msgid="2032262610626057081">"Acceptabil"</item>
-    <item msgid="3859756017461098953">"Bun"</item>
-    <item msgid="1521103743353335724">"Excelent"</item>
+    <item msgid="7683058295076342057">"Slab"</item>
+    <item msgid="1639222824821660744">"Acceptabil"</item>
+    <item msgid="1838705897358163300">"Bun"</item>
+    <item msgid="6067166649320533751">"Excelent"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Activați Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth dezactivat"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detalii despre rețea"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Adresă MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Adresă IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Mască de subrețea"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adrese IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferințe Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Activați automat Wi-Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi se va reactiva lângă rețelele calitate înaltă salvate, cum ar fi cea de domiciliu"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Indisponibil, deoarece locația este dezactivată. Activați "<annotation id="link">"Locația"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Activați căutarea de rețele Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Activați"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Căutarea de rețele Wi-Fi este activată"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Comutați automat la date mobile"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Folosiți datele mobile atunci când rețeaua Wi-Fi nu are acces la internet. Este posibil să se aplice taxe pentru utilizarea datelor."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Aflați mai multe"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Gestionați conexiunile, setați numele dispozitivului și detectabilitatea acestuia"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Set căști-microfon"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Dispozitiv pentru imagini"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Căști"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Dispozitiv periferic de intrare"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Dispozitive asociate"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dispozitive disponibile"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nu există dispozitive asociate"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nu există dispozitive disponibile"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Dispozitiv asociat"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nume"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Utilizați pentru"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Redenumiți dispozitivul Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Dispozitiv nedenumit"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Dispozitive asociate"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Asociați un nou dispozitiv"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth se va activa pentru asociere"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Deconectați dispozitivul?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Vehiculul dvs. se va deconecta de la <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Adresa Bluetooth a vehiculului: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Adresa Bluetooth a dispozitivului: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Numele vehiculului"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Redenumiți acest vehicul"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Redenumiți dispozitivul"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Redenumiți"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dispozitive disponibile"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiluri"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Solicitare de conectare prin Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Asociați și conectați"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Cod de conectare prin Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Codul PIN conține litere sau simboluri"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Introduceți codul de conectare, apoi apăsați pe Return sau pe Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"De obicei, 0000 sau 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Solicitare de conectare"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Atingeți pentru a asocia cu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Limbi"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Limbi și introducere de text"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastatură"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Gestionați tastaturile"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Rezultatul redării vocale a textului"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motor preferat"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motor actual"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Ritmul vorbirii"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tonalitate"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Resetați"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Sunet"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volumul soneriei"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volum navigare"</string>
@@ -100,31 +140,66 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Setați volumul pentru muzică și videoclipuri"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarmă"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Ton de sonerie pentru telefon"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Sunet de notificare prestabilit"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sunet de alarmă prestabilit"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplicații și notificări"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Afișați toate aplicațiile"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplicații prestabilite"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informații despre aplicație"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Opriți forțat"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Opriți forțat?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Dacă forțați oprirea unei aplicații, aceasta se poate comporta necorespunzător."</string>
     <string name="disable_text" msgid="4358165448648990820">"Dezactivați"</string>
     <string name="enable_text" msgid="1794971777861881238">"Activați"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Dezinstalați"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Dacă dezactivați această aplicație, este posibil ca Android și alte aplicații să nu mai funcționeze corespunzător."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Dezactivați aplicația"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Permisiuni"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versiunea: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nicio permisiune acordată"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nicio permisiune solicitată"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Utilizarea datelor"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Utilizare date aplicație"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Opriți forțat"</string>
     <string name="computing_size" msgid="5791407621793083965">"Se calculează…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> permisiuni suplimentare</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> de permisiuni suplimentare</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> permisiune suplimentară</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asistent și intrare vocală"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplicație asistent"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Folosiți textul de pe ecran"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Permiteți aplicației asistent să acceseze conținutul ecranului ca text"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Folosiți captura de ecran"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Permiteți aplicației asistent să acceseze o imagine a ecranului"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Serviciu de completare automată"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Niciuna"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Bifată"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Aplicația asistent va putea să citească informații despre aplicațiile în uz de pe sistem, inclusiv informațiile vizibile pe ecran sau accesibile în aplicații."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Asigurați-vă că aveți încredere în această aplicație&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Completarea automată Google&gt;%1$s&lt;/xliff:g&gt; folosește conținutul de pe ecran pentru a stabili ce se poate completa automat."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Adăugați un serviciu"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Locație"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitări recente privind locația"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nu există solicitări recente privind locația"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Permisiuni la nivel de aplicație"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Căutare"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Servicii de localizare"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Căutare Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Permiteți aplicațiilor și serviciilor să caute permanent rețele Wi-Fi, chiar și atunci când setarea Wi-Fi este dezactivată. Această permisiune poate fi folosită, de exemplu, pentru a îmbunătăți funcțiile și serviciile bazate pe locație."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Căutare Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permiteți aplicațiilor și serviciilor să caute permanent dispozitive din apropiere, chiar dacă setarea Bluetooth este dezactivată. Această opțiune poate fi folosită, de exemplu, pentru a îmbunătăți funcțiile și serviciile bazate pe locație."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Actualizări de sistem"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Actualizări de sistem"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versiunea Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Nivelul corecției de securitate Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versiunea benzii de bază"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versiune nucleu"</string>
     <string name="build_number" msgid="3997326631001009102">"Numărul versiunii"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresă Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Indisponibil"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Stare"</string>
     <string name="device_status" msgid="267298179806290920">"Stare"</string>
@@ -141,12 +216,50 @@
     <string name="copyright_title" msgid="4220237202917417876">"Drepturi de autor"</string>
     <string name="license_title" msgid="936705938435249965">"Licență"</string>
     <string name="terms_title" msgid="5201471373602628765">"Termeni și condiții"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licență de sistem pentru WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licențe de sistem pentru WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Imagini de fundal"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Furnizori de imagini din satelit:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licențe terță parte"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"A apărut o problemă la încărcarea licențelor."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Se încarcă…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="few">Mai aveți de parcurs <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> pași pentru a deveni dezvoltator.</item>
+      <item quantity="other">Mai aveți de parcurs <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> de pași pentru a deveni dezvoltator.</item>
+      <item quantity="one">Mai aveți de parcurs <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> pas pentru a deveni dezvoltator.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Ați devenit dezvoltator!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nu mai este nevoie, sunteți deja dezvoltator."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opțiuni dezvoltator"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opțiuni de resetare"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Resetați rețeaua, aplicațiile sau dispozitivul"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Resetați rețeaua"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Această acțiune va reseta toate setările pentru rețea, inclusiv:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Date mobile"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Ștergeți toate eSIM-urile vehiculului"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Astfel, planul de servicii nu va fi anulat."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Cardurile eSIM nu se pot reseta"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Selectați o rețea"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Resetați setările"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Resetați?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Resetați toate setările pentru rețea? Nu puteți anula această acțiune!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Resetați setările"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Setările pentru rețea au fost resetate"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Resetați preferințele pentru aplicații"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Astfel vor fi resetate toate preferințele pentru:\n\n"<li>"aplicații dezactivate,"</li>\n<li>"notificări de aplicații dezactivate,"</li>\n<li>"aplicații prestabilite pentru acțiuni,"</li>\n<li>"restricții privind datele de fundal pentru aplicații,"</li>\n<li>"orice restricții de permisiuni."</li>\n\n"Nu veți pierde datele aplicațiilor."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Resetați aplicațiile"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Preferințele pentru aplicații au fost resetate"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Ștergeți datele (reveniți la setările din fabrică)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Astfel, vor fi șterse toate datele de pe unitatea principală a vehiculului, între care:\n\n"<li>"contul dvs. Google;"</li>\n<li>"datele și setările de sistem și de aplicație;"</li>\n<li>"aplicațiile descărcate"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Sunteți conectat(ă) la următoarele conturi:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Există și alți utilizatori în acest vehicul."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Resetați vehiculul"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Resetați?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Ștergeți toate informațiile cu caracter personal și aplicațiile descărcate? Nu puteți anula această acțiune!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Ștergeți tot"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Se șterge"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Așteptați..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data și ora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Setați data și ora"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Setați data, ora, fusul orar și formatele"</string>
@@ -166,23 +279,60 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sortați după fusul orar"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Ora"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Adăugați un utilizator"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Adăugați un cont"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Ștergeți utilizatorul"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Utilizator nou"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Invitat"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Conectat(ă) ca administrator"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Toate permisiunile de administrator"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Setați ca administrator"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Utilizatorul va putea să șteargă utilizatori, inclusiv alți administratori, și să readucă sistemul la setările din fabrică."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Această acțiune nu este reversibilă."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, setez ca administrator"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Creați noi utilizatori"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Efectuați apeluri telefonice"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mesaje – datele mobile ale mașinii"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalați aplicații noi"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Dezinstalați aplicații"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Adăugați un utilizator"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Utilizator nou"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Adăugați utilizator nou?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Când adăugați un utilizator nou, acesta trebuie să-și configureze spațiul."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Orice utilizator poate actualiza aplicațiile pentru toți ceilalți utilizatori."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Ați atins limita de utilizatori"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="few">Puteți crea maximum <xliff:g id="COUNT">%d</xliff:g> utilizatori.</item>
+      <item quantity="other">Puteți crea maximum <xliff:g id="COUNT">%d</xliff:g> de utilizatori.</item>
+      <item quantity="one">Poate fi creat doar un utilizator.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Nu s-a creat noul utilizator"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Ștergeți utilizatorul?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Toate aplicațiile și datele vor fi șterse."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Utilizatorul nu a putut fi șters."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Închideți"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Reîncercați"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Ștergeți ultimul utilizator?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"După ștergerea singurului utilizator rămas pentru această mașină, va fi creat un nou utilizator administrator."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Toate datele, setările și aplicațiile asociate acestui utilizator vor fi șterse. Va trebui să configurați din nou sistemul."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Alegeți un administrator nou"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Aveți nevoie de cel puțin un administrator. Pentru a-l șterge pe acesta, mai întâi alegeți un înlocuitor."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Alegeți un administrator"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Invitat"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Invitat"</string>
     <string name="user_switch" msgid="6544839750534690781">"Comutați"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Dvs. (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Nume"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Neconfigurat"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Editați numele de utilizator"</string>
     <string name="users_list_title" msgid="770764290290240909">"Utilizatori"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Permisiuni acordate pentru %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Conturi"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Utilizator"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Adăugați un cont"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nu a fost adăugat niciun cont."</string>
     <string name="account_list_title" msgid="7631588514613843065">"Conturi pentru <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sincronizare automată a datelor"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Permiteți aplicațiilor să actualizeze date automat"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Activați sincronizarea datelor?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Ceea ce modificați în conturi pe web se va reflecta automat și pe dispozitiv.\n\nUnele conturi pot să copieze automat pe web toate modificările de pe telefon. Așa funcționează un Cont Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Opriți sincronizarea automată?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Această acțiune va economisi date, dar va trebui să sincronizați fiecare cont manual pentru a colecta informațiile recente. În plus, nu veți primi notificări atunci când apar actualizări."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informații despre cont"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Adăugați un cont"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Adăugați un cont"</string>
@@ -190,16 +340,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Eliminați contul"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Eliminați contul?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Prin eliminarea acestui cont, se vor șterge toate mesajele și persoanele de contact pe care le conține, precum și alte date de pe dispozitiv!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Această modificare nu este permisă de administrator"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Eliminați utilizatorul?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Toate aplicațiile și datele vor fi șterse."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Nu s-a putut elimina utilizatorul."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Reîncercați?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Închideți"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Reîncercați"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Adăugați utilizator nou?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Când adăugați un utilizator nou, acesta trebuie să-și configureze spațiul."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Orice utilizator poate actualiza aplicațiile pentru toți ceilalți utilizatori."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Nu s-a putut elimina contul."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sincronizarea contului"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sincronizare activată pentru <xliff:g id="ID_1">%1$d</xliff:g> din <xliff:g id="ID_2">%2$d</xliff:g> articole"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sincronizare activată pentru toate articolele"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sincronizare dezactivată pentru toate articolele"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sincronizare DEZACTIVATĂ"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Eroare de sincronizare"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Ultima sincronizare: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Se sincronizează acum…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Atingeți pentru a sincroniza acum<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronizați acum"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Anulați sincronizarea"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sincronizarea se confruntă cu probleme. Aceasta va fi funcțională în curând."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Securitate"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Blocarea ecranului"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Fără"</string>
@@ -207,7 +361,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Parolă"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Alegeți tipul blocării"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opțiuni de blocare a ecranului"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opțiuni de blocare"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Introduceți modelul"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Confirmați"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Redesenați"</string>
@@ -217,7 +371,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Setați o blocare a ecranului"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Alegeți codul PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Alegeți modelul"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Alegeți parola"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Alegeți parola"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Blocarea actuală a ecranului"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Pentru securitate, setați un model"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Ștergeți"</string>
@@ -295,7 +449,29 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Parolele obișnuite sunt blocate de administratorul IT. Încercați altă parolă."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Șirurile de cifre ascendente, descendente sau repetate nu sunt permise."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opțiuni de blocare a ecranului"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: acum <xliff:g id="NUM_DAYS">%3$s</xliff:g> zile"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Adăugați un dispozitiv de încredere"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Dispozitive de încredere"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dispozitive</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> de dispozitive</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispozitiv</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> va debloca această mașină când este conectat. Dacă cineva vă ia <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, este posibil să poată accesa acest dispozitiv"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmați"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Eliminați dispozitivul de încredere"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Gata"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Folosiți aplicația parteneră pentru a configura un dispozitiv de încredere. După configurare veți putea să vă deblocați profilul de utilizator atunci când mașina vă detectează telefonul."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Descărcați aplicația parteneră pe telefon"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selectați <xliff:g id="CAR_NAME">%1$s</xliff:g> de pe telefon pentru a asocia dispozitivele"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock nu poate detecta funcțiile de securitate ale dispozitivului. Pentru a vă proteja mașina, dispozitivul de încredere va putea menține mașina deblocată numai după ce ați deblocat-o personal. Dispozitivul de încredere poate să mențină mașina deblocată când se află în apropiere, chiar dacă este folosită de o altă persoană."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Adăugați <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ca dispozitiv de încredere"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> a fost adăugat ca dispozitiv de încredere"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Înscrierea dispozitivului <xliff:g id="DEVICE_NAME">%1$s</xliff:g> a eșuat"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Dacă adăugați un dispozitiv de încredere, trebuie să setați apoi o metodă de autentificare. Dacă nu aveți dispozitivul de încredere cu dvs., va fi necesar să vă autentificați pentru a vă accesa profilul."</string>
     <string name="forget" msgid="3971143908183848527">"Eliminați"</string>
+    <string name="connect" msgid="5861699594602380150">"Conectați"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Deconectați"</string>
     <string name="delete_button" msgid="5840500432614610850">"Ștergeți"</string>
     <string name="remove_button" msgid="6664656962868194178">"Eliminați"</string>
     <string name="cancel" msgid="750286395700355455">"Anulați"</string>
@@ -305,8 +481,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Închideți modul demonstrativ"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Această acțiune va șterge contul demonstrativ, iar sistemul va reveni la setările din fabrică. Toate datele utilizatorului se vor pierde."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Închideți demonstrația"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"finalizați configurarea"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"nu acum"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"RESPINGEȚI"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funcția nu este disponibilă când conduceți."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Nu puteți adăuga un utilizator în timp ce conduceți."</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 81f2e38..240bd3a 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"снижение яркости, сенсорный экран, батарея"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"снижение яркости, ночь, оттенок"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Ночной режим"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Сеть и Интернет"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мобильная сеть"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобильный Интернет"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Доступ к Интернету по мобильной сети"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Отключить мобильный Интернет?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Передача данных"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Предупреждения и лимит"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Период статистики"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Установить предупреждение"</string>
+    <string name="data_warning" msgid="116776633806885370">"Предупреждение"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Задать лимит трафика"</string>
+    <string name="data_limit" msgid="227338836292511425">"Лимит трафика"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ограничение передачи данных"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"После достижения установленного лимита передача данных по мобильной сети будет отключена.\n\nПри выборе ограничения учитывайте, что статистика оператора может отличаться от статистики головного устройства автомобиля."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Настройка точек доступа беспроводной сети и управление ими"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Включение Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Отключение Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Загрузка списка сетей Wi‑Fi…"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi: отключено"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Не удалось удалить сеть"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Не удалось подключиться к сети"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Добавить сеть"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi: отключено"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Подключить"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Пароль"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Показать пароль"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Название сети"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Введите имя сети (SSID)"</string>
     <string name="wifi_security" msgid="158358046038876532">"Защита"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Уровень сигнала"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Уровень сигнала"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Статус"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Скорость связи"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Частота"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-адрес"</string>
+    <string name="show_password" msgid="2074628020371139240">"Показать пароль"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Введите название сети"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Введите пароль"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Слабый"</item>
-    <item msgid="2032262610626057081">"Достаточный"</item>
-    <item msgid="3859756017461098953">"Хороший"</item>
-    <item msgid="1521103743353335724">"Отличный"</item>
+    <item msgid="7683058295076342057">"Слабый"</item>
+    <item msgid="1639222824821660744">"Достаточный"</item>
+    <item msgid="1838705897358163300">"Хороший"</item>
+    <item msgid="6067166649320533751">"Отличный"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Включить Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Функция Bluetooth отключена"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Мбит/с"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 ГГц"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ГГц"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Информация о сети"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-адрес"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-адрес"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Маска подсети"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Адреса IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Шлюз"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Настройки Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Включать Wi‑Fi автоматически"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Включать Wi‑Fi в зоне действия сохраненных сетей (например, домашней) с хорошим сигналом"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Недоступно: доступ к геоданным запрещен. "<annotation id="link">"Включите его"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Включить поиск сетей Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Включить"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Поиск сетей Wi‑Fi включен"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Автоматически подключаться к мобильному Интернету"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Использовать мобильный Интернет, когда нет подключения к Интернету по Wi-Fi. Может взиматься плата за передачу данных."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Подробнее…"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Настройка подключений, параметров видимости и названия устройства"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Компьютер"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Гарнитура"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Телефон"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Камера"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Наушники"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Периферийное устройство ввода"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Подключенные устройства"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Доступные устройства"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Нет подключенных устройств"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Нет доступных устройств"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Подключенное устройство"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Название"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Использовать для"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Измените имя Bluetooth-устройства"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Устройство без названия"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Подключенные устройства"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Подключить новое устройство"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Будет включена функция Bluetooth."</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Отключить устройство?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Автомобиль будет отключен от устройства \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Адрес Bluetooth для автомобиля: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Адрес Bluetooth для устройства: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Название автомобиля"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Переименование автомобиля"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Переименование устройства"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Переименовать"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Доступные устройства"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Профили"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Запрос на подключение через Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Установить соединение и подключить"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код подключения через Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN-код содержит буквы или символы"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Введите код подключения и нажмите клавишу ввода"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Обычно 0000 или 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Запрос на подключение"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Нажмите, чтобы установить соединение с устройством \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Языки"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Язык и ввод"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Клавиатура"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Управление клавиатурами"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Озвучивание текста"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Синтезатор по умолчанию"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Текущий синтезатор"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Скорость речи"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Тон"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Сбросить настройки"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Звук"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Громкость звонка"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Громкость навигации"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Мультимедиа"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Настроить громкость музыки и видео"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Будильник"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Рингтон"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Звук уведомления по умолчанию"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Звук будильника по умолчанию"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Приложения и уведомления"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Показать все приложения"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Приложения по умолчанию"</string>
     <string name="applications_settings" msgid="794261395191035632">"Сведения о приложениях"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Остановить"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Остановить принудительно?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Принудительное закрытие приложения может отразиться на его функциональности."</string>
     <string name="disable_text" msgid="4358165448648990820">"Отключить"</string>
     <string name="enable_text" msgid="1794971777861881238">"Включить"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Удалить"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Отключение этого приложения может привести к некорректной работе системы Android и других приложений."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Отключить приложение"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Разрешения"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версия: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"У приложения нет разрешений"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Приложение не запрашивало разрешения"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Передача данных"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Трафик приложения"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Остановить"</string>
     <string name="computing_size" msgid="5791407621793083965">"Вычисление…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> дополнительное разрешение</item>
@@ -117,15 +168,39 @@
       <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> дополнительных разрешений</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> дополнительного разрешения</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Помощник и голосовой ввод"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Помощник"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Использовать текст с экрана"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Разрешить Помощнику доступ к тексту на экране."</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Использовать скриншот"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Разрешить Помощнику доступ к изображению экрана."</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Автозаполнение"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Нет"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Выбрано"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Ассистент сможет получать данные о программах в вашей системе, в том числе сведения с экрана и из приложений."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Убедитесь, что это приложение безопасно&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; анализирует содержимое экрана и находит поля, которые можно заполнить автоматически."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Добавить службу"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Передача геоданных"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Последние запросы местоположения"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нет недавних запросов местоположения."</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Разрешения для приложений"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Поиск"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Геолокация"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Поиск сетей Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Разрешите приложениям и сервисам искать беспроводные сети, даже когда Wi-Fi отключен. Таким образом можно улучшить работу функций и сервисов, использующих данные о местоположении."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Поиск устройств Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Разрешите приложениям и сервисам искать сигналы устройств, расположенных поблизости, даже если Bluetooth отключен. Таким образом можно улучшить работу функций и сервисов, использующих данные о местоположении."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Обновления системы"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Обновления системы"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Версия Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Обновление системы безопасности"</string>
     <string name="model_info" msgid="4966408071657934452">"Модель"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Прошивка модуля связи"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Версия ядра"</string>
     <string name="build_number" msgid="3997326631001009102">"Номер сборки"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Адрес Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Недоступно"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Статус"</string>
     <string name="device_status" msgid="267298179806290920">"Статус"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"Авторские права"</string>
     <string name="license_title" msgid="936705938435249965">"Лицензия"</string>
     <string name="terms_title" msgid="5201471373602628765">"Условия использования"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Системная лицензия WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Системные лицензии WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Обои"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Спутниковые фотографии:\n© CNES 2014/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Лицензии третьих сторон"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Не удалось загрузить лицензии."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Загрузка…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Вы почти у цели. Остался <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> шаг.</item>
+      <item quantity="few">Вы почти у цели. Осталось <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> шага.</item>
+      <item quantity="many">Вы почти у цели. Осталось <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> шагов.</item>
+      <item quantity="other">Вы почти у цели. Осталось <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> шага.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Вы стали разработчиком!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Не нужно, вы уже разработчик."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Для разработчиков"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Сброс настроек"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Сброс настроек сети, приложений и устройства"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Сбросить настройки сети"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Будут сброшены все настройки, в том числе:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобильный Интернет"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Удалить данные всех eSIM автомобиля"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Это действие не отменит ваш тарифный план."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Не удалось сбросить настройки eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Выберите сеть"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Сбросить настройки"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Сбросить настройки?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Сброшенные настройки нельзя будет восстановить. Продолжить?"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Сбросить настройки"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Сетевые настройки сброшены"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Сбросить настройки приложений"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Будут сброшены следующие настройки:\n\n"<li>"Отключенные приложения."</li>\n<li>"Отключенные уведомления приложений."</li>\n<li>"Приложения по умолчанию."</li>\n<li>"Ограничения на передачу данных в фоновом режиме."</li>\n<li>"Все ограничения разрешений."</li>\n\n"Данные приложений удалены не будут."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Сбросить настройки"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Настройки приложений сброшены"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Удалить все данные (сбросить настройки)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Будут удалены все данные из головного устройства автомобиля, в том числе:\n\n"<li>"ваш аккаунт Google;"</li>\n<li>"настройки/данные системы и приложений;"</li>\n<li>"установленные приложения."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Вы вошли в следующие аккаунты:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"В этом автомобиле есть другие пользователи."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Сбросить настройки автомобиля"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Сбросить настройки?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Удалить всю личную информацию и скачанные приложения? Это действие нельзя отменить."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Стереть все"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Удаление…"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Подождите..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Дата и время"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Дата и время"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Установка даты, времени, часового пояса и формата"</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Упорядочить по часовому поясу"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Дата"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Время"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Добавление пользователя"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Добавить аккаунт"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Удалить пользователя"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Новый пользователь"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Гость"</string>
     <string name="user_admin" msgid="1535484812908584809">"Администратор"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Вы вошли как администратор"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Все права администратора"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Назначить администратором"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Пользователь сможет удалять других пользователей (в том числе администраторов) и сбрасывать системные настройки."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Это действие нельзя будет отменить."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Назначить администратором"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Создание профилей пользователей"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Исходящие телефонные звонки"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS по мобильному Интернету в авто"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Установка новых приложений"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Удаление приложений"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Добавление пользователя"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Новый пользователь"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Добавить пользователя?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Когда вы добавите пользователя, ему потребуется настроить профиль."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Любой пользователь устройства может обновлять приложения для всех аккаунтов."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Достигнуто ограничение"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Можно создать не более <xliff:g id="COUNT">%d</xliff:g> пользователя.</item>
+      <item quantity="few">Можно создать не более <xliff:g id="COUNT">%d</xliff:g> пользователей.</item>
+      <item quantity="many">Можно создать не более <xliff:g id="COUNT">%d</xliff:g> пользователей.</item>
+      <item quantity="other">Можно создать не более <xliff:g id="COUNT">%d</xliff:g> пользователя.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Не удалось создать пользователя"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Удалить пользователя?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Будут удалены все приложения и данные."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Не удалось удалить пользователя"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Закрыть"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Повторить попытку"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Удалить последнего пользователя?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"После удаления единственного оставшегося пользователя в системе вам будет предложено создать новый профиль администратора."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Будут удалены все данные, настройки и приложения, связанные с этим пользователем. Вам потребуется заново настроить систему."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Выберите нового администратора"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"В системе должен быть хотя бы один администратор. Прежде чем удалить этого администратора, выберите того, кто его заменит."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Выбрать администратора"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Гость"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Гость"</string>
     <string name="user_switch" msgid="6544839750534690781">"Сменить пользователя"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Вы (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Имя"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не настроен"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Изменение имени пользователя"</string>
     <string name="users_list_title" msgid="770764290290240909">"Пользователи"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s: разрешения"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Аккаунты"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Пользователь"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Добавить аккаунт"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Аккаунтов нет."</string>
     <string name="account_list_title" msgid="7631588514613843065">"Аккаунты пользователя <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Автосинхронизация данных"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Данные приложений будут обновляться автоматически."</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Включить автосинхронизацию?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Все изменения в аккаунтах на компьютере будут автоматически копироваться на устройство.\n\nВ некоторых случаях также может выполняться обратная синхронизация (например, для аккаунта Google)."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Отключить автосинхронизацию?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Расход трафика будет ниже, но для получения новых данных вам придется синхронизировать аккаунты вручную. Уведомления о наличии обновлений будут отключены."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Информация об аккаунте"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Добавьте аккаунт"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Добавление аккаунта"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Удалить аккаунт"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Удалить аккаунт?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"С устройства будут удалены все сообщения, контакты и другие данные этого аккаунта."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Это действие запрещено администратором"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Удалить пользователя?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Все приложения и данные будут удалены."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Не удалось удалить пользователя"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Повторить попытку?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Закрыть"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Повторить"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Добавить пользователя?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Когда вы добавите пользователя, ему потребуется настроить профиль."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Любой пользователь устройства может обновлять приложения для всех аккаунтов."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Не удалось удалить аккаунт"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Синхронизация аккаунта"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Синхронизация включена для некоторых элементов (<xliff:g id="ID_1">%1$d</xliff:g> из <xliff:g id="ID_2">%2$d</xliff:g>)"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Синхронизация включена для всех элементов"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Синхронизация отключена для всех элементов"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Синхронизация отключена"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Ошибка синхронизации"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Последняя синхронизация: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Синхронизация…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Нажмите, чтобы синхронизировать<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Синхронизировать"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Отменить синхронизацию"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Проблемы с синхронизацией. Скоро все заработает."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Безопасность"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Блокировка экрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Нет"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-код"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Пароль"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Выберите тип блокировки"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Параметры блокировки экрана"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Способы блокировки"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Введите графический ключ"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Подтвердить"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Начертить ещё раз"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Блокировка экрана"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Выберите PIN-код"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Выберите графический ключ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Выберите пароль"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Выберите пароль"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Текущий способ блокировки"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Для защиты системы создайте граф. ключ."</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Очистить"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ИТ-администратор запретил использовать простые пароли. Выберите более сложную комбинацию."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Нельзя использовать последовательности из идущих подряд или повторяющихся цифр."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Параметры блокировки экрана"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> (<xliff:g id="NUM_DAYS">%3$s</xliff:g> дн. назад)"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Добавить надежное устройство"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Надежные устройства"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> устройство</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> устройства</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> устройств</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> устройства</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Устройство <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> будет разблокировать автомобиль при подключении. Если кто-то возьмет <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, то сможет получить доступ к этому устройству."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"ОК"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Удалить надежное устройство"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Для настройки надежного устройства используйте сопутствующее приложение. С помощью надежного устройства можно разблокировать свой профиль пользователя сразу после того, как автомобиль обнаружит ваш телефон."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Скачайте сопутствующее приложение на телефон."</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Чтобы подключить устройства, нажмите \"<xliff:g id="CAR_NAME">%1$s</xliff:g>\" на телефоне."</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock не удалось обнаружить функции безопасности на этом устройстве. В целях защиты вашего автомобиля от несанкционированного доступа действие функции разблокировки ограничено. Разблокировать автомобиль с помощью надежного устройства можно только в том случае, если до этого вы разблокируете его сами."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Добавление устройства \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" в список надежных"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Устройство \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\" добавлено в список надежных."</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Не удалось зарегистрировать устройство \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Чтобы добавить надежное устройство, необходимо выбрать способ аутентификации. Если надежного устройства не будет под рукой, вы сможете получить доступ к своему профилю только после аутентификации."</string>
     <string name="forget" msgid="3971143908183848527">"Удалить"</string>
+    <string name="connect" msgid="5861699594602380150">"Подключить"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Отключить"</string>
     <string name="delete_button" msgid="5840500432614610850">"Удалить"</string>
     <string name="remove_button" msgid="6664656962868194178">"Удалить"</string>
     <string name="cancel" msgid="750286395700355455">"Отмена"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Выход из деморежима"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Произойдет сброс настроек. Тестовый аккаунт и все пользовательские данные будут удалены."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Выйти из деморежима"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"Завершить настройку"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"Не сейчас"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ЗАКРЫТЬ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Эта функция недоступна во время вождения."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Невозможно добавить пользователя во время вождения."</string>
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 3d06bf6..aef8fbb 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"අඳුරු තිරය, ස්පර්ශ තිරය, බැටරිය"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"අඳුරු තිරය, රාත්‍රිය, වර්ණ ගැන්වීම"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"රාත්‍රී ප්‍රකාරය"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"ජාලය සහ අන්තර්ජාලය"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"ජංගම ජාලය"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"ජංගම දත්ත"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ජංගම ජාලය භාවිතයෙන් දත්තවලට ප්‍රවේශය"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"ජංගම දත්ත ක්‍රියාවිරහිත කරන්න ද?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"දත්ත භාවිතය"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"දත්ත අනතුරු ඇඟවීම සහ සීමාව"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"යෙදුම් දත්ත භාවිත චක්‍රය"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"දත්ත අනතුරු ඇඟවීම සකසන්න"</string>
+    <string name="data_warning" msgid="116776633806885370">"දත්ත අනතුරු ඇඟවීම"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"දත්ත සීමාව සකසන්න"</string>
+    <string name="data_limit" msgid="227338836292511425">"දත්ත සීමාව"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"දත්ත භාවිතය සීමා කිරීම"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ජංගම දත්ත ඔබ සැකසූ සීමාවට ළඟා වූ විට ඔබගේ වාහනයේ ශීර්ෂ ඒකකය එය අක්‍රිය කරයි.\n\nඔබගේ ශීර්ෂ ඒකකයෙන් දත්ත භාවිතය ගණනය කරනු ලබන අතර භාවිතය වෙනස් වීම සඳහා ඔබගේ වාහකයා ගිණුම මධ්‍යස්ථ සීමාවකට සැකසිය හැකි බව සලකන්න."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"නොරැහැන් ප්‍රවේශ ස්ථාන සකසන්න සහ කළමනාකරණය කරන්න"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi ක්‍රියාත්මක කරමින්…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi ක්‍රියා විරහිත කරමින්…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi ලැයිස්තුව පූරණ කිරීම"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi අබලයි"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"ජාලය අමතක කිරීමට අසමත් විය"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ජාලයට සම්බන්ධ වීමට අසමත් විය"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"ජාලය එක් කරන්න"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi අබලයි"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"සබඳින්න"</string>
     <string name="wifi_password" msgid="5565632142720292397">"මුරපදය"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"මුරපදය පෙන්වන්න"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ජාල නම"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID ඇතුළු කරන්න"</string>
     <string name="wifi_security" msgid="158358046038876532">"ආරක්ෂාව"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"සංඥා ප්‍රබලතාව"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"සංඥා ප්‍රබලතාව"</string>
     <string name="wifi_status" msgid="5688013206066543952">"තත්ත්වය"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"සම්බන්ධතා වේගය"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"සංඛ්‍යාතය"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP ලිපිනය"</string>
+    <string name="show_password" msgid="2074628020371139240">"මුරපදය පෙන්වන්න"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"ජාලයේ නම ඇතුළත් කරන්න"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"මුරපදය ඇතුළත් කරන්න"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"දුර්වලයි"</item>
-    <item msgid="2032262610626057081">"සතුටුදායකයි"</item>
-    <item msgid="3859756017461098953">"හොඳයි"</item>
-    <item msgid="1521103743353335724">"ඉතා හොඳයි"</item>
+    <item msgid="7683058295076342057">"දුර්වලයි"</item>
+    <item msgid="1639222824821660744">"තරමක් හොඳයි"</item>
+    <item msgid="1838705897358163300">"හොඳයි"</item>
+    <item msgid="6067166649320533751">"ඉතා හොඳයි"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"බ්ලූටූත්"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"බ්ලූටූත් ක්‍රියාත්මක කරන්න"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"බ්ලූටූත්"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"බ්ලූටූත් අබලයි"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"ජාල විස්තර"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC ලිපිනය"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP ලිපිනය"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"උප ජාල ආවරණය"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 ලිපින"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"වාහල"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi-Fi මනාප"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi ස්වයංක්‍රීයව ක්‍රියාත්මක කරන්න"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"ඔබේ නිවෙස් ජාලය වැනි, ඉහළ-ගුණත්වයේ සුරැකි ජාල අවට Wi-Fi ආපසු ක්‍රියාත්මක වනු ඇත"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"ස්ථානය ක්‍රියාවිරහිත නිසා නොමැත. "<annotation id="link">"ස්ථානය"</annotation>" ක්‍රියාත්මක කරන්න."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi ස්කෑන් කිරීම ක්‍රියාත්මක කරන්න ද?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ක්‍රියාත්මක කරන්න"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi ස්කෑන් කිරීම ක්‍රියාත්මකයි"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"ජංගම දත්ත වෙත ස්වයංක්‍රීයව මාරු වන්න"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi‑Fi හට අන්තර්ජාල ප්‍රවේශය නැති විට ජංගම දත්ත භාවිතා කරන්න. දත්ත භාවිතයේ ගාස්තු අදාළ විය හැකිය."</string>
+    <string name="learn_more" msgid="8214605928933358604">"තව දැන ගන්න"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"බ්ලූටූත්"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"සබැඳුම් කළමනාකරණය කරන්න, උපාංගයේ නම සහ සොයා ගැනීමේ හැකියාව සකසන්න"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"පරිගණකය"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"හෙඩ්සෙටය"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"දුරකථනය"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"නිරූපණය"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"හෙඩ්ෆෝන්"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ආදාන පර්යන්තය"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"බ්ලූටූත්"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"යුගල කළ උපාංග"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"තිබෙන උපාංග"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"යුගල කළ උපාංග නැත"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"පවතින උපාංග නැත"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"යුගලිත උපාංගය"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"නම‍"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"සඳහා භාවිතා කරන්න"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"බ්ලූටූත් උපාංගයේ නම වෙනස් කරන්න"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"නම් නොකළ උපාංගය"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"යුගල කළ උපාංග"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"නව උපාංගය යුගල කරන්න"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"යුගල කිරීමට බ්ලූටූත් ක්‍රියාත්මක කරනු ඇත"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"උපාංගය විසන්ධි කරන්න ද?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"ඔබේ වාහනය <xliff:g id="DEVICE_NAME">%1$s</xliff:g> වෙතින් විසන්ධි කරනු ඇත."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"වාහනයේ බ්ලූටූත් ලිපිනය: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"උපාංගයේ බ්ලූටූත් ලිපිනය: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"වාහනයේ නම"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"මෙම වාහනය යළි නම් කරන්න"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"උපාංගය යළි නම් කරන්න"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"යළි නම් කරන්න"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"තිබෙන උපාංග"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"පැතිකඩවල්"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"බ්ලූටූත් යුගලන ඉල්ලීම"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"යුගලනය සහ සබැඳීම"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"බ්ලූටූත්"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"බ්ලූටූත් යුගල කේතය"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN හි අකුරු හෝ සංකේත අඩංගු වේ"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"යුගලන කේතය යතුරු ලියා අනතුරුව ආපසු හෝ එන්ටර් ඔබන්න"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"සාමාන්‍යයෙන් 0000 හෝ 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"යුගල කිරීමේ ඉල්ලීම"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> සමඟ යුගල කිරීමට තට්ටු කරන්න."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"භාෂා"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"භාෂා සහ ආදාන"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"යතුරු පුවරුව"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"යතුරු පුවරු කළමනා කරන්න"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"පෙළින්-කථන ප්‍රතිදානය"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"වරණ එන්ජිම"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"වර්තමාන එන්ජිම"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"කථන ශීඝ්‍රතාව"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"තාරතාව"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"යළි සකසන්න"</string>
     <string name="sound_settings" msgid="3072423952331872246">"හඬ"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"නාද ශබ්දය"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"සංචාලන ශබ්දය"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"මාධ්‍ය"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"සංගීත සහ වීඩියෝ සඳහා ශබ්දය සකසන්න"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"එලාමය"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"දුරකථන රිගින්ටෝනය"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"පෙරනිමි දැනුම්දීම් හඬ"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"පෙරනිමි එලාම හඬ"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"යෙදුම් සහ දැනුම්දීම්"</string>
+    <string name="all_applications" msgid="7798210477486822168">"සියලුම යෙදුම් පෙන්වන්න"</string>
+    <string name="default_applications" msgid="1558183275638697087">"පෙරනිමි යෙදුම්"</string>
     <string name="applications_settings" msgid="794261395191035632">"යෙදුම් තතු"</string>
+    <string name="force_stop" msgid="2153183697014720520">"බලෙන් නවත්වන්න"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"බලෙන් නවතන්න ද?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"ඔබ යෙදුමක් බලෙන් නැවතුවහොත්, එය වැරදි ලෙස ක්‍රියා කරනු ඇත."</string>
     <string name="disable_text" msgid="4358165448648990820">"අබල කරන්න"</string>
     <string name="enable_text" msgid="1794971777861881238">"සබල කරන්න"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"අස්ථාපනය"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"ඔබ මෙම යෙදුම අබල කළහොත්, Android සහ වෙනත් යෙදුම් බලාපොරොත්තු වන පරිදි ක්‍රියා නොකරනු ඇත."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"යෙදුම අබල කරන්න"</string>
     <string name="permissions_label" msgid="2701446753515612685">"අවසර"</string>
     <string name="application_version_label" msgid="8556889839783311649">"අනුවාදය: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"අවසර ලබා දී නැත"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"අවසර ඉල්ලා නැත"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"දත්ත භාවිතය"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"යෙදුම් දත්ත භාවිතය"</string>
-    <string name="force_stop" msgid="2153183697014720520">"බලෙන් නවත්වන්න"</string>
     <string name="computing_size" msgid="5791407621793083965">"ගණනය කරමින්…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one">අතිරේක අවසර <xliff:g id="COUNT_1">%d</xliff:g>ක්</item>
       <item quantity="other">අතිරේක අවසර <xliff:g id="COUNT_1">%d</xliff:g>ක්</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"සහය සහ හඬ ආදානය"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"සහාය යෙදුම"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"තිරයෙන් පෙළ භාවිතා කරන්න"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"සහාය යෙදුමට තිර අන්තර්ගත පෙළ ලෙස ප්‍රවේශයට ඉඩ දෙන්න"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"තිර රුව භාවිතා කරන්න"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"සහාය යෙදුමට තිරයේ රූපයකට ප්‍රවේශයට ඉඩ දෙන්න"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"ස්වයං පිරවුම් සේවය"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"කිසිවක් නැත"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"තේරුවා"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"සහකරුට ඔබේ තිරය මත දෘශ්‍යමාන වන හෝ යෙදුම් තුළ ප්‍රවේශ විය හැකි තොරතුරු ඇතුළුව, ඔබේ පද්ධතිය මත භාවිතයේ ඇති යෙදුම් ගැන කියවීමට හැකි වෙයි."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ඔබ මෙම යෙදුම විශ්වාස කරන බව සහතික කර ගන්න&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ස්වයං පිරවිය හැකි දේවල් නිර්ණය කිරීමට ඔබේ තිරයෙහි ඇති දේවල් භාවිත කරයි."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"සේවාව එක් කරන්න"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"ස්ථානය"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"මෑත ස්ථාන ඉල්ලීම්"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"මෑත ස්ථාන ඉල්ලීම් නැත"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"යෙදුම්-මට්ටමේ අවසර"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"ස්කෑන් කිරීම"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"ස්ථානීය සේවා"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi ස්කෑන් කිරීම"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Wi‑Fi ක්‍රියාවිරහිත විට පවා, ඕනෑම වේලාවක දී Wi‑Fi ජාල සඳහා ස්කෑන් කිරීමට යෙදුම් සහ සේවාවන්ට ඉඩ දෙන්න. උදාහරණයක් ලෙස, ස්ථානය-පදනම් වූ විශේෂාංග සහ සේවා වැඩි දියුණු කිරීම සඳහා මෙය භාවිතා කළ හැකිය."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"බ්ලූටූත් ස්කෑන් කිරීම"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"බ්ලූටූත් ක්‍රියාවිරහිත විට පවා, ඕනෑම වේලාවක දී අවට උපාංග සඳහා ස්කෑන් කිරීමට යෙදුම් සහ සේවාවන්ට ඉඩ දෙන්න. උදාහරණයක් ලෙස, ස්ථානය-පදනම් වූ විශේෂාංග සහ සේවා වැඩි දියුණු කිරීම සඳහා මෙය භාවිතා කළ හැකිය."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"පද්ධතිය"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"පද්ධති යාවත්කාලීන"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"පද්ධති යාවත්කාලීන"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android අනුවාදය"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android ආරක්ෂක පැච් මට්ටම"</string>
     <string name="model_info" msgid="4966408071657934452">"මාදිලිය"</string>
     <string name="baseband_version" msgid="2370088062235041897">"පාදම් කලාප අනුවාදය"</string>
     <string name="kernel_version" msgid="7327212934187011508">"කර්නලයේ අනුවාදය"</string>
     <string name="build_number" msgid="3997326631001009102">"නිමැවුම් අංකය"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"බ්ලූටූත් ලිපිනය"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"ලද නොහැක"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"තත්ත්වය"</string>
     <string name="device_status" msgid="267298179806290920">"තත්ත්වය"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"ප්‍රකාශන හිමිකම"</string>
     <string name="license_title" msgid="936705938435249965">"බලපත්‍රය"</string>
     <string name="terms_title" msgid="5201471373602628765">"නියම සහ කොන්දේසි"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"පද්ධති WebView බලපත"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"පද්ධති WebView බලපත්‍ර"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"වෝල්පේපර"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"චන්ද්‍රිකා රූප සපයන්නන්:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"තුන් වන පාර්ශ්ව බලපත්‍ර"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"බලපත්‍ර පූරණය කිරීමේදී ගැටලුවක් විය."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"පූරණය කරමින්…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">දැන් ඔබ සංවර්ධකයෙක් වීමට ඇත්තේ පියවර <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> කි.</item>
+      <item quantity="other">දැන් ඔබ සංවර්ධකයෙක් වීමට ඇත්තේ පියවර <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> කි.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"ඔබ දැන් වර්ධකයෙකි"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"අවශ්‍ය නැත, ඔබ දැනටමත් වර්ධකයෙකි."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"සංවර්ධක විකල්ප"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"යළි පිහිටුවීමේ විකල්ප"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"ජාලය, යෙදුම්, හෝ උපාංගය යළි පිහිටුවීම"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"ජාලය යළි සකසන්න"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"මෙය පහත ඒවා ඇතුළුව, සියලු ජාල සැකසීම් යළි පිහිටුවනු ඇත:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"ජංගම දත්ත"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"බ්ලූටූත්"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"වාහන eSIM සියල්ල මකන්න"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"මෙය ඔබේ සේවා සැලසුම අවලංගු නොකරයි."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIMs යළි පිහිටුවිය නොහැක"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"ජාලය තෝරන්න"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"සැකසීම් යළි පිහිටුවන්න"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"යළි පිහිටුවන්න ද?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"සියලු ජාල සැකසීම් යළි පිහිටුවන්න ද? ඔබට මෙම ක්‍රියාව පසුගමනය කළ නොහැකිය!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"සැකසීම් යළි පිහිටුවන්න"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"ජාල සැකසීම් යළි පිහිටුවිණි"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"යෙදුම් මනාප යළි පිහිටුවන්න"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"මෙමඟින් මේ සඳහා සියලු මනාප යළි පිහිටුවනු ඇත:\n\n"<li>"අබලිත යෙදුම්"</li>\n<li>"අබලිත යෙදුම් දැනුම්දීම්"</li>\n<li>"ක්‍රියා සඳහා පෙරනිමි යෙදුම්"</li>\n<li>"යෙදුම් සඳහා පසුබිම් දත්ත සීමා කිරීම්"</li>\n<li>"ඕනෑම අවසර සීමාවක්"</li>\n\n"ඔබට කිසිදු යෙදුම් දත්තයක් නැති වන්නේ නැත."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"යෙදුම් යළි පිහිටුවන්න"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"යෙදුම් මනාප යළි පිහිටුවා ඇත"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"සියලු දත්ත මකන්න (කම්හල් යළි පිහිටුවීම)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"මෙමඟින් මේවා ඇතුළුව, ඔබේ වාහනයේ ප්‍රධාන ඒකකයෙන් සියලුම දත්ත මකනු ඇත:\n\n"<li>"ඔබේ Google ගිණුම"</li>\n<li>"පද්ධති සහ යෙදුම් දත්ත සහ සැකසීම්"</li>\n<li>"බාගත් යෙදුම්"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"ඔබ දැනට පහත ගිණුම් වෙත පුරනය වී සිටියි:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"මෙම වාහනයෙහි වෙනත් පරිශීලකයින් සිටී."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"වාහනය යළි පිහිටුවන්න"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"යළි පිහිටුවන්න ද?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ඔබේ සියලු පුද්ගලික තොරතුරු සහ බාගත් යෙදුම් මකන්න ද? ඔබට මෙම ක්‍රියාව ආපසු හැරවිය නොහැක!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"සියල්ල මකන්න"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"මකමින්"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"රැඳී සිටින්න..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"දිනය සහ වේලාව"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"දිනය සහ වේලාව සකසන්න"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"දිනය, වේලාව, වේලා කලාපය සහ ආකෘති සකසන්න"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"වේලා කලාපය අනුව පෙළගස්වන්න"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"දිනය"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"වේලාව"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"පරිශීලක එක් කරන්න"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"ගිණුම එක් කරන්න"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"පරිශීලකයා මකන්න"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"නව පරිශීලකයා"</string>
-    <string name="user_guest" msgid="3465399481257448601">"අමුත්තා"</string>
     <string name="user_admin" msgid="1535484812908584809">"පරිපාලක"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"පරිපාලක ලෙස පුරනය වී ඇත"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"පරිපාලක අවසර සියල්ල"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"පරිපාලක කරන්න"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"පරිශීලකයාට වෙනත් පරිපාලකයින් ඇතුළුව, පරිශීලකයින් මැකීමට සහ පද්ධතිය කම්හල් යළි පිහිටුවීමට හැකි වනු ඇත."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"මෙම ක්‍රියාව ආපසු හැරවිය නොහැක."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"ඔව්, පරිපාලක කරන්න"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"නව පරිශීලකයින් සාදන්න"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"දුරකථන ඇමතුම් ලබා ගන්න"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"මෝටර් රථයේ ජංගම දත්ත හරහා පණිවුඩ යැවීම"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"නව යෙදුම් ස්ථාපන කරන්න"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"යෙදුම් අස්ථාපන කරන්න"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"පරිශීලක එක් කරන්න"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"නව පරිශීලකයා"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"අලුත් පරිශීලක එක් කරනව ද?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ඔබ අලුත් පරිශීලකයෙක් එක් කරන විට, එම පුද්ගලයාට තමන්ගේ ඉඩ සකසා ගැනීමට අවශ්‍ය වේ."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"සියලුම අනෙක් පරිශීලකයින් සඳහා ඕනෑම පරිශීලකයෙකුට යෙදුම් යාවත්කාලීන කළ හැක."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"පරිශීලක සීමාවට ළඟා විය"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">ඔබට පරිශීලකයින් <xliff:g id="COUNT">%d</xliff:g> දෙනෙක් දක්වා නිර්මාණ කළ හැක.</item>
+      <item quantity="other">ඔබට පරිශීලකයින් <xliff:g id="COUNT">%d</xliff:g> දෙනෙක් දක්වා නිර්මාණ කළ හැක.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"නව පරිශීලකයෙකු සෑදීමට අසමත් විය"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"මෙම පරිශීලකයා මකන්නද?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"සියලුම යෙදුම් සහ දත්ත මකා දැමෙනු ඇත."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"පරිශීලක මකා දැමීමට අසමත් විය."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ඉවතලන්න"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"යළි උත්සාහ කරන්න"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"අවසාන පරිශීලක මකන්නද?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"මෙම මෝටර් රථය සඳහා ඉතිරිව ඇති ඉතිරි පරිශීලක මකා දැමීමෙන් පසු, නව පරිපාලක පරිශීලකයකු තනනු ඇත."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"මෙම පරිශීලකයාට සම්බන්ධ සියලු දත්ත, සැකසීම් සහ යෙදුම් මකා දමනු ලැබේ. ඔබ නැවතත් පද්ධතිය සැකසිය යුතුයි."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"නව පරිපාලක තෝරන්න"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"ඔබට අවම වශයෙන් එක් පරිපාලකයෙකු සිටිය යුතුය. මෙම කොටස මකා දැමීම සඳහා, මුලින්ම විකල්පයක් තෝරා ගන්න."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"පරිපාලක තෝරන්න"</string>
+    <string name="user_guest" msgid="3465399481257448601">"අමුත්තා"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"අමුත්තා"</string>
     <string name="user_switch" msgid="6544839750534690781">"මාරු වෙන්න"</string>
     <string name="current_user_name" msgid="3813671533249316823">"ඔබ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"නම‍"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"සකසා නැත"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"පරිශීලක නම සංස්කරණය"</string>
     <string name="users_list_title" msgid="770764290290240909">"පරිශීලකයින්"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s ට අවසර දෙන ලදි"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"ගිණුම්"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"පරිශීලක"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"ගිණුම එක් කරන්න"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"ගිණුම් එක් නොකෙරිණි"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> සඳහා ගිණුම්"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ස්වයංක්‍රීයව දත්ත සමමුහූර්ත කරන්න"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"යෙදුම් වෙත දත්ත ස්වයංක්‍රීයව නැවුම් කිරීමට ඉඩ දෙන්න"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"දත්ත ස්වයංක්‍රීය-සමමුහූර්ත වීම සක්‍රී කරන්නේද?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"අන්තර්ජාලයේ ඔබගේ උපාංගවලට ඔබ කරන ඕනෑම වෙනස්කමක් ස්වයංක්‍රියව දුරකතනයට පිටපත් වෙයි.\n\nසමහර ගිණුම් මඟින් ඔබ දුරකථනයේ සිදු කරන ඕනෑම වෙනස්කමක් ස්වයංක්‍රීයව වෙබ් අඩවියට පිටපත් කිරීම ද කළ හැක. Google ගිණුමක් මෙවැනි ආකාරයකට ක්‍රියා කරයි."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"දත්ත ස්වයංක්‍රීය-සමමුහූර්ත වීම අක්‍රිය කරන්නේද?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"මෙමඟින් දත්ත භාවිතය ඉතිරි කරන, නමුත් මෑත තොරතුරු එකතු කිරීමට සෑම ගිණුමක්ම ඔබ හස්තීයව සමමුහූර්ත  කළ යුතු වෙයි. තවද යාවත්කාලීන සිදුවන විට ඔබට දැනුම්දීම් නොලැබෙයි."</string>
     <string name="account_details_title" msgid="7529571432258448573">"ගිණුම් තතු"</string>
     <string name="add_account_title" msgid="5988746086885210040">"ගිණුම එක් කරන්න"</string>
     <string name="add_an_account" msgid="1072285034300995091">"ගිණුමක් එක් කරන්න"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"ගිණුම ඉවත් කරන්න"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"ගිණුම ඉවත් කරන්න ද?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"මෙම ගිණුම ඉවත් කිරීමෙන් උපාංගයෙන් එහි සියලු පණිවිඩ, සම්බන්ධතා සහ වෙනත් දත්ත මකනු ඇත!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ඔබේ පරිපාලක විසින් මෙම වෙනස් කිරීමට ඉඩ නොදේ"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"මෙම පරිශීලක ඉවත් කරන්න ද?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"සියලුම යෙදුම් සහ දත්ත මකා දැමෙනු ඇත."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"පරිශීලක ඉවත් කිරීමට අසමත් විය."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"නැවත උත්සාහ කරන්න ද?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"අස් කරන්න"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"යළි උත්සාහ කරන්න"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"අලුත් පරිශීලක එක් කරනව ද?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"ඔබ අලුත් පරිශීලකයෙක් එක් කරන විට, එම පුද්ගලයාට තමන්ගේ ඉඩ සකසා ගැනීමට අවශ්‍ය වේ."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"සියලුම අනෙක් පරිශීලකයින් සඳහා ඕනෑම පරිශීලකයෙකුට යෙදුම් යාවත්කාලීන කළ හැක."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"ගිණුම ඉවත් කිරීමට අසමත් විය."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"ගිණුම් සමමුහුර්තය"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"අයිතම <xliff:g id="ID_2">%2$d</xliff:g>කින් <xliff:g id="ID_1">%1$d</xliff:g>ක් සඳහා සමමුහුර්තය ක්‍රියාත්මකයි"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"සියලු අයිතම සඳහා සමමුහුර්තය ක්‍රියාත්මකයි"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"සියලු අයිතම සඳහා සමමුහුර්තය ක්‍රියාවිරහිතයි"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"සමමුහුර්තය ක්‍රියාවිරහිතයි"</string>
+    <string name="sync_error" msgid="6698021343089247914">"සමමුහුර්ත දෝෂයක්"</string>
+    <string name="last_synced" msgid="4745124489150101529">"අවසාන සමමුහුර්තය <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"දැන් සමමුහුර්ත වේ…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"දැන් සමමුහුර්ත කිරීමට තට්ටු කරන්න<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"දැන් සමමුහුර්ත කරන්න"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"සමමුහුර්තය අවලංගු කරන්න"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"සමමුහුර්තය දැනට ගැටලුවලට මුහුණ පා ඇත. එය සුළු මොහොතකින් ආපසු පැමිණෙනු ඇත."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ආරක්ෂාව"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"තිර අගුල"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"කිසිවක් නැත"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"මුරපදය"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"අගුළු ආකාරයක් තෝරාගන්න"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"තිර අගුළු විකල්ප"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"අඟුලු විකල්ප"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"ඔබගේ රටාව ඇතුළු කරන්න"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"තහවුරු කරන්න"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"යළි අඳින්න"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"තිර අගුලක් සකසන්න"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"ඔබගේ PIN තෝරන්න"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"ඔබේ රටාව තෝරා ගන්න"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"ඔබගේ මුරපදය තෝරන්න"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"ඔබේ මුරපදය තෝරා ගන්න"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"වත්මන් තිර අගුල"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"ආරක්ෂාව සඳහා, රටාවක් සකසන්න"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"හිස් කරන්න"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ඔබේ IT පරිපාලක විසින් සුලබ මුරපද අවහිර කරනු ලැබේ. වෙනස් මුරපදයක් උත්සාහ කරන්න."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ආරෝහණ, අවරෝහණ හෝ පුනරාවර්ත අනුක්‍රමයේ ඉලක්කම්වලට ඉඩ නොදේ."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"තිර අගුළු විකල්ප"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : දින <xliff:g id="NUM_DAYS">%3$s</xliff:g>කට පෙර"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"විශ්වාසදායී උපාංගය එක් කරන්න"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"විශ්වාසදායී උපාංග"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one">උපාංග <xliff:g id="COUNT_1">%d</xliff:g> ක්</item>
+      <item quantity="other">උපාංග <xliff:g id="COUNT_1">%d</xliff:g> ක්</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"ඔබේ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> සම්බන්ධ වන විට මෙම මෝටර් රථය අගුළු හරිනු ඇත. යමෙකු ඔබේ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>රැගෙන ගියහොත්, ඔවුන්ට මෙම උපාංගයට ප්‍රවේශ වීමට හැකි වනු ඇත"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"තහවුරු කරන්න"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"විශ්වාසදායී උපාංගය ඉවත් කරන්න"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"නිමයි"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"විශ්වසනීය උපාංගයක් සැකසීමට මිත්‍ර යෙදුම භාවිත කරන්න. සැකසූ පසු, වාහනය ඔබේ දුරකථනය අනාවර කළ විට ඔබට ඔබේ පරිශීලක පැතිකඩ අඟුලු ඇරීමට හැකි වෙයි."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ඔබේ දුරකථනය මත මිත්‍ර යෙදුම බාගන්න"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. උපාංග යුගල කිරීමට ඔබේ දුරකථනයේ <xliff:g id="CAR_NAME">%1$s</xliff:g> තෝරන්න"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"හපන් අඟුලට මෙම උපාංගයේ ආරක්‍ෂණ විශේෂාංග අනාවරණ කළ නොහැක ඔබේ කාර් රථය ආරක්‍ෂා කිරීමට උදවු කිරීමට, ඔබ ඔබේ කාර් රථය අඟුලු ඇරීමෙන් පසු පමණක් විශ්වසනීය උපාංගයට ඔබේ කාර් රථට අඟුලු ඇර තබා ගත හැක. වෙනත් කෙනෙක් ඔබේ විශ්වසනීය උපාංගය තබා සිටින්නේ වූවත්, එයට එය අවට තිබියදී ඔබේ කාර් රථය අඟුලු ඇර තබා ගත හැක."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> විශ්වසනීය උපාංගයක් ලෙස එක් කරන්න"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> විශ්වසනීය උපාංගයක් ලෙස සාර්ථකය එක් කළා"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ලියාපදිංචි වීම අසාර්ථකයි"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"විශ්වාසදායී උපාංගයක් එක් කිරීමට ඔබට මීළඟට සත්‍යාපන ක්‍රමයක් සැකසීමට අවශ්‍ය කරයි. ඔබට ඔබේ විශ්වාසදායී උපාංගය ළඟ නොමැති නම්, ඔබේ පැතිකඩට ප්‍රවේශයට සත්‍යාපනය අවශ්‍ය වනු ඇත."</string>
     <string name="forget" msgid="3971143908183848527">"අමතක කරන්න"</string>
+    <string name="connect" msgid="5861699594602380150">"සබඳින්න"</string>
+    <string name="disconnect" msgid="6140789953324820336">"විසන්ධි කරන්න"</string>
     <string name="delete_button" msgid="5840500432614610850">"මකන්න"</string>
     <string name="remove_button" msgid="6664656962868194178">"ඉවත් කරන්න"</string>
     <string name="cancel" msgid="750286395700355455">"අවලංගු කරන්න"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ආදර්ශන ප්‍රකාරයෙන් ඉවත් වන්න"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"මෙමගින් ආදර්ශන ගිණුම මකා පද්ධතිය කර්මාන්තශාලා දත්ත යළි පිහිටුවීම කරනු ඇත. සියලු පරිශීලක දත්ත අහිමි වනු ඇත."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ආදර්ශනයෙන් ඉවත් වන්න"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"පිහිටුවීම අවසන් කරන්න"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"දැන් නොවේ"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"අස් කරන්න"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"විශේෂාංගය රිය පැදවීමේ දී නොමැත."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"රිය පැදවීමේ දී පරිශීලකයා එක් කළ නොහැක."</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index b08e2eb..8533f3b 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"stlmiť obrazovku, dotyková obrazovka, batéria"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"stlmenie obrazovky, noc, tónovanie"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nočný režim"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Sieť a internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilná sieť"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilné dáta"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Prístup k dátam pomocou mobilnej siete"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vypnúť mobilné dáta?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Využitie dát"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Upozornenie o dátach a limit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cyklus spotreby dát aplikáciami"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Nastaviť dátové upozornenie"</string>
+    <string name="data_warning" msgid="116776633806885370">"Dátové upozornenie"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Nastaviť dátový limit"</string>
+    <string name="data_limit" msgid="227338836292511425">"Dátový limit"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Obmedzenie spotreby dát"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Autorádio vozidla vypne po dosiahnutí nastaveného limitu mobilné dátové pripojenie.\n\nKeďže spotrebu dát meria autorádio, ale váš operátor môže spotrebu vyčísliť inak, je vhodné nastaviť si nižší limit."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Umožňuje nastaviť a spravovať prístupové body bezdrôtovej siete"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Zapína sa Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Vypína sa Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Načítava sa zoznam sietí Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Sieť Wi-Fi je vypnutá"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Sieť sa nepodarilo odstrániť"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Nepodarilo sa pripojiť k sieti"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Pridať sieť"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Sieť Wi-Fi je vypnutá"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Pripojiť"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Heslo"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Zobraziť heslo"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Názov siete"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Zadajte SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Zabezpečenie"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Sila signálu"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Sila signálu"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Stav"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Rýchlosť pripojenia"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvencia"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Adresa IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Zobraziť heslo"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Zadajte názov siete"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Zadajte heslo"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Slabé"</item>
-    <item msgid="2032262610626057081">"Priemerné"</item>
-    <item msgid="3859756017461098953">"Dobré"</item>
-    <item msgid="1521103743353335724">"Vynikajúce"</item>
+    <item msgid="7683058295076342057">"Slabé"</item>
+    <item msgid="1639222824821660744">"Priemerné"</item>
+    <item msgid="1838705897358163300">"Dobré"</item>
+    <item msgid="6067166649320533751">"Vynikajúce"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Zapnúť Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Rozhranie Bluetooth je deaktivované"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Podrobnosti siete"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Adresa MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Adresa IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Maska podsiete"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adresy IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Brána"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Predvoľby Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Zapínať Wi‑Fi automaticky"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi sa zapne v blízkosti uložených sietí vysokej kvality"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nedostupné, pretože určovanie polohy je vypnuté. "<annotation id="link">"Zapnúť"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Zapnúť vyhľadávanie Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Zapnúť"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Vyhľadávanie sietí Wi‑Fi je zapnuté"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Automaticky prepnúť na mobilné dáta"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Používať mobilné dáta, keď Wi‑Fi nemá prístup k internetu. Za využité dáta vám môžu byť účtované poplatky."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Ďalšie informácie"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Správa pripojenia, nastavenie názvu zariadenia a viditeľnosti"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Počítač"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Náhlavná súprava"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefón"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Snímkovacie zariadenie"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Slúchadlá"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Periférne vstupné zariadenie"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Spárované zariadenia"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Dostupné zariadenia"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Žiadne spárované zariadenia"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nie sú k dispozícii žiadne zariadenia"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Spárované zariadenie"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Názov"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Použiť pre"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Zmeňte názov zariadenia Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Zariadenie bez názvu"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Spárované zariadenia"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Spárovať nové zariadenie"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Zapne sa Bluetooth s cieľom párovania"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Odpojiť zariadenie?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Vozidlo bolo odpojené od zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Adresa Bluetooth vozidla: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Adresa Bluetooth zariadenia: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Názov vozidla"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Premenovať vozidlo"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Premenovať zariadenie"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Premenovať"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Dostupné zariadenia"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profily"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Žiadosť o párovanie zariadenia Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Párovať a pripojiť"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Párovací kód Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Kód PIN obsahuje písmená alebo symboly"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Zadajte párovací kód a potom stlačte tlačidlo Return alebo Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Obvykle 0000 alebo 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Žiadosť o párovanie"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Zariadenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> spárujete klepnutím."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Jazyky"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Jazyky a vstup"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Klávesnica"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Spravovať klávesnice"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Výstup prevodu textu na reč"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Preferovaný nástroj"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Aktuálny nástroj"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Rýchlosť reči"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Výška"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Resetovať"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Zvuk"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Hlasitosť zvonenia"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Hlasitosť navigácie"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Médiá"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Umožňuje nastaviť hlasitosť hudby a videí"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Budík"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Tón zvonenia telefónu"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Predvolený zvuk upozornenia"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Predvolený zvuk budíka"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikácie a upozornenia"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Zobraziť všetky aplikácie"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Predvolené aplikácie"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informácie o aplikácii"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Vynútiť zastavenie"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Chcete vynútiť zastavenie?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ak vynútite zastavenie aplikácie, môže sa správať zvláštne."</string>
     <string name="disable_text" msgid="4358165448648990820">"Zakázať"</string>
     <string name="enable_text" msgid="1794971777861881238">"Povoliť"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Odinštalovať"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ak aplikáciu deaktivujete, systém a ďalšie aplikácie už nemusia fungovať podľa očakávaní."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Deaktivovať aplikáciu"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Povolenia"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Verzia: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Neboli udelené žiadne povolenia"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Neboli požadované žiadne povolenia"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Spotreba dát"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Spotreba dát aplikácie"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Vynútiť zastavenie"</string>
     <string name="computing_size" msgid="5791407621793083965">"Prebieha výpočet…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> ďalšie povolenia</item>
@@ -117,15 +168,39 @@
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ďalších povolení</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ďalšie povolenie</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Pomoc a hlasový vstup"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Asistenčná aplikácia"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Použiť text z obrazovky"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Povoliť asistenčnej aplikácii prístup k obsahu obrazovky ako k textu"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Použiť snímku obrazovky"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Povoliť asistenčnej aplikácii prístup k snímke obrazovky"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Služba automatického dopĺňania"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Žiadna"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Vybraná"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Pomocník bude môcť čítať informácie o aplikáciách používaných vo vašom systéme vrátane údajov viditeľných na obrazovke alebo prístupných v aplikáciách."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Skontrolujte, či ide o dôveryhodnú aplikáciu&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Automatické dopĺňanie Google&gt;%1$s&lt;/xliff:g&gt; určuje na základe obsahu obrazovky, čo je možné automaticky vyplniť."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Pridať službu"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Poloha"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedávne žiadosti o polohu"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Žiadne nedávne žiadosti o polohu"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Povolenia na úrovni aplikácie"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Vyhľadávanie"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Služby určovania polohy"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Vyhľadávanie sietí Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Povoľte aplikáciám a službám kedykoľvek vyhľadávať siete Wi‑Fi, a to aj vtedy, keď je sieť Wi-Fi vypnutá. Môžete to využiť napríklad na zlepšenie funkcií a služieb podmienených polohou."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Vyhľadávanie zariadení Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Povoľte aplikáciám a službám kedykoľvek vyhľadávať zariadenia v okolí, a to aj vtedy, keď je rozhranie Bluetooth vypnuté. Môžete to využiť napríklad na zlepšenie funkcií a služieb podmienených polohou."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Systém"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Aktualizácie systému"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizácie systému"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Verzia Androidu"</string>
     <string name="security_patch" msgid="4794276590178386903">"Úroveň opráv zabezpečenia systému"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Verzia základného pásma"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Verzia jadra"</string>
     <string name="build_number" msgid="3997326631001009102">"Číslo zostavy"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresa Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nie je k dispozícii"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Stav"</string>
     <string name="device_status" msgid="267298179806290920">"Stav"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Licencia"</string>
     <string name="terms_title" msgid="5201471373602628765">"Zmluvné podmienky"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licencia systému WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licencie systému WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Tapety"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Poskytovatelia satelitných snímok:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licencie tretích strán"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Pri načítavaní licencií sa vyskytla chyba."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Načítava sa…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="few">Ešte <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> kroky a bude z vás vývojár.</item>
+      <item quantity="many">You are now <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> steps away from being a developer.</item>
+      <item quantity="other">Ešte <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> krokov a bude z vás vývojár.</item>
+      <item quantity="one">Ešte <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> krok a bude z vás vývojár.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Teraz ste vývojár!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nie je to potrebné, už ste vývojár."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Pre vývojárov"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Obnovenie možností"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Obnovenie siete, aplikácií alebo zariadenia"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Obnoviť sieť"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Týmto obnovíte všetky sieťové nastavenia vrátane:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobilné dáta"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Vymazať všetky eSIM karty vo vozidle"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Vaša tarifa nebude zrušená."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM karty sa nedajú obnoviť"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Vyberte sieť"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Obnoviť nastavenia"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Obnoviť?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Chcete obnoviť všetky sieťové nastavenia? Toto akciu nie je možné vrátiť späť."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Obnoviť nastavenia"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Sieťové nastavenia boli obnovené"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Obnoviť predvoľby aplikácií"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Táto akcia resetuje predvoľby pre:\n\n"<li>"Zakázané aplikácie"</li>\n<li>"Upozornenia zakázaných aplikácií"</li>\n<li>"Predvolené aplikácie pre akcie"</li>\n<li>"Obmedzenia dát v pozadí pre aplikácie"</li>\n<li>"Akékoľvek obmedzenia povolení"</li>\n\n"Nestratíte žiadne dáta aplikácií."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Obnoviť aplikácie"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Predvoľby aplikácií boli obnovené"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Vymazať dáta (obnova výr. nastavení)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Týmto vymažete všetky údaje z autorádia vozidla, napríklad:\n\n"<li>"svoj účet Google,"</li>\n<li>"údaje aj nastavenia systému a aplikácií,"</li>\n<li>"stiahnuté aplikácie."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Aktuálne ste prihlásený/-á do nasledujúcich účtov:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"V tomto vozidle sú ďalší používatelia."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Resetovať vozidlo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Chcete resetovať?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Chcete vymazať všetky osobné údaje a stiahnuté aplikácie? Túto akciu nebude možné vrátiť späť."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Vymazať všetko"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Prebieha vymazávanie"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Čakajte…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Dátum a čas"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Nastavenie dátumu a času"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Nastaviť dátum, čas, časové pásmo a formáty"</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Zoradiť podľa časového pásma"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Dátum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Čas"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Pridanie používateľa"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Pridať účet"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Odstránenie používateľa"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nový používateľ"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Hosť"</string>
     <string name="user_admin" msgid="1535484812908584809">"Správca"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prihlásený/-á ako správca"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Všetky povolenia správcu"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Nastaviť ako správcu"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Používateľ bude môcť odstrániť ostatných používateľov (vrátane správcov) a obnoviť systém do výrobných nastavení."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Túto akciu nie je možné vrátiť späť."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Áno, nastaviť ako správcu"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Vytvorenie nových používateľov"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefonovanie"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS cez mobilné dáta auta"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Inštalácia nových aplikácií"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Odinštalovanie aplikácií"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Pridanie používateľa"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nový používateľ"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Pridať nového používateľa?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Keď pridáte nového používateľa, musí si nastaviť vlastný priestor."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Akýkoľvek používateľ môže aktualizovať aplikácie všetkých ostatných používateľov."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Dosiahnutý limit počtu používateľov"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="few">Môžete vytvoriť až <xliff:g id="COUNT">%d</xliff:g> používateľov.</item>
+      <item quantity="many">You can create up to <xliff:g id="COUNT">%d</xliff:g> users.</item>
+      <item quantity="other">Môžete vytvoriť až <xliff:g id="COUNT">%d</xliff:g> používateľov.</item>
+      <item quantity="one">Môžete vytvoriť iba jedného používateľa.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Vytvorenie nového používateľa zlyhalo"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Odstrániť používateľa?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Všetky aplikácie a údaje budú odstránené."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Používateľa sa nepodarilo odstrániť."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Zavrieť"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Skúsiť znova"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Odstrániť posledného používateľa?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Po odstránení posledného zostávajúceho používateľa tohto auta sa vytvorí nový správca."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Všetky údaje, nastavenia a aplikácie priradené k tomuto používateľovi budú odstránené. Budete musieť znova nastaviť systém."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Výber nového správcu"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Potrebujete aspoň jedného správcu. Ak chcete tohto odstrániť, najprv vyberte jeho náhradníka."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Vybrať správcu"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Hosť"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Hosť"</string>
     <string name="user_switch" msgid="6544839750534690781">"Prepnúť"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Vy (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Meno"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nenastavené"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Úprava používateľského mena"</string>
     <string name="users_list_title" msgid="770764290290240909">"Používatelia"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Povolenia používateľa %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Účty"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Používateľ"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Pridať účet"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Neboli pridané žiadne účty"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Účty používateľa <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Automaticky synchronizovať údaje"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Umožniť aplikáciám automaticky obnovovať údaje"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Zapnúť automat. synchr. údajov?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Všetky zmeny vykonané v účtoch na webe sa automaticky skopírujú do vášho zariadenia.\n\nNiektoré účty môžu tiež automaticky skopírovať na web akékoľvek zmeny vykonané v telefóne. Týmto spôsobom funguje aj účet Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Vypnúť automat. synchr. údajov?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Toto nastavenie šetrí spotrebu dát a batérie. Na získanie najnovších informácií však budete musieť každý účet synchronizovať ručne. Nebudete tiež dostávať upozornenia na dostupné aktualizácie."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informácie o účte"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Pridanie účtu"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Pridanie účtu"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Odstrániť účet"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Chcete odstrániť účet?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Odstránením tohto účtu budú zo zariadenia odstránené aj všetky správy, kontakty a ďalšie dáta."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Správca túto zmenu zakázal"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Odstrániť používateľa?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Všetky aplikácie a dáta budú odstránené."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Používateľa sa nepodarilo odstrániť."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Skúsiť znova?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Odmietnuť"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Znova"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Pridať nového používateľa?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Keď pridáte nového používateľa, musí si nastaviť vlastný priestor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Akýkoľvek používateľ môže aktualizovať aplikácie všetkých ostatných používateľov."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Účet sa nepodarilo odstrániť."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Synchronizácia účtu"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synchronizácia je zapnutá pre <xliff:g id="ID_1">%1$d</xliff:g> z <xliff:g id="ID_2">%2$d</xliff:g> položiek"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synchronizácia je zapnutá pre všetky položky"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synchronizácia je vypnutá pre všetky položky"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synchronizácia je VYPNUTÁ"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Chyba synchronizácie"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Posledná synchronizácia: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synchronizuje sa…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Klepnutím synchronizujete (naposledy synchronizované: <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synchronizovať"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Zrušiť synchronizáciu"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Vyskytli sa problémy so synchronizáciou. Služba bude čoskoro obnovená."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Zabezpečenie"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zámka obrazovky"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Žiadna zámka"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Heslo"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Voľba typu zámku"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Možnosti zámky obrazovky"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Možnosti zámky"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Zadajte vzor"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Potvrdiť"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Nakresliť znova"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Nastavte zámku obrazovky"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Zvoľte si PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Vyberte vzor"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Zvoľte si heslo"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Zvoľte si heslo"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Aktuálna zámka obrazovky"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Z bezpečnostných dôvodov nastavte vzor"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Vymazať"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Bežné heslá zablokoval správca IT. Skúste iné heslo."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Vzostupná, zostupná alebo opakovaná sekvencia čísiel nie je povolená."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zámky obrazovky"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : pred <xliff:g id="NUM_DAYS">%3$s</xliff:g> dňami"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Pridanie dôveryhodného zar."</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Dôveryhodné zar."</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> zariadenia</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> zariadení</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> zariadenie</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Vaše zariadenie <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> po pripojení odomkne toto auto. Ak vám niekto zariadenie <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> vezme, pravdepodobne bude mať prístup do tohto zariadenia"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdiť"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Odstrániť dôveryhodné zariadenie"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Hotovo"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Nastavte dôveryhodné zariadenie pomocou sprievodnej aplikácie. Po nastavení budete môcť odomknúť profil používateľa, keď vozidlo rozpozná váš telefón"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Stiahnite v telefóne sprievodnú aplikáciu"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Vyberte v telefóne auto <xliff:g id="CAR_NAME">%1$s</xliff:g> a spárujte tak zariadenia"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock nemôže rozpoznať funkcie zabezpečenia tohto zariadenia. V záujme ochrany ponechá dôveryhodné zariadenie vaše auto odomknuté iba v prípade, že ste ho už odomkli. Dôveryhodné zariadenie môže ponechať vaše auto odomknuté, keď je nablízku, dokonca aj keď ho drží iná osoba."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Pridanie dôveryhodného zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Dôveryhodné zariadenie <xliff:g id="DEVICE_NAME">%1$s</xliff:g> bolo úspešne pridané"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> sa nepodarilo zaregistrovať"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ak chcete pridať dôveryhodné zariadenie, musíte v ďalšom kroku nastaviť spôsob overenia. Ak nemáte dôveryhodné zariadenie pri sebe, prístup do vášho profilu bude možný až po overení."</string>
     <string name="forget" msgid="3971143908183848527">"Odstrániť"</string>
+    <string name="connect" msgid="5861699594602380150">"Pripojiť"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Odpojiť"</string>
     <string name="delete_button" msgid="5840500432614610850">"Odstrániť"</string>
     <string name="remove_button" msgid="6664656962868194178">"Odstrániť"</string>
     <string name="cancel" msgid="750286395700355455">"Zrušiť"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Ukončenie ukážkového režimu"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ukážkový účet bude odstránený a systém sa obnoví do výrobných nastavení. Všetky dáta používateľa budú stratené."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Ukončiť ukážku"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"dokončiť nastavenie"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"teraz nie"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ODMIETNUŤ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funkcia nie je k dispozícii za jazdy."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Za jazdy nie je možné pridať používateľa."</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 41726ac..41af707 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zatemnitev zaslona, zaslon na dotik, akumulator"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"zatemnitev zaslona, noč, obarvanje"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nočni način"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Omrežje in internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilno omrežje"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Prenos pod. v mobilnem omrežju"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Dostop do podatkov prek mobilnega omrežja"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Želite izklopiti prenos pod. v mobilnih omrežjih?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Prenesena količina podatkov"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Opozorilo in omejitev za prenos podatk."</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cikel porabe podatkov aplikacije"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Nastavi opoz. za prenos podat."</string>
+    <string name="data_warning" msgid="116776633806885370">"Opozorilo o prenosu podatkov"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Nastavi omejitev prenosa pod."</string>
+    <string name="data_limit" msgid="227338836292511425">"Omejitev prenosa podatkov"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Omejitev prenesene količine podatkov"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Glavna enota vozila bo izklopila prenos podatkov v mobilnih omrežjih, ko bo dosežena nastavljena omejitev.\n\nKer količino prenesenih podatkov meri glavna enota, operater pa jo morda drugače, priporočamo, da nastavite nekoliko manjšo omejitev."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Nastavitev in upravljanje brezžičnih dostopnih točk"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Vklapljanje povezave Wi‑Fi …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Izklapljanje povezave Wi‑Fi …"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Nalaganje seznama omrežij Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi je onemogočen"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Pozabljanje omrežja ni uspelo"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Vzpostavljanje povezave z omrežjem ni uspelo"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Dodaj omrežje"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi je onemogočen"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Poveži"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Geslo"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Prikaži geslo"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Ime omrežja"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Vnesite SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Varnost"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Moč signala"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Moč signala"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Stanje"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Hitrost povezave"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvenca"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Naslov IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Pokaži geslo"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Vnesite ime omrežja"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Vnesite geslo"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Šibka"</item>
-    <item msgid="2032262610626057081">"Kar dobra"</item>
-    <item msgid="3859756017461098953">"Dobra"</item>
-    <item msgid="1521103743353335724">"Odlična"</item>
+    <item msgid="7683058295076342057">"Šibka"</item>
+    <item msgid="1639222824821660744">"Kar dobra"</item>
+    <item msgid="1838705897358163300">"Dobra"</item>
+    <item msgid="6067166649320533751">"Odlična"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Vklop Bluetootha"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth je onemogočen"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"O omrežju"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Naslov MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Naslov IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Maska podomrežja"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Naslovi IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Prehod"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Nastavitve za Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Samodejno vklopi Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi se vklopi v bližini zanesljivih shr. omrežij, npr. domačega omrežja"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Ni na voljo, ker je lokacija izklopljena. Vklopite "<annotation id="link">"lokacijo"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Želite vklopiti iskanje omrežij Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Vklop"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Iskanje omrežij Wi‑Fi je vklopljeno"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Samodejno preklopi na prenos podatkov v mobilnih omrežjih"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Uporaba prenosa podatkov v mobilnih omrežjih, če omrežje Wi-Fi nima dostopa do interneta. Pri tem bodo morda nastali stroški prenosa podatkov v mobilnih omrežjih."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Več o tem"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Upravljanje povezav, nastavitev imena naprave in vidnosti"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Računalnik"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Slušalke z mikrofonom"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Naprava za zajem slik"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Slušalka"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Zunanja dodatna oprema"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Seznanjene naprave"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Razpoložljive naprave"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Ni seznanjenih naprav"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nobena naprava ni na voljo"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Seznanjena naprava"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Ime"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Uporaba za"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Spremenite ime naprave Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Neimenovana naprava"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Seznanjene naprave"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Seznanitev nove naprave"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth bo vklopljen, da bo omogočeno seznanjanje"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Prekinitev povezave z napravo?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Povezava vozila z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> bo prekinjena."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Naslov Bluetooth vozila: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Naslov Bluetooth naprave: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Ime vozila"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Preimenovanje tega vozila"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Preimenovanje naprave"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Preimenuj"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Razpoložljive naprave"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profili"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Zahteva za seznanitev naprave Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Seznanitev in povezava"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Koda za seznanitev naprave Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Koda PIN vsebuje črke ali simbole"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Vnesite kodo za seznanjanje in nato pritisnite Return ali Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Običajno 0000 ali 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Zahteva za seznanitev"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Dotaknite se, če želite opraviti seznanitev z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Jeziki"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Jeziki in vnos"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tipkovnica"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Upravljanje tipkovnic"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Pretvorba besedila v govor"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Prednostni mehanizem"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Trenutni mehanizem"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Hitrost govora"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Višina tona"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Ponastavi"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Zvok"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Glasnost zvonjenja"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Glasnost navigacije"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Predstavnost"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Nastavi glasnost za glasbo in video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Ton zvonjenja telefona"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Privzeti zvok obvestila"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Privzeti zvok alarma"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikacije in obvestila"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Pokaži vse aplikacije"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Privzete aplikacije"</string>
     <string name="applications_settings" msgid="794261395191035632">"Podatki o aplikaciji"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Prisilna ustavitev"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Želite prisilno ustaviti aplikacijo?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Če prisilno ustavite aplikacijo, morda ne bo pravilno delovala."</string>
     <string name="disable_text" msgid="4358165448648990820">"Onemogoči"</string>
     <string name="enable_text" msgid="1794971777861881238">"Omogoči"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Odmesti"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Če onemogočite to aplikacijo, Android in druge aplikacije morda ne bodo več delovali, kot bi morali."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Onemogočanje aplikacije"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Dovoljenja"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Različica: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ni odobrenih dovoljenj"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ni zahtevanih dovoljenj"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Prenes. količina podatkov"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Pren. kol. podat. aplik."</string>
-    <string name="force_stop" msgid="2153183697014720520">"Prisilna ustavitev"</string>
     <string name="computing_size" msgid="5791407621793083965">"Izračunavanje …"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dodatno dovoljenje</item>
@@ -117,15 +168,39 @@
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dodatna dovoljenja</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dodatnih dovoljenj</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Pomočnik in glasovni vnos"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplikacija za pomoč"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Uporaba besedila na zaslonu"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Aplikaciji za pomoč dovoli dostop do vsebine na zaslonu v obliki besedila"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Uporaba posnetka zaslona"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Aplikaciji za pomoč dovoli dostop do posnetka zaslona"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Storitev samodejnega izpolnjevanja"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Brez"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Izbrano"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Pomočnik bo lahko bral podatke o aplikacijah, ki se uporabljajo v vašem sistemu, vključno s podatki, ki so vidni na zaslonu ali do katerih je mogoče dostopati v aplikacijah."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Prepričajte se, ali zaupate tej aplikaciji&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Samodejno izpolnjevanje&gt;%1$s&lt;/xliff:g&gt; iz elementov na zaslonu ugotovi, kaj je mogoče samodejno izpolniti."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Dodaj storitev"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lokacija"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedavne zahteve za lokacijo"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ni nedavnih zahtev za lokacijo"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Dovoljenja na ravni aplikacije"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Iskanje"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Lokacijske storitve"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Iskanje omrežij Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Aplikacijam in storitvam omogoči, da kadar koli iščejo omrežja Wi-Fi v bližini, tudi ko je Wi-Fi izklopljen. To funkcijo lahko na primer uporabite, če želite izboljšati funkcije in storitve, ki pri delovanju uporabljajo lokacijo."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Iskanje naprav Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Aplikacijam in storitvam omogoči, da kadar koli iščejo naprave v bližini, tudi ko je Bluetooth izklopljen. To funkcijo lahko na primer uporabite, če želite izboljšati funkcije in storitve, ki pri delovanju uporabljajo lokacijo."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Sistemske posodobitve"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Posodobitve sistema"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Različica Androida"</string>
     <string name="security_patch" msgid="4794276590178386903">"Raven popravkov za varnost v Androidu"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Različica radijske programske opreme"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Različica jedra"</string>
     <string name="build_number" msgid="3997326631001009102">"Delovna različica"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Naslov vmesnika Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Ni na voljo"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Stanje"</string>
     <string name="device_status" msgid="267298179806290920">"Stanje"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"Avtorske pravice"</string>
     <string name="license_title" msgid="936705938435249965">"Licenca"</string>
     <string name="terms_title" msgid="5201471373602628765">"Določila in pogoji"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licenca za WebView v sistemu"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Sistemske licence za spletni pogled"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Ozadja"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Ponudniki satelitskih posnetkov: \n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licence drugih ponudnikov"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Težava pri nalaganju licenc."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Nalaganje …"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> korak vas loči od tega, da postanete razvijalec.</item>
+      <item quantity="two"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> koraka vas ločita od tega, da postanete razvijalec.</item>
+      <item quantity="few"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> koraki vas ločijo od tega, da postanete razvijalec.</item>
+      <item quantity="other"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> korakov vas loči od tega, da postanete razvijalec.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Zdaj ste razvijalec."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Ni treba, ker ste že razvijalec."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Možnosti za razvijalce"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Ponastavitev možnosti"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Ponastavitev omrežja, aplikacij ali naprave"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Ponastavi omrežje"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"S tem boste ponastavili vse omrežne nastavitve, med drugim tudi:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Prenos podatkov v mobilnem omrežju"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Izbris vseh kartic eSIM za vozilo"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"S tem ne boste prekinili naročniškega paketa pri operaterju."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Kartic e-SIM ni mogoče ponastaviti"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Izbira omrežja"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Ponastavi nastavitve"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Želite ponastaviti?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Ali želite ponastaviti vse omrežne nastavitve? Tega dejanja ni mogoče razveljaviti."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Ponastavi nastavitve"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Omrežne nastavitve so ponastavljene"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Ponastavi nastavitve aplikacij"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"S tem bodo ponastavljene vse nastavitve za:\n\n"<li>" onemogočene aplikacije,"</li>\n<li>" obvestila za onemogočene aplikacije,"</li>\n<li>" privzete aplikacije za dejanja,"</li>\n<li>" omejitev prenosa podatkov v ozadju za aplikacije,"</li>\n<li>" omejitve dovoljenj."</li>\n\n" Podatkov aplikacij ne boste izgubili."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Ponastavi aplikacije"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Nastavitve aplikacij so ponastavljene"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Izbriši vse podatke (pon. na tov. nast.)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"S tem boste iz glavne enote vozila izbrisali vse podatke, med drugim:\n\n"<li>"Račun za Google"</li>\n<li>"Podatke in nastavitve sistema in aplikacij"</li>\n<li>"Prenesene aplikacije"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Trenutno ste prijavljeni v te račune:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"V tem vozilu so drugi uporabniki."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Ponastavi vozilo"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Želite ponastaviti?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Želite izbrisati vse osebne podatke in prenesene aplikacije? Tega dejanja ni mogoče razveljaviti."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Izbriši vse"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Brisanje"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Počakajte ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum in ura"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Nastavitev datuma in ure"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Nastavi datum, uro, časovni pas in oblike"</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Razvrsti po časovnem pasu"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Ura"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodajanje uporabnika"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj račun"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Brisanje uporabnika"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Nov uporabnik"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gost"</string>
     <string name="user_admin" msgid="1535484812908584809">"Skrbnik"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Prijavljeni ste kot skrbnik"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Vsa dovoljenja za skrbnika"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Spremeni v skrbnika"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Uporabnik bo lahko brisal uporabnike, vključno s skrbniki, ter sistem ponastavil na tovarniške nastavitve."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Dejanja ne bo mogoče preklicati."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Da, spremeni v skrbnika"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Ustvarjanje novih uporabnikov"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefoniranje"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Sporočanje prek mob. povezave avta"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Namestitev novih aplikacij"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Odstranitev aplikacij"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Dodajanje uporabnika"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Nov uporabnik"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Dodaj. novega uporabnika?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ko dodate novega uporabnika, mora ta nastaviti svoj prostor."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Vsak uporabnik lahko posodobi aplikacije za vse druge uporabnike."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Omejitev uporabnikov je dosežena"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> uporabnika.</item>
+      <item quantity="two">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> uporabnika.</item>
+      <item quantity="few">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> uporabnike.</item>
+      <item quantity="other">Ustvariti je mogoče do <xliff:g id="COUNT">%d</xliff:g> uporabnikov.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Ni uspelo ustvariti novega uporabnika."</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Izbris tega uporabnika?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Vse aplikacije in vsi podatki bodo izbrisani."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Brisanje uporabnika ni uspelo."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Opusti"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Poskusi znova"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Izbris zadnj. uporabnika?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Po izbrisu edinega preostalega uporabnika za ta avtomobil bo ustvarjen nov skrbnik."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Vsi podatki, nastavitve in aplikacije, povezani s tem uporabnikom, bodo izbrisani. Znova boste morali nastaviti sistem."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Izberite novega skrbnika"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Potrebujete vsaj enega skrbnika. Če želite izbrisati tega, najprej izberite zamenjavo."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Izberite skrbnika"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gost"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gost"</string>
     <string name="user_switch" msgid="6544839750534690781">"Preklop"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Vi (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ime"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Uporabnik ni nastavljen"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Urejanje imena uporabnika"</string>
     <string name="users_list_title" msgid="770764290290240909">"Uporabniki"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Dovoljenja, odobrena osebi %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Računi"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Uporabnik"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Dodaj račun"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Dodan ni bil noben račun"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Računi uporabnika <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Samodejno sinhroniziranje podatkov"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Omogoči, da aplikacije samodejno osvežijo podatke"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Vklop samodej. sinhr. podatkov?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Morebitne spremembe v računih, ki jih naredite v spletu, bodo samodejno kopirane v telefon.\n\nNekateri računi morda tudi samodejno kopirajo morebitne spremembe, ki jih naredite v telefonu, v splet. Tako deluje račun za Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Izklop samodej. sinhr. podatkov?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"S tem boste varčevali s prenosom podatkov, vendar boste morali vsak posamezen račun sinhronizirati ročno, da dobite najnovejše podatke. Prav tako ne boste prejeli obvestil, ko bodo na voljo posodobitve."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Podatki o računu"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Dodajanje računa"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Dodajanje računa"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Odstrani račun"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Želite odstraniti račun?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Z odstranitvijo računa boste iz naprave izbrisali vsa sporočila, stike in druge podatke v računu."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Skrbnik ne dovoli te spremembe"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Odstranitev uporabnika?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Vse aplikacije in vsi podatki bodo izbrisani."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Odstranitev uporabnika ni uspela."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Želite poskusiti znova?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Opusti"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Poskusi znova"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Dodaj. novega uporabnika?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ko dodate novega uporabnika, mora ta nastaviti svoj prostor."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Vsak uporabnik lahko posodobi aplikacije za vse druge uporabnike."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Odstranitev računa ni uspela."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sinhronizacija računa"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinhronizacija je vklopljena za <xliff:g id="ID_1">%1$d</xliff:g> od <xliff:g id="ID_2">%2$d</xliff:g> elementov"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinhronizacija je vklopljena za vse elemente"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinhronizacija je izklopljena za vse elemente"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinhronizacija je IZKLOPLJENA"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Napaka pri sinhronizaciji"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Zadnje sinhroniziranje: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sinhroniziranje ..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Dotaknite se za sinhronizacijo<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinhroniziraj"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Prekliči sinhronizacijo"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Težava pri sinhronizaciji. Kmalu bo spet na voljo."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Varnost"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Zaklepanje zaslona"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Brez"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Koda PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Geslo"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Izbira vrste zaklep."</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Možnosti zaklepanja zaslona"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Možnosti zaklepanja"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Vnesite vzorec"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Potrdi"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Znova nariši"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Nastavite zaklepanje zaslona"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Izbira kode PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Izberite vzorec"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Izbira gesla"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Izbira gesla"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Trenutno zaklepanje zaslona"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Nastavite vzorec za večjo varnost"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Počisti"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Skrbnik za IT je blokiral pogosta gesla. Poskusite z drugim geslom."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Naraščajoč, padajoč ali ponavljajoč se niz števk je prepovedan."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zaklepanja zaslona"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pred toliko dnevi: <xliff:g id="NUM_DAYS">%3$s</xliff:g>"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Dodaj zaupanja vredno napravo"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Zaup. vredne naprave"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> naprava</item>
+      <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> napravi</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> naprave</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> naprav</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Naprava <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> bo odklenila ta avtomobil, ko je povezana. Če vam kdo vzame napravo <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, lahko ta oseba morda dostopa do nje."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potrdi"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Odstrani zaupanja vredno napravo"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Končano"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"S spremljevalno aplikacijo nastavite zaupanja vredno napravo. Ko je nastavljena, lahko profil uporabnika odklenete, ko vozilo zazna vaš telefon."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. V telefon prenesite spremljevalno aplikacijo"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Če želite seznaniti napravi, v telefonu izberite avtomobil <xliff:g id="CAR_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Funkcija Smart Lock ne zazna varnostnih funkcij te naprave. Zaradi boljše zaščite avtomobila zaupanja vredna naprava prepreči zaklepanje avtomobila šele, ko ga odklenete vi. Zaupanja vredna naprava prepreči zaklepanje avtomobila, ko je v bližini, tudi če jo ima v rokah kdo drug."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Dodajanje naprave <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kot zaupanja vredno napravo"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Naprava <xliff:g id="DEVICE_NAME">%1$s</xliff:g> je uspešno dodana kot zaupanja vredna naprava"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Včlanitev naprave <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ni uspela"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Če želite dodati zaupanja vredno napravo, morate nato nastaviti način za preverjanje pristnosti. Če zaupanja vredne naprave nimate pri sebi, boste morali preveriti pristnost, če boste želeli dostopati do profila."</string>
     <string name="forget" msgid="3971143908183848527">"Pozabi"</string>
+    <string name="connect" msgid="5861699594602380150">"Poveži"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Prekini povezavo"</string>
     <string name="delete_button" msgid="5840500432614610850">"Izbriši"</string>
     <string name="remove_button" msgid="6664656962868194178">"Odstrani"</string>
     <string name="cancel" msgid="750286395700355455">"Prekliči"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Zapri predstavitveni način"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"S tem izbrišete predstavitveni račun in ponastavite sistem na tovarniške nastavitve. Vsi uporabniški podatki bodo izgubljeni."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Zapri predstavitev"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"dokončaj nastavitev"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ne zdaj"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"OPUSTI"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funkcija med vožnjo ni na voljo."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Med vožnjo ni mogoče dodati uporabnika."</string>
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 6f3214e..471a538 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"zbeh ekranin, ekran me prekje, bateri"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"errëso ekranin, natë, ngjyrosje"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Modaliteti i natës"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Rrjeti dhe interneti"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Rrjeti celular"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Të dhënat celulare"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Qasu te të dhënat duke përdorur rrjetin celular"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Të çaktivizohen të dhënat celulare?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Përdorimi i të dhënave"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Paralajmërimi dhe kufiri i të dhënave"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cikli i përd. të të dhënave të apl."</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Cakto paralajm. për të dhënat"</string>
+    <string name="data_warning" msgid="116776633806885370">"Paralajmërim për të dhënat"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Cakto kufirin e të dhënave"</string>
+    <string name="data_limit" msgid="227338836292511425">"Kufiri i të dhënave"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Kufizimi i përdorimit të të dhënave"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Njësia kryesore e automjetit tënd do t\'i çaktivizojë të dhënat celulare kur të arrihet kufiri që cakton ti.\n\nMeqenëse përdorimi i të dhënave matet nga njësia kryesore dhe operatori celular mund ta llogarisë ndryshe përdorimin, ki parasysh të vendosësh një kufi të menduar mirë."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Cakto dhe menaxho zonat e qasjes të rrjetit me valë"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Po aktivizon Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Po çaktivizon Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Ngarko listën e Wi-Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi i çaktivizuar"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Dështoi në harrimin e rrjetit"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Lidhja me rrjetin dështoi"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Shto një rrjet"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi i çaktivizuar"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Lidhu"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Fjalëkalimi"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Shfaq fjalëkalimin"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Emri i rrjetit"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Fut SSID-në"</string>
     <string name="wifi_security" msgid="158358046038876532">"Siguria"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Fuqia e sinjalit"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Fuqia e sinjalit"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Statusi"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Shpejtësia e lidhjes"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekuenca"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Adresa e IP-së"</string>
+    <string name="show_password" msgid="2074628020371139240">"Shfaq fjalëkalimin"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Fut emrin e rrjetit"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Fut fjalëkalimin"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"I dobët"</item>
-    <item msgid="2032262610626057081">"Pak i dobët"</item>
-    <item msgid="3859756017461098953">"I mirë"</item>
-    <item msgid="1521103743353335724">"I shkëlqyer"</item>
+    <item msgid="7683058295076342057">"I dobët"</item>
+    <item msgid="1639222824821660744">"Pak i dobët"</item>
+    <item msgid="1838705897358163300">"I mirë"</item>
+    <item msgid="6067166649320533751">"I shkëlqyer"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Aktivizo Bluetooth-in"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth-i u çaktivizua"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Detajet e rrjetit"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Adresa e MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Adresa e IP-së"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Maska e nënrrjetit"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Adresat IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Porta e kalimit"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Preferencat e Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Aktivizo automatikisht Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi do të aktivizohet përsëri në afërsi të rrjeteve të ruajtura me cilësi të lartë, si p.sh. rrjetin e shtëpisë"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Nuk ofrohet sepse vendndodhja është e çaktivizuar. Aktivizo "<annotation id="link">"vendndodhjen"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Të aktivizohet skanimi për Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktivizo"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Skanimi i Wi‑Fi është aktivizuar"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Kalo automatikisht te të dhënat celulare"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Përdor të dhënat celulare kur Wi-Fi nuk ka qasje në internet. Mund të zbatohen tarifa për të dhënat."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Mëso më shumë"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Menaxho lidhjet, cakto emrin e pajisjes dhe zbulueshmërinë"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Kompjuteri"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Kufje me mikrofon"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefoni"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imazhe"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Kufje"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Hyrje periferike"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Pajisjet e çiftuara"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Pajisjet e disponueshme"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Nuk ka pajisje të çiftuara"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Nuk ofrohen pajisje"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Pajisja e çiftuar"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Emri"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Përdore për"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Ndrysho emrin e pajisjes Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Pajisje e paemërtuar"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Pajisjet e çiftuara"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Çifto pajisjen e re"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth-i do të aktivizohet për çiftimin"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Të shkëputet pajisja?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Automjeti yt do të shkëputet nga <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Adresa e Bluetooth-it e automjetit: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Adresa e Bluetooth-it e pajisjes: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Emri i automjetit"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Riemërto këtë automjet"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Riemërto pajisjen"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Riemërto"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Pajisjet që ofrohen"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profilet"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Kërkesë çiftimi me Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Ҫifto dhe lidh"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kodi i çiftimit të Bluetooth-it"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Kodi PIN përmban shkronja ose simbole"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Shkruaj kodin e çiftimit, pastaj shtyp \"Kthehu\" ose \"Hyr\""</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Zakonisht 0000 ose 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Kërkesa e çiftimit"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Trokit për ta çiftuar me <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Gjuhët"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Gjuhët dhe të dhënat"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tastiera"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Menaxho tastierat"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Dalja \"tekst-në-ligjërim\""</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Motori i preferuar"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Motori aktual"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Shpejtësia e të folurit"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tonaliteti"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Rivendos"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Tingulli"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volumi i ziles"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volumi i navigimit"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Cakto volumin për muzikë dhe video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Zilja e telefonit"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Tingulli i parazgjedhur i njoftimit"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Tingulli i parazgjedhur i alarmit"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aplikacionet dhe njoftimet"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Shfaq të gjitha aplikacionet"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Aplikacionet e parazgjedhura"</string>
     <string name="applications_settings" msgid="794261395191035632">"Informacioni mbi aplikacionin"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Ndalo me forcë"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Të ndalohet me forcë?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Nëse e ndalon me forcë një aplikacion, ai mund të përjetojë çrregullime në funksionim."</string>
     <string name="disable_text" msgid="4358165448648990820">"Çaktivizo"</string>
     <string name="enable_text" msgid="1794971777861881238">"Aktivizo"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Çinstalo"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Nëse e çaktivizon këtë aplikacion, Android dhe aplikacionet e tjera mund të mos funksionojnë më siç pritet."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Çaktivizo aplikacionin"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Lejet"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versioni: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Nuk është dhënë leje"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Nuk është kërkuar leje"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Përdorimi i të dhënave"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Përdorimi i të dhënave"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Ndalo me forcë"</string>
     <string name="computing_size" msgid="5791407621793083965">"Po llogarit…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> autorizime shtesë</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> autorizim shtesë</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asistenti dhe hyrja zanore"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Aplikacioni i asistentit"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Përdor tekstin nga ekrani"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Lejo që aplikacioni i asistentit të qaset te përmbajtjet e ekranit si tekst"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Përdor pamjen e ekranit"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Lejo që aplikacioni i asistentit të qaset te një imazh i ekranit"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Shërbimi i plotësimit automatik"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Asnjë"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"I zgjedhur"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Asistenti do të jetë në gjendje të lexojë informacion rreth aplikacioneve në përdorim në sistemin tënd, duke përfshirë informacionin e dukshëm në ekran ose të qasshëm brenda aplikacioneve."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Sigurohu që ke besim te ky aplikacion&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=\"Plotësimi automatik i Google\"&gt;%1$s&lt;/xliff:g&gt; përdor atë që ndodhet në ekranin tënd për të përcaktuar se çfarë mund të plotësohet automatikisht."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Shto shërbim"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Vendndodhja"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Kërkesat e vendndodhjeve të fundit"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nuk ka kërkesa të vendndodhjeve të fundit"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Autorizimet në nivel aplikacioni"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Skanimi"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Shërbimet e vendndodhjes"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Skanimi i Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Lejo që aplikacionet dhe shërbimet të skanojnë për rrjete Wi-Fi në çdo moment, edhe kur Wi-Fi është joaktiv. Kjo mund të përdoret, për shembull, për të përmirësuar funksionet dhe shërbimet e bazuara te vendndodhja."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Skanimi i Bluetooth-it"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Lejo që aplikacionet dhe shërbimet të skanojnë për pajisje në afërsi në çdo moment, edhe kur Bluetooth është joaktiv. Kjo mund të përdoret, për shembull, për të përmirësuar funksionet dhe shërbimet e bazuara te vendndodhja."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistemi"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Përditësimet e sistemit"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Përditësimet e sistemit"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Versioni i Android-it"</string>
     <string name="security_patch" msgid="4794276590178386903">"Niveli i korrigjimit të sigurisë së Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modeli"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Versioni i brezit të bazës"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Versioni i bërthamës"</string>
     <string name="build_number" msgid="3997326631001009102">"Numri i ndërtimit"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresa e Bluetooth-it"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Nuk ofrohet"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Statusi"</string>
     <string name="device_status" msgid="267298179806290920">"Statusi"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Të drejtat e autorit"</string>
     <string name="license_title" msgid="936705938435249965">"Licenca"</string>
     <string name="terms_title" msgid="5201471373602628765">"Kushtet e përgjithshme"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Licenca e WebView në sistem"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Licencat e WebView të sistemit"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Imazhet e sfondit"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Ofruesit e imazheve satelitore:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licencat e palëve të treta"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Ka një problem me ngarkimin e licencave."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Po ngarkohet…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Tani të duhen edhe <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> hapa që të bëhesh një zhvillues</item>
+      <item quantity="one">Tani të duhet edhe <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> hap që të bëhesh një zhvillues</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Tani je një zhvillues!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Nuk ka nevojë, ti je tashmë një zhvillues."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Opsionet e zhvilluesit"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Opsionet e rivendosjes"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Rivendosja e rrjetit, aplikacioneve ose pajisjes"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Rivendos rrjetin"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Kjo do të rivendosë të gjitha cilësimet e rrjetit, duke përfshirë:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Të dhënat celulare"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Spastro të gjitha kartat eSIM të automjetit"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Kjo nuk do të anulojë planin tënd të shërbimit."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Kartat eSIM nuk mund të rivendosen"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Zgjidh rrjetin"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Rivendos cilësimet"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Të rivendoset?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Të rivendosen të gjitha cilësimet e rrjetit? Ky veprim nuk mund të zhbëhet!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Rivendos cilësimet"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Cilësimet e rrjetit janë rivendosur"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Rivendos preferencat e aplikacionit"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Kjo do t\'i rivendosë të gjitha preferencat për:\n\n"<li>" Aplikacionet e çaktivizuara"</li>\n<li>" Njoftimet e aplikacioneve të çaktivizuara"</li>\n<li>" Aplikacionet e parazgjedhura për veprimet"</li>\n<li>" Kufizimet e të dhënave në sfond për aplikacionet"</li>\n<li>" Çdo kufizim të autorizimeve"</li>\n\n" Nuk do të humbësh asnjë të dhënë aplikacioni."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Rivendos aplikacionet"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Preferencat e aplikacioneve janë rivendosur"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Spastro të gjitha të dhënat (rivendosja e fabrikës)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Kjo do të spastrojë të gjitha të dhënat nga njësia kryesore e automjetit tënd, duke përfshirë:\n\n"<li>"Llogarinë tënde të Google"</li>\n<li>"Të dhënat dhe cilësimet e sistemit dhe të aplikacioneve"</li>\n<li>"Aplikacionet e shkarkuara"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Je i identifikuar aktualisht në llogaritë e mëposhtme:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Ka përdorues të tjerë të pranishëm në këtë automjet."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Rivendose automjetin"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Të rivendoset?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Të spastrohen të gjitha informacionet e tua personale dhe aplikacionet e shkarkuara? Ky veprim nuk mund të zhbëhet!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Spastroji të gjitha"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Po spastrohen"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Qëndro në pritje..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Data dhe ora"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Vendos datën dhe orën"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Cakto datën, orën, brezin orar dhe formatet"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Rendit sipas brezit orar"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Data"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Koha"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Shto përdorues"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Shto llogari"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Fshi përdoruesin"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Përdorues i ri"</string>
-    <string name="user_guest" msgid="3465399481257448601">"I ftuar"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administratori"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Identifikuar si administrator"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Të gjitha autorizimet e administratorit"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Bëje administrator"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Përdoruesi do të jetë në gjendje të fshijë përdoruesit, duke përfshirë administratorët e tjerë, si dhe të rivendosë sistemin në gjendje fabrike."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Ky veprim është i pakthyeshëm."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Po, bëje administrator"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Krijo përdorues të rinj"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Kryej telefonata"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Mesazhet përmes të dhënave celulare të makinës"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Instalo aplikacione të reja"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Çinstalo aplikacione"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Shto përdorues"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Përdorues i ri"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Të shtohet përdoruesi i ri?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Çdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"U arrit kufiri i përdoruesve"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Mund të krijosh deri në <xliff:g id="COUNT">%d</xliff:g> përdorues.</item>
+      <item quantity="one">Mund të krijohet vetëm një përdorues.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Krijimi i një përdoruesi të ri dështoi"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Të fshihet ky përdorues?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Të gjitha aplikacionet dhe të dhënat do të fshihen."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Fshirja e përdoruesit dështoi."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Hiq"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Riprovo"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Të fshihet përdoruesi i fundit?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Pas fshirjes së përdoruesit të vetëm të mbetur për këtë makinë, do të krijohet një përdorues i ri administrator."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Të gjitha të dhënat, cilësimet dhe aplikacionet e lidhura me këtë përdorues do të fshihen. Do të duhet ta konfigurosh përsëri sistemin."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Zgjidh një administrator të ri"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Të duhet të paktën një administrator. Për ta fshirë këtë, në fillim zgjidh një zëvendësues."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Zgjidh administratorin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"I ftuar"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"I ftuar"</string>
     <string name="user_switch" msgid="6544839750534690781">"Ndërro"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Ti (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Emri"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Nuk është konfiguruar"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Redakto emrin e përdoruesit"</string>
     <string name="users_list_title" msgid="770764290290240909">"Përdoruesit"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Lejet që ka marrë %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Llogaritë"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Përdoruesi"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Shto llogari"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Nuk u shtua asnjë llogari"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Llogaritë për <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sinkronizo automatikisht të dhënat"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Lejo që aplikacionet t\'i rifreskojnë automatikisht të dhënat"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Të aktivizohen të dhënat e sinkronizimit automatik?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Çdo ndryshim që bën në llogaritë e tua në ueb do të kopjohet automatikisht te pajisja jote.\n\nDisa llogari mund të kopjojnë po ashtu automatikisht në ueb çdo ndryshim që bën në telefon, për ta sinkronizuar në ueb. Kështu funksionon \"Llogaria e Google\"."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Të çaktivizohen të dhënat e sinkronizimit automatik?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Kjo do të kursejë të dhënat, por për të mbledhur informacionet më të fundit, do të të duhet të sinkronizosh në mënyrë manuale çdo llogari. Dhe nuk do të marrësh njoftime kur të ndodhin përditësimet."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Informacionet e llogarisë"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Shto llogari"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Shto një llogari"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Hiq llogarinë"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Të hiqet llogaria?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Heqja e kësaj llogarie do të fshijë të gjitha mesazhet, kontaktet e saj dhe të dhëna të tjera nga pajisja!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Ky ndryshim nuk lejohet nga administratori"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Të fshihet ky përdorues?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Të gjitha aplikacionet dhe të dhënat do të fshihen."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Heqja e përdoruesit dështoi."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Do ta riprovosh?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Hiq"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Riprovo"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Të shtohet përdoruesi i ri?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Çdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Heqja e llogarisë dështoi."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Sinkronizimi i llogarisë"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinkronizimi është aktiv për <xliff:g id="ID_1">%1$d</xliff:g> nga <xliff:g id="ID_2">%2$d</xliff:g> artikuj"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinkronizimi aktiv për të gjithë artikujt"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinkronizimi joaktiv për të gjithë artikujt"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinkronizimi është JOAKTIV"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Gabim gjatë sinkronizimit"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Sinkronizuar për herë të fundit <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Po sinkronizon tani…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Trokit për ta sinkronizuar tani<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sinkronizo tani"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Anulo sinkronizimin"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sinkronizimi ka aktualisht probleme. Do të ofrohet sërish së shpejti."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Siguria"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Kyçja e ekranit"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Asnjë"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Kodi PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Fjalëkalimi"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Zgjidh një lloj kyçjeje"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Opsionet e kyçjes së ekranit"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Opsionet e kyçjes"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Fut motivin"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Konfirmo"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Tërhiq sërish"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Cakto një kyçje të ekranit"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Zgjidh kodin PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Zgjidh motivin"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Zgjidh fjalëkalimin"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Zgjidh fjalëkalimin"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Kyçja aktuale e ekranit"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Për siguri, cakto një motiv"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Pastro"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Fjalëkalimet e zakonshme janë bllokuar nga administratori i TI-së. Provo një fjalëkalim tjetër."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nuk lejohet një sekuencë shifrash në rritje, në zbritje ose me përsëritje."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opsionet e kyçjes së ekranit"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ditë më parë"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Shto një pajisje të besuar"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Pajisjet e besuara"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> pajisje</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> pajisje</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Pajisja jote <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> do ta shkyçë këtë makinë kur është e lidhur. Nëse dikush merr pajisjen tënde <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, mund të jetë në gjendje të ketë qasje te kjo pajisje"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Konfirmo"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Hiq pajisjen e besuar"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"U krye"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Përdor aplikacionin shoqërues për të konfiguruar një pajisje të besuar. Pasi të konfigurohet, do të jesh në gjendje të shkyçësh profilin tënd të përdoruesit kur telefoni yt të zbulohet nga automjeti"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Shkarko aplikacionin shoqërues në telefonin tënd"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Zgjidh <xliff:g id="CAR_NAME">%1$s</xliff:g> në telefon për të çiftuar pajisjet"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock nuk mund të zbulojë funksionet e sigurisë së kësaj pajisjeje. Për të ndihmuar në mbrojtjen e makinës sate, pajisja e besuar do të mund ta mbajë makinën tënde të shkyçur vetëm pasi të jetë shkyçur tashmë nga ti. Pajisja jote e besuar mund ta mbajë makinën tënde të shkyçur kur është në afërsi, edhe nëse e mban dikush tjetër."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Shtoje <xliff:g id="DEVICE_NAME">%1$s</xliff:g> si pajisje të besuar"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> u shtua me sukses si pajisje e besuar"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Regjistrimi i <xliff:g id="DEVICE_NAME">%1$s</xliff:g> dështoi"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Shtimi i një pajisjeje të besuar kërkon që të caktosh më pas një metodë vërtetimi. Nëse nuk e ke pajisjen e besuar me vete, do të kërkohet vërtetim për të pasur qasje te profili yt."</string>
     <string name="forget" msgid="3971143908183848527">"Harro"</string>
+    <string name="connect" msgid="5861699594602380150">"Lidh"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Shkëput"</string>
     <string name="delete_button" msgid="5840500432614610850">"Fshi"</string>
     <string name="remove_button" msgid="6664656962868194178">"Hiq"</string>
     <string name="cancel" msgid="750286395700355455">"Anulo"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Dil nga modaliteti i demonstrimit"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Kjo do të fshijë llogarinë e demonstrimit dhe sistemi do të rivendoset në të dhënat e fabrikës. Të gjitha të dhënat e përdoruesit do të humbasin."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Dil nga demonstrimi"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"përfundo konfigurimin"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"jo tani"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"HIQ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funksioni nuk ofrohet gjatë drejtimit të makinës."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Përdoruesi nuk mund të shtohet gjatë drejtimit të makinës"</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5fff82a..4b43f98 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"затамнити екран, додирни екран, батерија"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"затамнити екран, ноћ, нијанса"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Ноћни режим"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобилни подаци"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Користи податке преко мобилне мреже"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Желите ли да искључите мобилне податке?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Потрошња података"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Упозорење и ограничења за податке"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Циклус потрошње података апликације"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Подесите упозорења о подацима"</string>
+    <string name="data_warning" msgid="116776633806885370">"Упозорење на потрошњу података"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Подесите ограничења за податке"</string>
+    <string name="data_limit" msgid="227338836292511425">"Ограничење потрошње података"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ограничавање потрошње података"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Главна јединица у возилу ће искључити мобилне податке чим достигне ограничење које сте подесили.\n\nПошто потрошњу података мери главна јединица, а мобилни оператер може другачије да рачуна потрошњу, размислите о томе да подесите неко уобичајено ограничење."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Подешавајте бежичне приступне тачке и управљајте њима"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi се укључује..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi-Fi се искључује..."</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Учитава се Wi‑Fi листа"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi је онемогућен"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Брисање мреже није успело"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Повезивање са мрежом није успело"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Додај мрежу"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi је онемогућен"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Повежи се"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Лозинка"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Прикажи лозинку"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Назив мреже"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Унесите SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Безбедност"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Јачина сигнала"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Јачина сигнала"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Статус"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Брзина везе"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Фреквенција"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP адреса"</string>
+    <string name="show_password" msgid="2074628020371139240">"Прикажи лозинку"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Унесите назив мреже"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Унесите лозинку"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Слаба"</item>
-    <item msgid="2032262610626057081">"Задовољавајућа"</item>
-    <item msgid="3859756017461098953">"Добра"</item>
-    <item msgid="1521103743353335724">"Одлична"</item>
+    <item msgid="7683058295076342057">"Слаба"</item>
+    <item msgid="1639222824821660744">"Задовољавајућа"</item>
+    <item msgid="1838705897358163300">"Добра"</item>
+    <item msgid="6067166649320533751">"Одлична"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Укључи Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth је онемогућен"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d MB/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Детаљи о мрежи"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC адреса"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP адреса"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Маска подмреже"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 адресе"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Мрежни пролаз"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Подешавања Wi‑Fi-ја"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Аутоматски укључи Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi ће се поново укључити у близини сачуваних мрежа високог квалитета, као што је кућна мрежа"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Није доступно јер је локација искључена. Укључите "<annotation id="link">"локацију"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Желите ли да укључите Wi-Fi скенирање?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Укључи"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi скенирање је укључено"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Аутоматски пређи на мобилне податке"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Користите мобилне податке када Wi‑Fi нема приступ интернету. Може да вам буде наплаћена потрошња података."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Сазнајте више"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Управљајте везама, подешавајте назив и видљивост уређаја"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Рачунар"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Слушалице"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Телефон"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Обрада слика"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Слушалице"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Периферни уређај за унос"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Упарени уређаји"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Доступни уређаји"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Нема упарених уређаја"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Нема доступних уређаја"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Упарени уређај"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Назив"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Користите за"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Промените назив Bluetooth уређаја"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Неименовани уређај"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Упарени уређаји"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Упари нови уређај"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth ће се укључити ради упаривања"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Прекидате везу са уређајем?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Возило ће прекинути везу са уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth адреса возила: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth адреса уређаја: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Назив возила"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Преименујте ово возило"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Преименујте уређај"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Преименуј"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Доступни уређаји"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Профили"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Захтев за Bluetooth упаривање"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Упари и повежи"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Кôд за упаривање са Bluetooth уређајем"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN садржи слова или симболе"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Унесите кôд за упаривање, па притисните Return или Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Обично 0000 или 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Захтев за упаривање"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Додирните да бисте упарили са уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Језици"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Језици и унос"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Тастатура"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Управљајте тастатурама"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Излаз за претв. текста у говор"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Жељени механизам"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Актуелни механизам"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Брзина говора"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Висина гласа"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Ресетуј"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Звук"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Јачина звука звона"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Јачина звука за навигацију"</string>
@@ -100,31 +140,66 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Медији"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Подесите јачину звука за музику и видео снимке"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Аларм"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Мелодија звона телефона"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Подразумевани звук обавештења"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Подразумевани звук аларма"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Aпликације и обавештења"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Прикажи све апликације"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Подразумеване апликације"</string>
     <string name="applications_settings" msgid="794261395191035632">"Информације о апликацији"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Принудно заустави"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Желите ли да принудно зауставите?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ако принудно зауставите апликацију, можда ће се понашати неочекивано."</string>
     <string name="disable_text" msgid="4358165448648990820">"Онемогући"</string>
     <string name="enable_text" msgid="1794971777861881238">"Омогући"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Деинсталирај"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ако онемогућите ову апликацију, Android и друге апликације можда више неће функционисати исправно."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Онемогући апликацију"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Дозволе"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Верзија: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Ниједна дозвола није одобрена"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Ниједна дозвола није захтевана"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Потрошња података"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Потрошња података аплик."</string>
-    <string name="force_stop" msgid="2153183697014720520">"Принудно заустави"</string>
     <string name="computing_size" msgid="5791407621793083965">"Израчунава се..."</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> додатна дозвола</item>
       <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> додатне дозволе</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> додатних дозвола</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Помоћник и гласовни унос"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Апликација за помоћ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Користи текст са екрана"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Дозволите апликацији за помоћ да приступи садржају екрана као тексту"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Користи снимак екрана"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Дозволите апликацији за помоћ да приступи слици екрана"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Услуга аутоматског попуњавања"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ништа"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Изабрано"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Помоћник ће моћи да чита информације о апликацијама које се користе у систему, укључујући информације видљиве на екрану или којима може да се приступа у оквиру апликација."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Уверите се да је ова апликација поуздана&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google аутоматско попуњавање&gt;%1$s&lt;/xliff:g&gt; користи садржај екрана за утврђивање података који могу аутоматски да се попуне."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Додајте услугу"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Локација"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Недавни захтеви за локацију"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нема недавних захтева за локацију"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Дозволе на нивоу апликација"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Скенирање"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Услуге локације"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi скенирање"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Дозволите апликацијама и услугама да траже Wi‑Fi мреже у било ком тренутку, чак и када је Wi‑Fi искључен. Ово може да се користи, на пример, за побољшање функција и услуга заснованих на локацији."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth скенирање"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Дозволите апликацијама и услугама да траже уређаје у близини у сваком тренутку, чак и када је Bluetooth искључен. Ово може да се користи, на пример, за побољшање функција и услуга заснованих на локацији."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Ажурирања система"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Ажурирања система"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Верзија Android-а"</string>
     <string name="security_patch" msgid="4794276590178386903">"Ниво безбедносне закрпе за Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Модел"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Верзија основног пропусног опсега"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Верзија језгра"</string>
     <string name="build_number" msgid="3997326631001009102">"Број верзије"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth адреса"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Није доступно"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Статус"</string>
     <string name="device_status" msgid="267298179806290920">"Статус"</string>
@@ -141,12 +216,50 @@
     <string name="copyright_title" msgid="4220237202917417876">"Ауторска права"</string>
     <string name="license_title" msgid="936705938435249965">"Лиценца"</string>
     <string name="terms_title" msgid="5201471373602628765">"Услови и одредбе"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Лиценца за системски WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Лиценце за системски WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Позадине"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Добављачи сателитских слика:\n©2014. CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Лиценце треће стране"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Дошло је до проблема при учитавању лиценци."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Учитава се…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Треба да обавите још <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> корак да бисте постали програмер.</item>
+      <item quantity="few">Треба да обавите још <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> корака да бисте постали програмер.</item>
+      <item quantity="other">Треба да обавите још <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> корака да бисте постали програмер.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Постали сте програмер!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Нема потребе, већ сте програмер."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Опције за програмере"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Опције за ресетовање"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Ресетовање мреже, апликација или уређаја"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Ресетуј мрежу"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Овим ресетујете сва подешавања мреже, укључујући:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi-Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобилни подаци"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Избриши све eSIM-ове возила"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Тиме нећете отказати тарифни пакет."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Ресетовање eSIM-ова није успело"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Изаберите мрежу"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Ресетуј подешавања"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Желите ли да ресетујете?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Желите ли да ресетујете сва подешавања мреже? Ова радња не може да се опозове!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Ресетуј подешавања"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Подешавања мреже су ресетована"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Ресетуј подешавања апликација"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Овим ће се ресетовати сва подешавања за:\n\n"<li>"Онемогућене апликације"</li>\n<li>"Обавештења о онемогућеним апликацијама"</li>\n<li>"Подразумеване апликације за радње"</li>\n<li>"Ограничења за позадинске податке за апликације"</li>\n<li>"Сва ограничења за дозволе"</li>\n\n"Нећете изгубити никакве податке апликације."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Ресетуј апликације"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Подешавања апликација су ресетована"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Обриши све податке"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Овим бришете све податке из интерне меморије возила, укључујући:\n\n"<li>"Google налог"</li>\n<li>"податке и подешавања система и апликација"</li>\n<li>"преузете апликације"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Тренутно сте пријављени на следеће налоге:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"У овом возилу су присутни и други корисници."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Ресетуј возило"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Желите ли да ресетујете?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Желите ли да обришете све личне податке и преузете апликације? Не можете да опозовете ову радњу!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Избриши све"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Брише се"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Сачекајте..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Датум и време"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Подесите датум и време"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Подесите датум, време, временску зону и формате"</string>
@@ -166,23 +279,60 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Сортирај према временској зони"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Датум"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Време"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Додај корисника"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Додај налог"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Избришите корисника"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Нови корисник"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Гост"</string>
     <string name="user_admin" msgid="1535484812908584809">"Администратор"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Пријављени сте као администратор"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Све дозволе за администратора"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Постави за администратора"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Корисник ће моћи да брише кориснике, укључујући остале администраторе, и да ресетује систем на фабричка подешавања."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Ова радња не може да се опозове."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Да, постави за администатора"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Направите нове кориснике"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Позивајте"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"SMS преко мобилних података аута"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Инсталирајте нове апликације"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Деинсталирајте апликације"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Додај корисника"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Нови корисник"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Додајете новог корисника?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Када додате новог корисника, та особа треба да подеси свој простор."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Сваки корисник може да ажурира апликације за све остале кориснике."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Достигнут максимални број корисника"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> корисника.</item>
+      <item quantity="few">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> корисника.</item>
+      <item quantity="other">Можете да направите највише <xliff:g id="COUNT">%d</xliff:g> корисника.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Прављење новог корисника није успело"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Желите да избришете овог корисника?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Све апликације и подаци ће бити избрисани."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Брисање корисника није успело."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Одбаци"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Пробај поново"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Желите да избришете последњег корисника?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Нови администратор ће се направити када избришете јединог преосталог корисника за овај аутомобил."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Избрисаће се сви подаци, подешавања и апликације који су повезани са овим корисником. Мораћете да подесите систем поново."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Одаберите новог администратора"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Треба вам најмање један администратор. Да бисте избрисали овог, прво одаберите замену."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Одаберите администратора"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Гост"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Гост"</string>
     <string name="user_switch" msgid="6544839750534690781">"Пребаците на другог корисника"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Ви (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Име"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Није подешено"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Измените име корисника"</string>
     <string name="users_list_title" msgid="770764290290240909">"Корисници"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Дозвола је дата кориснику %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Налози"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Корисник"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Додај налог"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Ниједан налог није додат"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Налози за корисника <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Аутоматски синхронизуј податке"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Омогући апликацијама да аутоматски освежавају податке"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Укључити аутом. синх. података?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Све промене које унесете на налоге на вебу ће аутоматски бити копиране на уређај.\n\nНеки налози могу и аутоматски да копирају на веб све промене које унесете на телефону. Тако функционише Google налог."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Искључити аутом. синх. података?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"То ће се смањити потрошњу података, али биће потребно да ручно синхронизујете сваки налог да бисте прикупили недавне информације. Нећете примати обавештења о ажурирањима."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Информације о налогу"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Додајте налог"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Додајте налог"</string>
@@ -190,16 +340,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Уклони налог"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Желите да уклоните налог?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Ако уклоните овај налог, избрисаћете све поруке, контакте и друге податке са уређаја!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Администратор не дозвољава ову промену"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Уклањате овог корисника?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Све апликације и подаци ће бити избрисани."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Уклањање корисника није успело."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Желите да пробате поново?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Одбаци"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Пробај поново"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Додајете новог корисника?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Када додате новог корисника, та особа треба да подеси свој простор."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Сваки корисник може да ажурира апликације за све остале кориснике."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Уклањање налога није успело."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Синхронизација налога"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Синхронизација је укључена за одређене ставке (<xliff:g id="ID_1">%1$d</xliff:g> од <xliff:g id="ID_2">%2$d</xliff:g>)"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Синхронизација је укључена за све ставке"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Синхронизација је искључена за све ставке"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Синхронизација је ИСКЉ."</string>
+    <string name="sync_error" msgid="6698021343089247914">"Грешка при синхронизацији"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Последња синхронизација: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Синхронизација је у току..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Додирните да бисте синхронизовали одмах <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Синхронизуј одмах"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Откажи синхронизацију"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Синхронизација тренутно има проблема. Ускоро ће се наставити."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Безбедност"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Закључавање екрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Нема"</string>
@@ -207,7 +361,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Лозинка"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Изаберите закључавање"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Опције закључавања екрана"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Опције закључавања"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Унесите шаблон"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Потврди"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Поново нацртајте"</string>
@@ -217,7 +371,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Подесите закључавање екрана"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Одаберите PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Одаберите шаблон"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Одаберите лозинку"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Одаберите лозинку"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Тренутно закључавање екрана"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Подесите шаблон из безбедносних разлога"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Обриши"</string>
@@ -295,18 +449,39 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ИТ администратор блокира честе лозинке. Изаберите другу лозинку."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Растући, опадајући или поновљени низ цифара није дозвољен."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опције закључавања екрана"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: пре <xliff:g id="NUM_DAYS">%3$s</xliff:g> дан(а)"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Додај поуздани уређај"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Поуздани уређаји"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> уређај</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> уређаја</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> уређаја</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ће откључати овај аутомобил када се повеже. Ако вам неко узме <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, можда ће моћи да приступа овом уређају"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Потврди"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Уклони поуздани уређај"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Поуздани уређај подесите помоћу пратеће апликације. Када га подесите, моћи ћете да откључавате кориснички профил када возило открије телефон"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Преузмите пратећу апликацију на телефону"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Изаберите <xliff:g id="CAR_NAME">%1$s</xliff:g> на телефону да бисте упарили уређаје"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock не може да открије безбедносне функције овог уређаја. Да би аутомобил био заштићен, поуздани уређај ће омогућити да аутомобил остане откључан само када га ви претходно откључате. Поуздани уређај може да омогући да аутомобил остане откључан када се налази у близини, чак и када га неко други држи."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Додајте уређај <xliff:g id="DEVICE_NAME">%1$s</xliff:g> као поуздани"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Додали сте уређај <xliff:g id="DEVICE_NAME">%1$s</xliff:g> као поуздани"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Регистрација уређаја <xliff:g id="DEVICE_NAME">%1$s</xliff:g> није успела"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"За додавање поузданог уређаја следеће што треба да урадите је да подесите метод потврде идентитета. Ако немате поуздани уређај са собом, потврда идентитета ће бити потребна да бисте приступили профилу."</string>
     <string name="forget" msgid="3971143908183848527">"Заборави"</string>
+    <string name="connect" msgid="5861699594602380150">"Повежи"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Прекини везу"</string>
     <string name="delete_button" msgid="5840500432614610850">"Избриши"</string>
     <string name="remove_button" msgid="6664656962868194178">"Уклони"</string>
     <string name="cancel" msgid="750286395700355455">"Откажи"</string>
     <string name="backspace_key" msgid="1545590866688979099">"Тастер за брисање уназад"</string>
     <string name="enter_key" msgid="2121394305541579468">"Тастер Enter"</string>
     <string name="exit_retail_button_text" msgid="6093240315583384473">"Напустите режим демонстр."</string>
-    <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Да напустите режим дем.?"</string>
+    <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Да напустите режим демонстрације"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Овим ћете избрисати налог за демонстрације и ресетовати систем на фабричка подешавања. Сви подаци корисника ће бити изгубљени."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Напусти режим демонстр."</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"завршите подешавање"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"не сада"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ОДБАЦИ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Функција није доступна током вожње."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Не можете да додате корисника током вожње."</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 8cad62e..b31dce8 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"tona ned skärm, pekskärm, batteri"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"tona ned skärmen, natt, tona"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Nattläge"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Nätverk och internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnätverk"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobildata"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Få åtkomst till data via mobilt nätverk"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vill du inaktivera mobildata?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Dataanvändning"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Varning och gräns för data"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cykel för appdataanvändning"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Ställ in en datavarning"</string>
+    <string name="data_warning" msgid="116776633806885370">"Datavarning"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Ange datagräns"</string>
+    <string name="data_limit" msgid="227338836292511425">"Datagräns"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Begränsa dataanvändningen"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"När mobildatan når den gräns du har angett inaktiveras den av fordonets huvudenhet.\n\nVi föreslår att du anger en något lägre gräns eftersom dataanvändningen mäts med huvudenheten och din leverantör kan mäta användningen på ett annat sätt."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Ställ in och hantera trådlösa åtkomstpunkter"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi-Fi aktiveras …"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi inaktiveras …"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi-Fi-listan läses in"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi har inaktiverats"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Det gick inte att glömma nätverket"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Det gick inte att ansluta till nätverket"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Lägg till nätverk"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi har inaktiverats"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Anslut"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Lösenord"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Visa lösenord"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Nätverksnamn"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Ange SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Säkerhet"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signalstyrka"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signalstyrka"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"länkhastighet"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekvens"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP-adress"</string>
+    <string name="show_password" msgid="2074628020371139240">"Visa lösenord"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Ange nätverksnamn"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Ange lösenord"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Dålig"</item>
-    <item msgid="2032262610626057081">"Ganska bra"</item>
-    <item msgid="3859756017461098953">"Bra"</item>
-    <item msgid="1521103743353335724">"Utmärkt"</item>
+    <item msgid="7683058295076342057">"Dålig"</item>
+    <item msgid="1639222824821660744">"Ganska bra"</item>
+    <item msgid="1838705897358163300">"Bra"</item>
+    <item msgid="6067166649320533751">"Utmärkt"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Aktivera Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth har inaktiverats"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbit/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Nätverksinformation"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-adress"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP-adress"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Nätmask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6-adresser"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Inställningar för Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Aktivera Wi‑Fi automatiskt"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi aktiveras i närheten av sparade nätverk, t.ex ditt hemnätverk"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Ej tillgängligt när plats är inaktiverat. Aktivera "<annotation id="link">"plats"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vill du aktivera Wi-Fi-sökning?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aktivera"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi-sökning har aktiverats"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Byt till mobildata automatiskt"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Använd mobildata när Wi-Fi-nätverket inte är anslutet till internet. Avgifter för dataanvändning kan tillkomma."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Läs mer"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Hantera anslutningar, ange inställningar för enhetens namn och synlighet"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Dator"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Mobil"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Bild"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Hörlur"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Inmatning från kringutrustning"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Kopplade enheter"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Tillgängliga enheter"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Inga kopplade enheter"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Inga tillgängliga enheter"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Kopplad enhet"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Namn"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Använd för"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Byt namn på Bluetooth-enheten"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Namnlös enhet"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Kopplade enheter"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Koppla en ny enhet"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth aktiveras för parkoppling"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Ska enheten kopplas från?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Fordonet kopplas bort från <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Fordonets Bluetooth-adress: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Enhetens Bluetooth-adress: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Fordonets namn"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Byt namn på fordonet"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Byt namn på enheten"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Byt namn"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Tillgängliga enheter"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiler"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Begäran om Bluetooth-koppling"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Parkoppla och anslut"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Kopplingskod för Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Pinkoden innehåller bokstäver eller symboler"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Ange kopplingskoden och tryck på Retur"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Vanligtvis 0000 eller 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Begäran om parkoppling"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Tryck om du vill parkoppla med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Språk"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Språk och inmatning"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Tangentbord"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Hantera tangentbord"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Text till tal"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Prioriterad motor"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Aktuell motor"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Talhastighet"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Tonhöjd"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Återställ"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Ljud"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Ringvolym"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigeringsvolym"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Ställ in volym för musik och video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Ringsignal"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Standardljud för aviseringar"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standardljud för alarm"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Appar och aviseringar"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Visa alla appar"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Standardappar"</string>
     <string name="applications_settings" msgid="794261395191035632">"Appinformation"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Tvinga att avsluta"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Vill du tvinga att avsluta?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Om du tvingar appen att avsluta kanske den inte fungerar som den ska."</string>
     <string name="disable_text" msgid="4358165448648990820">"Inaktivera"</string>
     <string name="enable_text" msgid="1794971777861881238">"Aktivera"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Avinstallera"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Om du inaktiverar den här appen kan det påverka Android och andra appar så att de inte längre fungerar som de ska."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Inaktivera app"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Behörigheter"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Version: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Inga behörigheter har beviljats"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Inga behörigheter har begärts"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Dataanvändning"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Appens dataanvändning"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Tvinga att avsluta"</string>
     <string name="computing_size" msgid="5791407621793083965">"Beräknar …"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> behörigheter till</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> behörighet till</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistent och röstinmatning"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assistentapp"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Använda text från skärmen"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Tillåt att assistentappen får åtkomst till innehåll på skärmen, till exempel text"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Använda skärmdump"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Tillåt att assistenappen får åtkomst till en bild på skärmen"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Tjänsten Autofyll"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Ingen"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Vald"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Assistenten kan läsa information om appar som används i systemet, inklusive information som visas på skärmen eller är åtkomlig i apparna."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Kontrollera att du litar på den här appen&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofyll&gt;%1$s&lt;/xliff:g&gt; identifierar vad som kan fyllas i automatiskt utifrån vad som visas på skärmen."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Lägg till tjänst"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Plats"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nyligen gjorda platsbegäranden"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Inga platsbegäranden har gjorts nyligen"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Behörigheter på appnivå"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Platssökning"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Platstjänster"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi-sökning"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Tillåt att appar och tjänster söker efter Wi‑Fi-nätverk när som helst, även när Wi‑Fi är inaktiverat. Funktionen kan till exempel användas till att förbättra platsbaserade funktioner och tjänster."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth-sökning"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Tillåt att appar och tjänster söker efter enheter i närheten när som helst, även när Bluetooth är inaktiverat. Funktionen kan till exempel användas till att förbättra platsbaserade funktioner och tjänster."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Systemuppdateringar"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Systemuppdateringar"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android-version"</string>
     <string name="security_patch" msgid="4794276590178386903">"Korrigeringsnivå för Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modell"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Basbandsversion"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel-version"</string>
     <string name="build_number" msgid="3997326631001009102">"Version"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adress"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Ej tillgängligt"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright-symbol"</string>
     <string name="license_title" msgid="936705938435249965">"Licens"</string>
     <string name="terms_title" msgid="5201471373602628765">"Användarvillkor"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Systemets WebView-licens"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Systemets WebView-licenser"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Bakgrunder"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Satellitbildsleverantörer:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Licenser från tredje part"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Ett problem inträffade när licenserna lästes in."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Läser in …"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Nu är du <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> steg från att bli utvecklare.</item>
+      <item quantity="one">Nu är du <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> steg från att bli utvecklare.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Nu är du en utvecklare!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Det behövs inte. Du är redan utvecklare."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Utvecklaralternativ"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Återställningsalternativ"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Nätverk, appar eller ehetsåterställning"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Återställ nätverk"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Om du gör detta återställs alla nätverksinställningar, inklusive:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobildata"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Rensa alla eSIM för fordonet"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Serviceavtalet fortsätter att gälla."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Det gick inte att återställa eSIM-korten"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Välj nätverk"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Återställ inställningar"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Vill du återställa?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Vill du återställa alla nätverksinställningar? Det går inte att ångra den här åtgärden."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Återställ inställningar"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Nätverksinställningarna har återställts"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Återställ appinställningarna"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Detta återställer alla inställningar för:\n\n"<li>"Inaktiverade appar"</li>\n<li>"Inaktiverade appmeddelanden"</li>\n<li>"Standardappar för åtgärder"</li>\n<li>"Begränsningar av bakgrundsdata för appar"</li>\n<li>"Alla begränsningar av behörigheter"</li>\n\n"Ingen appdata försvinner."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Återställ appar"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Appinställningarna har återställts"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Rensa all data (återställ standardinst.)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Detta rensar all data från fordonets huvudenhet, bland annat:\n\n"<li>"Ditt Google-konto"</li>\n<li>"System- och appdata och inställningar"</li>\n<li>"Nedladdade appar"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Du är inloggad på följande konton:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Det finns andra användare av fordonet."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Återställ fordonet"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Vill du återställa?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Vill du rensa alla personliga uppgifter och nedladdade appar? Det går inte att ångra den här åtgärden."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Rensa allt"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Rensar"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Vänta ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Datum och tid"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Ange datum och tid"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Ange datum, tidszon och format"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sortera efter tidszon"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Datum"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Tid"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Lägg till användare"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Lägg till konto"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Radera användare"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Ny användare"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Gäst"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administratör"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Inloggad som administratör"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Alla administratörsbehörigheter"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Gör till administratör"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Användaren kan ta bort användare, även andra administratörer, och återställa systemet till standardinställningarna."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Det går inte att ångra den här åtgärden."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ja, gör till administratör"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Skapa nya användare"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Ringa telefonsamtal"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Meddelanden via bilens mobildata"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Installera nya appar"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Avinstallera appar"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Lägg till användare"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Ny användare"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Lägga till ny användare?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"När du lägger till en ny användare måste den personen konfigurera sitt utrymme."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alla användare kan uppdatera appar för andra användare."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Användargränsen har nåtts"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Det går att skapa upp till <xliff:g id="COUNT">%d</xliff:g> användare.</item>
+      <item quantity="one">Det går bara att skapa en användare.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Det gick inte att skapa en ny användare"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Radera användaren?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Alla appar och all data raderas."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Det gick inte att radera användaren."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Stäng"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Försök igen"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Radera sista användaren?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Om du raderar den sista användaren för bilen skapas en ny adminanvändare."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Alla inställningar, appar och all data som är kopplade till användaren raderas. Du måste konfigurera systemet igen."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Välj en ny administratör"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Du måste ha minst en administratör. Välj en ersättare innan du tar bort administratören."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Välj administratör"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Gäst"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Gäst"</string>
     <string name="user_switch" msgid="6544839750534690781">"Byt"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Du (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Namn"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Inte konfigurerad"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Redigera användarnamn"</string>
     <string name="users_list_title" msgid="770764290290240909">"Användare"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s har beviljats behörighet"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Konton"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Användare"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Lägg till konto"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Inga konton har lagts till"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Konton som tillhör <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Synkronisera data automatiskt"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Tillåt att data uppdateras av appar automatiskt"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Aktivera automatisk datasynk.?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Alla kontoändringar som görs på webben kopieras automatiskt till enheten.\n\nFör vissa konton kopieras även alla ändringar som görs på mobilen automatiskt till webben. Så här fungerar ett Google-konto."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Inaktivera automatisk datasynk.?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Detta minskar dataanvändningen, men varje konto måste synkroniseras manuellt varje gång du vill samla in aktuell information. Du får inga meddelanden om nya uppdateringar."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Kontoinformation"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Lägg till konto"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Lägga till ett konto"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Ta bort konto"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Vill du ta bort kontot?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Om du tar bort kontot tar du också bort alla meddelanden, kontakter och andra data från enheten."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Administratören tillåter inte denna ändring"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Ta bort användaren?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Alla appar och all data raderas."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Det gick inte att ta bort användaren."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Vill du försöka igen?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Stäng"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Försök igen"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Lägga till ny användare?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"När du lägger till en ny användare måste den personen konfigurera sitt utrymme."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Alla användare kan uppdatera appar för andra användare."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Det gick inte att radera kontot."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Kontosynkronisering"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Synkronisering har aktiverats för <xliff:g id="ID_1">%1$d</xliff:g> av <xliff:g id="ID_2">%2$d</xliff:g> objekt"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Synkronisering har aktiverats för alla objekt"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Synkronisering har inaktiverats för alla objekt"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Synkronisering är avstängd"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Synkroniseringsfel"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Synkroniserades senast: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Synkroniserar nu …"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Tryck om du vill synkronisera nu <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Synkronisera nu"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Avbryt synkronisering"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Det är för närvarande problem med synkronisering. Det fungerar igen om en stund."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Säkerhet"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Skärmlås"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Inga"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Pinkod"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Lösenord"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Välj en låstyp"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Alternativ för skärmlås"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Låsalternativ"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Ange det grafiska lösenordet"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Bekräfta"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Rita igen"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ange ett skärmlås"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Välj en pinkod"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Välj grafiskt lösenord"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Välj ett lösenord"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Välj ett lösenord"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Nuvarande skärmlås"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Ange ett grafiskt lösenord som skydd"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Rensa"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-adminstratören har blockerat de vanligaste lösenorden. Testa ett annat lösenord."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"En stigande, fallande eller upprepad siffersekvens är inte tillåten."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Alternativ för skärmlås"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dagar sedan"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Lägg till betrodd enhet"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Betrodda enheter"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> enheter</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> enhet</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Bilen låses upp av din <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> när den är ansluten. Om någon kommer över din <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> kan de få åtkomst till den här enheten"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bekräfta"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ta bort betrodd enhet"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Klar"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Konfigurera en betrodd enhet med den tillhörande appen. När konfigureringen är klar låses din användarprofil upp när bilen känner av mobilen"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Ladda ned den tillhörande appen på mobilen"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Koppla enheterna genom att välja <xliff:g id="CAR_NAME">%1$s</xliff:g> på mobilen"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock kan inte identifiera enhetens säkerhetsfunktioner. Som en säkerhetsåtgärd kan den betrodda enheten bara hålla bilen olåst efter att den har låsts upp av dig. Den betrodda enheten kan hålla bilen olåst när den finns i närheten, även om någon annan håller i enheten."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Lägg till <xliff:g id="DEVICE_NAME">%1$s</xliff:g> som en betrodd enhet"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> har lagts till som en betrodd enhet"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Det gick inte att registrera <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"När du lägger till en betrodd enhet måste du lägga till en autentiseringsmetod också. Autentisering krävs för att komma åt profilen om du inte skulle ha den betrodda enheten med dig."</string>
     <string name="forget" msgid="3971143908183848527">"Glöm"</string>
+    <string name="connect" msgid="5861699594602380150">"Anslut"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Koppla från"</string>
     <string name="delete_button" msgid="5840500432614610850">"Radera"</string>
     <string name="remove_button" msgid="6664656962868194178">"Ta bort"</string>
     <string name="cancel" msgid="750286395700355455">"Avbryt"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Avsluta demoläge"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Detta raderar demokontot och återställer standardinställningarna för systemet. All användardata tas bort."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Avsluta demoläget"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"slutför konfigurationen"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"inte nu"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"IGNORERA"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Funktionen är inte tillgänglig när du kör."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Du kan inte lägga till användare medan du kör."</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 4efc4e6..bd3df55 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"punguza mwanga wa skrini, skrini ya kugusa, betri"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"punguza mwangaza wa skrini, usiku, weka rangi maalum"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Hali ya usiku"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Mtandao na intaneti"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mtandao wa simu"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Data ya mtandao wa simu"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Tumia data ya mtandao wa simu"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Ungependa kuzima data ya mtandao wa simu?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Matumizi ya data"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Kikomo na onyo kuhusu matumizi ya data"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Awamu ya matumizi ya data ya programu"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Weka onyo la matumizi ya data"</string>
+    <string name="data_warning" msgid="116776633806885370">"Onyo kuhusu matumizi ya data"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Weka kikomo cha data"</string>
+    <string name="data_limit" msgid="227338836292511425">"Kikomo cha data"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Kupunguza matumizi ya data"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Stereo ya dashibodi ya gari lako itazima data ya mtandao wa simu pindi itakapofikia kikomo cha data ulichoweka.\n\nKwa kuwa stereo ya dashibodi ndiyo hupima matumizi ya data, na huenda kampuni inayokupa huduma za mtandao ikahesabu matumizi hayo kwa njia tofauti, unashauriwa kuweka kikomo kisicho kamili sana."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Weka na udhibiti vituo vya kufikia mtandao wa Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Inawasha Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Inazima Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Inapakia orodha ya Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Umezima Wi‑Fi"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Imeshindwa kusahau mtandao"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Imeshindwa kuunganisha kwenye mtandao"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ongeza mtandao"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Umezima Wi‑Fi"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Unganisha"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Nenosiri"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Onyesha nenosiri"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Jina la mtandao"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Weka SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Usalama"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Nguvu za mawimbi"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Nguvu za mawimbi"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Hali"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Kasi ya muunganisho"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Masafa"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Anwani ya IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Onyesha nenosiri"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Weka jina la mtandao"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Weka nenosiri"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Dhaifu"</item>
-    <item msgid="2032262610626057081">"Wastani"</item>
-    <item msgid="3859756017461098953">"Thabiti"</item>
-    <item msgid="1521103743353335724">"Bora zaidi"</item>
+    <item msgid="7683058295076342057">"Dhaifu"</item>
+    <item msgid="1639222824821660744">"Wastani"</item>
+    <item msgid="1838705897358163300">"Thabiti"</item>
+    <item msgid="6067166649320533751">"Thabiti zaidi"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Washa Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Umezima Bluetooth"</string>
+    <string name="link_speed" msgid="7868861844075624445">"Mbps %1$d"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"GHz 2.4"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"GHz 5"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Maelezo ya mtandao"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Anwani ya MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Anwani ya IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Anwani za IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Lango"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Mapendeleo ya Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Washa Wi‑Fi kiotomatiki"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi itarejea kwenye mitandao bora zaidi ya karibu uliyohifadhi, k.m. mtandao wa nyumbani"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Haipatikani kwa sababu umezima huduma za mahali."<annotation id="link">"Ziwashe"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Ungependa kuwasha kipengele cha kutafuta Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Washa"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Umewasha utafutaji wa Wi‑Fi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Tumia data ya mtandao wa simu kiotomatiki"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Tumia data ya mtandao wa simu wakati Wi-Fi haina muunganisho wa intaneti. Huenda ukalipia data utakayotumia."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Pata maelezo zaidi"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Dhibiti miunganisho, weka jina na uwezo wa kutambulika wa kifaa"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Kompyuta"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Vifaa vya sauti"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Simu"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Kupiga picha"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Kifaa cha sauti"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Vifaa vya Ziada vya Kuingiza Data"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Vifaa vilivyooanishwa"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Vifaa vinavyopatikana"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Hakuna vifaa vilivyooanishwa"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Hakuna vifaa vinavyopatikana"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Kifaa kilichooanishwa"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Jina"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Tumia kwa"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Badilisha jina la kifaa cha Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Kifaa kisichokuwa na jina"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Vifaa vilivyooanishwa"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Oanisha kifaa kipya"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth itawaka ili ioanishe"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Ungependa kuondoa kifaa?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Muunganisho wa gari lako utaondolewa kwenye <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Anwani ya Bluetooth ya gari: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Anwani ya Bluetooth ya Kifaa chako: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Jina la gari"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Badilisha jina la gari hii"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Badilisha jina la kifaa"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Badilisha jina"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Vifaa vinavyopatikana"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Maelezo"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Ombi la kuoanisha Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Oanisha kisha unganisha"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Msimbo wa kuoanisha Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN inajumlisha herufi au alama"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Andika msimbo wa kuoanisha kisha ubonyeze \"Rejesha\" au \"Enter\""</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Kwa kawaida 0000 au 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Ombi la kuoanisha"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Gusa ili uoanishe na <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Lugha"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Lugha na uingizaji wa data"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Kibodi"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Dhibiti kibodi"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Matokeo ya kusoma maandishi kwa sauti"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Mtambo unaopendelewa"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Mtambo wa sasa"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Kasi ya Kutamka"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Uzito wa sauti"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Badilisha"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Mlio"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Sauti ya mlio"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Kiasi cha sauti"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Maudhui"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Badilisha sauti ya muziki na video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Kengele"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Mlio wa simu"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Sauti chaguomsingi ya arifa"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Sauti chaguomsingi ya kengele"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Programu na arifa"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Onyesha programu zote"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Programu chaguomsingi"</string>
     <string name="applications_settings" msgid="794261395191035632">"Maelezo ya programu"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Lazimisha kuzima"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Ungependa kuilazimisha izime?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ukilazimisha programu izime, huenda isifanye kazi vizuri."</string>
     <string name="disable_text" msgid="4358165448648990820">"Zima"</string>
     <string name="enable_text" msgid="1794971777861881238">"Washa"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Ondoa"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Ukizima programu hii, huenda Android na programu zingine zikakosa kufanya kazi tena kama ilivyokusudiwa."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Zima programu"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Ruhusa"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Toleo: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Hakuna ruhusa zilizotolewa"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Hakuna ruhusa zilizoombwa"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Matumizi ya data"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Matumizi ya data ya programu"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Lazimisha kuzima"</string>
     <string name="computing_size" msgid="5791407621793083965">"Inahesabu…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">Ruhusa <xliff:g id="COUNT_1">%d</xliff:g> za ziada</item>
       <item quantity="one">Ruhusa <xliff:g id="COUNT_0">%d</xliff:g> ya ziada</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Mratibu na kuweka data kwa kutamka"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Programu ya usaidizi"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Tumia maandishi kutoka kwenye skrini"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Ruhusu programu ya usaidizi kufikia maudhui ya skrini katika muundo wa maandishi"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Tumia picha ya skrini"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Ruhusu programu ya usaidizi kufikia picha ya skrini"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Huduma ya kujaza kiotomatiki"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Hakuna"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Umechagua"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Programu ya Mratibu itaweza kusoma maelezo kuhusu programu unazotumia katika mfumo wako, ikiwa ni pamoja na maelezo yanayoonekana kwenye skrini yako au yanayoweza kufikiwa ndani ya programu."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Hakikisha kuwa unaamini programu hii&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; hutumia kilicho kwenye skrini yako kubaini kinachoweza kujazwa kiotomatiki."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Ongeza huduma"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Mahali"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Maombi ya Hivi Karibuni ya Kutambua Eneo"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Hamna maombi ya hivi karibuni ya kutambua eneo"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Ruhusa za kiwango cha programu"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Kutafuta"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Huduma za Mahali"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Kutafuta Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Ruhusu programu na huduma zitafute mitandao ya Wi-Fi wakati wowote, hata wakati umezima Wi-Fi. Hali hii inaweza kutumika, kwa mfano, kuboresha huduma na vipengele vinavyohusiana na mahali."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Kutafuta Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Ruhusu programu na huduma itafute vifaa vilivyo karibu wakati wowote, hata wakati umezima Bluetooth. Hali hii inaweza kutumika, kwa mfano, kuboresha huduma na vipengele vinavyohusiana na mahali."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Mfumo"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Masisho ya mfumo"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Masasisho ya mfumo"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Toleo la Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Kiwango cha rekebisho la usalama kwenye Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Muundo"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Toleo la mitambo ya redio"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Toleo la kiini"</string>
     <string name="build_number" msgid="3997326631001009102">"Nambari ya muundo"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Anwani ya Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Haipatikani"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Hali"</string>
     <string name="device_status" msgid="267298179806290920">"Hali"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Hakimiliki"</string>
     <string name="license_title" msgid="936705938435249965">"Leseni"</string>
     <string name="terms_title" msgid="5201471373602628765">"Sheria na Masharti"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Leseni ya WebView ya Mfumo"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Leseni za mfumo za Mwonekano wa Wavuti"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Mandhari"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Watoa huduma za picha za setilaiti: \n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Leseni za watu wengine"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Kuna shida ya kupakia leseni."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Inapakia…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Sasa umebakisha hatua <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> kabla ya kuwa msanidi programu.</item>
+      <item quantity="one">Sasa umebakisha hatua <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> kabla ya kuwa msanidi programu.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Sasa wewe ni msanidi programu!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Usijali, tayari wewe ni msanidi programu."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Chaguo za wasanidi programu"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Chaguo za kubadilisha mipangilio"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Kubadilisha mipangilio ya kifaa, programu au mtandao"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Badilisha mipangilio ya mtandao"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Hatua hii itabadilisha mipangilio yote ya mtandao, ikiwa ni pamoja na:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Data ya mtandao wa simu"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Futa eSIM zote za gari"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Hatua hii haitaghairi mpango wako wa huduma."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Imeshindwa kuweka eSIM upya"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Chagua mtandao"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Badilisha mipangilio"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Ungependa kubadilisha?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Ungependa kubadilisha mipangilio yote ya mtandao? Huwezi kutendua hatua hii!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Badilisha mipangilio"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Imebadilisha mipangilio ya mtandao"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Badilisha mapendeleo ya programu"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Hatua hii itaweka upya mapendeleo yote ya:\n\n"<li>"Programu zilizozimwa"</li>\n<li>"Arifa za programu zilizomwa"</li>\n<li>"Programu chaguomsingi za vitendo"</li>\n<li>"Masharti ya matumizi ya data chinichini katika programu"</li>\n<li>"Masharti yoyote ya ruhusa"</li>\n\n"Hutapoteza data yoyote ya programu."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Weka programu upya"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Mapendeleo ya programu yamewekwa upya"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Futa data yote (rejesha mipangilio ya kiwandani)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Hatua hii itafuta data yote kwenye sehemu ya mbele ya gari lako ikiwa ni pamoja na:\n\n"<li>" Akaunti yako ya Google"</li>\n<li>"Data na mipangilio ya mfumo na programu"</li>\n<li>"Programu ulizopakua"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Kwa sasa umeingia katika akaunti zifuatazo:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Watu wengine katika gari hili.wanatumia kifaa."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Badilisha mipangilio ya gari"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Ungependa kubadilisha?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Ungependa kufuta taarifa yako yote ya binafsi na programu ulizopakua? Huwezi kutendua hatua hii!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Futa kila kitu"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Inafuta"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Tafadhali subiri..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tarehe na saa"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Weka tarehe na saa"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Weka tarehe, saa, saa za eneo na mfumo"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Panga kulingana na saa za eneo"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Tarehe"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Saa"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Ongeza mtumiaji"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Ongeza akaunti"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Futa mtumiaji"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Mtumiaji mpya"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Mgeni"</string>
     <string name="user_admin" msgid="1535484812908584809">"Msimamizi"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Umeingia katika akaunti ya msimamizi"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Ruhusa zote za msimamizi"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Mfanye awe Msimamizi"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Mtumiaji ataweza kufuta watumiaji, ikiwa ni pamoja na Wasimamizi wengine na kuweka upya mipangilio ya mfumo."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Hatua hii haiwezi kutenduliwa."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ndiyo, mfanye awe msimamizi"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Ongeza watumiaji wapya"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Piga simu"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Ujumbe kupitia data ya simu ya gari"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Sakinisha programu mpya"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Ondoa programu"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Ongeza mtumiaji"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Mtumiaji mpya"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Ungependa kuongeza mtumiaji?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ukiongeza mtumiaji mpya, ni lazima aweke kikundi chake."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Mtumiaji yeyote anaweza kusasisha programu za watumiaji wengine."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Umefikia kima cha juu cha watumiaji"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Unaruhusiwa kuongeza hadi watumiaji <xliff:g id="COUNT">%d</xliff:g>.</item>
+      <item quantity="one">Unaruhusiwa kuongeza mtumiaji mmoja pekee.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Imeshindwa kuongeza mtumiaji mpya"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Utafuta mtumiaji huyu?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Data na programu zote zitafutwa."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Imeshindwa kumfuta mtumiaji."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Ondoa"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Jaribu tena"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Ifute mtumiaji wa mwisho?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Baada ya kufuta mtumiaji aliyesalia wa gari hili, itaweka mtumiaji mwingine ambaye ni msimamizi."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Data, mipangilio, na programu zote zinazohusishwa na mtumiaji huyu zitafutwa. Utahitaji kuweka tena mipangilio ya mfumo."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Chagua msimamizi mwingine"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Unahitaji angalau msimamizi mmoja. Chagua kwanza msimamizi mwingine ili ufute msimamizi huyu."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Chagua msimamizi"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Mgeni"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Mgeni"</string>
     <string name="user_switch" msgid="6544839750534690781">"Badilisha"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Wewe (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Jina"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Haijawekwa mipangilio"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Badilisha jina la mtumiaji"</string>
     <string name="users_list_title" msgid="770764290290240909">"Watumiaji"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Ruhusa zilizotolewa kwa %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Akaunti"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Mtumiaji"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Ongeza akaunti"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Hakuna akaunti zilizoongezwa"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Akaunti za <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Sawazisha data kiotomatiki"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Ruhusu programu zionyeshe data upya kiotomatiki"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Utawasha usawazishaji wa data kiotomatiki?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Mabadiliko yoyote utakayofanya katika akaunti zako kwenye wavuti yatanakiliwa kiotomatiki kwenye kifaa chako.\n\nHuenda baadhi ya akaunti pia zikanakili kiotomatiki kwenye wavuti mabadiliko yoyote utakayofanya kwenye simu. Hivi ndivyo akaunti ya Google inavyofanya kazi."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Utazima usawazishaji wa data kiotomatiki?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Kuzima kipengele hiki kutaokoa data lakini utahitaji kusawazisha kila akaunti wewe mwenyewe ili ukusanye taarifa ya hivi karibuni. Na hutaarifiwa wakati kuna taarifa mpya."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Maelezo ya akaunti"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Ongeza akaunti"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Ongeza akaunti"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Ondoa akaunti"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Unataka kuondoa akaunti?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Kuondoa akaunti hii kutasabibisha kufutwa kwa ujumbe, anwani na data nyingine kwenye kifaa!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Mabadiliko haya hayaruhusiwi na msimamizi wako"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Mtumiaji huyu aondolewe?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Data na programu zote zitafutwa."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Imeshindwa kumwondoa mtumiaji."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Utajaribu tena?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Ondoa"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Jaribu tena"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Ungependa kuongeza mtumiaji?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Ukiongeza mtumiaji mpya, ni lazima aweke kikundi chake."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Mtumiaji yeyote anaweza kusasisha programu za watumiaji wengine."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Imeshindwa kuondoa akaunti."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Usawazishaji wa akaunti"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Umewasha usawazishaji katika vipengee <xliff:g id="ID_1">%1$d</xliff:g> kati ya <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Umewasha usawazishaji katika vipengee vyote"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Umezima usawazishaji katika vipengee vyote"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Usawazishaji UMEZIMWA"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Hitilafu ya usawazishaji"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Ilisawazishwa mwisho <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Inasawazisha sasa…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Gusa ili usawazishe<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g> sasa"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Sawazisha sasa"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Ghairi usawazishaji"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Kwa sasa kipengele cha kusawazisha kina matatizo. Kitaanza kufanya kazi baada ya muda mfupi."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Usalama"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Kufunga skrini"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Hamna"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Nenosiri"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Chagua mbinu ya kufunga skrini"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Chaguo za kufunga skrini"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Chaguo za kufunga"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Weka mchoro wako"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Thibitisha"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Chora tena"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Weka mbinu ya kufunga skrini"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Chagua PIN yako"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Chagua mchoro wako"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Chagua nenosiri lako"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Chagua nenosiri lako"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Mbinu inayotumika kufunga skrini"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Kwa sababu za usalama, weka mchoro"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Futa"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Manenosiri yanayotumika sana yamezuiwa na msimamizi wako wa Tehama. Jaribu nenosiri tofauti."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Haturuhusu mpangilio wa tarakimu wa kupanda, kushuka au kujirudia."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Chaguo za kufunga skrini"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Siku <xliff:g id="NUM_DAYS">%3$s</xliff:g> zilizopita"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Ongeza kifaa unachokiamini"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Vifaa unavyoviamini"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other">Vifaa <xliff:g id="COUNT_1">%d</xliff:g></item>
+      <item quantity="one">Kifaa <xliff:g id="COUNT_0">%d</xliff:g></item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> yako itafungua gari hili itakapounganishwa. Mtu akichukua <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> yako, huenda ataweza kufikia kifaa hiki."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Thibitisha"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ondoa kifaa unachokiamini"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Nimemaliza"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Tumia programu saidizi kuweka mipangilio ya kifaa unachoamini Ukishakamilisha kuweka mipangilio, utaweza kufungua wasifu wako wa mtumiaji wakati simu yako itatambuliwa na gari"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Pakua programu saidizi kwenye simu yako"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Chagua <xliff:g id="CAR_NAME">%1$s</xliff:g> kwenye simu yako ili uoanishe vifaa"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock haiwezi kutambua vipengele vya usalama katika kifaa hiki. Ili kukusaidia ulinde gari lako, kifaa unachoamini kitaweza tu kuzuia gari lako lisijifunge ukishalifungua. Kifaa unachoamini kinaweza kuzuia gari lako lisijifunge likiwa karibu, hata kama kimebebwa na mtu mwingine."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Ongeza <xliff:g id="DEVICE_NAME">%1$s</xliff:g>kiwe kifaa unachoamini"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Umeongeza <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kuwa kifaa unachoamini"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Imeshindwa kuandikisha <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Unatakiwa uweke njia ya kuthibitisha ili uongeze kifaa unachoamini katika hatua inayofuata. Kama huna kifaa unachoamini, uthibitishaji utataka idhini ya kufikia wasifu wako."</string>
     <string name="forget" msgid="3971143908183848527">"Sahau"</string>
+    <string name="connect" msgid="5861699594602380150">"Unganisha"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Tenganisha"</string>
     <string name="delete_button" msgid="5840500432614610850">"Futa"</string>
     <string name="remove_button" msgid="6664656962868194178">"Ondoa"</string>
     <string name="cancel" msgid="750286395700355455">"Ghairi"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Funga hali ya onyesho"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Hatua hii itafuta akaunti ya onyesho na kurejesha data ambayo kifaa kilitoka nayo kiwandani. Data yote ya mtumiaji itapotea."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Funga Onyesho"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"maliza kuweka mipangilio"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"si sasa"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ONDOA"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Kipengele hakipatikani unapoendesha gari."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Huwezi kuongeza mtumiaji unapoendesha gari."</string>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 44f3b77..0b7991f 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ஒளிமங்கல் திரை, டச்ஸ்கிரீன், பேட்டரி"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"ஒளிமங்கல் திரை, இரவு, மென்னிறம்"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"இரவுப் பயன்முறை"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"நெட்வொர்க் &amp; இணையம்"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"மொபைல் நெட்வொர்க்"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"மொபைல் டேட்டா"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"மொபைல் நெட்வொர்க் மூலம் டேட்டாவைப் பயன்படுத்து"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"மொபைல் டேட்டாவை ஆஃப் செய்யவா?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"டேட்டா உபயோகம்"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"டேட்டா உபயோக எச்சரிக்கை &amp; வரம்பு"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ஆப்ஸ் டேட்டா உபயோக சுழற்சி"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"டேட்டா உபயோக எச்சரிக்கையை அமை"</string>
+    <string name="data_warning" msgid="116776633806885370">"டேட்டா உபயோக எச்சரிக்கை"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"டேட்டா வரம்பை அமை"</string>
+    <string name="data_limit" msgid="227338836292511425">"டேட்டா வரம்பு"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"டேட்டா உபயோகத்தை வரம்பிடுதல்"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"நீங்கள் அமைத்துள்ள வரம்பை அடைந்ததும் மொபைல் டேட்டாவைக் கார் சாதனத்தின் முதன்மை யூனிட் மொபைல் டேட்டாவை முடக்கும்.\n\nடேட்டா உபயோகத்தை முதன்மை யூனிட் அளவிட்டாலும் உங்கள் மொபைல் நிறுவனம் வேறுவிதமாக அளவிடலாம். எனவே பாதுகாப்பான அளவில் வரம்பை அமைக்கவும்."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"வைஃபை"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"வயர்லெஸ் ஆக்சஸ் பாயிண்ட்களை அமைத்து நிர்வகிக்கவும்"</string>
     <string name="wifi_starting" msgid="473253087503153167">"வைஃபையை ஆன் செய்கிறது…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"வைஃபையை ஆஃப் செய்கிறது…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"வைஃபை பட்டியலை ஏற்றுகிறது"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"வைஃபை ஆஃப் செய்யப்பட்டது"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"நெட்வொர்க்கை நீக்க முடியவில்லை"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"நெட்வொர்க்குடன் இணைக்க முடியவில்லை"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"நெட்வொர்க்கைச் சேர்"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"வைஃபை ஆஃப் செய்யப்பட்டது"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"இணை"</string>
     <string name="wifi_password" msgid="5565632142720292397">"கடவுச்சொல்"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"கடவுச்சொல்லைக் காட்டு"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"நெட்வொர்க் பெயர்"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSIDயை உள்ளிடவும்"</string>
     <string name="wifi_security" msgid="158358046038876532">"பாதுகாப்பு"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"சிக்னலின் வலிமை"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"சிக்னலின் வலிமை"</string>
     <string name="wifi_status" msgid="5688013206066543952">"நிலை"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"இணைப்பு வேகம்"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"அதிர்வெண்"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP முகவரி"</string>
+    <string name="show_password" msgid="2074628020371139240">"கடவுச்சொல்லைக் காட்டு"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"நெட்வொர்க்கின் பெயரை உள்ளிடவும்"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"கடவுச்சொல்லை உள்ளிடவும்"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"மோசம்"</item>
-    <item msgid="2032262610626057081">"சுமார்"</item>
-    <item msgid="3859756017461098953">"நன்று"</item>
-    <item msgid="1521103743353335724">"பிரமாதம்"</item>
+    <item msgid="7683058295076342057">"மோசம்"</item>
+    <item msgid="1639222824821660744">"பரவாயில்லை"</item>
+    <item msgid="1838705897358163300">"நன்று"</item>
+    <item msgid="6067166649320533751">"பிரமாதம்"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"புளூடூத்"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"புளூடூத்தை ஆன் செய்"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"புளூடூத்"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"புளூடூத் முடக்கப்பட்டுள்ளது"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d மெ.பை./வி"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"நெட்வொர்க் விவரங்கள்"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC முகவரி"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP முகவரி"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"சப்நெட் மாஸ்க்"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 முகவரிகள்"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"கேட்வே"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"வைஃபை விருப்பத்தேர்வுகள்"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"வைஃபையைத் தானாக இயக்கு"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"சேமிக்கப்பட்ட உயர்தர நெட்வொர்க்குகளுக்கு (எடுத்துக்காட்டு: உங்கள் வீட்டு நெட்வொர்க்) அருகில் இருக்கும்போது வைஃபை இயக்கப்படும்"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"இருப்பிடம் ஆஃபில் உள்ளதால் கிடைக்கவில்லை. "<annotation id="link">"இருப்பிடத்தை"</annotation>" ஆன் செய்க."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"வைஃபை ஸ்கேனிங்கை ஆன் செய்யவா?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ஆன் செய்"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"வைஃபை ஸ்கேனிங் ஆன் செய்யப்பட்டது"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"தானாகவே மொபைல் டேட்டாவிற்கு மாறு"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"வைஃபையில் இணைய அணுகல் இல்லாதபோது மொபைல் டேட்டாவைப் பயன்படுத்தும். டேட்டா உபயோகத்திற்குக் கட்டணம் விதிக்கப்படலாம்."</string>
+    <string name="learn_more" msgid="8214605928933358604">"மேலும் அறிக"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"புளூடூத்"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"இணைப்புகளை நிர்வகிக்கவும், சாதனப் பெயரையும் கண்டறியத்தக்க நிலையையும் அமைக்கவும்"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"கம்ப்யூட்டர்"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ஹெட்செட்"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"மொபைல்"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"இமேஜிங்"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"ஹெட்ஃபோன்"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"இன்புட் பெரிபெரல்"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"புளூடூத்"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"இணைக்கப்பட்ட சாதனங்கள்"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"கிடைக்கும் சாதனங்கள்"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"இணைக்கப்பட்ட சாதனங்கள் இல்லை"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"சாதனங்கள் எதுவுமில்லை"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"இணைக்கப்பட்ட சாதனம்"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"பெயர்"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"இதற்குப் பயன்படுத்து"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"புளூடூத் சாதனத்தின் பெயரை மாற்றவும்"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"பெயரிடப்படாத சாதனம்"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"இணைக்கப்பட்ட சாதனங்கள்"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"புதிய சாதனத்தை இணைத்தல்"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"இணைப்பதற்கு புளூடூத் ஆன் செய்யப்படும்"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"சாதன இணைப்பைத் துண்டிக்கவா?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> இலிருந்து உங்கள் வாகனத்தின் புளூடூத் இணைப்பு துண்டிக்கப்படும்."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"வாகனத்தின் புளூடூத் முகவரி: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"சாதனத்தின் புளூடூத் முகவரி: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"வாகனத்தின் பெயர்"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"வாகனத்திற்கு மறுபெயரிடுதல்"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"சாதனத்திற்கு மறுபெயரிடுதல்"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"மறுபெயரிடு"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"இணைப்பிற்குக் கிடைக்கும் சாதனங்கள்"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"புளூடூத் சுயவிவரங்கள்"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"புளூடூத் இணைப்பிற்கான கோரிக்கை"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"ஜோடி சேர்த்து, இணை"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"புளூடூத்"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"புளூடூத் இணைத்தல் குறியீடு"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"பின்னில் எழுத்துகள் அல்லது குறிகள் உள்ளன"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"இணைத்தல் குறியீட்டை உள்ளிட்டு, ரிட்டர்ன் அல்லது என்டரை அழுத்தவும்"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"பொதுவாக 0000 அல்லது 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"இணைப்பிற்கான கோரிக்கை"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> உடன் இணைக்க, தட்டவும்."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"மொழிகள்"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"மொழிகள் &amp; உள்ளீடு"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"கீபோர்டு"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"கீபோர்டுகளை நிர்வகித்தல்"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"உரையிலிருந்து பேச்சுக்கு"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"இன்ஜின் விருப்பத்தேர்வு"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"தற்போதைய இன்ஜின்"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"பேச்சு வீதம்"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"குரல் அழுத்தம்"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"மீட்டமை"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ஒலி"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"ரிங் ஒலியளவு"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"வழிசெலுத்தலுக்கான ஒலியளவு"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"மீடியா"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"இசை மற்றும் வீடியோக்களுக்கான ஒலியளவை அமை"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"அலாரம்"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"மொபைலுக்கான ரிங்டோன்"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"இயல்புநிலை அறிவிப்பிற்கான ஒலி"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"இயல்புநிலை அலாரத்திற்கான ஒலி"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ஆப்ஸ் &amp; அறிவிப்புகள்"</string>
+    <string name="all_applications" msgid="7798210477486822168">"அனைத்து ஆப்ஸையும் காட்டு"</string>
+    <string name="default_applications" msgid="1558183275638697087">"இயல்புநிலை ஆப்ஸ்"</string>
     <string name="applications_settings" msgid="794261395191035632">"பயன்பாட்டுத் தகவல்"</string>
+    <string name="force_stop" msgid="2153183697014720520">"உடனே நிறுத்து"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"உடனே நிறுத்தவா?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"ஆப்ஸை உடனே நிறுத்தினால் சரியாக இயங்காமல் போகக்கூடும்."</string>
     <string name="disable_text" msgid="4358165448648990820">"முடக்கு"</string>
     <string name="enable_text" msgid="1794971777861881238">"இயக்கு"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"நிறுவல் நீக்கு"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"இந்த ஆப்ஸை முடக்கினால் Androidடும் பிற ஆப்ஸும் எதிர்பார்த்தவாறு செயல்படாமல் போகக்கூடும்."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ஆப்ஸை முடக்கு"</string>
     <string name="permissions_label" msgid="2701446753515612685">"அனுமதிகள்"</string>
     <string name="application_version_label" msgid="8556889839783311649">"பதிப்பு: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"அனுமதிகள் எதுவும் வழங்கப்படவில்லை"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"அனுமதிகள் எதையும் கோரவில்லை"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"டேட்டா உபயோகம்"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"பயன்பாட்டின் டேட்டா உபயோகம்"</string>
-    <string name="force_stop" msgid="2153183697014720520">"உடனே நிறுத்து"</string>
     <string name="computing_size" msgid="5791407621793083965">"கணக்கிடுகிறது…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> கூடுதல் அனுமதிகள்</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> கூடுதல் அனுமதி</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"அசிஸ்டண்ட் &amp; குரல் உள்ளீடு"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"அசிஸ்ட் ஆப்ஸ்"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"திரையில் உள்ள உரையைப் பயன்படுத்துதல்"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"திரையில் உள்ள உள்ளடக்கத்தை உரையாக அணுகுவதற்கு அசிஸ்ட் ஆப்ஸை அனுமதிக்கும்"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ஸ்கிரீன்ஷாட்டைப் பயன்படுத்துதல்"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"திரையில் உள்ள படத்தை அணுகுவதற்கு அசிஸ்ட் ஆப்ஸை அனுமதிக்கும்"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"தன்னிரப்பிச் சேவை"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ஏதுமில்லை"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"தேர்ந்தெடுக்கப்பட்டது"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"திரையில் தெரியும் தகவல் அல்லது ஆப்ஸுக்குள் அணுகத்தக்க தகவல் உட்பட உங்கள் சிஸ்டமில் செயலிலுள்ள ஆப்ஸ்கள் பற்றிய தகவல்களை அசிஸ்டண்ட்டால் படிக்க இயலும்."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;இந்த ஆப்ஸை நம்புகிறீர்கள் என்பதை உறுதிப்படுத்தவும்&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; உங்கள் திரையில் இருப்பதைப் பயன்படுத்தி எவற்றையெல்லாம் தானாக நிரப்ப இயலும் என்பதைத் தீர்மானிக்கும்."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"சேவையைச் சேர்த்தல்"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"இடம்"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"இருப்பிடத் தகவல் குறித்த சமீபத்திய கோரிக்கைகள்"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"இருப்பிடத் தகவல் குறித்த சமீபத்திய கோரிக்கைகள் இல்லை"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ஆப்ஸ் நிலை அனுமதிகள்"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"ஸ்கேன் செய்தல்"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"இருப்பிடச் சேவைகள்"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"வைஃபை ஸ்கேன் செய்தல்"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"வைஃபை ஆஃப் செய்யப்பட்டிருந்தாலும்கூட எந்தநேரத்திலும் வைஃபை நெட்வொர்க்குகளைத் தேட ஆப்ஸையும் சேவைகளையும் அனுமதிக்கும். உதாரணத்திற்கு இருப்பிடம் சார்ந்த அம்சங்களையும் சேவைகளையும் மேம்படுத்துவதற்கும் இதைப் பயன்படுத்தலாம்."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"புளூடூத் ஸ்கேன் செய்தல்"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"புளூடூத் ஆஃப் செய்யப்பட்டிருந்தாலும்கூட எந்தநேரத்திலும் அருகிலுள்ள சாதனங்களைத் தேட ஆப்ஸையும் சேவைகளையும் அனுமதிக்கும். உதாரணத்திற்கு இருப்பிடம் சார்ந்த அம்சங்களையும் சேவைகளையும் மேம்படுத்துவதற்கும் இதைப் பயன்படுத்தலாம்."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"சிஸ்டம்"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"இயங்குதளப் புதுப்பிப்புகள்"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"சிஸ்டம் புதுப்பிப்புகள்"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android பதிப்பு"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android பாதுகாப்பின் பேட்ச் நிலை"</string>
     <string name="model_info" msgid="4966408071657934452">"மாடல்"</string>
     <string name="baseband_version" msgid="2370088062235041897">"பேஸ்பேண்ட் பதிப்பு"</string>
     <string name="kernel_version" msgid="7327212934187011508">"கர்னல் பதிப்பு"</string>
     <string name="build_number" msgid="3997326631001009102">"பதிப்பு எண்"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"புளூடூத் முகவரி"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"கிடைக்கவில்லை"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"நிலை"</string>
     <string name="device_status" msgid="267298179806290920">"நிலை"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"பதிப்புரிமை"</string>
     <string name="license_title" msgid="936705938435249965">"உரிமம்"</string>
     <string name="terms_title" msgid="5201471373602628765">"விதிமுறைகளும் நிபந்தனைகளும்"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"சிஸ்டம் WebView உரிமம்"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"சிஸ்டம் WebView உரிமங்கள்"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"வால்பேப்பர்கள்"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"சாட்டிலைட் படங்களை வழங்குபவர்கள்:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"மூன்றாம் தரப்பு உரிமங்கள்"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"உரிமங்களை ஏற்றுவதில் சிக்கல்."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"ஏற்றுகிறது…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">நீங்கள் டெவெலப்பராக இன்னும் <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> படிகள் உள்ளன.</item>
+      <item quantity="one">நீங்கள் டெவெலப்பராக இன்னும் <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> படி உள்ளது.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"நீங்கள் இப்போது டெவெலப்பராகிவிட்டீர்கள்!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"தேவையில்லை, நீங்கள் ஏற்கனவே ஒரு டெவெலப்பர்."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"டெவெலப்பர் விருப்பங்கள்"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"மீட்டமைவு விருப்பங்கள்"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"சாதனம், ஆப்ஸ் அல்லது நெட்வொர்க் மீட்டமைவு"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"நெட்வொர்க்கை மீட்டமைத்தல்"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"பின்வருபவை உட்பட, அனைத்து நெட்வொர்க் அமைப்புகளையும் மீட்டமைக்கும்:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"வைஃபை"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"மொபைல் டேட்டா"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"புளூடூத்"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"வாகன eSIMகளை அழித்தல்"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"இதனால் உங்கள் சேவைத் திட்டம் ரத்துசெய்யப்படாது."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIMகளை மீட்டமைக்க இயலவில்லை"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"நெட்வொர்க்கைத் தேர்வுசெய்தல்"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"அமைப்புகளை மீட்டமை"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"மீட்டமைக்கவா?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"எல்லா நெட்வொர்க் அமைப்புகளையும் மீட்டமைக்கவா? இதைச் செயல்தவிர்க்க முடியாது!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"அமைப்புகளை மீட்டமை"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"நெட்வொர்க் அமைப்புகள் மீட்டமைக்கப்பட்டன"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ஆப்ஸ் விருப்பத்தேர்வுகளை மீட்டமை"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"பின்வரும் விருப்பத்தேர்வுகளை இது மீட்டமைக்கும்:\n\n"<li>"முடக்கப்பட்டுள்ள ஆப்ஸ்"</li>\n<li>"முடக்கப்பட்டுள்ள ஆப்ஸ் அறிவிப்புகள்"</li>\n<li>"செயல்பாடுகளுக்கான இயல்புநிலை ஆப்ஸ்"</li>\n<li>"ஆப்ஸிற்கான பின்புலத் தரவுக் கட்டுப்பாடுகள்"</li>\n<li>"ஏதேனும் அனுமதிக் கட்டுப்பாடுகள்"</li>\n\n"இதன் காரணமாக எந்த ஆப்ஸ் தரவையும் இழக்கமாட்டீர்கள்."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ஆப்ஸை மீட்டமை"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ஆப்ஸ் விருப்பத்தேர்வுகள் மீட்டமைக்கப்பட்டன"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"எல்லாத் தரவையும் அழி (ஆரம்பநிலை ரீசெட்)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"இது உங்கள் கார் சாதனத்தின் முதன்மை யூனிட்டிலிருந்து அனைத்துத் தரவையும் அழித்துவிடும். இவற்றில்\n\n"<li>"உங்களின் Google கணக்கு"</li>\n<li>"சிஸ்டம் &amp; ஆப்ஸ் தரவுகள் மற்றும் அமைப்புகள்"</li>\n<li>"பதிவிறக்கப்பட்ட ஆப்ஸ்"</li>" ஆகியவை உள்ளடங்கும்"</string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"தற்போது பின்வரும் கணக்குகளில் உள்நுழைந்துள்ளீர்கள்:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"இந்தக் காரின் சாதனத்தைப் பிற பயனர்கள் பயன்படுத்துகின்றனர்."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"காரின் சாதனத்தை மீட்டமை"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"மீட்டமைக்கவா?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"அனைத்துத் தனிப்பட்ட தகவலையும், பதிவிறக்கிய ஆப்ஸையும் அழிக்கவா? இதைச் செயல்தவிர்க்க இயலாது!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"அனைத்தையும் அழி"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"அழிக்கிறது"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"காத்திருக்கவும்..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"தேதி &amp; நேரம்"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"தேதி மற்றும் நேரத்தை அமை"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"தேதி, நேரம், நேரமண்டலம் &amp; வடிவங்களை அமை"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"நேர மண்டலத்தின்படி வரிசைப்படுத்து"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"தேதி"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"நேரம்"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"பயனரைச் சேர்"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"கணக்கைச் சேர்"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"பயனரை நீக்கும்"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"புதிய பயனர்"</string>
-    <string name="user_guest" msgid="3465399481257448601">"விருந்தினர்"</string>
     <string name="user_admin" msgid="1535484812908584809">"நிர்வாகி"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"நிர்வாகியாக உள்நுழைந்துள்ளீர்கள்"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"நிர்வாகி அனுமதிகளை வழங்குதல்"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"நிர்வாகியாக்கு"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"நிர்வாகியாக்கப்பட்ட பயனரால் மற்ற ’நிர்வாகிகள்’ உட்பட எவரையும் நீக்க முடிவதோடு சிஸ்டத்தையும் ஆரம்பநிலைக்கு மீட்டமைக்க முடியும்."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"இந்தச் செயலைத் திரும்பப் பெற இயலாது."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"ஆம், நிர்வாகியாக்கு"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"புதிய பயனர்களை உருவாக்குதல்"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ஃபோன் அழைப்புகளைச் செய்தல்"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"காரின் மொபைல் டேட்டா மூலம் மெசேஜிங்"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"புதிய ஆப்ஸை நிறுவுதல்"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ஆப்ஸை நிறுவல்நீக்குதல்"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"பயனரைச் சேர்"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"புதிய பயனர்"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"புதிய பயனரைச் சேர்க்கவா?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"புதிய பயனரைச் சேர்க்கும்போது, அவர் தனக்கான இடத்தை அமைக்க வேண்டும்."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"எந்தவொரு பயனரும், மற்ற பயனர்களுக்காக ஆப்ஸைப் புதுப்பிக்கலாம்."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"பயனர் வரம்பை அடைந்துவிட்டீர்கள்"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> பயனர்கள் வரை சேர்க்க முடியும்.</item>
+      <item quantity="one">ஒரு பயனரை மட்டுமே சேர்க்க முடியும்.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"புதிய பயனரைச் சேர்க்க முடியவில்லை"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"இந்தப் பயனரை நீக்கவா?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"அனைத்து ஆப்ஸ் மற்றும் தரவு நீக்கப்படும்."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"பயனரை நீக்க இயலவில்லை."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"நிராகரி"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"மீண்டும் முயலவும்"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"கடைசிப் பயனரை நீக்கவா?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"இந்தக் காருக்கான மீதியிருக்கும் ஒரேயொரு பயனரையும் நீக்கியபிறகு, புதிதாக ஒரு ’நிர்வாகிப் பயனர் கணக்கு’ உருவாக்கப்படும்."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"இந்தப் பயனர் கணக்குடன் தொடர்புடைய ஆப்ஸ், தரவு மற்றும் அமைப்புகள் அனைத்தும் நீக்கப்படும். சிஸ்டத்தை நீங்கள் மீண்டும் அமைத்திட வேண்டியிருக்கும்."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"புதிய \'நிர்வாகிக் கணக்கைத்\' தேர்வு செய்க"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"குறைந்தபட்சம் ஒரு \'நிர்வாகிக் கணக்காவது’ இருக்க வேண்டும். இக்கணக்கை நீக்க, முதலில் ஒரு மாற்றுக் கணக்கைத் தேர்வு செய்யவும்."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"நிர்வாகியைத் தேர்வு செய்க"</string>
+    <string name="user_guest" msgid="3465399481257448601">"விருந்தினர்"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"விருந்தினர்"</string>
     <string name="user_switch" msgid="6544839750534690781">"பயனரை மாற்றும்"</string>
     <string name="current_user_name" msgid="3813671533249316823">"நீங்கள் (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"பெயர்"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"அமைக்கவில்லை"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"பயனர் பெயரைத் திருத்தவும்"</string>
     <string name="users_list_title" msgid="770764290290240909">"பயனர்கள்"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$sக்கு இந்த அனுமதிகள் உள்ளன"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"கணக்குகள்"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"பயனர்"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"கணக்கைச் சேர்"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"கணக்குகள் எதுவும் சேர்க்கப்படவில்லை"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> இன் கணக்குகள்"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"தானாகத் தரவை ஒத்திசைத்தல்"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"தானாகத் தரவை ரெஃப்ரெஷ் செய்ய ஆப்ஸை அனுமதிக்கவும்"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"தானாக ஒத்திசைப்பதை ஆன் செய்யவா?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"இணையத்திலுள்ள கணக்குகளில் நீங்கள் செய்யும் மாற்றங்கள் தானாகவே உங்கள் சாதனத்தில் நகலெடுக்கப்படும்.\n\n மொபைலில் நீங்கள் செய்யும் மாற்றங்களையும் சில கணக்குகள் தானாகவே இணையத்தில் நகலெடுக்கக்கூடும். Google கணக்கு இவ்வாறுதான் செயல்படுகிறது."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"தானாக ஒத்திசைப்பதை ஆஃப் செய்யவா?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"இவ்வாறு செய்வது தரவைச் சேமிக்கும், ஆனால் சமீபத்திய தகவலைச் சேகரிக்க ஒவ்வொரு கணக்கையும் நீங்களே நேரடியாக ஒத்திசைக்க வேண்டும். புதுப்பிக்கப்படும்போது அறிவிப்புகளைப் பெறமாட்டீர்கள்."</string>
     <string name="account_details_title" msgid="7529571432258448573">"கணக்குத் தகவல்"</string>
     <string name="add_account_title" msgid="5988746086885210040">"கணக்கைச் சேர்க்கவும்"</string>
     <string name="add_an_account" msgid="1072285034300995091">"கணக்கைச் சேர்"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"கணக்கை அகற்று"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"கணக்கை அகற்றவா?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"இந்தக் கணக்கை அகற்றினால், இதன் செய்திகள், தொடர்புகள், பிற தரவு ஆகியவை சாதனத்திலிருந்து நீக்கப்படும்!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"உங்கள் நிர்வாகி இந்த மாற்றத்தை அனுமதிக்கவில்லை"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"இந்தப் பயனரை அகற்றவா?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"எல்லா ஆப்ஸும் தரவும் நீக்கப்படும்."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"பயனரை அகற்ற முடியவில்லை."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"மீண்டும் முயலவா?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"நிராகரி"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"மீண்டும் முயலவும்"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"புதிய பயனரைச் சேர்க்கவா?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"புதிய பயனரைச் சேர்க்கும்போது, அவர் தனக்கான இடத்தை அமைக்க வேண்டும்."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"எந்தவொரு பயனரும், மற்ற பயனர்களுக்காக ஆப்ஸைப் புதுப்பிக்கலாம்."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"கணக்கை அகற்ற இயலவில்லை."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"கணக்கு ஒத்திசைவு"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> இல் <xliff:g id="ID_1">%1$d</xliff:g>க்கு ஒத்திசைவு ஆன் செய்யப்பட்டுள்ளது"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"அனைத்துக்கும் ஒத்திசைவை ஆன் செய்"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"அனைத்துக்கும் ஒத்திசைவை ஆஃப் செய்"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"ஒத்திசைவு: ஆஃப்"</string>
+    <string name="sync_error" msgid="6698021343089247914">"ஒத்திசைவுப் பிழை"</string>
+    <string name="last_synced" msgid="4745124489150101529">"கடைசியாக ஒத்திசைத்தது <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"இப்போது ஒத்திசைக்கிறது…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"இப்போது ஒத்திசைக்கத் தட்டவும்<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"இப்போதே ஒத்திசை"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ஒத்திசைவை ரத்துசெய்"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"தற்போது ஒத்திசைக்க இயலவில்லை. விரைவில் இது சரிசெய்யப்படும்."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"பாதுகாப்பு"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"திரைப் பூட்டு"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"எதுவுமில்லை"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"பின்"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"கடவுச்சொல்"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"பூட்டு வகை தேர்வுசெய்க"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"திரைப் பூட்டு விருப்பங்கள்"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"பூட்டு விருப்பங்கள்"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"பேட்டர்னை உள்ளிடுக"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"உறுதிப்படுத்து"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"மீண்டும் வரைக"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"திரைப் பூட்டை அமைக்கவும்"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"பின்னைத் தேர்ந்தெடுக்கவும்"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"பேட்டர்னைத் தேர்வுசெய்யவும்"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"கடவுச்சொல்லைத் தேர்ந்தெடுக்கவும்"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"கடவுச்சொல்லைத் தேர்வுசெய்க"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"தற்போதைய திரைப் பூட்டு"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"பாதுகாப்பிற்கு, பேட்டர்னை அமைக்கவும்"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"அழி"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"உங்கள் IT நிர்வாகி, பொதுவான கடவுச்சொற்களைத் தடுத்துள்ளார். வேறு கடவுச்சொல்லைப் பயன்படுத்திப் பார்க்கவும்."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"இலக்கங்கள் ஏறுவரிசையில், இறங்குவரிசையில் அல்லது ஒரே இலக்கத்தைத் தொடர்ந்து பயன்படுத்துவது அனுமதிக்கப்படாது."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"திரைப் பூட்டு விருப்பங்கள்"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> நாட்கள் முன்பு"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"நம்பகமான சாதனத்தைச் சேர்"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"நம்பகமான சாதனங்கள்"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> சாதனங்கள்</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> சாதனம்</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> சாதனம் இணைக்கப்படும்போது உங்கள் காரை அது திறக்கும். <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> சாதனம் எவர் கையிலாவது கிடைத்தால் அவர்கள் அதைப் பயன்படுத்த வாய்ப்பிருக்கிறது"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"உறுதிப்படுத்து"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"நம்பகமான சாதனத்தை அகற்று"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"முடிந்தது"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"நம்பகமான சாதனத்தை அமைக்க கம்பேனியன் ஆப்ஸைப் பயன்படுத்தவும். அமைவு முடிந்ததும், உங்கள் மொபைலை வாகனம் கண்டறிந்தால் உங்களின் பயனர் சுயவிவரத்தை அன்லாக் செய்ய இயலும்"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. உங்கள் மொபைலில் கம்பேனியன் ஆப்ஸைப் பதிவிறக்கவும்"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. சாதனங்களை இணைக்க உங்கள் மொபைலில் <xliff:g id="CAR_NAME">%1$s</xliff:g> என்பதைத் தேர்வுசெய்யவும்"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ஆப்ஸால் இந்தச் சாதனத்தின் பாதுகாப்பு அம்சங்களைக் கண்டறிய இயலாது. உங்கள் காரைப் பாதுகாக்க, நீங்கள் ஏற்கனவே அன்லாக் செய்திருந்தால் மட்டுமே, நம்பகமான சாதனங்களால் அதனை அன்லாக் செய்ய இயலும். வேறு யாராவது உங்கள் காரை வைத்திருந்தாலும்கூட, அருகில் இருக்கும்போது நம்பகமான சாதனங்களால் உங்கள் காரை அன்லாக் செய்ய இயலும்."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> என்ற சாதனத்தை நம்பகமான சாதனமாகச் சேர்த்தல்"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"நம்பகமான சாதனமாக <xliff:g id="DEVICE_NAME">%1$s</xliff:g> சேர்க்கப்பட்டது."</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> பதிவு செய்வதில் தோல்வி"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"நம்பகமான சாதனத்தைச் சேர்த்த பிறகு அடையாளச் சரிபார்ப்பு முறையை அமைக்க வேண்டும். உங்களிடம் நம்பகமான சாதனம் இல்லையெனில் அடையாளச் சரிபார்ப்பிற்காக உங்கள் சுயவிவரத்தை அணுக வேண்டிய அவசியம் ஏற்படும்."</string>
     <string name="forget" msgid="3971143908183848527">"அகற்று"</string>
+    <string name="connect" msgid="5861699594602380150">"இணை"</string>
+    <string name="disconnect" msgid="6140789953324820336">"துண்டி"</string>
     <string name="delete_button" msgid="5840500432614610850">"நீக்கு"</string>
     <string name="remove_button" msgid="6664656962868194178">"அகற்று"</string>
     <string name="cancel" msgid="750286395700355455">"ரத்துசெய்"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"டெமோ மோடிலிருந்து வெளியேறுதல்"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"இவ்வாறு செய்தால், டெமோ கணக்கு நீக்கப்படுவதோடு, சாதனமானது தரவின் ஆரம்பநிலைக்கு மீட்டமைக்கப்படும். எல்லாப் பயனர் தரவையும் இழப்பீர்கள்."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"டெமோவிலிருந்து வெளியேறு"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"அமைவை முடி"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"இப்போது வேண்டாம்"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"நிராகரி"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"வாகனம் ஓட்டும்போது, இந்த அம்சத்தைப் பயன்படுத்த முடியாது."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"வாகனம் ஓட்டும்போது, பயனரைச் சேர்க்க முடியாது."</string>
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index dece14b..2df2f73 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"కాంతివిహీన స్క్రీన్, టచ్‌స్క్రీన్, బ్యాటరీ"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"కాంతివిహీన స్క్రీన్, రాత్రి, లేత రంగు"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"రాత్రి మోడ్"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"నెట్‌వర్క్ &amp; ఇంటర్నెట్"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"మొబైల్ నెట్‌వర్క్"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"మొబైల్ డేటా"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"మొబైల్ నెట్‌వర్క్‌ను ఉపయోగించి డేటాను యాక్సెస్ చేయండి"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"మొబైల్ డేటాని ఆఫ్ చేయాలా?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"డేటా వినియోగం"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"డేటా వార్నింగ్ &amp; పరిమితి"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"యాప్ డేటా వినియోగ సైకిల్"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"డేటా హెచ్చరికను సెట్ చేయండి"</string>
+    <string name="data_warning" msgid="116776633806885370">"డేటా హెచ్చరిక"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"డేటా పరిమితిని సెట్ చేయండి"</string>
+    <string name="data_limit" msgid="227338836292511425">"డేటా పరిమితి"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"డేటా వినియోగాన్ని పరిమితం చేయడం"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"మీరు సెట్ చేసిన పరిమితిని చేరుకున్న తర్వాత మీ వాహనం యొక్క మొబైల్ డేటా ఆఫ్ చేయబడుతుంది.\n\nడేటా వినియోగాన్ని మీ ఫోన్ ఒక పద్ధతిలో గణిస్తే, అదే వినియోగ పరిమాణాన్ని మీ క్యారియర్ వేరే పద్ధతిలో గణించవచ్చు, కనుక కనిష్ట పరిమితిని సెట్ చేయడం మంచిది."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"వైర్‌లెస్ యాక్సెస్ స్థానాలను సెటప్ చేయండి &amp; నిర్వహించండి"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fiని ఆన్ చేస్తోంది…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fiని ఆఫ్ చేస్తోంది…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi జాబితా లోడ్ అవుతోంది"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi నిలిపివేయబడింది"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"నెట్‌వర్క్‌ను మర్చిపోవడంలో విఫలమైంది"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"నెట్‌వర్క్‌కు కనెక్ట్ చేయడం విఫలమైంది"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"నెట్‌వర్క్‌ను జోడించు"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi నిలిపివేయబడింది"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"కనెక్ట్"</string>
     <string name="wifi_password" msgid="5565632142720292397">"పాస్‌‌వర్డ్"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"పాస్‌వర్డ్‌ను చూపు"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"నెట్‌వర్క్ పేరు"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSIDని నమోదు చేయండి"</string>
     <string name="wifi_security" msgid="158358046038876532">"భద్రత"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"సిగ్నల్ సామర్థ్యం"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"సిగ్నల్ సామర్థ్యం"</string>
     <string name="wifi_status" msgid="5688013206066543952">"స్థితి"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"లింక్ వేగం"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"తరచుదనం"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP చిరునామా"</string>
+    <string name="show_password" msgid="2074628020371139240">"పాస్‌వర్డ్‌ను చూపు"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"నెట్‌వర్క్ పేరును నమోదు చేయండి"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"పాస్‌వర్డ్‌ని నమోదు చేయండి"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"బాగాలేదు"</item>
-    <item msgid="2032262610626057081">"పర్వాలేదు"</item>
-    <item msgid="3859756017461098953">"బాగుంది"</item>
-    <item msgid="1521103743353335724">"అద్భుతం"</item>
+    <item msgid="7683058295076342057">"బాగాలేదు"</item>
+    <item msgid="1639222824821660744">"ఫర్వాలేదు"</item>
+    <item msgid="1838705897358163300">"బాగుంది"</item>
+    <item msgid="6067166649320533751">"అద్భుతం"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"బ్లూటూత్"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"బ్లూటూత్‌ను ఆన్ చేయి"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"బ్లూటూత్"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"బ్లూటూత్ నిలిపివేయబడింది"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"నెట్‌వర్క్ వివరాలు"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC చిరునామా"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP చిరునామా"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"సబ్‌నెట్ మాస్క్"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 చిరునామాలు"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"గేట్‌వే"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi ప్రాధాన్యతలు"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fiని ఆటోమేటిక్‌గా ఆన్ చేయి"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"మీ ఇంటి నెట్‌వర్క్‌ల వంటి సేవ్ చేసిన అధిక నాణ్యత గల నెట్‌వర్క్‌లు అందుబాటులో ఉన్నప్పుడు Wi‑Fi తిరిగి ఆన్ చేయబడుతుంది"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"స్థానం ఆఫ్ చేయబడింది కనుక అందుబాటులో లేదు. "<annotation id="link">"స్థానం"</annotation>" ఆన్ చేయండి."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi స్కానింగ్‌ను ఆన్ చేయాలా?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"ఆన్ చేయి"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi-Fi స్కానింగ్ ఆన్ చేయబడింది"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"స్వయంచాలకంగా మొబైల్ డేటాకి మార్చు"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi‑Fiకి ఇంటర్నెట్ యాక్సెస్ లేనప్పుడు మొబైల్ డేటాను ఉపయోగిస్తుంది. డేటా వినియోగ ఛార్జీలు వర్తించవచ్చు."</string>
+    <string name="learn_more" msgid="8214605928933358604">"మరింత తెలుసుకోండి"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"బ్లూటూత్"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"కనెక్షన్‌లను నిర్వహించండి, పరికరం పేరును &amp; శోధనలో కనుగొనబడే సామర్థ్యాన్ని సెట్ చేయండి"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"కంప్యూటర్"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"హెడ్‌సెట్"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"ఫోన్"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"ప్రతిబింబనం"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"హెడ్‌ఫోన్"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ఇన్‌పుట్ అనుబంధ పరికరం"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"బ్లూటూత్"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"జత చేయబడిన పరికరాలు"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"అందుబాటులో ఉన్న పరికరాలు"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"జత చేయబడిన పరికరాలు లేవు"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"అందుబాటులో ఉన్న పరికరాలేవీ లేవు"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"జత చేయబడిన పరికరం"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"పేరు"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"దీని కోసం ఉపయోగించు"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"బ్లూటూత్ పరికరం పేరును మార్చండి"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"పేరులేని పరికరం"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"జత చేయబడిన పరికరాలు"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"కొత్త పరికరాన్ని జత చేయి"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"జత చేయడం కోసం బ్లూటూత్ ఆన్ చేయబడుతుంది"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"పరికరాన్ని డిస్‌కనెక్ట్ చేయాలా?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"మీ వాహనం <xliff:g id="DEVICE_NAME">%1$s</xliff:g> నుండి డిస్‌కనెక్ట్ అవుతుంది."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"వాహనం బ్లూటూత్ చిరునామా: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"పరికరం యొక్క బ్లూటూత్ చిరునామా: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"వాహనం పేరు"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"ఈ వాహనం పేరు మార్చండి"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"పరికరం పేరు మార్చండి"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"పేరు మార్చు"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"అందుబాటులో ఉన్న పరికరాలు"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"ప్రొఫైల్‌లు"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"బ్లూటూత్ జత చేయడానికి అభ్యర్థన"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"జత చేసి, కనెక్ట్ చేయి"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"బ్లూటూత్"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"బ్లూటూత్ జత చేసే కోడ్"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"పిన్‌ అక్షరాలను లేదా చిహ్నాలను కలిగి ఉంది"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"జత చేసే కోడ్‌ను టైప్ చేసి, ఆపై Return లేదా Enter నొక్కండి"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"సాధారణంగా 0000 లేదా 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"జత చేయడానికి అభ్యర్థన"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో జత చేయడానికి నొక్కండి."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"భాషలు"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"భాషలు &amp; ఇన్‌పుట్"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"కీబోర్డ్"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"కీబోర్డ్‌లను నిర్వహించండి"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"వచనం నుండి ప్రసంగం అవుట్‌పుట్"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ప్రాధాన్య ఇంజిన్"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"ప్రస్తుత ఇంజిన్"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"ప్రసంగం రేట్"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"పిచ్"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"రీసెట్ చేయి"</string>
     <string name="sound_settings" msgid="3072423952331872246">"ధ్వని"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"రింగ్ వాల్యూమ్"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"నావిగేషన్ వాల్యూమ్"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"మీడియా"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"సంగీతం మరియు వీడియోల కోసం వాల్యూమ్‌ను సెట్ చేయండి"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"అలారం"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"ఫోన్ రింగ్‌టోన్"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"డిఫాల్ట్ నోటిఫికేషన్ ధ్వని"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"డిఫాల్ట్ అలారం ధ్వని"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"యాప్‌లు &amp; నోటిఫికేషన్‌లు"</string>
+    <string name="all_applications" msgid="7798210477486822168">"అన్ని యాప్‌లను చూపండి"</string>
+    <string name="default_applications" msgid="1558183275638697087">"డిఫాల్ట్ యాప్‌లు"</string>
     <string name="applications_settings" msgid="794261395191035632">"యాప్ సమాచారం"</string>
+    <string name="force_stop" msgid="2153183697014720520">"ఫోర్స్ స్టాప్"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"హటాత్తుగా ఆపివేయాలా?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"మీరు ఏదైనా యాప్‌ను హటాత్తుగా ఆపివేస్తే, అది సరిగ్గా పని చేయకపోవచ్చు."</string>
     <string name="disable_text" msgid="4358165448648990820">"నిలిపివేయి"</string>
     <string name="enable_text" msgid="1794971777861881238">"ప్రారంభించు"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"అన్ఇన్‌స్టాల్ చేయి"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"మీరు ఈ యాప్‌ను నిలిపివేస్తే, Android మరియు ఇతర యాప్‌లు ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"యాప్‌ను నిలిపివేయి"</string>
     <string name="permissions_label" msgid="2701446753515612685">"అనుమతులు"</string>
     <string name="application_version_label" msgid="8556889839783311649">"వెర్షన్: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"అనుమతులు మంజూరు కాలేదు"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"అనుమతులను అభ్యర్థించలేదు"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"డేటా వినియోగం"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"యాప్ డేటా వినియోగం"</string>
-    <string name="force_stop" msgid="2153183697014720520">"ఫోర్స్ స్టాప్"</string>
     <string name="computing_size" msgid="5791407621793083965">"గణిస్తోంది…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> అదనపు అనుమతులు</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> అదనపు అనుమతి</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"అసిస్టెంట్ &amp; వాయిస్ ఇన్‌పుట్"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"సహాయక యాప్"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"స్క్రీన్‌లోని వచనాన్ని ఉపయోగించండి"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"స్క్రీన్ కంటెంట్‌లను వచన రూపంలో యాక్సెస్ చేయడానికి సహాయక యాప్‌ను అనుమతిస్తుంది"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"స్క్రీన్‌షాట్‌ను ఉపయోగించండి"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"స్క్రీన్ చిత్రాన్ని యాక్సెస్ చేయడానికి సహాయక యాప్‌ను అనుమతిస్తుంది"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"స్వీయ పూరింపు సేవ"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ఏదీ కాదు"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"ఎంచుకోబడింది"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"అసిస్టెంట్ మీ సిస్టమ్‌లో వినియోగంలో ఉన్న యాప్‌ల గురించిన సమాచారం, అలాగే మీ స్క్రీన్‌పై కనిపించే లేదా యాప్‌లలో యాక్సెస్ చేసే సమాచారాన్ని చదవగలుగుతుంది."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ఈ యాప్‌ను మీరు విశ్వసిస్తున్నట్లు నిర్ధారించండి&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; మీ స్క్రీన్‌పై ఉన్నవాటిని పరిగణనలోకి తీసుకొని వేటిని ఆటోమేటిక్‌గా పూరించాలో నిశ్చయిస్తుంది."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"సేవను జోడించు"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"స్థానం"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ఇటీవలి స్థాన అభ్యర్థనలు"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ఇటీవలి స్థాన అభ్యర్థనలు లేవు"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"యాప్‌-స్థాయి అనుమతులు"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"స్కానింగ్"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"స్థాన సేవలు"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi స్కానింగ్"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Wi‑Fi ఆఫ్‌లో ఉన్నా కూడా, ఏ సమయంలోనైనా Wi‑Fi నెట్‌‍వర్క్‌లను స్కాన్ చేయడానికి యాప్‌లను మరియు సేవలను అనుమతించండి. ఉదాహరణకు, ఇది స్థాన ఆధారిత ఫీచర్‌లు మరియు సేవలను మెరుగుపరచడానికి ఉపయోగించబడుతుంది."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"బ్లూటూత్ స్కానింగ్"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"బ్లూటూత్ ఆఫ్‌లో ఉన్నప్పుడు కూడా, ఏ సమయంలోనైనా సమీపంలోని పరికరాలను స్కాన్ చేయడానికి యాప్‌లను మరియు సేవలను అనుమతించండి. ఉదాహరణకు, ఇది స్థాన ఆధారిత ఫీచర్‌లు మరియు సేవలను మెరుగుపరచడానికి ఉపయోగించబడుతుంది."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"సిస్టమ్"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"సిస్టమ్ అప్‌డేట్‌లు"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"సిస్టమ్ అప్‌డేట్‌లు"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android వెర్షన్"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android భద్రతా ప్యాచ్ స్థాయి"</string>
     <string name="model_info" msgid="4966408071657934452">"మోడల్"</string>
     <string name="baseband_version" msgid="2370088062235041897">"బేస్‌బ్యాండ్ వెర్షన్"</string>
     <string name="kernel_version" msgid="7327212934187011508">"కెర్నెల్ వెర్షన్"</string>
     <string name="build_number" msgid="3997326631001009102">"బిల్డ్ సంఖ్య"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"బ్లూటూత్ చిరునామా"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"అందుబాటులో లేదు"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"స్థితి"</string>
     <string name="device_status" msgid="267298179806290920">"స్థితి"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"కాపీరైట్"</string>
     <string name="license_title" msgid="936705938435249965">"లైసెన్స్"</string>
     <string name="terms_title" msgid="5201471373602628765">"నిబంధనలు మరియు షరతులు"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"సిస్టమ్ వెబ్ వీక్షణ లైసెన్స్"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"సిస్టమ్ వెబ్ వీక్షణ లైసెన్స్‌లg"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"వాల్‌పేపర్‌లు"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ఉపగ్రహ చిత్రాల ప్రదాతలు:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"మూడవ పక్షం లైసెన్స్‌లు"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"లైసెన్స్‌లను లోడ్ చేయడంలో సమస్య ఉంది."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"లోడ్ చేస్తోంది…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">మీరు ఇప్పుడు డెవలపర్ కావడానికి <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> అడుగుల దూరంలో ఉన్నారు.</item>
+      <item quantity="one">మీరు ఇప్పుడు డెవలపర్ కావడానికి <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> అడుగు దూరంలో ఉన్నారు.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"మీరు ఇప్పుడు డెవలపర్!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"అవసరం లేదు, మీరు ఇప్పటికే డెవలపర్‌గా ఉన్నారు."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"డెవలపర్ ఎంపికలు"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"రీసెట్ ఎంపికలు"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"నెట్‌వర్క్, యాప్‌లు లేదా పరికరాన్ని రీసెట్ చేయి"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"నెట్‌వర్క్‌ని రీసెట్ చేయండి"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"ఇది అన్ని నెట్‌వర్క్ సెట్టింగ్‌లను రీసెట్ చేస్తుంది, వీటితో సహా:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"మొబైల్ డేటా"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"బ్లూటూత్"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"వాహన eSIMలన్నింటినీ తొలగించండి"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"ఇది మీ సేవా ప్లాన్‌ని రద్దు చేయదు."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"ESIMలను రీసెట్ చేయడం సాధ్యం కాదు"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"నెట్‌వర్క్‌ని ఎంచుకోండి"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"సెట్టింగ్‌లను రీసెట్ చేయి"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"రీసెట్ చేయాలా?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"అన్ని నెట్‌వర్క్ సెట్టింగ్‌లను రీసెట్ చేయాలా? మీరు ఈ చర్యను తిరిగి రద్దు చేయలేరు!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"సెట్టింగ్‌లను రీసెట్ చేయి"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"నెట్‌వర్క్ సెట్టింగ్‌లు రీసెట్ చేయబడ్డాయి"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"యాప్ ప్రాధాన్యతలను రీసెట్ చేయి"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"ఇది వీటి కోసం అన్ని ప్రాధాన్యతలను రీసెట్ చేస్తుంది:\n\n"<li>"నిలిపివేయబడిన యాప్‌లు"</li>\n<li>"నిలిపివేయబడిన యాప్ నోటిఫికేషన్‌లు"</li>\n<li>"చర్యల కోసం డిఫాల్ట్ యాప్‌లు"</li>\n<li>"యాప్‌ల కోసం నేపథ్య డేటా పరిమితులు"</li>\n<li>"ఏవైనా అనుమతి పరిమితులు"</li>\n\n" మీరు ఏ యాప్‌ డేటాను కోల్పోరు."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"యాప్‌లను రీసెట్ చేయి"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"యాప్ ప్రాధాన్యతలు రీసెట్ చేయబడ్డాయి"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"మొత్తం డేటాను తొలగించు (ఫ్యాక్టరీ రీసెట్)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"ఇది మీ వాహన ప్రధాన విభాగం నుండి మొత్తం డేటాను తొలగిస్తుంది, వీటితో సహా:\n\n"<li>"మీ Google ఖాతా"</li>\n<li>"సిస్టమ్ మరియు యాప్ డేటా మరియు సెట్టింగ్‌లు"</li>\n<li>"డౌన్‌లోడ్ చేసిన యాప్‌‍లు"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"మీరు ప్రస్తుతం క్రింది ఖాతాలకు సైన్ ఇన్ చేసారు:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"ఈ వాహనంలో ఇతర వినియోగదారులు ఉన్నారు."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"వాహనాన్ని రీసెట్ చేయి"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"రీసెట్ చేయాలా?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"మీ వ్యక్తిగత సమాచారం మరియు డౌన్‌లోడ్ చేసిన యాప్‌లు అన్నింటినీ తొలగించాలా? మీరు ఈ చర్యను తిరిగి రద్దు చేయలేరు!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ప్రతి దాన్ని తొలగించండి"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"తొలగిస్తోంది"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"దయచేసి వేచి ఉండండి..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"తేదీ &amp; సమయం"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"తేదీ మరియు సమయాన్ని సెట్ చేయండి"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"తేదీ, సమయం, సమయ మండలి &amp; ఫార్మాట్‌లను సెట్ చేయండి"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"సమయ మండలి ప్రకారం క్రమీకరించు"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"తేదీ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"సమయం"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"వినియోగదారుని జోడించు"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"ఖాతాను జోడించు"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"వినియోగదారుని తొలగించు"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"కొత్త వినియోగదారు"</string>
-    <string name="user_guest" msgid="3465399481257448601">"అతిథి"</string>
     <string name="user_admin" msgid="1535484812908584809">"నిర్వాహకుడు"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"నిర్వాహకుడిగా సైన్ ఇన్ చేసారు"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"అన్ని నిర్వాహక అనుమతులు"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"నిర్వాహకుడిగా చేయి"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"వినియోగదారు ఇతర నిర్వాహకులతో సహా వినియోగదారులను తొలగించగలరు మరియు సిస్టమ్‌ని ఫ్యాక్టరీ రీసెట్ చేయగలరు."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"ఈ చర్యను రద్దు చేయలేరు."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"అవును, నిర్వాహకుడిగా చేయి"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"కొత్త వినియోగదారులను సృష్టించడం"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"ఫోన్ కాల్‌లు చేయడం"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"కారు మొబైల్ డేటాతో సందేశం పంపడం"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"కొత్త యాప్‌లను ఇన్‌స్టాల్ చేయడం"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"యాప్‌లను అన్‌ఇన్‌స్టాల్ చేయడం"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"వినియోగదారుని జోడించు"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"కొత్త వినియోగదారు"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"కొత్త వినియోగదారుని జోడించాలా?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"మీరు కొత్త వినియోగదారును జోడించినప్పుడు, ఆ వ్యక్తి తన స్థలాన్ని సెటప్ చేసుకోవాలి."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ఏ వినియోగదారు అయినా మిగతా అందరు వినియోగదారుల కోసం యాప్‌లను అప్‌డేట్ చేయవచ్చు."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"వినియోగదారు పరిమితిని చేరుకున్నారు"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">మీరు <xliff:g id="COUNT">%d</xliff:g>వినియోగదారుల వరకు సృష్టించవచ్చు.</item>
+      <item quantity="one">ఒక్క వినియోగదారుని మాత్రమే సృష్టించవచ్చు.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"కొత్త వినియోగదారుని సృష్టించడంలో విఫలమైంది"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ఈ వినియోగదారును తొలగించాలా?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"అన్ని యాప్‌లు మరియు డేటా తొలగించబడతాయి."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"వినియెగదారును తొలగించడం విఫలమైంది."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"విస్మరించు"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"మళ్లీ ప్రయత్నించు"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"చివరి వినియోగదారుని తొలగించాలా?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"ఈ కార్ యొక్క ఏకైక వినియోగదారుని తొలగించిన తర్వాత, కొత్త నిర్వాహక వినియోగదారు సృష్టించబడతారు."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ఈ వినియోగదారుకు అనుబంధంగా ఉన్న మొత్తం డేటా, సెట్టింగ్‌లు మరియు యాప్‌లు తొలగించబడతాయి. మీరు సిస్టమ్‌ను మళ్లీ సెటప్ చేయవలసి ఉంటుంది."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"కొత్త నిర్వాహకుడిని ఎంచుకోండి"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"మీకు కనీసం ఒక నిర్వాహకుడు అవసరం. ఈ నిర్వహకుడిని తొలగించడానికి, ముందుగా ఒక ప్రత్యామ్నాయాన్ని ఎంచుకోండి."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"నిర్వాహకుడిని ఎంచుకోండి"</string>
+    <string name="user_guest" msgid="3465399481257448601">"అతిథి"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"అతిథి"</string>
     <string name="user_switch" msgid="6544839750534690781">"మార్చు"</string>
     <string name="current_user_name" msgid="3813671533249316823">"మీరు (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"పేరు"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"సెటప్ చేయలేదు"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"వినియోగదారు పేరుని సవరించండి"</string>
     <string name="users_list_title" msgid="770764290290240909">"వినియోగదారులు"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s కి అనుమతులు మంజూరు చేయబడ్డాయి"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"ఖాతాలు"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"వినియోగదారు"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"ఖాతాను జోడించు"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"ఖాతాలు జోడించబడలేదు"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> యొక్క ఖాతాలు"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"డేటాని ఆటోమేటిక్‌గా సమకాలీకరించు"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"డేటాని ఆటోమేటిక్‌గా రిఫ్రెష్ చేసేలా యాప్‌లు అనుమతించబడతాయి"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"స్వీయ-సమకాలీకరణ డేటాను ప్రారంభించాలా?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"వెబ్‌లో మీ ఖాతాలకు మీరు ఏవైనా మార్పులు చేస్తే అవి స్వయంచాలకంగా మీ పరికరానికి కాపీ చేయబడతాయి.\n\nకొన్ని ఖాతాలు మీరు ఫోన్‌లో ఏవైనా మార్పులు చేస్తే కూడా ఆటోమేటిక్‌గా వాటిని వెబ్‌కి కాపీ చేస్తాయి. Google ఖాతా ఈ విధంగానే పనిచేస్తుంది."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"స్వీయ-సమకాలీకరణ డేటాను ఆఫ్ చేయాలా?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ఇది డేటాను ఆదా చేస్తుంది, కానీ మీరు ఇటీవలి సమాచారాన్ని సేకరించడానికి మాన్యువల్‌గా ప్రతి ఖాతాను సమకాలీకరించాల్సి ఉంటుంది. అలాగే మీరు అప్‌డేట్‌లు జరిగినప్పుడు నోటిఫికేషన్‌లను స్వీకరించరు."</string>
     <string name="account_details_title" msgid="7529571432258448573">"ఖాతా సమాచారం"</string>
     <string name="add_account_title" msgid="5988746086885210040">"ఖాతాను జోడించండి"</string>
     <string name="add_an_account" msgid="1072285034300995091">"ఖాతాను జోడించండి"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"ఖాతాను తీసివేయి"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"ఖాతాను తీసివేయాలా?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"ఈ ఖాతాను తీసివేయడం వలన పరికరం నుండి దానికి సంబంధించిన అన్ని సందేశాలు, పరిచయాలు మరియు ఇతర డేటా తొలగించబడతాయి!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ఈ మార్పును మీ నిర్వాహకులు అనుమతించలేదు"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"ఈ వినియోగదారుని తీసేయాలా?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"అన్ని యాప్‌లు మరియు డేటా తొలగించబడతాయి."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"వినియోగదారును తీసివేయడంలో విఫలమైంది."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"మళ్లీ ప్రయత్నించాలా?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"విస్మరించండి"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"మళ్లీ ప్రయత్నించండి"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"కొత్త వినియోగదారుని జోడించాలా?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"మీరు కొత్త వినియోగదారును జోడించినప్పుడు, ఆ వ్యక్తి తన స్థలాన్ని సెటప్ చేసుకోవాలి."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ఏ వినియోగదారు అయినా మిగతా అందరు వినియోగదారుల కోసం యాప్‌లను అప్‌డేట్ చేయవచ్చు."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"ఖాతాను తీసివేయడం విఫలమైంది."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"ఖాతా సమకాలీకరణ"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g>లో <xliff:g id="ID_1">%1$d</xliff:g> అంశాలకు సమకాలీకరణ ఆన్‌లో ఉంది"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"అన్ని అంశాలకు సమకాలీకరణ ఆన్‌లో ఉంది"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"అన్ని అంశాలకు సమకాలీకరణ ఆఫ్‌లో ఉంది"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"సమకాలీకరణ ఆఫ్‌లో ఉంది"</string>
+    <string name="sync_error" msgid="6698021343089247914">"సమకాలీకరణ ఎర్రర్"</string>
+    <string name="last_synced" msgid="4745124489150101529">"చివరిగా సమకాలీకరించినది <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"ఇప్పుడు సమకాలీకరిస్తోంది…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"ఇప్పుడే సమకాలీకరించడానికి నొక్కండి<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ఇప్పుడే సమకాలీకరించు"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"సమకాలీకరణను రద్దు చేయి"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"సమకాలీకరణ ప్రస్తుతం సమస్యలను ఎదుర్కొంటోంది. ఇది త్వరలో అందుబాటులోకి వస్తుంది."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"భద్రత"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"స్క్రీన్ లాక్"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ఏదీ కాదు"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"పిన్"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"పాస్‌‌వర్డ్"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"లాక్ రకాన్ని ఎంచుకోండి"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"స్క్రీన్ లాక్ ఎంపికలు"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"లాక్ ఎంపికలు"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"మీ ఆకృతిని నమోదు చేయండి"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"నిర్ధారించు"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"మళ్లీ గీయి"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"స్క్రీన్ లాక్‌ను సెట్ చేయండి"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"మీ పిన్ ఎంచుకోండి"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"మీ నమూనాను ఎంచుకోండి"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"మీ పాస్‌వర్డ్‌ను ఎంచుకోండి"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"మీ పాస్‌వర్డ్‌ను ఎంచుకోండి"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"ప్రస్తుత స్క్రీన్ లాక్"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"భద్రత కోసం, ఆకృతిని సెట్ చేయండి"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"తీసివేయి"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"సాధారణ పాస్‌వర్డ్‌లను మా IT నిర్వాహకులు బ్లాక్ చేసారు. వేరే పాస్‌వర్డ్‌ని ప్రయత్నించండి."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"అంకెలను ఆరోహణ, అవరోహణ క్రమంలో లేదా ఒకే అంకెను వరుసగా పునరావృతంగా ఉపయోగించకూడదు."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"స్క్రీన్ లాక్ ఎంపికలు"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> రోజుల క్రితం"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"విశ్వసనీయ పరికరాన్ని జోడించండి"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"విశ్వసనీయ పరికరాలు"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> పరికరాలు</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> పరికరం</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"కనెక్ట్ అయి ఉన్నప్పుడు మీ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> మీ కారును అన్‌లాక్ చేస్తుంది. ఎవరైనా మీ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>ను తీసుకున్నట్లయితే, వారు ఈ పరికరాన్ని యాక్సెస్ చేయగలరు"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"నిర్ధారించు"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"విశ్వసనీయ పరికరాన్ని తీసివేయి"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"పూర్తయింది"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"విశ్వసనీయ పరికరాన్ని సెటప్ చేయడానికి సహచర యాప్‌ను ఉపయోగించండి. ఒకసారి సెటప్ చేసిన తర్వాత, వాహనం మీ ఫోన్‌ను గుర్తించినపుడు మీరు మీ వినియోగదారు ప్రొఫైల్‌ను అన్‌లాక్ చేయగలుగుతారు"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. మీ ఫోన్‌లో సహచర యాప్‌ను డౌన్‌లోడ్ చేయండి"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. పరికరాలను జత చేయడానికి మీ ఫోన్‌లో <xliff:g id="CAR_NAME">%1$s</xliff:g>ను ఎంచుకోండి"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"ఈ పరికరం యొక్క భద్రతా ఫీచర్‌లను Smart Lock గుర్తించలేదు. మీ కారును సురక్షితంగా ఉంచడంలో సహాయపడటానికి, మీ కారు ఇదివరకే అన్‌లాక్ చేసి ఉంటే మాత్రమే విశ్వసనీయమైన పరికరం మీ కారు అన్‌లాక్ స్థితిలో ఉంచగలదు. మీ కారు సమీపంలో ఉన్నపుడు వేరొకరు దాన్ని పట్టుకుని ఉన్నప్పటికీ మీ విశ్వసనీయమైన పరికరం దాన్ని అన్‌లాక్ చేయగలదు."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ని విశ్వసనీయ పరికరంగా జోడించండి"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> విజయవంతంగా విశ్వసనీయ పరికరంగా జోడించబడింది"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> నమోదు విఫలమైంది"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"విశ్వసనీయ పరికరాన్ని జోడించడానికి తర్వాత ప్రమాణీకరణ పద్ధతిని సెట్ చేయాల్సిన అవసరం ఉంది. మీ వద్ద మీ విశ్వసనీయ పరికరం లేకపోతే, మీ ప్రొఫైల్‌ను యాక్సెస్ చేయడానికి ప్రామాణీకరణ చేయాల్సిన అవసరం ఉంది."</string>
     <string name="forget" msgid="3971143908183848527">"విస్మరించు"</string>
+    <string name="connect" msgid="5861699594602380150">"కనెక్ట్ చేయి"</string>
+    <string name="disconnect" msgid="6140789953324820336">"డిస్‌కనెక్ట్ చేయి"</string>
     <string name="delete_button" msgid="5840500432614610850">"తొలగించు"</string>
     <string name="remove_button" msgid="6664656962868194178">"తీసివేయి"</string>
     <string name="cancel" msgid="750286395700355455">"రద్దు చేయి"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"డెమో మోడ్ నుండి నిష్క్రమించండి"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"ఫ్యాక్టరీ డేటా డెమో ఖాతాను తొలగించి, సిస్టమ్‌ను రీసెట్ చేస్తుంది. మొత్తం వినియోగదారు డేటాను కోల్పోతారు."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"డెమో నుండి నిష్క్రమించండి"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"సెటప్‌ను పూర్తి చేయండి"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ఇప్పుడు వద్దు"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"విస్మరించు"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"డ్రైవింగ్ చేస్తున్నప్పుడు ఫీచర్ అందుబాటులో ఉండదు."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"డ్రైవింగ్ చేస్తున్నప్పుడు వినియోగదారుని జోడించడం సాధ్యం కాదు."</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 0fa4c31..c5d6110 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"หน้าจอสลัว หน้าจอสัมผัส แบตเตอรี่"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"หรี่หน้าจอ กลางคืน แต้มสี"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"โหมดกลางคืน"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"เครือข่ายและอินเทอร์เน็ต"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"เครือข่ายมือถือ"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"เน็ตมือถือ"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"เข้าถึงข้อมูลโดยใช้เครือข่ายมือถือ"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"ปิดเน็ตมือถือใช่ไหม"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ปริมาณการใช้อินเทอร์เน็ต"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"คำเตือนและขีดจำกัดอินเทอร์เน็ต"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"รอบปริมาณที่แอปใช้อินเทอร์เน็ต"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ตั้งค่าเตือนการใช้อินเทอร์เน็ต"</string>
+    <string name="data_warning" msgid="116776633806885370">"คำเตือนปริมาณอินเทอร์เน็ต"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ตั้งขีดจำกัดอินเทอร์เน็ต"</string>
+    <string name="data_limit" msgid="227338836292511425">"ขีดจำกัดอินเทอร์เน็ต"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"จำกัดปริมาณการใช้อินเทอร์เน็ต"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"ระบบเครื่องเสียงของรถยนต์จะปิดอินเทอร์เน็ตมือถือเมื่อมีการใช้งานถึงขีดจำกัดที่คุณกำหนดไว้\n\nเนื่องจากนี่เป็นปริมาณการใช้อินเทอร์เน็ตที่วัดโดยระบบเครื่องเสียง ปริมาณการใช้งานที่ผู้ให้บริการวัดได้จึงอาจไม่เท่ากัน โปรดกำหนดขีดจำกัดอย่างระมัดระวัง"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"ตั้งค่าและจัดการจุดเข้าใช้งานระบบไร้สาย"</string>
     <string name="wifi_starting" msgid="473253087503153167">"กำลังเปิด Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"กำลังปิด Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"กำลังโหลดรายการ Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi ปิดอยู่"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"ไม่สามารถเลิกการจดจำเครือข่าย"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"ไม่สามารถเชื่อมต่อกับเครือข่าย"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"เพิ่มเครือข่าย"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi ปิดอยู่"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"เชื่อมต่อ"</string>
     <string name="wifi_password" msgid="5565632142720292397">"รหัสผ่าน"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"แสดงรหัสผ่าน"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"ชื่อเครือข่าย"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"ป้อน SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"ความปลอดภัย"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"ความแรงสัญญาณ"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"ความแรงสัญญาณ"</string>
     <string name="wifi_status" msgid="5688013206066543952">"สถานะ"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"ความเร็วในการเชื่อมโยง"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"ความถี่"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"ที่อยู่ IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"แสดงรหัสผ่าน"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"ป้อนชื่อเครือข่าย"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"ป้อนรหัสผ่าน"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"อ่อน"</item>
-    <item msgid="2032262610626057081">"ปานกลาง"</item>
-    <item msgid="3859756017461098953">"ดี"</item>
-    <item msgid="1521103743353335724">"ยอดเยี่ยม"</item>
+    <item msgid="7683058295076342057">"อ่อน"</item>
+    <item msgid="1639222824821660744">"ปานกลาง"</item>
+    <item msgid="1838705897358163300">"ดี"</item>
+    <item msgid="6067166649320533751">"ยอดเยี่ยม"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"บลูทูธ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"เปิดบลูทูธ"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"บลูทูธ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"บลูทูธปิดอยู่"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"รายละเอียดเครือข่าย"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"ที่อยู่ MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"ที่อยู่ IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"ซับเน็ตมาสก์"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"ที่อยู่ IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"เกตเวย์"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"ค่ากำหนด Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"เปิด Wi‑Fi อัตโนมัติ"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi จะเปิดอีกครั้งเมื่ออยู่ใกล้เครือข่ายคุณภาพสูงที่บันทึกไว้ เช่น เครือข่ายที่บ้านของคุณ"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"ไม่พร้อมใช้งานเนื่องจากตำแหน่งปิดอยู่ โปรดเปิด"<annotation id="link">"ตำแหน่ง"</annotation></string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"เปิดการสแกน Wi-Fi ไหม"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"เปิด"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"การสแกนหา Wi‑Fi เปิดอยู่"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"สลับไปใช้เน็ตมือถือโดยอัตโนมัติ"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"ใช้เน็ตมือถือเมื่อ Wi‑Fi เชื่อมต่ออินเทอร์เน็ตไม่ได้ อาจมีค่าบริการจากปริมาณการใช้อินเทอร์เน็ต"</string>
+    <string name="learn_more" msgid="8214605928933358604">"ดูข้อมูลเพิ่มเติม"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"บลูทูธ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"จัดการการเชื่อมต่อ ตั้งชื่ออุปกรณ์และการค้นพบ"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"คอมพิวเตอร์"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ชุดหูฟัง"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"โทรศัพท์"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"การถ่ายภาพ"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"หูฟัง"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"อุปกรณ์อินพุต"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"บลูทูธ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"อุปกรณ์ที่จับคู่"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"อุปกรณ์ที่จับคู่ได้"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"ไม่มีอุปกรณ์ที่จับคู่"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"ไม่มีอุปกรณ์ที่จับคู่ได้"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"อุปกรณ์ที่จับคู่แล้ว"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"ชื่อ"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"ใช้สำหรับ"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"เปลี่ยนชื่ออุปกรณ์บลูทูธ"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"อุปกรณ์ไม่มีชื่อ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"อุปกรณ์ที่จับคู่"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"จับคู่อุปกรณ์ใหม่"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"บลูทูธจะเปิดเพื่อจับคู่อุปกรณ์"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"เลิกเชื่อมต่ออุปกรณ์ไหม"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"พาหนะจะยกเลิกการเชื่อมต่อจาก <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"ที่อยู่บลูทูธของพาหนะ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"ที่อยู่บลูทูธของอุปกรณ์: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"ชื่อพาหนะ"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"เปลี่ยนชื่อพาหนะนี้"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"เปลี่ยนชื่ออุปกรณ์"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"เปลี่ยนชื่อ"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"อุปกรณ์ที่ใช้ได้"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"การตั้งค่า"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"คำขอจับคู่อุปกรณ์บลูทูธ"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"จับคู่อุปกรณ์และเชื่อมต่อ"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"บลูทูธ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"รหัสการจับคู่บลูทูธ"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN ประกอบดัวยตัวอักษรหรือสัญลักษณ์"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"พิมพ์รหัสการจับคู่แล้วกด Return หรือ Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"ปกติจะเป็น 0000 หรือ 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"คำขอจับคู่อุปกรณ์"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"แตะเพื่อจับคู่กับ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"ภาษา"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"ภาษาและการป้อนข้อมูล"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"แป้นพิมพ์"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"จัดการแป้นพิมพ์"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"เอาต์พุตการอ่านออกเสียงข้อความ"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"เครื่องมือที่ต้องการ"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"เครื่องมือปัจจุบัน"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"ความเร็วในการพูด"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"ความสูง-ต่ำของเสียง"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"รีเซ็ต"</string>
     <string name="sound_settings" msgid="3072423952331872246">"เสียง"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"ระดับเสียงเรียกเข้า"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"ระดับเสียงของระบบนำทาง"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"สื่อ"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"ตั้งค่าระดับเสียงสำหรับเพลงและวิดีโอ"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"การปลุก"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"เสียงเรียกเข้าของโทรศัพท์"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"เสียงการแจ้งเตือนเริ่มต้น"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"เสียงปลุกเริ่มต้น"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"แอปและการแจ้งเตือน"</string>
+    <string name="all_applications" msgid="7798210477486822168">"แสดงแอปทั้งหมด"</string>
+    <string name="default_applications" msgid="1558183275638697087">"แอปเริ่มต้น"</string>
     <string name="applications_settings" msgid="794261395191035632">"ข้อมูลแอป"</string>
+    <string name="force_stop" msgid="2153183697014720520">"บังคับให้หยุด"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"บังคับให้หยุดไหม"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"แอปอาจทำงานผิดพลาดหากบังคับให้หยุด"</string>
     <string name="disable_text" msgid="4358165448648990820">"ปิดใช้"</string>
     <string name="enable_text" msgid="1794971777861881238">"เปิดใช้"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"ถอนการติดตั้ง"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"หากคุณปิดใช้แอปนี้ Android และแอปอื่นๆ อาจไม่ทำงานตามที่ควรจะเป็นอีกต่อไป"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ปิดใช้แอป"</string>
     <string name="permissions_label" msgid="2701446753515612685">"สิทธิ์"</string>
     <string name="application_version_label" msgid="8556889839783311649">"เวอร์ชัน: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"ไม่มีการมอบสิทธิ์"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"ไม่มีการขอสิทธิ์"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ปริมาณการใช้อินเทอร์เน็ต"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ปริมาณการใช้เน็ตของแอป"</string>
-    <string name="force_stop" msgid="2153183697014720520">"บังคับให้หยุด"</string>
     <string name="computing_size" msgid="5791407621793083965">"กำลังคำนวณ…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">สิทธิ์เพิ่มเติม <xliff:g id="COUNT_1">%d</xliff:g> รายการ</item>
       <item quantity="one">สิทธิ์เพิ่มเติม <xliff:g id="COUNT_0">%d</xliff:g> รายการ</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"ผู้ช่วยและป้อนข้อมูลด้วยเสียง"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"แอปผู้ช่วย"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"ใช้ข้อความจากหน้าจอ"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"อนุญาตให้แอปผู้ช่วยเข้าถึงเนื้อหาบนหน้าจอเป็นข้อความ"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"ใช้ภาพหน้าจอ"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"อนุญาตให้แอปผู้ช่วยเข้าถึงรูปภาพของหน้าจอ"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"บริการป้อนอัตโนมัติ"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"ไม่มี"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"เลือกไว้"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Assistant จะอ่านข้อมูลเกี่ยวกับแอปที่ใช้งานอยู่ในระบบของคุณได้ รวมถึงข้อมูลที่ปรากฏบนหน้าจอหรือที่เข้าถึงได้ภายในแอป"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;ตรวจดูว่าคุณเชื่อถือแอปนี้ได้&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google ป้อนอัตโนมัติ&gt;%1$s&lt;/xliff:g&gt; ดูรายการบนหน้าจอว่าข้อมูลอะไรบ้างที่ป้อนอัตโนมัติได้"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"เพิ่มบริการ"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"ตำแหน่ง"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"คำขอตำแหน่งล่าสุด"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ไม่มีคำขอตำแหน่งล่าสุด"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"สิทธิ์ระดับแอป"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"การสแกน"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"บริการตำแหน่ง"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"การสแกนหา Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"อนุญาตให้แอปและบริการต่างๆ สแกนหาเครือข่าย Wi‑Fi ตลอดเวลาแม้ Wi‑Fi จะปิดอยู่ การตั้งค่านี้ใช้เพื่อปรับปรุงสิ่งต่างๆ เช่น ฟีเจอร์และบริการตามสถานที่"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"การสแกนหาบลูทูธ"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"อนุญาตให้แอปและบริการต่างๆ สแกนหาอุปกรณ์ใกล้เคียงตลอดเวลา แม้บลูทูธจะปิดอยู่ การตั้งค่านี้ใช้เพื่อปรับปรุงสิ่งต่างๆ เช่น ฟีเจอร์และบริการตามสถานที่"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"ระบบ"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"การอัปเดตระบบ"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"การอัปเดตระบบ"</string>
     <string name="firmware_version" msgid="8491753744549309333">"เวอร์ชันของ Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"ระดับแพตช์ความปลอดภัยของ Android"</string>
     <string name="model_info" msgid="4966408071657934452">"รุ่น"</string>
     <string name="baseband_version" msgid="2370088062235041897">"เวอร์ชันเบสแบนด์"</string>
     <string name="kernel_version" msgid="7327212934187011508">"เวอร์ชันเคอร์เนล"</string>
     <string name="build_number" msgid="3997326631001009102">"หมายเลขบิวด์"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"ที่อยู่บลูทูธ"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"ไม่พร้อมให้บริการ"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"สถานะ"</string>
     <string name="device_status" msgid="267298179806290920">"สถานะ"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"ลิขสิทธิ์"</string>
     <string name="license_title" msgid="936705938435249965">"ใบอนุญาต"</string>
     <string name="terms_title" msgid="5201471373602628765">"ข้อกำหนดในการให้บริการ"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"ใบอนุญาต WebView ของระบบ"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"ใบอนุญาต WebView ของระบบ"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"วอลเปเปอร์"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"ผู้ให้บริการภาพถ่ายดาวเทียม:\n©2014 CNES/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"ใบอนุญาตของบุคคลที่สาม"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"พบปัญหาในการโหลดใบอนุญาต"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"กำลังโหลด…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">ตอนนี้คุณเหลืออีกเพียง <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ขั้นตอนก็จะได้เป็นนักพัฒนาซอฟต์แวร์แล้ว</item>
+      <item quantity="one">ตอนนี้คุณเหลืออีกเพียง <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> ขั้นตอนก็จะได้เป็นนักพัฒนาซอฟต์แวร์แล้ว</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"ตอนนี้คุณเป็นนักพัฒนาซอฟต์แวร์แล้ว!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"ไม่จำเป็น คุณเป็นนักพัฒนาซอฟต์แวร์อยู่แล้ว"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"ตัวเลือกการรีเซ็ต"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"การรีเซ็ตเครือข่าย แอป หรืออุปกรณ์"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"รีเซ็ตเครือข่าย"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"การดำเนินการนี้จะรีเซ็ตการตั้งค่าเครือข่ายทั้งหมด รวมถึงการตั้งค่าต่อไปนี้"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"เน็ตมือถือ"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"บลูทูธ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"ลบ eSIM ทั้งหมดของพาหนะ"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"การดำเนินการนี้จะไม่ยกเลิกแผนบริการของคุณ"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"รีเซ็ต eSIM ไม่ได้"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"เลือกเครือข่าย"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"รีเซ็ตการตั้งค่า"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"รีเซ็ตไหม"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"หากรีเซ็ตการตั้งค่าเครือข่ายทั้งหมด คุณจะยกเลิกการทำงานนี้ไม่ได้"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"รีเซ็ตการตั้งค่า"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"รีเซ็ตการตั้งค่าเครือข่ายแล้ว"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"รีเซ็ตค่ากำหนดของแอป"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"คำสั่งนี้จะรีเซ็ตค่ากำหนดทั้งหมดของ:\n\n"<li>"แอปที่ปิดใช้"</li>\n<li>"การแจ้งเตือนของแอปที่ปิดใช้"</li>\n<li>"แอปพลิเคชันเริ่มต้นสำหรับการทำงานต่างๆ"</li>\n<li>"ข้อจำกัดข้อมูลในพื้นหลังสำหรับแอป"</li>\n<li>"ข้อจำกัดสิทธิ์ใดๆ"</li>\n\n"ข้อมูลของแอปจะไม่หายไป"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"รีเซ็ตแอป"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"รีเซ็ตค่ากำหนดของแอปแล้ว"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"ลบข้อมูล (รีเซ็ตเป็นค่าเริ่มต้น)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"การดำเนินการนี้จะลบข้อมูลทั้งหมดออกจากระบบเครื่องเสียงในยานพาหนะ โดยรวมถึงสิ่งต่อไปนี้\n\n"<li>"บัญชี Google ของคุณ"</li>\n<li>"ข้อมูลและการตั้งค่าของระบบและแอป"</li>\n<li>"แอปที่ดาวน์โหลด"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"คุณลงชื่อเข้าใช้บัญชีต่อไปนี้อยู่ในขณะนี้"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"มีผู้ใช้รายอื่นอยู่บนยานพาหนะคันนี้"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"รีเซ็ตยานพาหนะ"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"รีเซ็ตไหม"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"ลบข้อมูลส่วนบุคคลและแอปที่ดาวน์โหลดทั้งหมดไหม คุณจะเลิกทำการดำเนินการนี้ไม่ได้"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ลบทุกอย่าง"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"กำลังลบ"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"โปรดรอสักครู่..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"วันที่และเวลา"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"ตั้งวันที่และเวลา"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"ตั้งวันที่ เวลา เขตเวลาและรูปแบบ"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"จัดเรียงตามเขตเวลา"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"วันที่"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"เวลา"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"เพิ่มผู้ใช้"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"เพิ่มบัญชี"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"ลบผู้ใช้"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"ผู้ใช้ใหม่"</string>
-    <string name="user_guest" msgid="3465399481257448601">"ผู้มาเยือน"</string>
     <string name="user_admin" msgid="1535484812908584809">"ผู้ดูแลระบบ"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"ลงชื่อเข้าใช้เป็นผู้ดูแลระบบ"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"สิทธิ์ทั้งหมดของผู้ดูแลระบบ"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"เปลี่ยนสถานะเป็นผู้ดูแลระบบ"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"ผู้ใช้จะลบผู้ใช้อื่นได้ รวมถึงผู้ดูแลระบบอื่น และรีเซ็ตระบบเป็นค่าเริ่มต้นได้"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"การดำเนินการนี้ไม่สามารถย้อนกลับได้"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"ใช่ เปลี่ยนสถานะเป็นผู้ดูแลระบบ"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"สร้างผู้ใช้ใหม่"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"โทรออก"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"การรับส่งข้อความผ่านเน็ตมือถือของรถ"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"ติดตั้งแอปใหม่"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ถอนการติดตั้งแอป"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"เพิ่มผู้ใช้"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"ผู้ใช้ใหม่"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"เพิ่มผู้ใช้ใหม่ไหม"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"เมื่อคุณเพิ่มผู้ใช้ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตนเอง"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"ผู้ใช้ทุกคนจะอัปเดตแอปให้แก่ผู้ใช้คนอื่นๆ ได้"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"ถึงขีดจำกัดผู้ใช้แล้ว"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">คุณสร้างผู้ใช้ได้สูงสุด <xliff:g id="COUNT">%d</xliff:g> คน</item>
+      <item quantity="one">สร้างผู้ใช้ได้เพียง 1 คนเท่านั้น</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"สร้างผู้ใช้ใหม่ไม่ได้"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"ลบผู้ใช้นี้ใช่ไหม"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"แอปและข้อมูลทั้งหมดจะถูกลบ"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"ลบผู้ใช้ไม่สำเร็จ"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"ปิด"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"ลองอีกครั้ง"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"ลบผู้ใช้สุดท้ายไหม"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"หลังจากลบผู้ใช้ที่เหลืออยู่เพียงรายเดียวของรถคันนี้ ระบบจะสร้างผู้ดูแลระบบใหม่ขึ้น"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"ระบบจะลบข้อมูล การตั้งค่า และแอปทั้งหมดที่เชื่อมโยงกับผู้ใช้นี้ คุณจะต้องตั้งค่าระบบอีกครั้ง"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"เลือกผู้ดูแลระบบใหม่"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"คุณต้องมีผู้ดูแลระบบอย่างน้อย 1 ราย หากต้องการลบผู้ดูแลระบบรายนี้ ก่อนอื่นให้เลือกคนที่จะมาแทน"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"เลือกผู้ดูแลระบบ"</string>
+    <string name="user_guest" msgid="3465399481257448601">"ผู้มาเยือน"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"ผู้มาเยือน"</string>
     <string name="user_switch" msgid="6544839750534690781">"เปลี่ยน"</string>
     <string name="current_user_name" msgid="3813671533249316823">"คุณ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"ชื่อ"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ไม่ได้ตั้งค่า"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"แก้ไขชื่อผู้ใช้"</string>
     <string name="users_list_title" msgid="770764290290240909">"ผู้ใช้"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"มอบสิทธิ์ให้กับ %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"บัญชี"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"ผู้ใช้"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"เพิ่มบัญชี"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"ไม่ได้เพิ่มบัญชี"</string>
     <string name="account_list_title" msgid="7631588514613843065">"บัญชีของ <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"ซิงค์ข้อมูลอัตโนมัติ"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ให้แอปรีเฟรชข้อมูลอัตโนมัติ"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"เปิดซิงค์ข้อมูลอัตโนมัติหรือไม่"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"การเปลี่ยนแปลงที่คุณทำต่อบัญชีในเว็บจะคัดลอกไปยังอุปกรณ์ของคุณโดยอัตโนมัติ\n\nบัญชีบางบัญชีอาจคัดลอกการเปลี่ยนแปลงที่คุณทำในโทรศัพท์ไปยังเว็บโดยอัตโนมัติด้วยเช่นกัน บัญชี Google ทำงานในลักษณะนี้"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ปิดซิงค์ข้อมูลอัตโนมัติหรือไม่"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"ตัวเลือกนี้จะช่วยประหยัดอินเทอร์เน็ต แต่คุณจะต้องซิงค์แต่ละบัญชีด้วยตนเองเพื่อรวบรวมข้อมูลล่าสุด และคุณจะไม่ได้รับการแจ้งเตือนเมื่อมีการอัปเดต"</string>
     <string name="account_details_title" msgid="7529571432258448573">"ข้อมูลบัญชี"</string>
     <string name="add_account_title" msgid="5988746086885210040">"เพิ่มบัญชี"</string>
     <string name="add_an_account" msgid="1072285034300995091">"เพิ่มบัญชี"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"นำบัญชีออก"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"นำบัญชีออกใช่ไหม"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"การนำบัญชีนี้ออกจะเป็นการลบข้อความ รายชื่อติดต่อ และข้อมูลอื่นๆ ทั้งหมดออกจากอุปกรณ์!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"ผู้ดูแลระบบไม่อนุญาตให้ทำการเปลี่ยนแปลงนี้"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"นำผู้ใช้รายนี้ออกใช่ไหม"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"แอปและข้อมูลทั้งหมดจะถูกลบ"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"นำผู้ใช้ออกไม่สำเร็จ"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"ลองอีกครั้งไหม"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"ปิด"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"ลองอีกครั้ง"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"เพิ่มผู้ใช้ใหม่ไหม"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"เมื่อคุณเพิ่มผู้ใช้ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตนเอง"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"ผู้ใช้ทุกคนจะอัปเดตแอปให้แก่ผู้ใช้คนอื่นๆ ได้"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"นำบัญชีออกไม่สำเร็จ"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"การซิงค์บัญชี"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"การซิงค์เปิดอยู่สำหรับ <xliff:g id="ID_1">%1$d</xliff:g> จาก <xliff:g id="ID_2">%2$d</xliff:g> รายการ"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"การซิงค์เปิดอยู่สำหรับรายการทั้งหมด"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"การซิงค์ปิดอยู่สำหรับรายการทั้งหมด"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"การซิงค์ปิดอยู่"</string>
+    <string name="sync_error" msgid="6698021343089247914">"ข้อผิดพลาดในการซิงค์"</string>
+    <string name="last_synced" msgid="4745124489150101529">"ซิงค์ล่าสุดเมื่อ <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"กำลังซิงค์อยู่ในขณะนี้…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"แตะเพื่อซิงค์เลย<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ซิงค์เลย"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"ยกเลิกการซิงค์"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"ขณะนี้ พบปัญหาในการซิงค์ อีกสักครู่จึงจะกลับมาดำเนินการต่อ"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"ความปลอดภัย"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"ล็อกหน้าจอ"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"ไม่มี"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"รหัสผ่าน"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"เลือกประเภทการล็อก"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"ตัวเลือกการล็อกหน้าจอ"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"ตัวเลือกการล็อก"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"ป้อนรูปแบบ"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"ยืนยัน"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"วาดซ้ำ"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"ตั้งค่าการล็อกหน้าจอ"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"เลือก PIN ของคุณ"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"เลือกรูปแบบของคุณ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"เลือกรหัสผ่านของคุณ"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"เลือกรหัสผ่านของคุณ"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"การล็อกหน้าจอปัจจุบัน"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"ตั้งรูปแบบเพื่อความปลอดภัย"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"ล้าง"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"ผู้ดูแลระบบไอทีบล็อกรหัสผ่านที่ไม่รัดกุม ลองรหัสผ่านอื่น"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ไม่อนุญาตให้เรียงจากน้อยไปมาก จากมากไปน้อย หรือเรียงลำดับตัวเลขที่ซ้ำกัน"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ตัวเลือกการล็อกหน้าจอ"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> วันที่ผ่านมา"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"เพิ่มอุปกรณ์ที่เชื่อถือได้"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"อุปกรณ์ที่เชื่อถือได้"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other">อุปกรณ์ <xliff:g id="COUNT_1">%d</xliff:g> เครื่อง</item>
+      <item quantity="one">อุปกรณ์ <xliff:g id="COUNT_0">%d</xliff:g> เครื่อง</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> จะปลดล็อกรถคันนี้เมื่อมีการเชื่อมต่อ หากมีคนเอา <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ของคุณไป เขาก็อาจใช้งานอุปกรณ์นี้ได้"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"ยืนยัน"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"นำอุปกรณ์ที่เชื่อถือได้ออก"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"เสร็จ"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"ใช้แอปที่ใช้ร่วมกันเพื่อตั้งค่าอุปกรณ์ที่เชื่อถือได้ เมื่อตั้งค่าแล้ว คุณจะปลดล็อกโปรไฟล์ผู้ใช้ได้เมื่อรถยนต์ตรวจพบโทรศัพท์"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ดาวน์โหลดแอปที่ใช้ร่วมกันในโทรศัพท์"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. เลือก <xliff:g id="CAR_NAME">%1$s</xliff:g> ในโทรศัพท์เพื่อจับคู่กับอุปกรณ์"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock ไม่พบฟีเจอร์ความปลอดภัยของอุปกรณ์นี้ เพื่อช่วยปกป้องรถยนต์ของคุณ อุปกรณ์ที่เชื่อถือได้จะทำให้รถยนต์ของคุณปลดล็อกอยู่ตลอดได้ก็ต่อเมื่อคุณเป็นผู้ปลดล็อกไว้แล้วเท่านั้น อุปกรณ์ที่เชื่อถือได้จะทำให้รถยนต์ของคุณปลดล็อกอยู่ตลอดได้เมื่ออยู่ใกล้กันแม้ว่าผู้อื่นจะเป็นคนถืออุปกรณ์ก็ตาม"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"เพิ่ม <xliff:g id="DEVICE_NAME">%1$s</xliff:g> เป็นอุปกรณ์ที่เชื่อถือได้"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"เพิ่ม <xliff:g id="DEVICE_NAME">%1$s</xliff:g> เป็นอุปกรณ์ที่เชื่อถือได้เรียบร้อยแล้ว"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"การลงทะเบียน <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ล้มเหลว"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ในการเพิ่มอุปกรณ์ที่เชื่อถือได้ คุณจำเป็นต้องกำหนดวิธีการตรวจสอบสิทธิ์ในขั้นถัดไป หากไม่มีอุปกรณ์ที่เชื่อถือได้ ระบบจะขอให้มีการตรวจสอบสิทธิ์ในการเข้าถึงโปรไฟล์ของคุณ"</string>
     <string name="forget" msgid="3971143908183848527">"ลืม"</string>
+    <string name="connect" msgid="5861699594602380150">"เชื่อมต่อ"</string>
+    <string name="disconnect" msgid="6140789953324820336">"ยกเลิกการเชื่อมต่อ"</string>
     <string name="delete_button" msgid="5840500432614610850">"ลบ"</string>
     <string name="remove_button" msgid="6664656962868194178">"นำออก"</string>
     <string name="cancel" msgid="750286395700355455">"ยกเลิก"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ออกจากโหมดสาธิต"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"การดำเนินการนี้จะลบบัญชีสาธิตและรีเซ็ตข้อมูลในระบบเป็นค่าเริ่มต้น ข้อมูลผู้ใช้ทั้งหมดจะสูญหาย"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ออกจากการสาธิต"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"ตั้งค่าให้เสร็จ"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ไว้ทีหลัง"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ปิด"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ฟีเจอร์ไม่พร้อมใช้งานขณะขับรถ"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"เพิ่มผู้ใช้ขณะขับรถไม่ได้"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 59ae29e..ffc2d9c 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"i-dim ang screen, touchscreen, baterya"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"i-dim ang screen, gabi, tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Network at internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"I-access ang data gamit ang mobile network"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"I-off ang mobile data?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Paggamit ng data"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Babala at limitasyon sa data"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Cycle ng paggamit ng data ng app"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Magtakda ng babala sa data"</string>
+    <string name="data_warning" msgid="116776633806885370">"Babala sa data"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Itakda ang limitasyon sa data"</string>
+    <string name="data_limit" msgid="227338836292511425">"Limitasyon sa data"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Pag-limit sa paggamit ng data"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Io-off ng head unit ng iyong sasakyan ang mobile data sa oras na maabot nito ang itinakda mong limitasyon.\n\nDahil sinusukat ng head unit ang paggamit ng data, at maaaring mag-iba ang pagkalkula ng carrier mo sa paggamit, pag-isipang magtakda ng mababang limitasyon."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Mag-set up at mamahala ng mga wireless na access point"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Ino-on ang Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Ino-off ang Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Nilo-load ang listahan ng Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Naka-disable ang Wi‑Fi"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Hindi nakalimutan ang network"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Hind nakakonekta sa network"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Magdagdag ng network"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Naka-disable ang Wi‑Fi"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Kumonekta"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Password"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Ipakita ang password"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Pangalan ng network"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Ilagay ang SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Seguridad"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Lakas ng signal"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Lakas ng signal"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Status"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Bilis ng link"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frequency"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP address"</string>
+    <string name="show_password" msgid="2074628020371139240">"Ipakita ang password"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Ilagay ang pangalan ng network"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Ilagay ang password"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Mahina"</item>
-    <item msgid="2032262610626057081">"Katamtaman"</item>
-    <item msgid="3859756017461098953">"Malakas"</item>
-    <item msgid="1521103743353335724">"Napakalakas"</item>
+    <item msgid="7683058295076342057">"Mahina"</item>
+    <item msgid="1639222824821660744">"Katamtaman"</item>
+    <item msgid="1838705897358163300">"Malakas"</item>
+    <item msgid="6067166649320533751">"Napakalakas"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"I-on ang Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Naka-disable ang Bluetooth"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Mga detalye ng network"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC address"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP address"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Subnet mask"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Mga IPv6 address"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Gateway"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Mga kagustuhan sa Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Awtomatikong i-on ang Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Mag-o-on ang Wi‑Fi malapit sa saved high-quality network, gaya ng home network"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Hindi available, naka-off ang lokasyon. I-on ang "<annotation id="link">"lokasyon"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"I-on ang pag-scan ng Wi‑Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"I-on"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Na-on ang pag-scan ng Wi‑Fi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Awtomatikong lumipat sa mobile data"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Gumamit ng mobile data kapag walang access sa internet ang Wi‑Fi. Maaaring may mga babayaran sa paggamit ng data."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Matuto pa"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Pamahalaan ang mga koneksyon, itakda ang pangalan at pagiging nahahanap ng device"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Computer"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Headset"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telepono"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Imaging"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Headphone"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Input Peripheral"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Mga nakapares na device"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Mga available na device"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Walang nakapares na device"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Walang available na device"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Nakapares na device"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Pangalan"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Gamitin para sa"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"I-rename ang Bluetooth device"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Walang pangalang device"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Mga nakapares na device"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Magpares ng bagong device"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Mao-on ang Bluetooth para magpares"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Idiskonekta ang device?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Madidiskonekta ang iyong sasakyan sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Bluetooth address ng sasakyan: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Bluetooth address ng device: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Pangalan ng sasakyan"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"I-rename ang sasakyang ito"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Palitan ang pangalan ng device"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Palitan ang pangalan"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Mga available na device"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Mga Profile"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Kahilingan sa pagpapares ng Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Ipares at kumonekta"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Code ng pagpapares ng Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"May mga titik o simbolo ang PIN"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"I-type ang code ng pagpapares, pagkatapos ay pindutin ang Return o Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Karaniwang 0000 o 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Kahilingan sa pagpapares"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"I-tap para makipagpares sa <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Mga Wika"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Mga wika at input"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Keyboard"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Pamahalaan ang mga keyboard"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Output ng text-to-speech"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Gustong engine"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Kasalukuyang engine"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Bilis ng pagsasalita"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Pitch"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"I-reset"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Tunog"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Volume ng pag-ring"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Volume ng navigation"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Magtakda ng volume para sa musika at mga video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Ringtone ng telepono"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Default na notification sound"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Default na tunog ng alarm"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Mga app at notification"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Ipakita ang lahat ng app"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Mga default na app"</string>
     <string name="applications_settings" msgid="794261395191035632">"Impormasyon ng app"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Sapilitang ihinto"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Sapilitang itigil?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Kung sapilitan mong ititigil ang isang app, maaari itong kumilos nang hindi tama."</string>
     <string name="disable_text" msgid="4358165448648990820">"I-disable"</string>
     <string name="enable_text" msgid="1794971777861881238">"I-enable"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"I-uninstall"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Kung idi-disable mo ang app na ito, maaaring hindi na gumana ang Android at iba pang mga app gaya ng inaasahan."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"I-disable ang app"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Mga Pahintulot"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Bersyon: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Walang ibinigay na pahintulot"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Walang hiniling na pahintulot"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Paggamit ng data"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Paggamit ng data ng app"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Sapilitang ihinto"</string>
     <string name="computing_size" msgid="5791407621793083965">"Kinakalkula…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> karagdagang pahintulot</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> na karagdagang pahintulot</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assist at voice input"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Assist app"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Gamitin ang text mula sa screen"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Payagan ang assist app na i-access ang mga content ng screen bilang text"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Gamitin ang screenshot"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Payagan ang assist app na i-access ang isang larawan ng screen"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Serbisyo ng autofill"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Wala"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Napili"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Makakabasa ang assistant ng impormasyon tungkol sa mga app na ginagamit sa iyong system, kabilang ang impormasyong nakikita sa screen mo o naa-access sa loob ng mga app."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Tiyaking pinagkakatiwalaan mo ang app na ito&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; Ginagamit ng &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; kung ano ang nasa iyong screen para matukoy kung ano ang maaaring i-autofill."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Magdagdag ng serbisyo"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Lokasyon"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Mga Kamakailang Kahilingan sa Lokasyon"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Walang kamakailang kahilingan sa lokasyon"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Mga pahintulot sa antas ng app"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Pag-scan"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Mga Serbisyo ng Lokasyon"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Pag-scan ng Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Bigyang-daan ang mga app at serbisyo na mag-scan ng mga Wi-Fi network anumang oras, kahit na naka-off ang Wi-Fi. Magagamit ito, halimbawa, para pahusayin ang mga feature at serbisyong batay sa lokasyon."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Pag-scan ng Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bigyang-daan ang mga app at serbisyo na mag-scan ng mga kalapit na device anumang oras, kahit na naka-off ang Bluetooth. Magagamit ito, halimbawa, para pahusayin ang mga feature at serbisyong batay sa lokasyon."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"System"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Mga update sa system"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Mga pag-update ng system"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Bersyon ng Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Antas ng patch ng seguridad ng Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Modelo"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Bersyon ng baseband"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
     <string name="build_number" msgid="3997326631001009102">"Numero ng build"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Address ng bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Hindi available"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
     <string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Lisensya"</string>
     <string name="terms_title" msgid="5201471373602628765">"Mga tuntunin at kundisyon"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Lisensya ng System WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Mga lisensya ng System WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Mga Wallpaper"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Mga provider ng koleksyon ng imahe na galing sa satellite:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Mga lisensya ng third party"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"May problema sa pag-load ng mga lisensya."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Naglo-load…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> (na) hakbang na lang at magiging developer ka na.</item>
+      <item quantity="other"><xliff:g id="STEP_COUNT_1">%1$d</xliff:g> (na) hakbang na lang at magiging developer ka na.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Isa ka nang developer!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Hindi na kailangan, isa ka nang developer."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Mga opsyon ng developer"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Mga opsyon sa pag-reset"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Pag-reset ng network, mga app, o device"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"I-reset ang network"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Ire-reset nito ang lahat ng setting ng network, kabilang ang:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobile data"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Burahin ang lahat ng eSIM ng sasakyan"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Hindi makakansela ang iyong plan ng serbisyo dahil dito."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Hindi ma-reset ang mga eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Pumili ng network"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"I-reset ang mga setting"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"I-reset?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"I-reset ang lahat ng setting ng network? Hindi mo maaaring i-undo ang pagkilos na ito!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"I-reset ang mga setting"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Na-reset na ang mga setting ng network"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"I-reset ang mga kagustuhan sa app"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Ire-reset nito ang lahat ng kagustuhan para sa:\n\n"<li>"Mga naka-disable na app"</li>\n<li>"Mga naka-disable na notification ng app"</li>\n<li>"Mga default na application para sa mga pagkilos"</li>\n<li>"Mga paghihigpit sa data ng background para sa mga app"</li>\n<li>"Anumang paghihigpit sa pahintulot"</li>\n\n"Hindi ka mawawalan ng anumang data ng app."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"I-reset ang mga app"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Na-reset na ang mga kagustuhan sa app"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Burahin lahat ng data (factory reset)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Buburahin nito ang lahat ng data mula sa head unit ng iyong sasakyan, kasama ang:\n\n"<li>"Iyong Google account"</li>\n<li>"Data ng system at app at mga setting"</li>\n<li>"Mga na-download na app"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Kasalukuyan kang naka-sign in sa mga sumusunod na account:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"May iba pang user sa sasakyang ito."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"I-reset ang sasakyan"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"I-reset?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Burahin ang lahat ng iyong personal na impormasyon at na-download na app? Hindi mo maaaring i-undo ang pagkilos na ito!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Burahin lahat"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Binubura"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Mangyaring maghintay..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Petsa at oras"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Itakda ang petsa at oras"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Itakda ang petsa, oras, time zone, at mga format"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Pagbukud-bukurin ayon sa time zone"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Petsa"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Oras"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Magdagdag ng user"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Magdagdag ng account"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Mag-delete ng user"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Bagong user"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Bisita"</string>
     <string name="user_admin" msgid="1535484812908584809">"Admin"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Naka-sign in bilang admin"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Lahat ng pang-admin na pahintulot"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Gawing Admin"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Magagawa ng user na mag-delete ng mga user, kabilang ang iba pang Admin, at i-factory reset ang system."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Hindi mababawi ang pagkilos na ito."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Oo, gawing admin"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Gumawa ng mga bagong user"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Tumawag sa telepono"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Messaging sa mobile data ng kotse"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Mag-install ng mga bagong app"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Mag-uninstall ng mga app"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Magdagdag ng user"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Bagong user"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Magdagdag ng bagong user?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Maaaring i-update ng sinumang user ang mga app para sa lahat ng iba pang user."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Naabot na ang limitasyon sa user"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Maaari kang gumawa ng hanggang <xliff:g id="COUNT">%d</xliff:g> user.</item>
+      <item quantity="other">Maaari kang gumawa ng hanggang <xliff:g id="COUNT">%d</xliff:g> na user.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Hindi nakagawa ng bagong user"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"I-delete ang user na ito?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Made-delete ang lahat ng app at data."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Hindi na-delete ang user."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"I-dismiss"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Subukang muli"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"I-delete ang huling user?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Pagkatapos i-delete ang nag-iisang natitirang user para sa kotseng ito, may gagawing bagong admin user."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Made-delete ang lahat ng data, setting, at app na nauugnay sa user na ito. Kakailanganin mong i-set up muli ang system."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Pumili ng bagong admin"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Kailangan mo ng kahit isang admin lang. Para i-delete ang isang ito, pumili muna ng kapalit."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Pumili ng admin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Bisita"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Bisita"</string>
     <string name="user_switch" msgid="6544839750534690781">"Lumipat"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Ikaw (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Pangalan"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Hindi naka-set up"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"I-edit ang user name"</string>
     <string name="users_list_title" msgid="770764290290240909">"Mga User"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Binigyan ng pahintulot si %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Mga Account"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"User"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Magdagdag ng account"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Walang naidagdag na account"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Mga account para kay <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Awtomatikong i-sync ang data"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Hayaan ang mga app na awtomatikong mag-refresh ng data"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"I-on ang pag-auto-sync ng data?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Ang anumang pagbabagong gagawin mo sa iyong mga account sa web ay awtomatikong makokopya sa device mo.\n\nMaaari ding awtomatikong kopyahin ng ilang account sa web ang anumang pagbabagong gagawin mo sa telepono. Ganito gumagana ang Google Account."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"I-off ang pag-auto sync ng data?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Makakatipid ito ng data, ngunit kakailanganin mong manual na i-sync ang bawat account para makakuha ng kamakailang impormasyon. At hindi ka makakatanggap ng mga notification kapag nagkaroon ng mga update."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Impormasyon ng account"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Magdagdag ng account"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Magdagdag ng account"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Alisin ang account"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Alisin ang account?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Kapag inalis ang account na ito, made-delete ang lahat ng mensahe, contact, at iba pang data nito sa device!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Hindi pinapayagan ng iyong admin ang pagbabagong ito"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Alisin ang user na ito?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Made-delete ang lahat ng app at data."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Hindi naalis ang user."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Subukang muli?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"I-dismiss"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Subukang Muli"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Magdagdag ng bagong user?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Kapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Maaaring i-update ng sinumang user ang mga app para sa lahat ng iba pang user."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Hindi naalis ang account."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Pag-sync ng account"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Naka-on ang pag-sync para sa <xliff:g id="ID_1">%1$d</xliff:g> sa <xliff:g id="ID_2">%2$d</xliff:g> (na) item"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Naka-on ang pag-sync para sa lahat ng item"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Naka-off ang pag-sync para sa lahat ng item"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"NAKA-OFF ang pag-sync"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Error sa pag-sync"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Huling na-sync noong <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Nagsi-sync ngayon…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"I-tap para mag-sync ngayon<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"I-sync ngayon"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Kanselahin ang pag-sync"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Kasalukuyang nagkakaproblema sa pag-sync. Babalik ito pagkalipas ng ilang sandali."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Seguridad"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Lock ng screen"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Wala"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Password"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Pumili ng uri ng lock"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Mga opsyon sa lock ng screen"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Mga opsyon sa lock"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Ilagay ang iyong pattern"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Kumpirmahin"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Muling Iguhit"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Magtakda ng lock ng screen"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Piliin ang iyong PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Pumili ng iyong pattern"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Piliin ang iyong password"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Piliin ang iyong password"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Kasalukuyang lock ng screen"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Para sa seguridad, magtakda ng pattern"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"I-clear"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Bina-block ng iyong IT admin ang mga pangkaraniwang password. Sumubok ng ibang password."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Hindi pinapayagan ang pataas, pababa, o paulit-ulit na pagkakasunod-sunod ng mga digit."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Mga opsyon sa lock ng screen"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> (na) araw ang nakalipas"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Magdagdag ng trusted na device"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Trusted na device"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> device</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> na device</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"Maa-unlock ng iyong <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ang kotseng ito kapag nakakonekta ito. Kung may kumuha ng iyong <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, maaari niyang ma-access ang device na ito"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Kumpirmahin"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Mag-alis ng pinagkakatiwalaang device"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Tapos na"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Buksan ang kasamang app para mag-set up ng pinagkakatiwalaang device. Kapag na-set up ito, maa-unlock mo ang iyong profile ng user kapag na-detect ng sasakyan ang telepono mo"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. I-download ang kasamang app sa iyong telepono"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Piliin ang <xliff:g id="CAR_NAME">%1$s</xliff:g> sa iyong telepono para ipares ang mga device"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Hindi ma-detect ng Smart Lock ang mga panseguridad na feature ng device na ito. Para makatulong na maprotektahan ang iyong kotse, magagawa lang ng pinagkakatiwalaang device na panatilihing naka-unlock ang kotse mo kapag na-unlock mo na ito. Mapapanatili ng iyong pinagkakatiwalaang device na naka-unlock ang kotse mo, kahit na ibang tao ang humahawak nito."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Idagdag ang <xliff:g id="DEVICE_NAME">%1$s</xliff:g> bilang pinagkakatiwalaang device"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Naidagdag ang <xliff:g id="DEVICE_NAME">%1$s</xliff:g> bilang pinagkakatiwalaang device"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Hindi na-enroll ang <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Kapag nagdagdag ng pinagkakatiwalaang device, kinakailangan mong magtakda ng paraan ng pag-authenticate. Kung wala sa iyo ang pinagkakatiwalaan mong device, kakailanganin ang pag-authenticate para ma-access ang iyong profile."</string>
     <string name="forget" msgid="3971143908183848527">"Kalimutan"</string>
+    <string name="connect" msgid="5861699594602380150">"Kumonekta"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Idiskonekta"</string>
     <string name="delete_button" msgid="5840500432614610850">"I-delete"</string>
     <string name="remove_button" msgid="6664656962868194178">"Alisin"</string>
     <string name="cancel" msgid="750286395700355455">"Kanselahin"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Lumabas sa demo mode"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Ide-delete nito ang demo account at ire-reset ang factory data ng system. Mawawala ang lahat ng data ng user."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Lumabas sa Demo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"tapusin ang pag-set up"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"huwag ngayon"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"I-DISMISS"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Hindi available ang feature habang nagmamaneho."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Hindi maaaring magdagdag ng user habang nagmamaneho."</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 57014c1..526472a 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"ekranı karartma, dokunmatik ekran, pil"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"loş ekran, gece, tonlama"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Gece modu"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Ağ ve internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobil ağ"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobil veri"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Verilere mobil ağ üzerinden erişim"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobil veri kapatılsın mı?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Veri kullanımı"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Veri uyarısı ve limiti"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Uygulama veri kullanımı döngüsü"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Veri uyarısı oluştur"</string>
+    <string name="data_warning" msgid="116776633806885370">"Veri uyarısı"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Veri limiti ayarla"</string>
+    <string name="data_limit" msgid="227338836292511425">"Veri limiti"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Veri kullanımını sınırlama"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Aracınızın ana birimi, belirlediğiniz mobil veri limitine ulaşıldığında mobil veriyi kapatır.\n\nVeri kullanımı ana birim tarafından ölçülür ve operatörünüz kullanımı farklı bir şekilde hesaplayabilir. Bu nedenle, risk almadan güvenli bir limit belirleyin."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Kablosuz"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Kablosuz erişim noktaları kurun ve bunları yönetin"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Kablosuz açılıyor…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Kablosuz kapatılıyor…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Kablosuz listesi yükleniyor"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Kablosuz devre dışı"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Ağ unutulamadı"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Ağa bağlanılamadı"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Ağ ekle"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Kablosuz devre dışı"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Bağlan"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Şifre"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Şifreyi göster"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Ağ adı"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID\'yi girin"</string>
     <string name="wifi_security" msgid="158358046038876532">"Güvenlik"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Sinyal gücü"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Sinyal gücü"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Durum"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Bağlantı hızı"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Frekans"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP adresi"</string>
+    <string name="show_password" msgid="2074628020371139240">"Şifreyi göster"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Ağ adını girin"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Şifreyi girin"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Zayıf"</item>
-    <item msgid="2032262610626057081">"Yeterli"</item>
-    <item msgid="3859756017461098953">"İyi"</item>
-    <item msgid="1521103743353335724">"Mükemmel"</item>
+    <item msgid="7683058295076342057">"Zayıf"</item>
+    <item msgid="1639222824821660744">"Yeterli"</item>
+    <item msgid="1838705897358163300">"İyi"</item>
+    <item msgid="6067166649320533751">"Mükemmel"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetooth\'u aç"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth devre dışı"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/sn."</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Ağ ayrıntıları"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC adresi"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP adresi"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Alt ağ maskesi"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 adresleri"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Ağ geçidi"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Kablosuz tercihleri"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Kablosuzu otomatik olarak aç"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Ev ağınız gibi yüksek kaliteli kayıtlı ağların yakınında olduğunuzda kablosuz özelliği tekrar açılır"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Konum kapalı olduğundan kullanılamıyor. "<annotation id="link">"Konum"</annotation>"\'u açın."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Kablosuz taraması açılsın mı?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Aç"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Kablosuz tarama açıldı"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Mobil veriye otomatik olarak geç"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Kablosuz internet erişimi yoksa mobil veri kullan. Veri kullanımı ücretleri uygulanabilir."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Daha fazla bilgi"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Bağlantıları yönetin, cihaz adını girin ve bulunabilirlik ayarını yapın"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Bilgisayar"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Mikrofonlu kulaklık"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Görüntüleme"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Kulaklık"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Giriş Çevre Birimi"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Eşlenen cihazlar"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Kullanılabilir cihazlar"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Eşlenen cihaz yok"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Kullanılabilir cihaz yok"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Eşlenen cihaz"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Ad"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Şunun için kullan:"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth cihazının adını değiştirin"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Adsız cihaz"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Eşlenen cihazlar"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Yeni cihaz eşle"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth, eşleme yapmak için açılır"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Cihazla bağlantı kesilsin mi?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Aracınızın <xliff:g id="DEVICE_NAME">%1$s</xliff:g> bağlantısı kesilecek."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Aracın Bluetooth adresi: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Cihazın Bluetooth adresi: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Araç adı"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Bu aracın adını değiştirin"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Cihazın adını değiştir"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Yeniden adlandır"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Kullanılabilir cihazlar"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profiller"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth eşleme isteği"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Eşleştir ve bağlan"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth eşleme kodu"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN, harf veya simge içerir"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Eşleme kodunu girip Return veya Enter tuşuna basın"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Genellikle 0000 veya 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Eşleme isteği"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ile eşlemek için dokunun."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Diller"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Diller ve giriş"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Klavye"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Klavyeleri yönet"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Metin okuma çıkışı"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Tercih edilen motor"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Mevcut motor"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Konuşma Hızı"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Perde"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Sıfırla"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Ses"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Zil sesi düzeyi"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Gezinme ses düzeyi"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Medya"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Müziğin ve videoların ses düzeyini ayarla"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Alarm"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Telefon zil sesi"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Varsayılan bildirim sesi"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Varsayılan alarm sesi"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Uygulamalar ve bildirimler"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Tüm uygulamaları göster"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Varsayılan uygulamalar"</string>
     <string name="applications_settings" msgid="794261395191035632">"Uygulama bilgileri"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Zorla durdur"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Zorla durdurulsun mu?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Uygulama zorla durdurulursa hatalı davranabilir."</string>
     <string name="disable_text" msgid="4358165448648990820">"Devre dışı bırak"</string>
     <string name="enable_text" msgid="1794971777861881238">"Etkinleştir"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Yüklemeyi kaldır"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Bu uygulamayı devre dışı bırakırsanız Android ve diğer uygulamalar artık beklendiği gibi çalışmayabilir."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Uygulamayı devre dışı bırak"</string>
     <string name="permissions_label" msgid="2701446753515612685">"İzinler"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Sürüm: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Hiçbir izin verilmedi"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Hiçbir izin istenmedi"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Veri kullanımı"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Uygulama veri kullanımı"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Zorla durdur"</string>
     <string name="computing_size" msgid="5791407621793083965">"Hesaplanıyor…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ek izin</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ek izin</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Asistan ve ses girişi"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Asistan uygulaması"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Ekrandaki metni kullan"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Asistan uygulamasının, ekran içeriklerine metin biçiminde erişmesine izin ver"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Ekran görüntüsü kullan"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Asistan uygulamasının ekrandaki bir resme erişmesine izin ver"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Otomatik doldurma hizmeti"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Yok"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Seçilen"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Asistan, ekranınızda görünür olan veya uygulamaların içinden erişilebilen bilgiler dahil olmak üzere sisteminizde kullanılan uygulamalar hakkındaki bilgileri okuyabilecektir."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Bu uygulamaya güvendiğinizden emin olun&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Otomatik Doldurma&gt;%1$s&lt;/xliff:g&gt; özelliği, otomatik doldurulabilecek alanları belirlemek için ekranınızdaki bilgileri kullanır."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Hizmet ekle"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Konum"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Yeni Konum İstekleri"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Yeni konum isteği yok"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Uygulama düzeyinde izinler"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Tarama"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Konum Hizmetleri"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Kablosuz taraması"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Uygulamaların ve hizmetlerin kablosuz ağları Kablosuz özelliği kapalıyken bile her zaman taramasına izin verin. Bu özellik, konuma dayalı özellikleri ve hizmetleri iyileştirme gibi amaçlar için kullanılabilir."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth taraması"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Uygulamaların ve hizmetlerin etrafınızdaki cihazları Bluetooth kapalıyken bile her zaman taramasına izin verin. Bu özellik, konuma dayalı özellikleri ve hizmetleri iyileştirme gibi amaçlar için kullanılabilir."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Sistem güncellemeleri"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Sistem güncellemeleri"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android sürümü"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android güvenlik yaması düzeyi"</string>
     <string name="model_info" msgid="4966408071657934452">"Model"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Ana bant sürümü"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Çekirdek sürümü"</string>
     <string name="build_number" msgid="3997326631001009102">"Derleme numarası"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adresi"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Kullanılamıyor"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Durum"</string>
     <string name="device_status" msgid="267298179806290920">"Durum"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Telif hakkı"</string>
     <string name="license_title" msgid="936705938435249965">"Lisans"</string>
     <string name="terms_title" msgid="5201471373602628765">"Şartlar ve koşullar"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Sistem Web Görünümü Lisansı"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Sistem Web Görünümü lisansları"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Duvar kağıtları"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Uydu görüntüsü sağlayıcıları:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Üçüncü taraf lisansları"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Lisansları yüklemeyle ilgili bir sorun var."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Yükleniyor…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Geliştirici olmanıza <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> adım kaldı.</item>
+      <item quantity="one">Geliştirici olmanıza <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> adım kaldı.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Artık bir geliştiricisiniz!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Gerekli değil, siz zaten bir geliştiricisiniz."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Geliştirici seçenekleri"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Sıfırlama seçenekleri"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Ağı, uygulamaları veya cihazı sıfırlama"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Ağı sıfırla"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Bu işlem, şunlar dahil tüm ağ ayarlarını sıfırlayacak:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Kablosuz"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobil veri"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Tüm araç eSIM\'lerini sil"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Bu işlem, hizmet planınızı iptal etmez."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM\'ler sıfırlanamıyor"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Ağ seçin"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Ayarları sıfırla"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Sıfırlansın mı?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Tüm ağ ayarları sıfırlansın mı? Bu işlem geri alınamaz!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Ayarları sıfırla"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Ağ ayarları sıfırlandı"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Uygulama tercihlerini sıfırla"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Bu işlem, şunlarla ilgili tüm tercihleri sıfırlayacaktır:\n\n"<li>"Devre dışı bırakılan uygulamalar"</li>\n<li>"Devre dışı bırakılan uygulama bildirimleri"</li>\n<li>"İşlemler için varsayılan uygulamalar"</li>\n<li>"Uygulamalar için arka plan verileri kısıtlamaları"</li>\n<li>"Tüm izin kısıtlamaları"</li>\n\n"Uygulama verileriniz kaybolmayacak."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Uygulamaları sıfırla"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Uygulama tercihleri sıfırlandı"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Tüm verileri sil (fabrika ayarları)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Bu işlem, aracınızın ana biriminden şunlar dahil tüm verileri siler:\n\n"<li>"Google hesabınız"</li>\n<li>"Sistem ve uygulama verileri ile ayarları"</li>\n<li>"İndirilen uygulamalar"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Şu anda oturum açmış olduğunuz hesaplar:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Bu araçta başka kullanıcılar da var."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Aracı sıfırla"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Sıfırlansın mı?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Tüm kişisel bilgileriniz ve indirdiğiniz uygulamalar silinsin mi? Bu işlem geri alınamaz!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Her şeyi sil"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Siliniyor"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Lütfen bekleyin..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Tarih ve saat"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Tarih ve saati ayarlayın"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Tarihi, saati, saat dilimini ve biçimleri ayarlayın"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Saat dilimine göre sırala"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Tarih"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Saat"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Kullanıcı ekle"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Hesap ekle"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Kullanıcıyı sil"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Yeni kullanıcı"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Misafir"</string>
     <string name="user_admin" msgid="1535484812908584809">"Yönetici"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Yönetici olarak oturum açıldı"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tüm yönetici izinleri"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Yönetici yap"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Kullanıcı, diğer Yöneticiler dahil tüm kullanıcıları silebilecek ve sistemi fabrika ayarlarına sıfırlayabilecektir."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Bu işlem geri alınamaz."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Evet, yönetici yap"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Yeni kullanıcı oluşturma"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Telefon araması yapma"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Araç mobil verisiyle mesajlaşma"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Yeni uygulama yükleme"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Uygulamaları kaldırma"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Kullanıcı ekle"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Yeni kullanıcı"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Kullanıcı eklensin mi?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yeni kullanıcı eklediğinizde, bu kişinin alanını ayarlaması gerekir."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Herhangi bir kullanıcı, diğer tüm kullanıcılar için uygulamaları güncelleyebilir."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Kullanıcı sınırına ulaşıldı"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">En fazla <xliff:g id="COUNT">%d</xliff:g> kullanıcı oluşturabilirsiniz.</item>
+      <item quantity="one">Yalnızca bir kullanıcı oluşturulabilir.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Yeni kullanıcı oluşturulamadı"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Bu kullanıcı silinsin mi?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Tüm uygulamalar ve veriler silinecek."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Kullanıcı silinemedi."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Kapat"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Tekrar dene"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Kullanıcı silinsin mi?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Bu aracın kalan son kullanıcısı silindikten sonra yeni bir yönetici kullanıcı oluşturulacak."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Bu kullanıcıyla ilişkili tüm veriler, ayarlar ve uygulamalar silinecek. Sistemi tekrar ayarlamanız gerekecek."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Yeni yönetici seçin"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"En az bir yöneticiye ihtiyacınız var. Bu yöneticiyi silmek için önce yedek yönetici seçin."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Yönetici seçin"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Misafir"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Misafir"</string>
     <string name="user_switch" msgid="6544839750534690781">"Değiştir"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Siz (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ad"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Yapılandırılmamış"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Kullanıcı adını düzenleme"</string>
     <string name="users_list_title" msgid="770764290290240909">"Kullanıcılar"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s için izinler verildi"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Hesaplar"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Kullanıcı"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Hesap ekle"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Hiçbir hesap eklenmedi"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> adlı kullanıcının hesapları"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Verileri otomatik olarak senkronize et"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Uygulamaların verileri otomatik olarak yenilemesine izin ver"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Otomatik veri senk. açılsın mı?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Hesaplarınızda web üzerinden yaptığınız tüm değişiklikler cihazınıza otomatik olarak kopyalanacaktır.\n\nBazı hesaplar telefonda yaptığınız değişiklikleri de web\'e otomatik olarak kopyalayabilir. Google Hesaplarının işleyişi bu şekildedir."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Otomatik senk. kapatılsın mı?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Bu işlem verileri korur ancak son bilgileri almak için her bir hesabı manuel olarak senkronize etmeniz gerekecektir. Güncelleme olduğunda bildirim de almazsınız."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Hesap bilgileri"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Hesap ekle"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Hesap ekleme"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Hesabı kaldır"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Hesap kaldırılsın mı?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Bu hesabın kaldırılması, hesaba ait tüm mesajların, kişilerin ve cihazdaki diğer verilerin silinmesine neden olacak!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Yöneticiniz bu değişikliğe izin vermiyor"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Kullanıcı kaldırılsın mı?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Tüm uygulamalar ve veriler silinecek."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Kullanıcı kaldırılamadı."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Tekrar denensin mi?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Kapat"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Tekrar dene"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Kullanıcı eklensin mi?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yeni kullanıcı eklediğinizde, bu kişinin alanını ayarlaması gerekir."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Herhangi bir kullanıcı, diğer tüm kullanıcılar için uygulamaları güncelleyebilir."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Hesap kaldırılamadı."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Hesap senkronizasyonu"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Senkronizasyon <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g> öğe için açık"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Senkronizasyon tüm öğeler için açık"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Senkronizasyon tüm öğeler için kapalı"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Senkronizasyon KAPALI"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Senkronizasyon hatası"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Son senkronizasyon: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Şimdi senkronize ediliyor…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Şimdi senkronize etmek için dokunun<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Şimdi senkronize et"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Senkronizasyonu iptal et"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Şu anda senkronizasyon sorunu yaşanıyor. Senkronizasyon kısa bir süre sonra tekrar devreye girecek."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Güvenlik"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekran kilidi"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Yok"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Şifre"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Kilit türü seçin"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Ekran kilidi seçenekleri"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Kilit seçenekleri"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Deseninizi girin"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Onayla"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Yeniden çiz"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ekran kilidi ayarlama"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN\'inizi seçin"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Deseninizi seçin"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Şifrenizi seçin"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Şifrenizi seçin"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Geçerli ekran kilidi"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Güvenlik için desen oluşturun"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Temizle"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Yaygın olarak kullanılan şifreler BT yöneticiniz tarafından engellenir. Farklı bir şifre deneyin."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Artan, azalan veya tekrar eden rakam dizisine izin verilmez."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran kilidi seçenekleri"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> gün önce"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Güvenilen cihaz ekle"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Güvenilen cihazlar"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> cihaz</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> cihaz</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> cihazınız bu araca bağlı olduğunda aracın kilidini açacaktır. <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> cihazınız bir kişinin eline geçerse bu kişi cihazınıza erişebilir."</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Onayla"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Güvenilen cihazı kaldır"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Bitti"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Güvenilen cihaz ayarlamak için tamamlayıcı uygulamayı kullanın. Ayarlama yapmanızın ardından, telefonunuz araç tarafından algılandığında kullanıcı profilinizin kilidini açabilirsiniz"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Tamamlayıcı uygulamayı telefonunuza indirin"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Cihazları eşlemek için telefonunuzda <xliff:g id="CAR_NAME">%1$s</xliff:g> seçimini yapın"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock, bu cihazın güvenlik özelliklerini algılayamıyor. Güvenilen cihaz, aracınızın korunmasına yardımcı olmak için yalnızca siz kilidini açtıktan sonra aracı açık tutabilecektir. Güvenilen cihazınız başkasının elinde olsa bile aracınız yakındayken aracın kilidini açık tutabilir."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> adlı cihazı güvenilen cihaz olarak ekle"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> güvenilen cihaz olarak başarıyla eklendi"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> kaydı başarısız oldu"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Güvenilen cihaz eklemek için kimlik doğrulama yöntemi belirlemeniz gerekir. Güvenilen cihazınız yanınızda değilse profilinize erişmek için kimlik doğrulama gerekecektir."</string>
     <string name="forget" msgid="3971143908183848527">"Unut"</string>
+    <string name="connect" msgid="5861699594602380150">"Bağlan"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Bağlantıyı kes"</string>
     <string name="delete_button" msgid="5840500432614610850">"Sil"</string>
     <string name="remove_button" msgid="6664656962868194178">"Kaldır"</string>
     <string name="cancel" msgid="750286395700355455">"İptal et"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demo modundan çık"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Bu işlem, demo hesabını silecek ve sistemi fabrika verilerine sıfırlayacak. Tüm kullanıcı verileri kaybolacak."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demodan çık"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"kurulumu bitir"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"şimdi değil"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"KAPAT"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Sürüş sırasında bu özellik kullanılamaz."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Sürüş sırasında kullanıcı eklenemez."</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index a69698a..6b05cd1 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"затемнений екран, сенсорний екран, акумулятор"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"затемнений екран, ніч, відтінок"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Нічний режим"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Мережа й Інтернет"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Мобільна мережа"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобільне передавання даних"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Доступ до даних через мобільну мережу"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Вимкнути мобільне передавання даних?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Використання трафіку"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Застереження про трафік і обмеження"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Цикл використання трафіку додатків"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Увімкнути сповіщення про трафік"</string>
+    <string name="data_warning" msgid="116776633806885370">"Застереження про трафік"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Налаштуйте обмеження трафіку"</string>
+    <string name="data_limit" msgid="227338836292511425">"Обмеження трафіку"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Обмежити використання трафіку"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Головний пристрій автомобіля вимкне мобільне передавання даних, коли буде досягнуто вказаного обмеження.\n\nОскільки головний пристрій і оператор можуть вимірювати трафік по-різному, радимо встановити занижене обмеження."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Налаштуйте бездротові точки доступу та керуйте ними"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Увімкнення Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Вимкнення Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Завантажується список мереж Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi вимкнено"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Не вдалося забути мережу"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Не вдалося під’єднатися до мережі"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Додати мережу"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi вимкнено"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Під’єднати"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Пароль"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Показати пароль"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Назва мережі"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Введіть ім’я мережі"</string>
     <string name="wifi_security" msgid="158358046038876532">"Безпека"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Рівень сигналу"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Потужність сигналу"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Статус"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Швидкість з’єднання"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Частота"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"ІР-адреса"</string>
+    <string name="show_password" msgid="2074628020371139240">"Показати пароль"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Введіть назву мережі"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Введіть пароль"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Слабкий"</item>
-    <item msgid="2032262610626057081">"Задовільний"</item>
-    <item msgid="3859756017461098953">"Добрий"</item>
-    <item msgid="1521103743353335724">"Відмінний"</item>
+    <item msgid="7683058295076342057">"Слабкий"</item>
+    <item msgid="1639222824821660744">"Задовільний"</item>
+    <item msgid="1838705897358163300">"Добрий"</item>
+    <item msgid="6067166649320533751">"Чудовий"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Увімкніть Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth вимкнено"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Мбіт/с"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 ГГц"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 ГГц"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Дані мережі"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC-адреса"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"ІР-адреса"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Маска підмережі"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Адреси IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Шлюз"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Параметри Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Автоматично вмикати Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi‑Fi вмикатиметься біля збережених мереж, як-от домашньої"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Недоступно, оскільки вимкнено "<annotation id="link">"передавання геоданих"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Увімкнути пошук мереж Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Увімкнути"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Пошук мереж Wi-Fi увімкнено"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Автоматично переходити на мобільне передавання даних"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Вмикати мобільне передавання даних, якщо мережа Wi-Fi не має доступу до Інтернету. Може стягуватися плата за використання трафіку."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Докладніше"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Керувати з’єднаннями, налаштувати назву та видимість пристрою"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Комп’ютер"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Гарнітура"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Телефон"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Візуалізація"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Навушники"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Периферійне введення"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Підключені пристрої"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Доступні пристрої"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Немає підключених пристроїв"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Немає доступних пристроїв"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Підключений пристрій"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Назва"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Використовувати для"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Змініть назву пристрою Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Пристрій без назви"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Пристрої, з якими створено пару"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Створити пару з новим пристроєм"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth увімкнеться, щоб створити пару"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Від’єднати пристрій?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Автомобіль від’єднається від пристрою <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Адреса Bluetooth автомобіля: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Адреса Bluetooth пристрою: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Назва автомобіля"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Перейменувати цей автомобіль"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Перейменувати пристрій"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Перейменувати"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Доступні пристрої"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Профілі"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Запит Bluetooth на створення пари"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Створити пару та підключитися"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Код підключення Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN-код містить літери чи символи"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Введіть код підключення та натисніть Return або Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Зазвичай 0000 або 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Запит на створення пари"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Торкніться, щоб підключитися до пристрою <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Мови"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Мови та введення"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Клавіатура"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Керуйте клавіатурами"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Вивід синтезу мовлення"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Бажана система"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Поточна система"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Темп мовлення"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Тон"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Скинути"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Звук"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Гучність дзвінка"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Гучність навігації"</string>
@@ -100,16 +140,27 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Медіа"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Налаштувати гучність для музики та відео"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Будильник"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Сигнал телефонного дзвінка"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Стандартний сигнал сповіщень"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Стандартний сигнал будильника"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Додатки та сповіщення"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Показати всі додатки"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Додатки за умовчанням"</string>
     <string name="applications_settings" msgid="794261395191035632">"Про додаток"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Примусово припинити роботу"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Примусово припинити роботу?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Після примусового припинення роботи додаток може працювати неналежним чином."</string>
     <string name="disable_text" msgid="4358165448648990820">"Вимкнути"</string>
     <string name="enable_text" msgid="1794971777861881238">"Увімкнути"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Видалити"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Якщо вимкнути цей додаток, система Android та інші додатки можуть працювати неналежним чином."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Вимкнути додаток"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Дозволи"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Версія: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Дозволи не надано"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Немає запитів на дозволи"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Використання трафіку"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Використання трафіку"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Примусово припинити роботу"</string>
     <string name="computing_size" msgid="5791407621793083965">"Обчислення…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> додатковий дозвіл</item>
@@ -117,15 +168,39 @@
       <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> додаткових дозволів</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> додаткового дозволу</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Асистент і голосовий ввід"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Помічник"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Використовувати текст з екрана"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Надати помічнику доступ до тексту на екрані"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Використовувати знімки екрана"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Надати помічнику доступ до знімків екрана"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Автозаповнення"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Немає"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Вибрано"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Асистент матиме доступ до інформації про додатки у вашій системі, зокрема до даних на екрані та в додатках."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Переконайтеся, що додаток надійний&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Автозаповнення Google&gt;%1$s&lt;/xliff:g&gt; використовує інформацію на екрані, щоб визначати поля, які можна заповнити."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Додати сервіс"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Місце"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Останні запити на геодані"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Немає останніх запитів на геодані"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Дозволи на рівні додатка"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Пошук"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Служби локації"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Пошук мереж Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Дозволити додаткам і службам будь-коли шукати мережі Wi-Fi, навіть коли Wi-Fi вимкнено. Це може покращити, наприклад, роботу функцій і служб, які використовують геодані."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Пошук пристроїв Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Дозволити додаткам і службам будь-коли шукати пристрої поруч, навіть коли Bluetooth вимкнено. Це може покращити, наприклад, роботу функцій і служб, які використовують геодані."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Оновлення системи"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Оновлення системи"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Версія Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Рівень виправлення системи безпеки Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Модель"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Версія каналу зв’язку"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Версія ядра"</string>
     <string name="build_number" msgid="3997326631001009102">"Номер складання"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Адреса Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Недоступно"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Статус"</string>
     <string name="device_status" msgid="267298179806290920">"Статус"</string>
@@ -142,12 +217,51 @@
     <string name="copyright_title" msgid="4220237202917417876">"Авторські права"</string>
     <string name="license_title" msgid="936705938435249965">"Ліцензія"</string>
     <string name="terms_title" msgid="5201471373602628765">"Умови використання"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Ліцензія компонента WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Ліцензії WebView"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Фонові малюнки"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Постачальники супутникових зображень:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Ліцензії сторонніх розробників"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Не вдалося завантажити ліцензії."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Завантаження…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Залишився лише <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> крок, щоб стати розробником.</item>
+      <item quantity="few">Залишилося лише <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> кроки, щоб стати розробником.</item>
+      <item quantity="many">Залишилося лише <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> кроків, щоб стати розробником.</item>
+      <item quantity="other">Залишилося лише <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> кроку, щоб стати розробником.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Тепер ви розробник."</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Непотрібно, ви вже розробник."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Параметри розробника"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Скинути параметри"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Скидання налаштувань мережі, додатків або пристрою"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Скинути налаштування мережі"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Буде скинуто налаштування всіх мереж, зокрема:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi-Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Мобільне передавання даних"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Видалити всі eSIM-карти автомобіля"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Ваш тарифний план не буде скасовано."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Не вдається скинути eSIM-карти"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Вибрати мережу"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Скинути налаштування"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Скинути?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Скинути налаштування всіх мереж? Цю дію не можна відмінити."</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Скинути налаштування"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Налаштування мереж скинуто"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Cкинути налаштування додатків"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Буде скинуто всі налаштування для:\n\n"<li>"вимкнених додатків;"</li>\n<li>"сповіщень вимкнених додатків;"</li>\n<li>"додатків для виконання дій за умовчанням;"</li>\n<li>"обмежень щодо використання даних додатками у фоновому режимі;"</li>\n<li>"усіх обмежень щодо дозволів."</li>\n\n"Ви не втратите жодних даних додатків."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Скинути налаштування додатків"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Налаштування додатків скинуто"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Стерти всі дані (скинути налаштування)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Буде видалено всі дані головного пристрою автомобіля, зокрема:\n\n"<li>"обліковий запис Google;"</li>\n<li>"дані й налаштування системи та додатків;"</li>\n<li>"завантажені додатки."</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Ви ввійшли в такі облікові записи:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"У цього автомобіля є інші користувачі."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Скинути дані автомобіля"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Скинути?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Видалити всю особисту інформацію та завантажені додатки? Цю дію не можна відмінити."</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Видалити все"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Видалення"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Зачекайте…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Дата й час"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Установити дату й час"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Установити дату, час, часовий пояс і формати"</string>
@@ -156,7 +270,7 @@
     <string name="zone_auto" msgid="3701878581920206160">"Автоматичний часовий пояс"</string>
     <string name="zone_auto_summary" msgid="4345856882906981864">"Використовувати часовий пояс, наданий мережею"</string>
     <string name="date_time_24hour_title" msgid="3025576547136168692">"24-годинний формат"</string>
-    <string name="date_time_24hour" msgid="1137618702556486913">"Використовувати 24-годинний формат"</string>
+    <string name="date_time_24hour" msgid="1137618702556486913">"24-годинний формат"</string>
     <string name="date_time_set_time_title" msgid="5884883050656937853">"Час"</string>
     <string name="date_time_set_time" msgid="6449555153906058248">"Установити час"</string>
     <string name="date_time_set_timezone_title" msgid="3001779256157093425">"Часовий пояс"</string>
@@ -167,23 +281,61 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Сортувати за часовим поясом"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Дата"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Час"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Додати користувача"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Додати обліковий запис"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Як видалити користувача"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Новий користувач"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Гість"</string>
     <string name="user_admin" msgid="1535484812908584809">"Адміністратор"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Ви ввійшли як адміністратор"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Усі дозволи адміністратора"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Зробити адміністратором"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Це дасть змогу видаляти користувачів, зокрема інших адміністраторів, і відновлювати заводські налаштування системи."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Цю дію не можна відмінити."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Так, зробити адміністратором"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Створювати нових користувачів"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Телефонувати"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Обмінюватися SMS з автомобіля"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Установлювати нові додатки"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Видаляти додатки"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Додати користувача"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Новий користувач"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Додати нового користувача?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Після створення новий профіль потрібно налаштувати."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Будь-який користувач може оновлювати додатки для решти людей."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Ви досягли ліміту користувачів"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Можна створити до <xliff:g id="COUNT">%d</xliff:g> користувача.</item>
+      <item quantity="few">Можна створити до <xliff:g id="COUNT">%d</xliff:g> користувачів.</item>
+      <item quantity="many">Можна створити до <xliff:g id="COUNT">%d</xliff:g> користувачів.</item>
+      <item quantity="other">Можна створити до <xliff:g id="COUNT">%d</xliff:g> користувача.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Не вдалося створити нового користувача"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Видалити користувача?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Усі додатки й дані буде видалено."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Не вдалося видалити користувача."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Закрити"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Повторити"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Видалити останнього користувача?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Коли ви видалите останнього користувача цього автомобіля, буде створено нового адміністратора."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Буде видалено всі дані, налаштування й додатки, зв’язані з цим користувачем. Потрібно буде знову налаштовувати систему."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Вибрати нового адміністратора"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"У вас має бути принаймні один адміністратор. Щоб видалити цього, спершу виберіть іншого."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Вибрати адміністратора"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Гість"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Гість"</string>
     <string name="user_switch" msgid="6544839750534690781">"Змінити користувача"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Ви (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ім’я"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Не налаштовано"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Змінити ім’я користувача"</string>
     <string name="users_list_title" msgid="770764290290240909">"Користувачі"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s отримує дозволи"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Облікові записи"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Користувач"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Додати обліковий запис"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Облікових записів не додано"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Облікові записи користувача <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Автоматично синхронізувати дані"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Дозволити додаткам автоматично оновлювати дані"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Увімкнути автосинхронізацію?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Будь-які зміни в облікових записах, внесені в Інтернеті, автоматично копіюватимуться на ваш пристрій.\n\nДеякі облікові записи також можуть автоматично копіювати в Інтернет зміни, внесені на телефоні. Так працює обліковий запис Google."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Вимкнути автосинхронізацію?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Це заощадить трафік, проте вам доведеться вручну синхронізувати кожний обліковий запис, щоб отримати останні дані. Сповіщення щодо оновлень також не надходитимуть."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Дані облікового запису"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Додати обліковий запис"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Додати обліковий запис"</string>
@@ -191,16 +343,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Видалити обліковий запис"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Видалити обліковий запис?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Якщо видалити цей обліковий запис, ви втратите всі його повідомлення, контакти й інші дані на пристрої."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Ця дія заборонена адміністратором"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Видалити користувача?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Усі додатки й дані буде видалено."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Не вдалося видалити користувача."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Повторити?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Закрити"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Повторити"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Додати нового користувача?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Після створення новий профіль потрібно налаштувати."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Будь-який користувач може оновлювати додатки для решти людей."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Не вдалося видалити обліковий запис."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Синхронізація облікового запису"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Увімкнено синхронізацію стількох елементів: <xliff:g id="ID_1">%1$d</xliff:g> з <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Увімкнено синхронізацію всіх елементів"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Вимкнено синхронізацію всіх елементів"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Синхронізацію ВИМКНЕНО"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Помилка синхронізації"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Остання синхронізація: <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Синхронізація…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Торкніться, щоб синхронізувати<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Синхронізувати"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Скасувати синхронізацію"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Виникли проблеми із синхронізацією. Незабаром вона відновиться."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Безпека"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Блокування екрана"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Немає"</string>
@@ -208,7 +364,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN-код"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Пароль"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Виберіть тип блокування"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Способи блокування екрана"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Параметри блокування"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Введіть ключ"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Підтвердити"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Перемалювати"</string>
@@ -218,7 +374,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Налаштуйте блокування екрана"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Придумайте PIN-код"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Створіть ключ"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Придумайте пароль"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Створіть пароль"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Поточне блокування екрана"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"З міркувань безпеки налаштуйте ключ"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Очистити"</string>
@@ -302,7 +458,30 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"IT-адміністратор заблокував загальні паролі. Введіть інший пароль."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Заборонено однакові цифри або в порядку зростання чи спадання."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Способи блокування екрана"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> дн. тому"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Додати надійний пристрій"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Надійні пристрої"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> пристрій</item>
+      <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> пристрої</item>
+      <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> пристроїв</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> пристрою</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> буде розблоковувати автомобіль, якщо його підключити. <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> надає доступ до цього пристрою в будь-чиїх руках"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Підтвердити"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Вилучити надійний пристрій"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Налаштуйте надійний пристрій у супутньому додатку. Тоді ви зможете розблокувати профіль користувача, коли телефон підключиться до автомобіля."</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Завантажте супутній додаток на телефон"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. На телефоні виберіть <xliff:g id="CAR_NAME">%1$s</xliff:g>, щоб підключити пристрої"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock не може виявляти функцій безпеки цього пристрою. Щоб покращити захист, надійний пристрій може лише не дати автомобілю заблокуватись, якщо ви його розблокували. Ця функція працює, якщо пристрій поруч, навіть в іншої людини."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Додати пристрій <xliff:g id="DEVICE_NAME">%1$s</xliff:g> як надійний"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Пристрій <xliff:g id="DEVICE_NAME">%1$s</xliff:g> додано як надійний"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Не вдалося зареєструвати пристрій <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Додавши надійний пристрій, потрібно налаштувати спосіб автентифікації. Якщо пристрій не з вами, автентифікація знадобиться для доступу в профіль."</string>
     <string name="forget" msgid="3971143908183848527">"Забути"</string>
+    <string name="connect" msgid="5861699594602380150">"Підключити"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Від’єднати"</string>
     <string name="delete_button" msgid="5840500432614610850">"Видалити"</string>
     <string name="remove_button" msgid="6664656962868194178">"Видалити"</string>
     <string name="cancel" msgid="750286395700355455">"Скасувати"</string>
@@ -312,8 +491,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Вийти з демо-режиму"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Буде видалено демонстраційний обліковий запис і відновлено заводські налаштування системи. Усі дані користувача буде втрачено."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Вийти з демо-режиму"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"завершити налаштування"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"не зараз"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"ЗАКРИТИ"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Функція недоступна під час руху автомобіля."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Неможливо додати користувача під час руху автомобіля."</string>
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 26832bd..b2d20b66 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"مدھم اسکرین، ٹچ اسکرین، بیٹری"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"مدھم اسکرین، رات، ہلکا رنگ"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"نائٹ موڈ"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"نیٹ ورک اور انٹرنیٹ"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"موبائل نیٹ ورک"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"موبائل ڈیٹا"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"موبائل نیٹ ورک کے ذریعے ڈیٹا تک رسائی حاصل کریں"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"موبائل ڈیٹا آف کریں؟"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"ڈیٹا کا استعمال"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"ڈیٹا وارننگ اور حد"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"ایپ کے ڈیٹا کے استعمال کی سائیکل"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"ڈیٹا وارننگ سیٹ کریں"</string>
+    <string name="data_warning" msgid="116776633806885370">"ڈیٹا وارننگ"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"ڈیٹا کی حد سیٹ کریں"</string>
+    <string name="data_limit" msgid="227338836292511425">"ڈیٹا کی حد"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"ڈیٹا کا استعمال محدود کرنا"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"آپ کی گاڑی کی ہیڈ یونٹ آپ کی مقرر کردہ حد کو پہنچ جانے پر موبائل ڈیٹا کو آف کر دے گی۔\n\nچونکہ ڈیٹا کے استعمال کی پیمائش ہیڈ یونٹ کے ذریعے کی جاتی ہے اور آپ کا کیریئر استعمال کا حساب مختلف طریقے سے کر سکتا ہے لہذا ایک محتاط حد مقرر کرنے پر غور کریں۔"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"وائرلیس رسائی پوائنٹس کو ترتیب دیں اور ان کا نظم کریں"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi آن ہو رہا ہے…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi آف ہو رہا ہے…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi-Fi کی فہرست لوڈ ہو رہی ہے"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi غیر فعال ہے"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"نیٹ ورک کو بھولنے میں ناکام ہوگیا"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"نیٹ ورک سے مربوط ہونے میں ناکام رہا"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"نیٹ ورک شامل کریں"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi غیر فعال ہے"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"منسلک کریں"</string>
     <string name="wifi_password" msgid="5565632142720292397">"پاس ورڈ"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"پاس ورڈ دکھائیں"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"نیٹ ورک کا نام"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"SSID درج کریں"</string>
     <string name="wifi_security" msgid="158358046038876532">"سیکیورٹی"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"سگنل کی قوت"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"سگنل کی قوت"</string>
     <string name="wifi_status" msgid="5688013206066543952">"صورتحال"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"لنک کی رفتار"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"تعدد"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP پتہ"</string>
+    <string name="show_password" msgid="2074628020371139240">"پاس ورڈ دکھائیں"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"نیٹ ورک کا نام درج کریں"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"پاس ورڈ درج کریں"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"ناقص"</item>
-    <item msgid="2032262610626057081">"مناسب"</item>
-    <item msgid="3859756017461098953">"اچھا"</item>
-    <item msgid="1521103743353335724">"عمدہ"</item>
+    <item msgid="7683058295076342057">"کمزور"</item>
+    <item msgid="1639222824821660744">"مناسب"</item>
+    <item msgid="1838705897358163300">"اچھا"</item>
+    <item msgid="6067166649320533751">"عمدہ"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"بلوٹوتھ"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"بلوٹوتھ آن کریں"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"بلوٹوتھ"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"بلوٹوتھ غیر فعال کر دیا گیا"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4‎ GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5‎ GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"نیٹ ورک کی تفصیلات"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC پتہ"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP پتہ"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"سب نیٹ ماسک"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 پتے"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"گیٹ وے"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi کی ترجیحات"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"خود کار طور پر Wi‑Fi آن کریں"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"ہوم نیٹ ورک جیسے اعلی معیاری محفوظ نیٹ ورکس کے قریب ہونے پر Wi‑Fi واپس آن ہو جائے گا"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"مقام آف ہونے کی وجہ سے غیر دستیاب ہے۔ "<annotation id="link">"مقام"</annotation>" آن کریں۔"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi اسکیننگ آن کریں؟"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"آن کریں"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi اسکیننگ آن ہے"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"خودکار طور پر موبائل ڈیٹا پر سوئچ کریں"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi پر انٹرنیٹ تک رسائی نہ ہونے کی صورت میں موبائل ڈیٹا استعمال کریں۔ ڈیٹا کے استعمال کے چارجز عائد ہو سکتے ہیں۔"</string>
+    <string name="learn_more" msgid="8214605928933358604">"مزید جانیں"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"بلوٹوتھ"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"کنکشنز کا نظم کریں، آلہ کا نام اور دریافتگی کو سیٹ کریں"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"کمپیوٹر"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"ہیڈ سیٹ"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"فون"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"تصویر کشی"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"ہیڈ فون"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"ان پٹ پیریفرل"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"بلوٹوتھ"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"جوڑا بنائے ہوئے آلات"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"دستیاب آلات"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"کوئی جوڑا بنایا گيا آلہ نہیں ہے"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"کوئی دستیاب آلہ نہیں ہے"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"جوڑا بنایا ہوا آلہ"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"نام"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"اس کے لئے استعمال کریں"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"بلوٹوتھ آلہ کا نام تبدیل کریں"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"بے نام آلہ"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"جوڑا بنائے ہوئے آلات"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"نئے آلہ کا جوڑا بنائیں"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"جوڑا بنانے کے لیے بلوٹوتھ آن ہو جائے گا"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"آلہ کو غیر منسلک کریں؟"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"آپ کی گاڑی <xliff:g id="DEVICE_NAME">%1$s</xliff:g> سے غیر منسلک ہو جائے گی۔"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"گاڑی کا بلوٹوتھ پتہ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"آلہ کا بلوٹوتھ پتہ: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"گاڑی کا نام"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"اس گاڑی کا نام تبدیل کریں"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"آلہ کا نام تبدیل کریں"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"نام بدلیں"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"دستیاب آلات"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"پروفائلز"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"بلوٹوتھ جوڑا بنانے کی درخواست"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"جوڑا بنائیں اور منسلک کریں"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"بلوٹوتھ"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"بلوٹوتھ جوڑا بنانے کا کوڈ"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN میں حروف یا علامات شامل ہیں"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"جوڑا بنانے کا کوڈ ٹائپ کریں پھر Return یا Enter دبائیں"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"عام طور پر 0000 یا 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"جوڑا بنانے کی درخواست"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> کے ساتھ جوڑا بنانے کیلئے تھپتھپائیں۔"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"زبانیں"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"زبانیں اور ان پٹ"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"کی بورڈ"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"کی بورڈز کا نظم کریں"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"ٹیکسٹ ٹو اسپیچ کا آؤٹ پٹ"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"ترجیحی انجن"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"موجودہ انجن"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"اسپیچ کی شرح"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"پِچ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"ری سیٹ کریں"</string>
     <string name="sound_settings" msgid="3072423952331872246">"آواز"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"رِنگ والیوم"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"نیویگیشن والیوم"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"میڈیا"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"موسیقی اور ویڈیوز کیلئے والیوم سیٹ کریں"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"الارم"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"فون کی رِنگ ٹون"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"اطلاع کی ڈیفالٹ آواز"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"الارم کی ڈیفالٹ آواز"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"ایپس اور اطلاعات"</string>
+    <string name="all_applications" msgid="7798210477486822168">"سبھی ایپس دکھائیں"</string>
+    <string name="default_applications" msgid="1558183275638697087">"ڈیفالٹ ایپس"</string>
     <string name="applications_settings" msgid="794261395191035632">"ایپ کی معلومات"</string>
+    <string name="force_stop" msgid="2153183697014720520">"زبردستی روکیں"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"زبردستی روکیں؟"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"اگر آپ کسی ایپ کو زبردستی روک دیتے ہیں تو یہ غلط برتاؤ کر سکتی ہے۔"</string>
     <string name="disable_text" msgid="4358165448648990820">"غیر فعال کریں"</string>
     <string name="enable_text" msgid="1794971777861881238">"فعال کریں"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"اَن انسٹال کریں"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"اگر آپ اس ایپ کو غیر فعال کر دیتے ہیں تو ہو سکتا ہے Android اور دیگر ایپس ٹھیک طرح سے کام نہ کریں۔"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"ایپ کو غیر فعال کریں"</string>
     <string name="permissions_label" msgid="2701446753515612685">"اجازتیں"</string>
     <string name="application_version_label" msgid="8556889839783311649">"ورژن: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"کوئی اجازت نہیں دی گئی"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"کسی اجازت کی درخواست نہیں کی گئی"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"ڈیٹا کا استعمال"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"ایپ ڈیٹا کا استعمال"</string>
-    <string name="force_stop" msgid="2153183697014720520">"زبردستی روکیں"</string>
     <string name="computing_size" msgid="5791407621793083965">"حساب کتاب کیا جا رہا ہے…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> اضافی اجازتیں</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> اضافی اجازت</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"معاون اور صوتی ان پٹ"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"معاون ایپ"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"سکرین سے متن استعمال کریں"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"معاون ایپ کو سکرین مشمولات تک بطور متن رسائی کرنے کی اجازت دیں"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"اسکرین شاٹ استعمال کریں"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"معاون ایپ کو اسکرین کی ایک تصویر تک رسائی کرنے کی اجازت دیں"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"آٹو فل سروس"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"کوئی نہیں"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"منتخب کردہ"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"اسسٹنٹ آپ کے سسٹم پر زیر استعمال ایپس کے بارے میں معلومات، بشمول آپ کی اسکرین پر نظر آنے والی یا ایپس کے اندر قابل رسائی معلومات پڑھ سکے گی۔"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;یہ یقینی بنائیں کہ آپ کو اس ایپ پر اعتماد ہے&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; آٹو فل کی جانے والی چیزوں کا تعین کرنے کے لیے آپ کی اسکرین پر موجود چیزوں کو استعمال کرتی ہے۔"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"سروس شامل کریں"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"مقام"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"مقام کی حالیہ درخواستیں"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"مقام کی کوئی حالیہ درخواست نہیں ہے"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"ایپ کی سطح کی اجازتیں"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"اسکیننگ"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"مقام کی سروسز"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi‑Fi اسکیننگ"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Wi‑Fi کے آف ہونے پر بھی ایپس اور سروسز کو کسی بھی وقت Wi‑Fi نیٹ ورکس اسکین کرنے کی اجازت دیں۔ مثال کے طور، اسے مقام پر مبنی خصوصیات اور سروسز کو بہتر بنانے کے لیے استعمال کیا جا سکتا ہے۔"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"بلوٹوتھ اسکیننگ"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"بلوٹوتھ کے آف ہونے پر بھی ایپس اور سروسز کو کسی بھی وقت قریبی آلات اسکین کرنے کی اجازت دیں۔ مثال کے طور، اسے مقام پر مبنی خصوصیات اور سروسز کو بہتر بنانے کے لیے استعمال کیا جا سکتا ہے۔"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"سسٹم"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"سسٹم اپ ڈیٹس"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"سسٹم اپ ڈیٹس"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android ورژن"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android سیکیورٹی پیچ کی سطح"</string>
     <string name="model_info" msgid="4966408071657934452">"ماڈل"</string>
     <string name="baseband_version" msgid="2370088062235041897">"بیس بینڈ ورژن"</string>
     <string name="kernel_version" msgid="7327212934187011508">"کرنل ورژن"</string>
     <string name="build_number" msgid="3997326631001009102">"بلڈ نمبر"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"بلوٹوتھ پتہ"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"دستیاب نہیں ہے"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"صورتحال"</string>
     <string name="device_status" msgid="267298179806290920">"صورتحال"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"کاپی رائٹ"</string>
     <string name="license_title" msgid="936705938435249965">"لائسنس"</string>
     <string name="terms_title" msgid="5201471373602628765">"شرائط و ضوابط"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"سسٹم WebView لائسنس"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"سسٹم WebView لائسنسز"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"وال پیپرز"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"سیٹلائٹ تصاویر کے فراہم کنندگان:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"فریق ثالث کے لائسنسز"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"لائسنسز لوڈ کرنے میں ایک مسئلہ ہے۔"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"لوڈ ہو رہا ہے…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">اب آپ ڈویلپر بننے سے <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> قدم دور ہیں۔</item>
+      <item quantity="one">اب آپ ڈویلپر بننے سے <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> قدم دور ہیں۔</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"اب آپ ایک ڈیولپر ہیں!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"کوئی ضرورت نہیں ہے، آپ پہلے سے ہی ایک ڈیولپر ہیں۔"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"ڈیولپر کے اختیارات"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"دوبارہ ترتیب دینے کے اختیارات"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"نیٹ ورک، ایپس یا آلہ کو دوبارہ ترتیب دینا"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"نیٹ ورک کو دوبارہ ترتیب دیں"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"اس سے نیٹ ورک کی تمام ترتیبات ری سیٹ ہو جائیں گی، بشمول:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"موبائل ڈیٹا"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"بلوٹوتھ"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"گاڑی کے سبھی eSIMs کو مٹائیں"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"اس سے آپ کا سروس پلان منسوخ نہیں ہوگا۔"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIMs کو دوبارہ ترتیب نہیں دیا جا سکتا"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"نیٹ ورک منتخب کریں"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"ترتیبات دوبارہ ترتیب دیں"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"دوبارہ ترتیب دیں؟"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"نیٹ ورک کی سبھی ترتیبات کو دوبارہ ترتیب دیں؟ آپ اس کارروائی کو کالعدم نہیں کر سکتے ہیں!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"ترتیبات دوبارہ ترتیب دیں"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"نیٹ ورک کی ترتیبات کو دوبارہ ترتیب دیا گیا ہے"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"ایپ کی ترجیحات ری سیٹ کریں"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"یہ مندرجہ ذیل کے لیے تمام ترجیحات کو دوبارہ ترتیب دے گا:\n\n"<li>"غیر فعال کردہ ایپس"</li>\n<li>"غیر فعال کردہ ایپس کی اطلاعات"</li>\n<li>"کارروائیوں کے لیے ڈیفالٹ ایپلیکیشنز"</li>\n<li>"ایپس کے لیے پس منظر کے ڈیٹا کی پابندیاں"</li>\n<li>"کوئی اجازتی پابندیاں"</li>\n\n"آپ کسی ایپ کے ڈیٹا سے محروم نہیں ہوں گے۔"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"ایپس کو ری سیٹ کریں"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"ایپ کی ترجیحات کو ری سیٹ کر دیا ہے"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"سبھی ڈیٹا کو حذف کریں (فیکٹری ری سیٹ)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"یہ آپ کی گاڑی کے ہیڈ یونٹ سے سبھی ڈیٹا کو صاف کر دے گا، بشمول:\n\n"<li>"آپ کا Google اکاؤنٹ"</li>\n<li>"سسٹم اور ایپ ڈیٹا اور ترتیبات"</li>\n<li>"ڈاؤن لوڈ کردہ ایپس"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"آپ فی الحال مندرجہ ذیل اکاؤنٹس میں سائن ان ہیں:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"اس آلہ پر دیگر صارفین موجود ہیں۔"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"گاڑی کو دوبارہ ترتیب دیں"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"دوبارہ ترتیب دیں؟"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"آپ کی سبھی ذاتی معلومات اور ڈاؤن لوڈ کردہ ایپس کو صاف کریں؟ آپ اس کارروائی کو کالعدم نہیں کر سکتے ہیں!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"ہر چیز صاف کریں"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"صاف ہو رہا ہے"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"براہ کرم انتظار کریں..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"تاریخ اور وقت"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"تاریخ اور وقت سیٹ کریں"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"تاریخ، وقت، ٹائم زون اور فارمیٹس کو سیٹ کریں"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"ٹائم زون کے لحاظ سے ترتیب دیں"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"تاریخ"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"وقت"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"صارف کو شامل کریں"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"اکاؤنٹ شامل کریں"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"صارف کو حذف کریں"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"نیا صارف"</string>
-    <string name="user_guest" msgid="3465399481257448601">"مہمان"</string>
     <string name="user_admin" msgid="1535484812908584809">"منتظم"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"منتظم کے طور پر سائن ان کردہ"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"منتظم کی سبھی اجازتیں"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"منتظم بنائیں"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"صارف دیگر منتظمین سمیت صارفین کو حذف اور سسٹم کو فیکٹری ری سیٹ نہیں کر سکے گا۔"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"یہ کارروائی منسوخ نہیں کی جا سکتی۔"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"جی ہاں، منتظم بنائیں"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"نئے صارفین بنائیں"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"فون کالز کریں"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"کار کے موبائل ڈیٹا کے ذریعے پیغام رسانی کی جا رہی ہے"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"نئی ایپس انسٹال کریں"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"ایپس کو اَن انسٹال کریں"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"صارف کو شامل کریں"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"نیا صارف"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"نیا صارف شامل کریں؟"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"جب آپ ایک نیا صارف شامل کرتے ہیں تو اس شخص کو اپنی جگہ کو ترتیب دینے کی ضرورت ہوتی ہے۔"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"کوئی بھی صارف دیگر سبھی صارفین کیلئے ایپس کو اپ ڈیٹ کر سکتا ہے۔"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"صارف کی حد مکمل ہو گئی"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">آپ زیادہ سے زیادہ <xliff:g id="COUNT">%d</xliff:g> صارفین بنا سکتے ہیں۔</item>
+      <item quantity="one">صرف ایک صارف بنایا جا سکتا ہے۔</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"نیا صارف بنانا ناکام ہو گیا"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"اس صارف کو حذف کریں؟"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"سبھی ایپس اور ڈیٹا حذف ہو جائیں گے۔"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"صارف کو حذف کرنے میں ناکامی۔"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"برخاست کریں"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"دوبارہ کوشش کریں"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"آخری صارف کو حذف کریں؟"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"اس کار کیلئے صرف باقی صارف کو حذف کرنے کے بعد، ایک نیا منتظم صارف بنایا جائے گا۔"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"اس صارف سے وابستہ سبھی ڈیٹا، ترتیبات، اور ایپس کو حذف کر دیا جائے گا۔ آپ کو سسٹم دوبارہ ترتیب دینا ہوگا۔"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"نیا منتظم منتخب کریں"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"آپ کو کم از کم ایک منتظم کی ضرورت ہے۔ اسے حذف کرنے کیلئے، پہلے ایک متبادل کا انتخاب کریں۔"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"منتظم منتخب کریں"</string>
+    <string name="user_guest" msgid="3465399481257448601">"مہمان"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"مہمان"</string>
     <string name="user_switch" msgid="6544839750534690781">"سوئچ کریں"</string>
     <string name="current_user_name" msgid="3813671533249316823">"آپ (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"نام"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"ترتیب نہیں دیا گیا"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"صارف نام میں ترمیم کریں"</string>
     <string name="users_list_title" msgid="770764290290240909">"صارفین"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s کو اجازتیں دی گئیں"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"اکاؤنٹس"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"صارف"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"اکاؤنٹ شامل کریں"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"کوئی اکاؤنٹ شامل نہیں ہے"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> کے لئے اکاؤنٹس"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"خودکار طور پر ڈیٹا سِنک کریں"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"ایپس کو خودکار طور پر ڈیٹا ریفریش کرنے دیں"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"ڈیٹا آٹو سنک کریں کو آن کریں؟"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"آپ ویب پر اپنے اکاؤنٹس میں جو بھی تبدیلیاں کریں گے وہ آپ کے آلہ پر خودکار طور پر کاپی ہو جائیں گی۔\n\nایسی تبدیلیاں جو آپ فون پر کرتے ہیں انہیں کچھ اکاؤنٹس خودکار طور پر ویب پر بھی کاپی کر سکتے ہیں۔ Google اکاؤنٹ اس طریقے سے کام کرتا ہے۔"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"ڈیٹا آٹو سنک کریں کو آف کریں؟"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"اس سے ڈیٹا کی بچت ہوگی، لیکن آپ کو حالیہ معلومات اکٹھا کرنے کیلئے ہر ایک اکاؤنٹ کو دستی طور پر سنک کرنا ہوگا۔ اور اپ ڈیٹس ہونے پر آپ کو اطلاعات موصول نہیں ہوں گی۔"</string>
     <string name="account_details_title" msgid="7529571432258448573">"اکا‌‌‌ؤنٹ کی معلومات"</string>
     <string name="add_account_title" msgid="5988746086885210040">"اکاؤنٹ شامل کریں"</string>
     <string name="add_an_account" msgid="1072285034300995091">"ایک اکاؤنٹ شامل کریں"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"اکاؤنٹ ہٹائیں"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"اکاؤنٹ ہٹائیں؟"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"اس اکاؤنٹ کو ہٹانے سے اس کے تمام پیغامات، رابطے اور اس آلے کا دیگر ڈیٹا حذف ہو جائے گا!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"آپ کے منتظم کی طرف سے اس تبدیلی کی اجازت نہیں ہے"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"اس صارف کو ہٹا دیں؟"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"سبھی ایپس اور ڈیٹا حذف ہو جائیں گے۔"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"صارف کو ہٹانا ناکام ہو گیا۔"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"دوبارہ کوشش کریں؟"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"برخاست کریں"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"دوبارہ کوشش کریں"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"نیا صارف شامل کریں؟"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"جب آپ ایک نیا صارف شامل کرتے ہیں تو اس شخص کو اپنی جگہ کو ترتیب دینے کی ضرورت ہوتی ہے۔"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"کوئی بھی صارف دیگر سبھی صارفین کیلئے ایپس کو اپ ڈیٹ کر سکتا ہے۔"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"اکاؤنٹ کو ہٹانے میں ناکامی۔"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"اکاؤنٹ کی مطابقت پذیری"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_2">%2$d</xliff:g> کے <xliff:g id="ID_1">%1$d</xliff:g> آئٹمز کیلئے مطابق پذیری آن ہے"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"سبھی آئٹمز کیلئے مطابقت پذیری آن ہے"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"سبھی آئٹمز کیلئے مطابقت پذیری آف ہے"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"مطابقت پذیری آف ہے"</string>
+    <string name="sync_error" msgid="6698021343089247914">"مطابقت پذیری کی خرابی"</string>
+    <string name="last_synced" msgid="4745124489150101529">"آخری مطابقت پذیری <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"ابھی مطابقت پذیری ہو رہی ہے…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"ابھی مطابقت پذیری کرنے کے لیے تھپتھپائیں<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"ابھی مطابقت پذیری کریں"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"مطابقت پذیری منسوخ کریں"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"مطابقت پذیری میں فی الحال دشواریاں پیش آ رہی ہیں۔ یہ جلد ہی واپس آ جائے گا۔"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"سیکیورٹی"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"اسکرین لاک"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"کوئی نہیں"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"پاس ورڈ"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"لاک کی قسم منتخب کریں"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"اسکرین لاک کے اختیارات"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"لاک کے اختیارات"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"اپنا پیٹرن درج کریں"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"تصدیق کریں"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"دوبارہ ڈرا کریں"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"اسکرین لاک سیٹ کریں"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"اپنا PIN منتخب کریں"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"اپنا پیٹرن منتخب کریں"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"اپنا پاس ورڈ منتخب کریں"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"اپنا پاسورڈ منتخب کریں"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"موجودہ اسکرین لاک"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"سیکیورٹی کیلئے پیٹرن سیٹ کریں"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"صاف کریں"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"آپ کے IT منتظم نے عمومی پاس ورڈز کو مسدود کر دیا ہے۔ کوئی دوسرا پاس ورڈ آزمائیں۔"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ہندسوں کی صعودی، نزولی یا مکرر ترتیب کی اجازت نہیں ہے۔"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"اسکرین لاک کے اختیارات"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> دنوں پہلے"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"بھروسہ مند آلہ شامل کریں"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"بھروسہ مند آلات"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> آلات</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> آلہ</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"منسلک ہونے پر آپ کا <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> اس کار کو غیر مقفل کر دے گا۔ اگر کوئی شخص آپ کا <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> لیتا ہے تو اسے اس آلہ تک رسائی حاصل ہو سکتی ہے"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"تصدیق کریں"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"بھروسہ مند آلہ ہٹائیں"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"ہو گیا"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"بھروسہ مند آلہ کو سیٹ اپ کرنے کے لیے ساتھی ایپ کا استعمال کریں۔ ایک بار سیٹ اپ ہو جانے پر، وہیکل کے ذریعے آپ کا فون دریافت کر لینے پر آپ اپنے صارف پروفائل کو غیر مقفل کرنے کے اہل ہوں گے"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1۔ اپنے فون پر ساتھی ایپ ڈاؤن لوڈ کریں"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2۔ آلات کو جوڑنے کے لیے فون پر <xliff:g id="CAR_NAME">%1$s</xliff:g> منتخب کریں"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock اس آلہ کی سیکیورٹی کی خصوصیات کا پتا نہیں لگا سکتا ہے۔ اپنی کار کی حفاظت کی مدد کے لیے، آپ کے ذریعے پہلے سے ہی غیر مقفل کر دئے جانے پر صرف بھروسہ مند آلہ ہی آپ کی کار کو غیر مقفل رکھنے کا اہل ہوگا۔ آپ کا بھروسہ مند آلہ قریب ہونے پر کار کو غیر مقفل رکھ پائے گا، اس وقت بھی جب کوئی اور اسے پکڑے ہوئے ہے۔"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"بطور بھروسہ مند آلہ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کو شامل کریں"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> کو بھروسہ مند آلہ کے طور پر کامیابی کے ساتھ شامل کر لیا گیا"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> اندراج ناکام ہوگیا"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"بھروسہ مند آلہ شامل کرنے کے لیے آپ کو آگے ایک تصدیقی طریقہ سیٹ کرنا ہوگا۔ اگر آپ کے پاس بھروسہ مند آلہ نہیں ہے تو آپ کے پروفائل تک رسائی حاصل کرنے کے لیے تصدیق درکار ہوگی۔"</string>
     <string name="forget" msgid="3971143908183848527">"بھول جائیں"</string>
+    <string name="connect" msgid="5861699594602380150">"منسلک کریں"</string>
+    <string name="disconnect" msgid="6140789953324820336">"غیر منسلک کریں"</string>
     <string name="delete_button" msgid="5840500432614610850">"حذف کریں"</string>
     <string name="remove_button" msgid="6664656962868194178">"ہٹائیں"</string>
     <string name="cancel" msgid="750286395700355455">"منسوخ کریں"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"ڈیمو موڈ سے باہر نکلیں"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"اس سے ڈیمو اکاؤنٹ اور فیکٹری ڈیٹا کی دوبارہ ترتیب کا سسٹم حذف ہو جائے گا۔ تمام صارف ڈیٹا غائب ہو جائیں گے۔"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"ڈیمو سے باہر نکلیں"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"سیٹ اپ مکمل کریں"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"ابھی نہیں"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"برخاست کریں"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"ڈرائیونگ کے دوران یہ خصوصیت دستیاب نہیں ہے۔"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"ڈرائیونگ کے دوران صارف کو شامل نہیں کیا جا سکتا۔"</string>
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 4c7824a..0d7eb95 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"xira ekran, sensorli ekran, batareya"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"xira ekran, tun, tus"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Tungi rejim"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Tarmoq va Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mobil tarmoq"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobil internet"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Mobil internet trafik sarfi"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobil internet faolsizlantirilsinmi?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Trafik sarfi"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Ogohlantirish va limit"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Statistika davri"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Trafik sarfi ogohlantirishi"</string>
+    <string name="data_warning" msgid="116776633806885370">"Ogohlantirishlar"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Trafik cheklovini belgilash"</string>
+    <string name="data_limit" msgid="227338836292511425">"Trafik limiti"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Trafik sarfini cheklash"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Siz belgilagan cheklovga yetib kelgach, avtomobilingizning bosh qurilmasidagi mobil internet oʻchadi.\n\nInternetdan foydalanish miqdori avtomobilingizning bosh qurilmasi tomonidan hisoblangani uchun aloqa operatoringizning hisob-kitoblari undan farq qilishi mumkin. Shuning uchun, cheklov kiritishda zaxira miqdorini ham inobatga oling."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Ulanish nuqtalarini sozlash &amp; boshqarish"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Wi‑Fi yoqilmoqda…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Wi‑Fi faolsizlantirilmoqda…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Wi‑Fi roʻyxati yuklanmoqda"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi faolsizlantirildi"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Tarmoqni unutmadi"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Tarmoqqa ulanmadi"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Tarmoq qo‘shish"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi‑Fi faolsizlantirildi"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Ulanish"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Parol"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Parol berkitilmasin"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Tarmoq nomi"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Tarmoq nomini (SSID) kiriting"</string>
     <string name="wifi_security" msgid="158358046038876532">"Xavfsizlik"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Signal darajasi"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Signal darajasi"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Holati"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Ulanish tezligi"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Chastota"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP manzili"</string>
+    <string name="show_password" msgid="2074628020371139240">"Parol berkitilmasin"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Tarmoq nomini kiriting"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Parolni kiriting"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Juda past"</item>
-    <item msgid="2032262610626057081">"Past"</item>
-    <item msgid="3859756017461098953">"Yaxshi"</item>
-    <item msgid="1521103743353335724">"A’lo"</item>
+    <item msgid="7683058295076342057">"Juda past"</item>
+    <item msgid="1639222824821660744">"Past"</item>
+    <item msgid="1838705897358163300">"Yaxshi"</item>
+    <item msgid="6067166649320533751">"A’lo"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bluetoothni yoqing"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Bluetooth faolsizlantirildi"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbit/s"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GGs"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GGs"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Tarmoq tafsilotlari"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC manzil"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP manzil"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Quyi tarmoq niqobi"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 manzillar"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Shlyuz"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi sozlamalari"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Wi‑Fi aloqasini avtomatik yoqish"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Signal kuchli boʻlsa, Wi-Fi avtomatik yonadi (masalan, uyda)"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Ishlamaydi – "<annotation id="link">"Joylashuv"</annotation>" xizmati oʻchiq. Joylashuvni yoqing."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Wi‑Fi tarmoqlarni qidirish funksiyasi yoqilsinmi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Yoqish"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Wi‑Fi tarmoqlarni qidirish funksiyasi yoqildi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Mobil internetga avtomatik ulanish"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Wi-Fi orqali Internet aloqasi yoʻqligida mobil internetdan foydalanish. Sarflangan trafik uchun haq olinishi mumkin."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Batafsil"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Ulanishlar boshqaruvi, qurilmani nomlash va topiluvchanlik"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Kompyuter"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Garnitura"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Telefon"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Kamera"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Quloqchin"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Kiritish qurilmasi"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Ulangan qurilmalar"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Mavjud qurilmalar"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Hech qanday qurilma ulanmagan"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Hech qanday qurilma yo‘q"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Ulangan qurilma"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Nomi"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Foydalanish maqsadi"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Bluetooth qurilmasi nomini o‘zgartiring"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Nomsiz qurilma"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Ulangan qurilmalar"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Yangi qurilmani ulash"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Ulanish uchun Bluetooth yoqiladi"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Qurilma uzilsinmi?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Avtomobilingiz <xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasidan uziladi."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Avtomobilning Bluetooth manzili: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Qurilmaning Bluetooth manzili: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Avtomobil nomi"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Bu avtomobilni qayta nomlang"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Qurilmani qayta nomlash"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Qayta nomlash"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Mavjud qurilmalar"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Profillar"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Bluetooth orqali ulanish so‘rovi"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Juftlash va ulash"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Bluetooth orqali ulanish kodi"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN kod harflar va belgilardan iborat bo‘ladi"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Ulanish kodini kiriting va keyin “Return” yoki “Enter” tugmasini bosing"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Odatda 0000 yoki 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Juftlash talabi"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasiga ulanish uchun bosing."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Tillar"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Tillar va matn kiritish"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Klaviatura"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Klaviaturalarni boshqarish"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Nutq sintezi"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Standart sintezator"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Joriy sintezator"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Nutq tezligi"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Ohang"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Asliga qaytarish"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Ovoz"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Chaqiruv tovushi"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Navigatsiya tovushi"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Media"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Musiqa va videolar uchun ovoz balandligini sozlash"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Signal"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Telefon ringtoni"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Standart bildirishnoma tovushi"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Standart signal"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Ilovalar va bildirishnomalar"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Barcha ilovalar"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Standart ilovalar"</string>
     <string name="applications_settings" msgid="794261395191035632">"Ilova haqida"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Majburan to‘xtatish"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Majburan toʻxtatilsinmi?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Ilovani majburan toʻxtatish uning ishlashiga taʼsir qilishi mumkin."</string>
     <string name="disable_text" msgid="4358165448648990820">"Faolsizlantirish"</string>
     <string name="enable_text" msgid="1794971777861881238">"Yoqish"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Oʻchirib tashlash"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Agar bu ilovani faolsizlantirsangiz, Android va boshqa ilovalar bundan buyon kutilganidek ishlamasligi mumkin."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Ilovani faolsizlantirish"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Ruxsatnomalar"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Versiyasi: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Hech qanday ruxsat berilmagan"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Hech qanday ruxsat so‘ralmagan"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Trafik sarfi"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Ilova sarflagan trafik"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Majburan to‘xtatish"</string>
     <string name="computing_size" msgid="5791407621793083965">"Hisoblanmoqda…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ta qo‘shimcha ruxsat</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ta qo‘shimcha ruxsat</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Assistent va ovoz bilan yozish"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Yordamchi ilova"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Ekrandagi matndan foydalanish"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Yordamchi ilovaga ekrandagi matndan foydalanishga ruxsat bering"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Skrinshotdan foydalanish"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Yordamchi ilovaga skrinshotdan foydalanishga ruxsat bering"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Avtomatik kiritish xizmati"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Hech qanday"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Tanlangan"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Assistent tizimda ishlatilayotgan ilovalar haqidagi axborotni, masalan, ekranga chiqib turgan yoki ilovalar orqali kiriladigan axborotlarni oʻqiy oladi."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Bu ilova ishonchli ekanini tekshiring&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ekraningizda nimani avtomatik kiritish kerakligini aniqlaydi."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Xizmat kiritish"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Joylashuv"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Oxirgi joylashuv axboroti talablari"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Hech qanday joylashuvga oid talablar olinmagan"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Ilovalar uchun ruxsatlar"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Qidiruv"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Joylashuv axborotiga asoslangan xizmatlar"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi orqali aniqlash"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Istalgan vaqt ilova va xizmatlarga hatto Wi-Fi yonmasa ham Wi-Fi tarmoqlarni qidirish uchun ruxsat berish mumkin. Joylashuv axborotiga asoslangan funksiya va xizmatlarni yaxshilashda ishlatilishi mumkin."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Bluetooth orqali aniqlash"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Istalgan vaqt ilova va xizmatlarga hatto Bluetooth yonmasa ham Wi-Fi tarmoqlarni qidirish uchun ruxsat berish mumkin. Joylashuv axborotiga asoslangan funksiya va xizmatlarni yaxshilashda ishlatilishi mumkin."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Tizim"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Tizimni yangilash"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Tizimni yangilash"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android versiyasi"</string>
     <string name="security_patch" msgid="4794276590178386903">"Tizim xavfsizligi uchun yangilanish"</string>
     <string name="model_info" msgid="4966408071657934452">"Modeli"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Aloqa moduli versiyasi"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Yadro versiyasi"</string>
     <string name="build_number" msgid="3997326631001009102">"Nashr raqami"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth manzili"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Mavjud emas"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Holati"</string>
     <string name="device_status" msgid="267298179806290920">"Holati"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Mualliflik huquqi belgisi"</string>
     <string name="license_title" msgid="936705938435249965">"Litsenziya"</string>
     <string name="terms_title" msgid="5201471373602628765">"Foydalanish shartlari"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"WebView tizim litsenziyasi"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"WebView tizim litsenziyalari"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Orqa fon rasmlari"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Sun’iy yo‘ldosh tasvirlari:\n© CNES 2014/Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Uchinchi tomon litsenziyalari"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Litsenziyalarni yuklashda muammo yuz berdi."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Yuklanmoqda…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Dasturchi boʻlishingizga atigi <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> qadam qoldi.</item>
+      <item quantity="one">Dasturchi boʻlishingizga atigi <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> qadam qoldi.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Siz endi dasturchisiz!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Shart emas, siz allaqachon dasturchi rejimidasiz."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Ishlab chiquvchi sozlamalari"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Asliga qaytarish"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Tarmoq, ilovalar yoki qurilma sozlamalarini tiklash"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Tarmoqni asliga qaytarish"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Barcha sozlamalar asliga qaytariladi, shuningdek:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Mobil internet"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Mashinadagi barcha eSIMlarni tozalash"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Bunda xizmatining tarif rejasi bekor qilinmaydi."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"eSIM kartalar tiklanmadi"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Tarmoq tanlash"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Asliga qaytarish"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Asliga qaytarilsinmi?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Barcha tarmoq sozlamalari qayta tiklansinmi? Bu amalni ortga qaytarib bo‘lmaydi!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Asliga qaytarish"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Tarmoq sozlamalari qayta tiklandi"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Ilova parametrlarini tiklash"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Quyidagilar uchun barcha sozlamalar dastlabki holiga qaytariladi:\n\n"<li>"Nofaol ilovalar"</li>\n<li>"Nofaol ilova bildirishnomalari"</li>\n<li>"Standart ish ilovalari"</li>\n<li>"Ilovalar uchun fondagi trafik cheklovlari"</li>\n<li>"Har qanday ruxsat cheklovlari"</li>\n\n"Hech qanday maʼlumot tozalab tashlanmaydi."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"OK"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Ilova parametrlari tiklandi"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Barcha ma’lumotlarni tozalash (zavod sozlamalarini tiklash)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Bunda avtomobilning bosh qurilmasidagi barcha axborot, jumladan, quyidagilar tozalab tashlanadi:\n\n"<li>"Google hisobingiz"</li>\n<li>"Tizim va ilovaga oid axborot hamda sozlamalar"</li>\n<li>"Yuklab olingan ilovalar"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Siz hozir tizimga quyidagi hisoblardan kirgansiz:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Bu avtomobilda boshqa foydalanuvchilar ham bor."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Avtomobilni asliga qaytarish"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Asliga qaytarilsinmi?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Barcha shaxsiy maʼlumotlaringiz va yuklab olingan ilovalar oʻchirib tashlansinmi? Bu amalni ortga qaytarish imkonsiz!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Hammasini tozalash"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Tozalanmoqda"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Kutib turing..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Sana va vaqt"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Sana va vaqt o‘rnatish"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Sana, vaqt, vaqt zonasi, &amp; formatlarini o‘rnatish"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Vaqt mintaqasi bo‘yicha saralash"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Sana"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Vaqt"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Foydalanuvchi"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Hisob qo‘shish"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Foydalanuvchini o‘chirib tashlash"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Yangi foydalanuvchi"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Mehmon"</string>
     <string name="user_admin" msgid="1535484812908584809">"Administrator"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Administrator sifatida kirgansiz"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Barcha administrator ruxsatlari"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Administrator sifatida tayinlash"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Bu foydalanuvchi boshqa foydalanuvchilarni, jumladan, administratorlarni o‘chirib tashlashi hamda tizim sozlamalarini asliga qaytarishi mumkin."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Bu amalni ortga qaytarish imkonsiz."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Ha, administrator sifatida tayinlansin"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Yangi foydalanuvchilar yaratish"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Chaqiruvlarni amalga oshirish"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Avtomobil interneti orqali SMS"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Yangi ilovalar o‘rnatish"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Ilovalarni o‘chirib tashlash"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Foydalanuvchi"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Yangi foydalanuvchi"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Foydalanuvchi qo‘shilsinmi?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yangi profil qo‘shilgach, uni sozlash lozim."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Limitga yetib keldi"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ta foydalanuvchi yaratish mumkin.</item>
+      <item quantity="one">Faqat bitta foydalanuvchi yaratish mumkin.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Yangi foydalanuvchi yaratilmadi"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Olib tashlansinmi?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Barcha ilovalar va ma’lumotlar o‘chirib tashlanadi."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Foydalanuvchi olib tashlanmadi."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Yopish"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Qayta urinish"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Olib tashlansinmi?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Bu avtomobil uchun oxirgi foydalanuvchi olib tashlangandan keyin yangi administrator yaratiladi."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Bu foydalanuvchiga aloqador barcha ma’lumotlar, sozlamalar va ilovalar o‘chirib tashlanadi. Tizimni qaytadan sozlashingiz lozim bo‘ladi."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Yangi adminisratorni tanlang"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Kamida bitta administrator lozim. Bunisini olib tashlasangiz, o‘rniga boshqasini tayinlang."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Administratorni tanlang"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Mehmon"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Mehmon"</string>
     <string name="user_switch" msgid="6544839750534690781">"Almashtirish"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Siz (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Ism"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Sozlanmagan"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Foydalanuvchi nomini tahrirlash"</string>
     <string name="users_list_title" msgid="770764290290240909">"Foydalanuvchilar"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"%1$s uchun ruxsatlar berildi"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Hisoblar"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Foydalanuvchi"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Hisob qo‘shish"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Hech qanday hisobga kirilmagan"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> – hisoblar"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Avtomatik sinxronlash"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Ilovalar maʼlumotlari avtomatik yangilanadi"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Avto-sinxronlash yoqilsinmi?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Internet orqali hisoblaringizda qilingan har qanday oʻzgarish avtomatik tarzda telefoningizda ham aks etadi.\n\n Ayrim hisoblar telefon orqali qilingan oʻzgarishlarni internetga nusxalash imkoniyati ham mavjud. Google hisobi xuddi shunday ishlaydi."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Avto-sinxronlash bas qilinsinmi?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Trafik tejaladi, lekin oxirgi axborotlarni yigʻish uchun har bir hisobni oʻzingiz sinxronlashingiz kerak. Shuningdek, oʻzgarishlar yuz berganda sizga bildirishnomalar keladi."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Hisob haqida"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Hisob qo‘shish"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Yangi hisob qo‘shish"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Hisobni olib tashlash"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Hisob olib tashlansinmi?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Ushbu hisob o‘chirilganda unga bog‘liq barcha xabar, kontakt va boshqa ma’lumotlar qurilmadan o‘chib ketadi."</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Ushbu o‘zgarishni amalga oshirish uchun administrator ruxsat bermagan"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Foyd-chi o‘chirilsinmi?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Barcha ilovalar va ma’lumotlar o‘chirib tashlanadi."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Foydalanuvchi olib tashlanmadi"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Takrorlansinmi?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Yopish"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Qayta urinish"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Foydalanuvchi qo‘shilsinmi?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Yangi profil qo‘shilgach, uni sozlash lozim."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Qurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Hisob olib tashlanmadi."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Hisobni sinxronlash"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Sinxronizatsiya ayrim elementlar uchun yoniq (<xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g>)"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Sinxronizatsiya barcha elementlar uchun yoniq"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Sinxronizatsiya hamma narsa uchun o‘chiq"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Sinxronizatsiya yoqilmagan"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Sinxronizatsiyada xato"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Oxirgi marta <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>da sinxronlandi"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Sinxronlanmoqda…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Hozir bosib sinxronlang <xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Hozir sinxronlash"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Sinxronizatsiyani bekor qilish"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Sinxronizatsiyada muammo bor. Tez orada qayta tiklanadi."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Xavfsizlik"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Ekran qulfi"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Hech qanday"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Parol"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Qulf turini tanlang"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Ekran qulfi parametrlari"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Qulflash parametrlari"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Grafik kalitni chizing"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Tasdiqlash"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Qayta chizish"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Ekran qulfini sozlang"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"PIN kod tanlang"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Grafik kalit yarating"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Parol tanlang"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Parol tanlang"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Joriy ekran qulfi"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Xavfsizlik uchun grafik kalit o‘rnating"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Tozalash"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Oddiy parollar AT admini tomonidan bloklangan. Murakkabroq parol tanlang."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Oshib boruvchi, kamayib boruvchi yoki qaytarilgan ketma-ket raqamlarga ruxsat berilmaydi."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran qulfi parametrlari"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> kun oldin"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Ishonchli qurilma kiritish"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Ishonchli qurilmalar"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ta qurilma</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ta qurilma</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> avtomobilga ulanishi bilan uning qulfini ochadi. <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> yordamida boshqalar ham bu qurilmaga kira oladi"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"OK"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ishonchli qurilmani olib tashlash"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"OK"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Ishonchli qurilma sifatida sozlash uchun hamroh ilovadan foydalaning. Sozlangandan keyin telefoningizni avtomobil tanishi bilan foydalanuvchi profilingizni qulfdan chiqarish imkoni paydo boʻladi"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Telefoningiz orqali hamroh ilovani yuklab oling"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Qurilmalarni bir-biriga ulash uchun telefoningizdan <xliff:g id="CAR_NAME">%1$s</xliff:g> nomini tanlang"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock bu qurilmaning xavfsizlik funksiyalarini aniqlay olmadi. Avtomobilingizning qulfini aynan siz ochganingizda, himoyalash maqsadida ishonchli qurilma uni shu holda saqlab turadi. Ishonchli qurilmangizni boshqa odam ushlab turgan holda ham, avtomobilingizga yaqinlashgan vaqtda uni qulfdan chiqara oladi."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasi ishonchli qurilma sifatida kiritilsin"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ishonchli qurilma sifatida kiritildi."</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qayd qilinmadi"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ishonchl qurilma kiritgandan keyin autentifikatsiya usulini sozlash talab qilinadi. Agar ishonchli qurilma yoningizda boʻlmasa, autentifikatsiya profilingizga kirishda talab etiladi."</string>
     <string name="forget" msgid="3971143908183848527">"Olib tashlash"</string>
+    <string name="connect" msgid="5861699594602380150">"Ulash"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Uzish"</string>
     <string name="delete_button" msgid="5840500432614610850">"O‘chirish"</string>
     <string name="remove_button" msgid="6664656962868194178">"Ha"</string>
     <string name="cancel" msgid="750286395700355455">"Bekor qilish"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Demo rejimdan chiqing"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Bunda demo hisob o‘chirib tashlanadi va tizim zavod sozlamalariga qaytariladi. Barcha foydalanuvchi ma’lumotlari tozalab tashlanadi."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Demodan chiqish"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"sozlashni tugatish"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"hozir emas"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"YOPISH"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Avtomobilda harakatlanayotganda bu funksiya ishlamaydi."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Avtomobilda harakatlanayotganda foydalanuvchi qo‘shilmaydi."</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 455af62..0953116 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"màn hình mờ, màn hình cảm ứng, pin"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"làm mờ màn hình, ban đêm, phủ màu"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Chế độ ban đêm"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Mạng và Internet"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Mạng di động"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dữ liệu di động"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Truy cập dữ liệu bằng mạng di động"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Tắt dữ liệu di động?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Mức sử dụng dữ liệu"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Hạn mức và cảnh báo dữ liệu"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Chu kỳ dùng dữ liệu ứng dụng"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Đặt cảnh báo dữ liệu"</string>
+    <string name="data_warning" msgid="116776633806885370">"Cảnh báo dữ liệu"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Đặt hạn mức dữ liệu"</string>
+    <string name="data_limit" msgid="227338836292511425">"Hạn mức dữ liệu"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Giới hạn mức sử dụng dữ liệu"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Thiết bị đầu trên phương tiện của bạn sẽ tắt dữ liệu di động khi đạt đến hạn mức mà bạn đã đặt.\n\nVì mức sử dụng dữ liệu là do thiết bị đầu tính toán và nhà mạng có thể có cách tính khác, nên hãy cân nhắc đặt hạn mức vừa phải."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Thiết lập và quản lý điểm truy cập không dây"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Đang bật Wi‑Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Đang tắt Wi‑Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Đang tải danh sách Wi‑Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Đã tắt Wi-Fi"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Không bỏ qua mạng được"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Không kết nối được với mạng"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Thêm mạng"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Đã tắt Wi-Fi"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Kết nối"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Mật khẩu"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Hiển thị mật khẩu"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Tên mạng"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Nhập SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Bảo mật"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Cường độ tín hiệu"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Cường độ tín hiệu"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Trạng thái"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Tốc độ liên kết"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Tần số"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Địa chỉ IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Hiển thị mật khẩu"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Nhập tên mạng"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Nhập mật khẩu"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Kém"</item>
-    <item msgid="2032262610626057081">"Khá tốt"</item>
-    <item msgid="3859756017461098953">"Tốt"</item>
-    <item msgid="1521103743353335724">"Tuyệt vời"</item>
+    <item msgid="7683058295076342057">"Kém"</item>
+    <item msgid="1639222824821660744">"Khá tốt"</item>
+    <item msgid="1838705897358163300">"Tốt"</item>
+    <item msgid="6067166649320533751">"Tuyệt vời"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Bật Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"Đã tắt Bluetooth"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mb/giây"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2,4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Chi tiết mạng"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Địa chỉ MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Địa chỉ IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Mặt nạ mạng con"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Địa chỉ IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Cổng"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Tùy chọn Wi‑Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Tự động bật Wi-Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"Wi-Fi sẽ bật lại khi ở gần các mạng đã lưu chất lượng cao, như mạng gia đình của bạn"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Không hoạt động vì vị trí đang tắt. Hãy bật "<annotation id="link">"vị trí"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Bật tính năng quét tìm mạng Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Bật"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Đã bật tính năng quét tìm mạng Wi‑Fi"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Tự động chuyển sang dữ liệu di động"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Sử dụng dữ liệu di động khi Wi‑Fi không truy cập được Internet. Bạn có thể mất thêm phí sử dụng dữ liệu."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Tìm hiểu thêm"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Quản lý kết nối, đặt tên thiết bị và khả năng phát hiện thiết bị"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Máy tính"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Tai nghe"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Điện thoại"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Tạo ảnh"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Tai nghe"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Thiết bị ngoại vi vào"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Thiết bị được ghép nối"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Thiết bị có sẵn"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Không có thiết bị nào được ghép nối"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Không có thiết bị nào"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Thiết bị được ghép nối"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Tên"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Sử dụng cho"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Đổi tên thiết bị Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Thiết bị chưa có tên"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Thiết bị được ghép nối"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Ghép nối thiết bị mới"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"Bluetooth sẽ bật để ghép nối"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Ngắt kết nối thiết bị?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Xe của bạn sẽ ngắt kết nối khỏi <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Địa chỉ Bluetooth của xe: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Địa chỉ Bluetooth của thiết bị: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Tên xe"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Đổi tên thiết bị này"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Đổi tên thiết bị"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Đổi tên"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Thiết bị có sẵn"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Cấu hình"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Yêu cầu ghép nối Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Ghép nối và kết nối"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Mã ghép nối Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN chứa các ký tự hoặc biểu tượng"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Nhập mã ghép nối, sau đó nhấn Quay lại hoặc Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Thường là 0000 hoặc 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Yêu cầu ghép nối"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Nhấn để ghép nối với <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Ngôn ngữ"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Ngôn ngữ và phương thức nhập"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Bàn phím"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Quản lý bàn phím"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Đầu ra văn bản sang lời nói"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Công cụ ưu tiên"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Công cụ hiện tại"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Tốc độ nói"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Cao độ"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Đặt lại"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Âm báo"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Âm lượng chuông"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Âm lượng điều hướng"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Phương tiện"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Đặt âm lượng cho nhạc và video"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"Báo thức"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Nhạc chuông điện thoại"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Âm thanh thông báo mặc định"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Âm thanh báo thức mặc định"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Ứng dụng và thông báo"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Hiển thị tất cả các ứng dụng"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Ứng dụng mặc định"</string>
     <string name="applications_settings" msgid="794261395191035632">"Thông tin ứng dụng"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Buộc dừng"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Buộc dừng?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Nếu bạn buộc dừng một ứng dụng, thì ứng dụng đó có thể hoạt động sai."</string>
     <string name="disable_text" msgid="4358165448648990820">"Tắt"</string>
     <string name="enable_text" msgid="1794971777861881238">"Bật"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Gỡ cài đặt"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Nếu bạn tắt ứng dụng này, Android và các ứng dụng khác có thể không còn hoạt động như dự kiến."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Tắt ứng dụng"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Quyền"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Phiên bản: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Chưa được cấp quyền nào"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Không yêu cầu quyền"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Mức sử dụng dữ liệu"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Sử dụng dữ liệu ứng dụng"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Buộc dừng"</string>
     <string name="computing_size" msgid="5791407621793083965">"Đang tính toán…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> quyền bổ sung</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> quyền bổ sung</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Trợ lý và nhập bằng giọng nói"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Ứng dụng trợ lý"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Sử dụng văn bản từ màn hình"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Cho phép ứng dụng trợ lý truy cập vào nội dung trên màn hình dưới dạng văn bản"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Sử dụng ảnh chụp màn hình"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Cho phép ứng dụng trợ lý truy cập vào hình ảnh màn hình"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Dịch vụ tự động điền"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Không có"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Đã chọn"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Trợ lý sẽ có thể đọc thông tin về ứng dụng mà bạn đang dùng trên hệ thống, bao gồm cả thông tin hiển thị trên màn hình hoặc thông tin có thể truy cập trong ứng dụng."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Hãy đảm bảo bạn tin tưởng ứng dụng này&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; sử dụng nội dung trên màn hình của bạn để xác định nội dung nào có thể được tự động điền."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Thêm dịch vụ"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Vị trí"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Yêu cầu vị trí gần đây"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Không có yêu cầu vị trí gần đây nào"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Quyền cấp ứng dụng"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Quét"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Dịch vụ vị trí"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Quét Wi‑Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Cho phép ứng dụng và dịch vụ quét tìm mạng Wi‑Fi bất kỳ lúc nào, ngay cả khi Wi-Fi tắt. Chẳng hạn, bạn có thể sử dụng tùy chọn cài đặt này để cải thiện các tính năng và dịch vụ dựa trên vị trí."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Quét Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Cho phép ứng dụng và dịch vụ quét tìm thiết bị lân cận bất kỳ lúc nào, ngay cả khi Bluetooth tắt. Chẳng hạn, bạn có thể sử dụng tùy chọn cài đặt này để cải thiện các tính năng và dịch vụ dựa trên vị trí."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Hệ thống"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Bản cập nhật hệ thống"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Bản cập nhật hệ thống"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Phiên bản Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Mức bản vá bảo mật của Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Kiểu máy"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Phiên bản băng tần cơ sở"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Phiên bản Kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Số bản dựng"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Địa chỉ Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Không có"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Trạng thái"</string>
     <string name="device_status" msgid="267298179806290920">"Trạng thái"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"Bản quyền"</string>
     <string name="license_title" msgid="936705938435249965">"Giấy phép"</string>
     <string name="terms_title" msgid="5201471373602628765">"Điều khoản và điều kiện"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Giấy phép WebView hệ thống"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Giấy phép WebView hệ thống"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Hình nền"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Nhà cung cấp ảnh vệ tinh:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Giấy phép của bên thứ ba"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Đã xảy ra sự cố khi tải giấy phép."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Đang tải…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">Bây giờ, bạn chỉ cần thực hiện <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> bước nữa là sẽ trở thành nhà phát triển.</item>
+      <item quantity="one">Bây giờ, bạn chỉ cần thực hiện <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> bước nữa là sẽ trở thành nhà phát triển.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Bạn đã là nhà phát triển!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Không cần, bạn đã là nhà phát triển."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Tùy chọn của nhà phát triển"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Tùy chọn đặt lại"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Đặt lại mạng, ứng dụng hoặc thiết bị"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Đặt lại mạng"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Hành động này sẽ đặt lại tất cả tùy chọn cài đặt mạng, bao gồm:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Dữ liệu di động"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Xóa tất cả eSIM của xe"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Thao tác này sẽ không hủy gói dịch vụ của bạn."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Không thể đặt lại eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Chọn mạng"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Đặt lại cài đặt"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Bạn có muốn đặt lại không?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Bạn có muốn đặt lại tất cả cài đặt mạng không? Bạn không thể hoàn tác hành động này!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Đặt lại cài đặt"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Đã đặt lại cài đặt mạng"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Đặt lại tùy chọn ứng dụng"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Thao tác này sẽ đặt lại tất cả tùy chọn cho:\n\n"<li>"Ứng dụng bị tắt"</li>\n<li>"Thông báo ứng dụng bị tắt"</li>\n<li>"Ứng dụng mặc định cho các thao tác"</li>\n<li>"Giới hạn dữ liệu nền cho ứng dụng"</li>\n<li>"Bất kỳ giới hạn về quyền nào"</li>\n\n"Bạn sẽ không mất bất kỳ dữ liệu ứng dụng nào."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Đặt lại ứng dụng"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Đã đặt lại tùy chọn ứng dụng"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Xóa mọi dữ liệu (khôi phục cài đặt gốc)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Tác vụ này sẽ xóa tất cả dữ liệu trong thiết bị đầu trên phương tiện của bạn, bao gồm:\n\n"<li>"Tài khoản Google của bạn"</li>\n<li>"Dữ liệu cùng với tùy chọn cài đặt của ứng dụng và hệ thống"</li>\n<li>"Ứng dụng đã tải xuống"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Bạn hiện đã đăng nhập vào các tài khoản sau:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Có người dùng khác trên phương tiện này."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Đặt lại phương tiện"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Bạn có muốn đặt lại không?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Xóa tất cả thông tin cá nhân và ứng dụng đã tải xuống của bạn? Bạn không thể hủy thao tác này!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Xóa mọi thứ"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Đang xóa"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Vui lòng chờ..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Ngày và giờ"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Đặt ngày và giờ"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Đặt ngày, giờ, múi giờ và định dạng"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Sắp xếp theo múi giờ"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Ngày"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Thời gian"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Thêm người dùng"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Thêm tài khoản"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Xóa người dùng"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Người dùng mới"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Khách"</string>
     <string name="user_admin" msgid="1535484812908584809">"Quản trị viên"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Đã đăng nhập là quản trị viên"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Tất cả quyền quản trị viên"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Đặt làm quản trị viên"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Người dùng này có thể xóa những người dùng, bao gồm cả các Quản trị viên khác và khôi phục cài đặt gốc hệ thống."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Không thể hoàn tác hành động này."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Có, đặt làm quản trị viên"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Tạo người dùng mới"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Thực hiện cuộc gọi"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Nhắn tin qua dữ liệu di động của ô tô"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Cài đặt ứng dụng mới"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Gỡ cài đặt ứng dụng"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Thêm người dùng"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Người dùng mới"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Thêm người dùng mới?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Khi bạn thêm một người dùng mới, người đó cần thiết lập không gian của họ."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bất kỳ người dùng nào cũng có thể cập nhật ứng dụng cho tất cả những người dùng khác."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Đã đạt đến giới hạn người dùng"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">Bạn có thể tạo tối đa <xliff:g id="COUNT">%d</xliff:g> người dùng.</item>
+      <item quantity="one">Bạn chỉ có thể tạo một người dùng.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Không thể tạo người dùng mới"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Xóa người dùng này?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Mọi ứng dụng và dữ liệu sẽ bị xóa."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Không xóa được người dùng."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Bỏ qua"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Thử lại"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Xóa người dùng cuối?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Sau khi xóa người dùng còn lại duy nhất của chiếc xe này, người dùng quản trị mới sẽ được tạo."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Tất cả dữ liệu, tùy chọn cài đặt và ứng dụng liên kết với người dùng này sẽ bị xóa. Bạn sẽ cần phải thiết lập lại hệ thống."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Chọn quản trị viên mới"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Bạn cần chọn ít nhất một quản trị viên. Để xóa người này, hãy chọn một người thay thế."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Chọn quản trị viên"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Khách"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Khách"</string>
     <string name="user_switch" msgid="6544839750534690781">"Nút chuyển"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Bạn (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Tên"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Chưa thiết lập"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Chỉnh sửa tên người dùng"</string>
     <string name="users_list_title" msgid="770764290290240909">"Người dùng"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Quyền được cấp cho %1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Tài khoản"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Người dùng"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Thêm tài khoản"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Chưa thêm tài khoản nào"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Tài khoản cho <xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Tự động đồng bộ hóa dữ liệu"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Cho phép ứng dụng tự động làm mới dữ liệu"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Bật tự động đồng bộ hóa dữ liệu?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Mọi thay đổi bạn thực hiện cho các tài khoản của mình trên web sẽ tự động được sao chép sang thiết bị của bạn.\n\nMột số tài khoản cũng có thể tự động sao chép mọi thay đổi bạn thực hiện trên điện thoại lên web. Tài khoản Google hoạt động theo cách này."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Tắt tự động đồng bộ hóa dữ liệu?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Việc này sẽ bảo toàn dữ liệu, tuy nhiên, bạn cần phải đồng bộ hóa từng tài khoản theo cách thủ công để thu thập thông tin gần đây. Đồng thời, bạn sẽ không nhận được thông báo khi quá trình cập nhật diễn ra."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Thông tin tài khoản"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Thêm tài khoản"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Thêm tài khoản"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Xóa tài khoản"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Bạn muốn xóa tài khoản?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Xóa tài khoản này sẽ xóa tất cả thư, danh bạ và dữ liệu khác khỏi thiết bị!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Quản trị viên của bạn không cho phép thực hiện thay đổi này"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Xóa người dùng này?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Mọi ứng dụng và dữ liệu sẽ bị xóa."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Không xóa được người dùng."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Bạn muốn thử lại?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Bỏ qua"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Thử lại"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Thêm người dùng mới?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Khi bạn thêm một người dùng mới, người đó cần thiết lập không gian của họ."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Bất kỳ người dùng nào cũng có thể cập nhật ứng dụng cho tất cả những người dùng khác."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Không xóa được tài khoản."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Đồng bộ hóa tài khoản"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Đã bật đồng bộ hóa cho <xliff:g id="ID_1">%1$d</xliff:g>/<xliff:g id="ID_2">%2$d</xliff:g> mục"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Đã bật đồng bộ hóa cho tất cả các mục"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Đã tắt đồng bộ hóa cho tất cả các mục"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Đồng bộ hóa TẮT"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Lỗi đồng bộ hóa"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Đồng bộ hóa lần gần đây nhất vào <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Đang đồng bộ hóa…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Nhấn để đồng bộ hóa ngay<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Đồng bộ hóa ngay bây giờ"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Hủy đồng bộ hóa"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Tính năng đồng bộ hóa hiện đang gặp sự cố. Tính năng này sẽ sớm hoạt động trở lại."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Bảo mật"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Khóa màn hình"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Không"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"Mã PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Mật khẩu"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Chọn một cách khóa"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Tùy chọn khóa màn hình"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Tùy chọn khóa"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Nhập hình mở khóa của bạn"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Xác nhận"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Vẽ lại"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Đặt khóa màn hình"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Chọn mã PIN của bạn"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Chọn hình mở khóa của bạn"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Chọn mật khẩu của bạn"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Chọn mật khẩu của bạn"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Khóa màn hình hiện tại"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Để bảo mật, hãy đặt hình mở khóa"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Xóa"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Quản trị viên CNTT đã chặn những mật khẩu phổ biến. Hãy thử mật khẩu khác."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Không cho phép thứ tự chữ số tăng dần, giảm dần hoặc lặp lại."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Tùy chọn khóa màn hình"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ngày trước"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Thêm thiết bị tin cậy"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Thiết bị tin cậy"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> thiết bị</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> thiết bị</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> của bạn sẽ mở khóa ô tô này khi kết nối với ô tô. Nếu người khác cầm <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> của bạn, họ có thể truy cập vào thiết bị này"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Xác nhận"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Xóa thiết bị tin cậy"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Xong"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Dùng ứng dụng đồng hành để thiết lập thiết bị tin cậy. Sau khi thiết lập xong, bạn sẽ có thể mở khóa hồ sơ người dùng của mình khi xe phát hiện điện thoại của bạn"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Tải ứng dụng đồng hành xuống điện thoại"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Chọn <xliff:g id="CAR_NAME">%1$s</xliff:g> trên điện thoại để ghép nối các thiết bị"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock không thể phát hiện các tính năng bảo mật của thiết bị này. Để giúp bảo vệ ô tô của bạn, thiết bị tin cậy sẽ chỉ có thể giữ ô tô mở khóa sau khi bạn đã mở khóa ô tô này. Thiết bị tin cậy có thể giữ ô tô của bạn mở khóa khi ô tô đang ở gần, kể cả khi người khác đang giữ thiết bị này."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Thêm <xliff:g id="DEVICE_NAME">%1$s</xliff:g> làm thiết bị tin cậy"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"Đã thêm thành công <xliff:g id="DEVICE_NAME">%1$s</xliff:g> làm thiết bị tin cậy"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Không đăng ký được <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Sau khi thêm thiết bị tin cậy, bạn phải đặt một phương thức xác thực. Nếu không mang theo thiết bị tin cậy, bạn sẽ phải sử dụng phương thức xác thực này để truy cập hồ sơ của mình."</string>
     <string name="forget" msgid="3971143908183848527">"Xóa"</string>
+    <string name="connect" msgid="5861699594602380150">"Kết nối"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Ngắt kết nối"</string>
     <string name="delete_button" msgid="5840500432614610850">"Xóa"</string>
     <string name="remove_button" msgid="6664656962868194178">"Xóa"</string>
     <string name="cancel" msgid="750286395700355455">"Hủy"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Thoát chế độ demo"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Thao tác này sẽ xóa tài khoản demo và thiết lập lại dữ liệu ban đầu cho hệ thống. Tất cả dữ liệu người dùng sẽ bị mất."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Thoát chế độ demo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"hoàn tất thiết lập"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"để sau"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"BỎ QUA"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Bạn không sử dụng được tính năng này khi đang lái xe."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Không thể thêm người dùng trong khi lái xe."</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index a204017..0d20c25 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,89 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"屏幕变暗, 调暗屏幕, 触摸屏, 电池"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"屏幕变暗, 夜间, 色调"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"夜间模式"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"网络和互联网"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"移动网络"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"移动数据"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"通过移动网络访问数据"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"要关闭移动数据网络吗？"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"流量消耗"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"数据流量警告和上限"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"应用流量用量周期"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"设置数据流量警告"</string>
+    <string name="data_warning" msgid="116776633806885370">"数据流量警告"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"设置数据流量上限"</string>
+    <string name="data_limit" msgid="227338836292511425">"数据流量上限"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"限制流量用量"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"当移动数据流量的用量达到您设置的上限时，您汽车的音响主机将关闭移动数据网络。\n\n由于流量用量是由音响主机计算的，而您的运营商对流量用量的计算方式可能有所不同，因此建议您设置一个保守的上限值。"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"WLAN"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"设置和管理无线接入点"</string>
     <string name="wifi_starting" msgid="473253087503153167">"正在开启 WLAN…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"正在关闭 WLAN…"</string>
+    <!-- no translation found for loading_wifi_list (8584901433195876465) -->
+    <skip />
+    <string name="wifi_disabled" msgid="5013262438128749950">"已停用 WLAN"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"无法取消保存网络"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"无法连接到网络"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"添加网络"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"已停用 WLAN"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"连接"</string>
     <string name="wifi_password" msgid="5565632142720292397">"密码"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"显示密码"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"网络名称"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"输入 SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"安全性"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"信号强度"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"信号强度"</string>
     <string name="wifi_status" msgid="5688013206066543952">"状态"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"连接速度"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"频率"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP 地址"</string>
+    <string name="show_password" msgid="2074628020371139240">"显示密码"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"输入网络名称"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"输入密码"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"微弱"</item>
-    <item msgid="2032262610626057081">"一般"</item>
-    <item msgid="3859756017461098953">"良好"</item>
-    <item msgid="1521103743353335724">"极佳"</item>
+    <item msgid="7683058295076342057">"微弱"</item>
+    <item msgid="1639222824821660744">"一般"</item>
+    <item msgid="1838705897358163300">"良好"</item>
+    <item msgid="6067166649320533751">"极佳"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"蓝牙"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"开启蓝牙"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"蓝牙"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"已停用蓝牙"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"网络详情"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC 地址"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP 地址"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"子网掩码"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 地址"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"网关"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"WLAN 偏好设置"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"自动开启 WLAN"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"位于已保存的高品质网络（例如您的家庭网络）附近时自动重新开启 WLAN"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"无法使用，因为位置信息服务已关闭。请开启"<annotation id="link">"位置信息服务"</annotation>"。"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"要开启 WLAN 扫描功能吗？"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"开启"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"WLAN 扫描功能已开启"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"自动切换到移动数据网络"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"在 WLAN 网络无法连接到互联网时切换到移动数据网络（可能会消耗移动数据流量）。"</string>
+    <string name="learn_more" msgid="8214605928933358604">"了解详情"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"蓝牙"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"管理连接、设置设备名称和可检测性"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"计算机"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"耳机"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"手机"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"成像设备"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"耳机"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"外围输入设备"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"蓝牙"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"已配对的设备"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"可配对的设备"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"没有已配对的设备"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"无可用设备"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"已配对的设备"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"名称"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"用于"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"更改蓝牙设备的名称"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"未命名的设备"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"已配对的设备"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"与新设备配对"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"系统将开启蓝牙以进行配对"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"要断开该设备的连接吗？"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"您的车辆将断开与<xliff:g id="DEVICE_NAME">%1$s</xliff:g>的连接。"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"车辆的蓝牙地址：<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"设备的蓝牙地址：<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"车辆名称"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"重命名此车辆"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"重命名设备"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"重命名"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"可配对的设备"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"配置文件"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"蓝牙配对请求"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"配对和连接"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"蓝牙"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"蓝牙配对码"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN 码由字母或符号组成"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"输入配对码，然后按回车键"</string>
@@ -90,8 +123,17 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"通常为 0000 或 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"配对请求"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"点按即可与 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 配对。"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"语言"</string>
+    <!-- no translation found for languages_and_input_settings (3672322610529408248) -->
+    <skip />
+    <string name="keyboard_settings" msgid="1959697870618278081">"键盘"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"管理键盘"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"文字转语音 (TTS) 输出"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"首选引擎"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"当前引擎"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"语速"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"音调"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"重置"</string>
     <string name="sound_settings" msgid="3072423952331872246">"提示音"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"铃声音量"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"导航音量"</string>
@@ -100,30 +142,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"媒体"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"设置音乐和视频的音量"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"闹钟"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"手机铃声"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"默认通知提示音"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"默认闹钟提示音"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"应用和通知"</string>
+    <string name="all_applications" msgid="7798210477486822168">"显示所有应用"</string>
+    <string name="default_applications" msgid="1558183275638697087">"默认应用"</string>
     <string name="applications_settings" msgid="794261395191035632">"应用信息"</string>
+    <string name="force_stop" msgid="2153183697014720520">"强行停止"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"要强行停止吗？"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"如果您强行停止某个应用，可能会导致该应用无法正常运行。"</string>
     <string name="disable_text" msgid="4358165448648990820">"停用"</string>
     <string name="enable_text" msgid="1794971777861881238">"启用"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"卸载"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"如果您停用此应用，Android 和其他应用可能会无法正常运行。"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"停用应用"</string>
     <string name="permissions_label" msgid="2701446753515612685">"权限"</string>
     <string name="application_version_label" msgid="8556889839783311649">"版本：%1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"未授予任何权限"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"未请求任何权限"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"流量使用情况"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"应用的流量使用情况"</string>
-    <string name="force_stop" msgid="2153183697014720520">"强行停止"</string>
     <string name="computing_size" msgid="5791407621793083965">"正在计算…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">另外 <xliff:g id="COUNT_1">%d</xliff:g> 项权限</item>
       <item quantity="one">另外 <xliff:g id="COUNT_0">%d</xliff:g> 项权限</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"助手和语音输入"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"辅助应用"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"使用屏幕上的文字内容"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"允许辅助应用使用屏幕上的文字内容"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"使用屏幕截图"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"允许辅助应用使用屏幕截图"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"自动填充服务"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"无"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"已选择"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"辅助应用将可读取您系统中使用的应用的相关信息，其中包括您屏幕上显示的信息或应用中可使用的信息。"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;请确认这是您信任的应用&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt;会根据您的屏幕内容判断可自动填充哪些内容。"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"添加服务"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"位置信息"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"最近的位置信息请求"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近没有任何位置信息请求"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"应用级权限"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"扫描"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"位置信息服务"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"WLAN 扫描"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"允许应用和服务随时扫描 WLAN 网络（即使 WLAN 已关闭）。这可用于改进基于位置的功能和服务。"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"蓝牙扫描"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"允许应用和服务随时扫描附近的设备（即使蓝牙已关闭）。这可用于改进基于位置的功能和服务。"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"系统"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"系统更新"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"系统更新"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android 安全补丁程序级别"</string>
     <string name="model_info" msgid="4966408071657934452">"型号"</string>
     <string name="baseband_version" msgid="2370088062235041897">"基带版本"</string>
     <string name="kernel_version" msgid="7327212934187011508">"内核版本"</string>
     <string name="build_number" msgid="3997326631001009102">"版本号"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"蓝牙地址"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"未提供"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"状态"</string>
     <string name="device_status" msgid="267298179806290920">"状态"</string>
@@ -140,12 +217,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"版权"</string>
     <string name="license_title" msgid="936705938435249965">"许可"</string>
     <string name="terms_title" msgid="5201471373602628765">"条款及条件"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"系统 WebView 许可"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"系统 WebView 许可"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"壁纸"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"卫星图像提供商：\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"第三方许可"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"加载许可时出现问题。"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"正在加载…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">现在只需再执行 <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> 步操作即可进入开发者模式。</item>
+      <item quantity="one">现在只需再执行 <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> 步操作即可进入开发者模式。</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"您现在已处于开发者模式！"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"您已处于开发者模式，无需进行此操作。"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"开发者选项"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"重置选项"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"重置网络、应用或设备"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"重置网络"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"这将重置所有网络设置，其中包括："</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"WLAN"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"移动数据"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"蓝牙"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"清空所有车辆 eSIM"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"此操作不会取消您的服务套餐。"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"无法重置 eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"选择网络"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"重置设置"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"要重置吗？"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"要重置所有网络设置吗？此操作无法撤消！"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"重置设置"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"网络设置已重置"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"重置应用偏好设置"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"此操作将会重置以下所有偏好设置：\n\n"<li>"已停用的应用"</li>\n<li>"已停用的应用通知"</li>\n<li>"执行操作的默认应用"</li>\n<li>"应用的后台流量限制"</li>\n<li>"任何权限限制"</li>\n\n"您将不会丢失任何应用数据。"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"重置应用"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"已重置应用偏好设置"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"清空所有数据（恢复出厂设置）"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"这样做将会清空您车辆音响主机中的所有数据，其中包括：\n\n"<li>"您的 Google 帐号"</li>\n<li>"系统与应用的数据和设置"</li>\n<li>"已下载的应用"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"您目前已登录以下帐号："</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"此车辆目前还有其他用户。"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"重置车辆"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"要重置吗？"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"要清空您的所有个人信息和下载的应用吗？此操作无法撤消！"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"清空所有内容"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"正在清空"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"请稍候…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"日期和时间"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"设置日期和时间"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"设置日期、时间、时区和格式"</string>
@@ -165,23 +279,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"按时区排序"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"日期"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"时间"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"添加用户"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"添加帐号"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"删除用户"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"新用户"</string>
-    <string name="user_guest" msgid="3465399481257448601">"访客"</string>
     <string name="user_admin" msgid="1535484812908584809">"管理员"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"目前登录的是管理员帐号"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"所有管理员权限"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"指定为管理员"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"该用户将可以删除其他用户（包括其他管理员），并将系统恢复出厂设置。"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"此操作无法撤消。"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"是的，指定为管理员"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"创建新用户"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"拨打电话"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"使用汽车的移动数据收发短信"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"安装新应用"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"卸载应用"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"添加用户"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"新用户"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"要添加新用户吗？"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"当您添加新用户时，该用户必须设置自己的空间。"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"任何用户均可为所有其他用户更新应用。"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"已达到用户数上限"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">您最多可以创建 <xliff:g id="COUNT">%d</xliff:g> 位用户。</item>
+      <item quantity="one">您只能创建一位用户。</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"无法创建新用户"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"要删除此用户吗？"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"所有应用和数据都将随之删除。"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"无法删除用户。"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"关闭"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"重试"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"要删除最后一位用户吗？"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"删除这量车唯一的用户后，系统便会创建新的管理员用户。"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"所有与此用户关联的数据、设置以及应用都将随之删除。您将需要重新设置系统。"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"选择新的管理员"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"您至少要有一位管理员。要删除现有的这位管理员，请先选择接替者。"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"选择管理员"</string>
+    <string name="user_guest" msgid="3465399481257448601">"访客"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"访客"</string>
     <string name="user_switch" msgid="6544839750534690781">"开关"</string>
     <string name="current_user_name" msgid="3813671533249316823">"您 (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"名称"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"未设置"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"修改用户名"</string>
     <string name="users_list_title" msgid="770764290290240909">"用户"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"已授予%1$s的权限"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"帐号"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"用户"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"添加帐号"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"未添加任何帐号"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>的帐号"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"自动同步数据"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"让应用自动刷新数据"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"要开启自动同步数据功能吗？"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"您在网络上对自己的帐号进行的所有更改都会自动同步到您的设备。\n\n有些帐号还可以自动将您在手机上进行的所有更改同步到网络上。Google 帐号就支持这类双向同步。"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"要关闭自动同步数据功能吗？"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"这样可以节省数据流量，但您需要手动同步每个帐号才能获得最新信息，并且在有更新时不会收到通知。"</string>
     <string name="account_details_title" msgid="7529571432258448573">"帐号信息"</string>
     <string name="add_account_title" msgid="5988746086885210040">"添加帐号"</string>
     <string name="add_an_account" msgid="1072285034300995091">"添加帐号"</string>
@@ -189,16 +339,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"移除帐号"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"要移除帐号吗？"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"移除该帐号后，设备上的相关消息、联系人和其他数据也将全部删除！"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"您的管理员不允许进行这项更改"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"要移除此用户吗？"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"该用户名下的所有应用和数据都将随之删除。"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"无法移除用户。"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"要重试吗？"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"关闭"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"重试"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"要添加新用户吗？"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"当您添加新用户时，该用户必须设置自己的空间。"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"任何用户均可为所有其他用户更新应用。"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"无法移除帐号。"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"帐号同步"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"已开启 <xliff:g id="ID_1">%1$d</xliff:g> 项（共 <xliff:g id="ID_2">%2$d</xliff:g> 项）的同步功能"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"已开启所有项的同步功能"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"已关闭所有项的同步功能"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"已关闭同步功能"</string>
+    <string name="sync_error" msgid="6698021343089247914">"同步错误"</string>
+    <string name="last_synced" msgid="4745124489150101529">"上次同步时间：<xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"目前正在同步…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"点按即可立即同步（<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>）"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"立即同步"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"取消同步"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"同步目前发生问题，将很快恢复正常。"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"安全"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"屏幕锁定"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"无"</string>
@@ -206,7 +360,8 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN 码"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"密码"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"选择一种锁定类型"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"屏幕锁定选项"</string>
+    <!-- no translation found for screen_lock_options (8531177937577168185) -->
+    <skip />
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"绘制您的图案"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"确认"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"重新绘制"</string>
@@ -216,7 +371,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"设置屏幕锁定"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"选择 PIN 码"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"选择您的图案"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"选择密码"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"选择您的密码"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"当前屏幕锁定设置"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"为了安全起见，请设置解锁图案"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"清除"</string>
@@ -288,7 +443,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"常用密码已被您的 IT 管理员屏蔽。请尝试一个不同的密码。"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不允许使用以升序、降序或重复序列进行排列的一串数字。"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"屏幕锁定选项"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>：<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"添加可信设备"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"可信设备"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 台设备</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 台设备</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"您的 <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> 会在连接到这辆车后将其解锁。如果有人拿到您的 <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>，对方也许能够访问此设备"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"确认"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"移除可信设备"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"完成"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"请使用配套应用来设置可信设备。设置成功后，您将可以在车辆检测到您的手机时解锁您的用户个人资料"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1.在手机上下载配套应用"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2.在手机上选择“<xliff:g id="CAR_NAME">%1$s</xliff:g>”以与相应设备配对"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock 未能检测到此设备的安全功能。为了保护您的汽车，只有当您将汽车解锁后，可信设备才会让汽车保持解锁状态。当您的可信设备在汽车附近时，就会让汽车保持解锁状态（即使是其他人拿着此设备也是如此）。"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"将 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 添加为可信设备"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> 已成功添加为可信设备"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> 注册失败"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"添加可信设备后，接下来您必须设置身份验证方法。如果您没有随身携带可信设备，则必须进行身份验证才能访问自己的个人资料。"</string>
     <string name="forget" msgid="3971143908183848527">"忽略"</string>
+    <string name="connect" msgid="5861699594602380150">"连接"</string>
+    <string name="disconnect" msgid="6140789953324820336">"断开连接"</string>
     <string name="delete_button" msgid="5840500432614610850">"删除"</string>
     <string name="remove_button" msgid="6664656962868194178">"移除"</string>
     <string name="cancel" msgid="750286395700355455">"取消"</string>
@@ -298,8 +474,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"退出演示模式"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"这项操作会删除演示帐号并将系统恢复出厂设置，且所有用户数据都会丢失。"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"退出演示模式"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"完成设置"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"以后再说"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"关闭"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"无法在驾驶时使用此功能。"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"驾车时无法添加用户。"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 8564a04..707b6b6 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -1,97 +1,137 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="settings_label" msgid="5147911978211079839">"設定"</string>
     <string name="more_settings_label" msgid="3867559443480110616">"更多"</string>
-    <string name="display_settings" msgid="5325515247739279185">"螢幕"</string>
+    <string name="display_settings" msgid="5325515247739279185">"顯示"</string>
     <string name="brightness" msgid="2919605130898772866">"亮度"</string>
-    <string name="auto_brightness_title" msgid="9124647862844666581">"自動調整亮度"</string>
-    <string name="auto_brightness_summary" msgid="4741887033140384352">"根據環境光源調整亮度"</string>
-    <string name="condition_night_display_title" msgid="3777509730126972675">"夜燈模式已開啟"</string>
+    <string name="auto_brightness_title" msgid="9124647862844666581">"自動調校光暗"</string>
+    <string name="auto_brightness_summary" msgid="4741887033140384352">"按環境光線優化亮度"</string>
+    <string name="condition_night_display_title" msgid="3777509730126972675">"已開啟「夜燈模式」"</string>
     <string name="keywords_display" msgid="3978416985146943922">"螢幕, 觸控螢幕"</string>
-    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"調暗螢幕, 觸控螢幕, 電池"</string>
-    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"調暗螢幕, 觸控螢幕, 電池"</string>
-    <string name="keywords_display_night_display" msgid="2922294576679769957">"調暗螢幕, 夜間, 色調"</string>
+    <string name="keywords_display_brightness_level" msgid="3956411572536209195">"螢幕變暗, 觸控螢幕, 電池"</string>
+    <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"螢幕變暗, 觸控螢幕, 電池"</string>
+    <string name="keywords_display_night_display" msgid="2922294576679769957">"螢幕變暗, 夜間, 轉色"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"夜間模式"</string>
-    <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"設定、管理無線網路存取點"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"網絡和互聯網"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"流動網絡"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"流動數據"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"使用流動網絡存取數據"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"要關閉流動數據嗎？"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"數據用量"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"數據用量警告和上限"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"應用程式數據用量週期"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"設定數據用量警告"</string>
+    <string name="data_warning" msgid="116776633806885370">"數據用量警告"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"設定數據上限"</string>
+    <string name="data_limit" msgid="227338836292511425">"數據上限"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"正在限制數據用量"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"汽車音響主機在數據用量到達設定的上限後，便會關閉流動數據。\n\n由於數據用量由汽車音響主機計算，而流動網絡供應商的用量計算方式可能不同，因此建議您設定較保守的上限。"</string>
+    <string name="wifi_settings" msgid="7701477685273103841">"Wi-Fi"</string>
     <string name="wifi_starting" msgid="473253087503153167">"正在開啟 Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"正在關閉 Wi-Fi…"</string>
-    <string name="wifi_failed_forget_message" msgid="121732682699377206">"無法清除網路設定"</string>
-    <string name="wifi_failed_connect_message" msgid="4447498225022147324">"無法連上網路"</string>
-    <string name="wifi_setup_add_network" msgid="3660498520389954620">"新增網路"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"正在載入 Wi‑Fi 清單"</string>
     <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi 已停用"</string>
+    <string name="wifi_failed_forget_message" msgid="121732682699377206">"無法刪除網絡"</string>
+    <string name="wifi_failed_connect_message" msgid="4447498225022147324">"無法連接網絡"</string>
+    <string name="wifi_setup_add_network" msgid="3660498520389954620">"新增網絡"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"連線"</string>
     <string name="wifi_password" msgid="5565632142720292397">"密碼"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"顯示密碼"</string>
-    <string name="wifi_ssid" msgid="488604828159458741">"網路名稱"</string>
+    <string name="wifi_ssid" msgid="488604828159458741">"網絡名稱"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"請輸入 SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"安全性"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"訊號強度"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"訊號強度"</string>
     <string name="wifi_status" msgid="5688013206066543952">"狀態"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"連線速度"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"頻率"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP 位址"</string>
+    <string name="show_password" msgid="2074628020371139240">"顯示密碼"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"輸入網絡名稱"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"輸入密碼"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
-    <item msgid="4897376984576812606">"差"</item>
-    <item msgid="2032262610626057081">"一般"</item>
-    <item msgid="3859756017461098953">"良好"</item>
-    <item msgid="1521103743353335724">"極佳"</item>
+    <item msgid="4897376984576812606">"弱"</item>
+    <item msgid="7683058295076342057">"弱"</item>
+    <item msgid="1639222824821660744">"尚可"</item>
+    <item msgid="1838705897358163300">"強"</item>
+    <item msgid="6067166649320533751">"非常強"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"藍牙"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"開啟藍牙"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"藍牙"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"藍牙已停用"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"網絡詳細資料"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC 位址"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP 位址"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"子網絡遮罩"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"網域名稱系統 (DNS)"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 位址"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"閘道"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi 偏好設定"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"自動開啟 Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"附近有已儲存的高品質網絡 (例如住宅網絡) 時再開啟 Wi-Fi"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"由於位置資訊功能已關閉，因此無法使用。請開啟"<annotation id="link">"位置資訊"</annotation>"。"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"要開啟 Wi-Fi 掃瞄功能嗎？"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"開啟"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"已開啟 Wi‑Fi 掃瞄功能"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"自動切換至流動數據網絡"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"當 Wi‑Fi 無法連線至互聯網時，切換至流動數據網絡 (可能需要支付數據用量費用)。"</string>
+    <string name="learn_more" msgid="8214605928933358604">"瞭解詳情"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"藍牙"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"管理連線，設定裝置名稱和可偵測性"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"電腦"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"耳機"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"手機"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"顯像裝置"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"耳機"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"周邊輸入裝置"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"藍牙"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"配對裝置"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"可用的裝置"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"沒有任何配對裝置"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"沒有可用的裝置"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"配對裝置"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"名稱"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"用於"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"變更藍牙裝置的名稱"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"未命名的裝置"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"已配對的裝置"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"配對新裝置"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"系統將開啟藍牙以配對裝置"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"要解除連結裝置嗎？"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"您的汽車將會與「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」取消連結。"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"汽車的藍牙位址：<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"裝置的藍牙位址：<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"汽車名稱"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"重新命名汽車"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"重新命名裝置"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"重新命名"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"可用的裝置"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"設定檔"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"藍牙配對要求"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"配對並連線"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"藍牙"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"藍牙配對碼"</string>
-    <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN 碼含有字母或符號"</string>
-    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"輸入配對碼，然後按下返回鍵或 Enter 鍵"</string>
+    <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN 中含有字母或符號"</string>
+    <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"輸入配對碼，然後按 [返回] 或 Enter 鍵"</string>
     <string name="bluetooth_pairing_request" msgid="4769675459526556801">"要與「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」配對嗎？"</string>
-    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"允許「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」存取你的聯絡人和通話記錄"</string>
-    <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"你可能也必須在另一個裝置上輸入這組 PIN 碼。"</string>
-    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"你可能也必須在另一個裝置上輸入這個密碼金鑰。"</string>
-    <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"必須是 16 位數的數字"</string>
-    <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"通常為 0000 或 1234"</string>
+    <string name="bluetooth_pairing_shares_phonebook" msgid="2015966932886300630">"允許「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」存取您的聯絡人和通話記錄"</string>
+    <string name="bluetooth_enter_pin_other_device" msgid="7825091249522704764">"您可能需要在另一部裝置上輸入這個 PIN。"</string>
+    <string name="bluetooth_enter_passkey_other_device" msgid="7147248221018865922">"您可能需要在另一部裝置上輸入這個密鑰。"</string>
+    <string name="bluetooth_pin_values_hint_16_digits" msgid="418776900816984778">"必需為 16 位數字"</string>
+    <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"一般是 0000 或 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"配對要求"</string>
-    <string name="bluetooth_notif_message" msgid="1060821000510108726">"輕觸即可與「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」配對。"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
+    <string name="bluetooth_notif_message" msgid="1060821000510108726">"輕按即可與「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」配對。"</string>
     <string name="language_settings" msgid="2079258598337245546">"語言"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"語言及輸入"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"鍵盤"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"管理鍵盤"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"文字轉語音輸出"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"偏好的引擎"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"目前選用的引擎"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"語速"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"音調"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"重設"</string>
     <string name="sound_settings" msgid="3072423952331872246">"音效"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"鈴聲音量"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"導航音量"</string>
@@ -100,195 +140,328 @@
     <string name="media_volume_title" msgid="6697416686272606865">"媒體"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"設定音樂和影片的音量"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"鬧鐘"</string>
-    <string name="applications_settings" msgid="794261395191035632">"應用程式資訊"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"手機鈴聲"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"預設通知音效"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"預設鬧鐘音效"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"應用程式及通知"</string>
+    <string name="all_applications" msgid="7798210477486822168">"顯示所有應用程式"</string>
+    <string name="default_applications" msgid="1558183275638697087">"預設應用程式"</string>
+    <string name="applications_settings" msgid="794261395191035632">"應用程式資料"</string>
+    <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"要強制停止應用程式嗎？"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"如果您強制停止應用程式，應用程式可能無法正常操作。"</string>
     <string name="disable_text" msgid="4358165448648990820">"停用"</string>
     <string name="enable_text" msgid="1794971777861881238">"啟用"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"解除安裝"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"如果您停用此應用程式，Android 和其他應用程式可能無法正常運作。"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"停用應用程式"</string>
     <string name="permissions_label" msgid="2701446753515612685">"權限"</string>
     <string name="application_version_label" msgid="8556889839783311649">"版本：%1$s"</string>
-    <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"未取得任何授權"</string>
-    <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"未要求任何權限"</string>
+    <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"沒有授予權限"</string>
+    <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"沒有要求權限"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"數據用量"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"應用程式數據用量"</string>
-    <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
-    <string name="computing_size" msgid="5791407621793083965">"計算中…"</string>
+    <string name="computing_size" msgid="5791407621793083965">"正在計算…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
-      <item quantity="other">還有其他 <xliff:g id="COUNT_1">%d</xliff:g> 項權限</item>
-      <item quantity="one">還有其他 <xliff:g id="COUNT_0">%d</xliff:g> 項權限</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 個其他權限</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 個其他權限</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"輔助及語音輸入"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"小幫手應用程式"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"使用螢幕上的文字"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"允許小幫手應用程式存取螢幕的文字內容"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"使用螢幕擷圖畫面"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"允許小幫手應用程式存取螢幕上的圖片"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"自動填入服務"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"無"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"已選取"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"這個小幫手將能讀取系統目前使用的應用程式資料，包括螢幕顯示的資料或可在應用程式中存取的資料。"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;請確定您信任此應用程式&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; 應用程式會根據您畫面上的內容判斷可自動填入的資料。"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"新增服務"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"位置"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"最近的位置資訊要求"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近沒有位置資訊要求"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"應用程式層級權限"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"掃瞄"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"定位服務"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi 掃瞄"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"允許應用程式和服務隨時掃瞄 Wi-Fi 網絡 (即使 Wi-Fi 已關閉)。此操作可用來改善適地性功能和服務。"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"藍牙掃瞄"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"允許應用程式和服務隨時掃瞄附近的裝置 (即使藍牙功能已關閉)。此操作可用來改善適地性功能和服務。"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"系統"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"系統更新"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"系統更新"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
-    <string name="security_patch" msgid="4794276590178386903">"Android 安全性修補程式等級"</string>
+    <string name="security_patch" msgid="4794276590178386903">"Android 安全性修補程式級別"</string>
     <string name="model_info" msgid="4966408071657934452">"型號"</string>
     <string name="baseband_version" msgid="2370088062235041897">"基頻版本"</string>
     <string name="kernel_version" msgid="7327212934187011508">"核心版本"</string>
     <string name="build_number" msgid="3997326631001009102">"版本號碼"</string>
-    <string name="device_info_not_available" msgid="2095601973977376655">"無法取得"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"藍牙位址"</string>
+    <string name="device_info_not_available" msgid="2095601973977376655">"未有資料"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"狀態"</string>
     <string name="device_status" msgid="267298179806290920">"狀態"</string>
-    <string name="device_status_summary" product="tablet" msgid="600543254608862075">"電池、網路狀態及其他資訊"</string>
+    <string name="device_status_summary" product="tablet" msgid="600543254608862075">"電池狀態、網絡及其他資訊"</string>
     <string name="device_status_summary" product="default" msgid="9130360324418117815">"電話號碼、訊號等。"</string>
     <string name="about_settings" msgid="4329457966672592345">"關於"</string>
     <string name="about_summary" msgid="5374623866267691206">"Android <xliff:g id="VERSION">%1$s</xliff:g>"</string>
-    <string name="about_settings_summary" msgid="7975072809083281401">"查看法律資訊、狀態、軟體版本"</string>
+    <string name="about_settings_summary" msgid="7975072809083281401">"查看法律資訊、狀態、軟件版本"</string>
     <string name="legal_information" msgid="1838443759229784762">"法律資訊"</string>
     <string name="contributors_title" msgid="7698463793409916113">"貢獻者"</string>
     <string name="manual" msgid="4819839169843240804">"手動"</string>
-    <string name="regulatory_labels" msgid="3165587388499646779">"法規標籤"</string>
-    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"安全性和法規手冊"</string>
+    <string name="regulatory_labels" msgid="3165587388499646779">"監管標籤"</string>
+    <string name="safety_and_regulatory_info" msgid="1204127697132067734">"安全及監管手冊"</string>
     <string name="copyright_title" msgid="4220237202917417876">"版權"</string>
     <string name="license_title" msgid="936705938435249965">"授權"</string>
     <string name="terms_title" msgid="5201471373602628765">"條款及細則"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"系統 WebView 授權"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"系統 WebView 授權"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"桌布"</string>
-    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"衛星影像提供者：\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
+    <string name="wallpaper_attributions_values" msgid="4292446851583307603">"衛星影像供應商：\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"第三方授權"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"載入授權時發生問題。"</string>
-    <string name="settings_license_activity_loading" msgid="6163263123009681841">"載入中…"</string>
+    <string name="settings_license_activity_loading" msgid="6163263123009681841">"正在載入…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">您只需完成剩餘的 <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> 個步驟，即可成為開發人員。</item>
+      <item quantity="one">您只需完成剩餘的 <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> 個步驟，即可成為開發人員。</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"您現已成為開發人員！"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"不需要了，您已經是開發人員。"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"開發人員選項"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"重設選項"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"網絡、應用程式或裝置重設"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"重設網絡"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"這項操作將會重設所有網絡設定，包括："</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"流動數據"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"藍牙"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"清除所有汽車 eSIM 卡"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"此操作不會取消您的服務計劃。"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"無法重設 eSIM 卡"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"選擇網絡"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"重設設定"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"要重設嗎？"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"您要重設所有網絡設定嗎？您將無法復原這項操作！"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"重設設定"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"網絡設定已重設"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"重設應用程式偏好設定"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"此操作將會重設下列所有偏好設定：\n\n"<li>"已停用的應用程式"</li>\n<li>"已停用的應用程式通知"</li>\n<li>"執行操作的預設應用程式"</li>\n<li>"應用程式的背景數據限制"</li>\n<li>"任何權限限制"</li>\n\n"您將不會失去任何應用程式資料。"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"重設應用程式"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"已重設應用程式偏好設定"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"清除所有資料 (回復原廠設定)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"此操作將清除汽車音響主機的所有資料，包括：\n\n"<li>"您的 Google 帳戶"</li>\n<li>"系統和應用程式資料及設定"</li>\n<li>"已下載的應用程式"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"您目前已登入以下帳戶："</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"此汽車上還有其他使用者。"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"重設汽車"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"要重設嗎？"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"您要清除所有個人資訊和已下載的應用程式嗎？您無法復原這項操作！"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"全部清除"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"正在清除"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"請稍候…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"日期和時間"</string>
-    <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"設定日期和時間"</string>
-    <string name="date_and_time_settings_summary" msgid="7669856855390804666">"設定日期、時間、時區及時間格式"</string>
-    <string name="date_time_auto" msgid="3570339569471779767">"自動判斷日期和時間"</string>
-    <string name="date_time_auto_summary" msgid="3311706425095342759">"使用網路提供的時間"</string>
-    <string name="zone_auto" msgid="3701878581920206160">"自動判定時區"</string>
-    <string name="zone_auto_summary" msgid="4345856882906981864">"使用網路提供的時區"</string>
+    <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"設定日期及時間"</string>
+    <string name="date_and_time_settings_summary" msgid="7669856855390804666">"設定日期、時間、時區和格式"</string>
+    <string name="date_time_auto" msgid="3570339569471779767">"自動設定日期和時間"</string>
+    <string name="date_time_auto_summary" msgid="3311706425095342759">"使用網絡提供的時間"</string>
+    <string name="zone_auto" msgid="3701878581920206160">"自動設定時區"</string>
+    <string name="zone_auto_summary" msgid="4345856882906981864">"使用網絡提供的時區"</string>
     <string name="date_time_24hour_title" msgid="3025576547136168692">"24 小時制"</string>
-    <string name="date_time_24hour" msgid="1137618702556486913">"使用 24 小時格式"</string>
+    <string name="date_time_24hour" msgid="1137618702556486913">"使用 24 小時制"</string>
     <string name="date_time_set_time_title" msgid="5884883050656937853">"時間"</string>
     <string name="date_time_set_time" msgid="6449555153906058248">"設定時間"</string>
     <string name="date_time_set_timezone_title" msgid="3001779256157093425">"時區"</string>
     <string name="date_time_set_timezone" msgid="4759353576185916944">"選取時區"</string>
     <string name="date_time_set_date_title" msgid="6834785820357051138">"日期"</string>
     <string name="date_time_set_date" msgid="2537494485643283230">"設定日期"</string>
-    <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"依照字母排序"</string>
-    <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"依照時區排序"</string>
+    <string name="zone_list_menu_sort_alphabetically" msgid="7041628618528523514">"按英文字母排序"</string>
+    <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"按時區排序"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"日期"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"時間"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"新增使用者"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"新增帳戶"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"刪除使用者"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"新使用者"</string>
-    <string name="user_guest" msgid="3465399481257448601">"訪客"</string>
     <string name="user_admin" msgid="1535484812908584809">"管理員"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"已使用管理員身分登入"</string>
-    <string name="user_switch" msgid="6544839750534690781">"切換"</string>
-    <string name="current_user_name" msgid="3813671533249316823">"你 (%1$s)"</string>
-    <string name="user_name_label" msgid="3210832645046206845">"名稱"</string>
-    <string name="user_summary_not_set_up" msgid="1473688119241224145">"尚未設定"</string>
-    <string name="edit_user_name_title" msgid="6890782937520262478">"編輯使用者名稱"</string>
-    <string name="users_list_title" msgid="770764290290240909">"使用者"</string>
-    <string name="accounts_settings_title" msgid="436190037084293471">"帳戶"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"使用者"</string>
-    <string name="no_accounts_added" msgid="5148163140691096055">"未新增任何帳戶"</string>
-    <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> 的帳戶"</string>
-    <string name="account_details_title" msgid="7529571432258448573">"帳戶資訊"</string>
-    <string name="add_account_title" msgid="5988746086885210040">"新增帳戶"</string>
-    <string name="add_an_account" msgid="1072285034300995091">"新增帳戶"</string>
-    <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"設有限制的個人資料無法新增帳戶"</string>
-    <string name="remove_account_title" msgid="8840386525787836381">"移除帳戶"</string>
-    <string name="really_remove_account_title" msgid="3555164432587924900">"要移除帳戶嗎？"</string>
-    <string name="really_remove_account_message" msgid="4296769280849579900">"移除帳戶後，裝置上所有的訊息、聯絡人和其他資料將全部遭到刪除！"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"你的管理員不允許這項變更"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"要移除這位使用者嗎？"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"所有應用程式和資料都會遭到刪除。"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"無法移除使用者。"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"要再試一次嗎？"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"關閉"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"重試"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"所有管理員權限"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"指定為管理員"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"此使用者可刪除使用者 (包括其他管理員)，並可將系統回復原廠設定。"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"此操作將無法復原。"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"是，指定為管理員"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"建立新使用者"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"撥打電話"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"使用汽車的流動數據傳送訊息"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"安裝新的應用程式"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"解除安裝應用程式"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"新增使用者"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"新使用者"</string>
     <string name="user_add_user_title" msgid="7458813670614932479">"要新增使用者嗎？"</string>
     <string name="user_add_user_message_setup" msgid="6030901156040053106">"新增的使用者需要自行設定個人空間。"</string>
     <string name="user_add_user_message_update" msgid="1528170913388932459">"任何使用者都可以為所有其他使用者更新應用程式。"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"已達到使用者上限"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">您可以建立最多 <xliff:g id="COUNT">%d</xliff:g> 位使用者。</item>
+      <item quantity="one">只可建立一位使用者。</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"無法建立新使用者"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"要刪除這名使用者嗎？"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"所有應用程式和資料都會被刪除。"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"無法刪除使用者。"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"關閉"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"重試"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"要刪除最後一名使用者嗎？"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"在刪除此汽車最後一名使用者後，將建立一名新的管理員。"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"系統將刪除與此使用者相關的所有資料、設定和應用程式。您將需要重新設定系統。"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"選擇新的管理員"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"您需要最少一名管理員。如要刪除這名管理員，請先選擇替代的管理員。"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"選擇管理員"</string>
+    <string name="user_guest" msgid="3465399481257448601">"訪客"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"訪客"</string>
+    <string name="user_switch" msgid="6544839750534690781">"切換"</string>
+    <string name="current_user_name" msgid="3813671533249316823">"您 (%1$s)"</string>
+    <string name="user_name_label" msgid="3210832645046206845">"名稱"</string>
+    <string name="user_summary_not_set_up" msgid="1473688119241224145">"未設定"</string>
+    <string name="edit_user_name_title" msgid="6890782937520262478">"編輯使用者名稱"</string>
+    <string name="users_list_title" msgid="770764290290240909">"使用者"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"已向 %1$s 授予的權限"</string>
+    <string name="accounts_settings_title" msgid="436190037084293471">"帳戶"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"新增帳戶"</string>
+    <string name="no_accounts_added" msgid="5148163140691096055">"未新增任何帳戶"</string>
+    <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>的帳戶"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"自動同步處理資料"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"允許應用程式自動重新整理資料"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"要開啟資料自動同步功能嗎？"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"您在網上對帳戶作出的任何更改都會自動複製到您的裝置。\n\n部分帳戶也可能自動將您在手機上作出的任何更改複製到網上。Google 帳戶會按照此方式運作。"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"要關閉資料自動同步功能嗎？"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"這樣可以節省數據用量，但您需要手動同步每個帳戶才能獲得最新資料，而且在有更新時不會收到通知。"</string>
+    <string name="account_details_title" msgid="7529571432258448573">"帳戶資料"</string>
+    <string name="add_account_title" msgid="5988746086885210040">"新增帳戶"</string>
+    <string name="add_an_account" msgid="1072285034300995091">"新增帳戶"</string>
+    <string name="user_cannot_add_accounts_message" msgid="6775605884544906797">"受限設定檔無法新增帳戶"</string>
+    <string name="remove_account_title" msgid="8840386525787836381">"移除帳戶"</string>
+    <string name="really_remove_account_title" msgid="3555164432587924900">"要移除帳戶嗎？"</string>
+    <string name="really_remove_account_message" msgid="4296769280849579900">"移除此帳戶後，裝置上的訊息、聯絡人和其他資料將全部刪除！"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"無法移除帳戶。"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"帳戶同步"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"<xliff:g id="ID_1">%1$d</xliff:g> 個項目 (共 <xliff:g id="ID_2">%2$d</xliff:g> 個) 的同步功能已開啟"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"所有項目的同步功能已開啟"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"所有項目的同步功能已關閉"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"同步處理功能已關閉"</string>
+    <string name="sync_error" msgid="6698021343089247914">"同步處理錯誤"</string>
+    <string name="last_synced" msgid="4745124489150101529">"上次同步時間：<xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"目前正在同步…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"輕按即可同步 (<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"立即同步"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"取消同步處理"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"同步處理目前發生問題，將於短時間內恢復。"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"安全性"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"螢幕鎖定"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"無"</string>
-    <string name="security_lock_pattern" msgid="1174352995619563104">"圖案"</string>
+    <string name="security_lock_pattern" msgid="1174352995619563104">"鎖定圖案"</string>
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"密碼"</string>
-    <string name="lock_settings_picker_title" msgid="6590330165050361632">"選擇鎖定類型"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"螢幕鎖定選項"</string>
+    <string name="lock_settings_picker_title" msgid="6590330165050361632">"請選擇上鎖方式"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"上鎖選項"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"畫出您的圖案"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"確認"</string>
-    <string name="lockpattern_restart_button_text" msgid="9355771277617537">"重畫"</string>
+    <string name="lockpattern_restart_button_text" msgid="9355771277617537">"再畫一次"</string>
     <string name="continue_button_text" msgid="5129979170426836641">"繼續"</string>
     <string name="lockscreen_retry_button_text" msgid="5314212350698701242">"重試"</string>
     <string name="lockscreen_skip_button_text" msgid="3755748786396198091">"略過"</string>
     <string name="set_screen_lock" msgid="5239317292691332780">"設定螢幕鎖定"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"選擇 PIN"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"選擇圖案"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"選擇密碼"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"選擇密碼"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"目前的螢幕鎖定方式"</string>
-    <string name="choose_lock_pattern_message" msgid="6242765203541309524">"為了安全起見，請設定圖案"</string>
+    <string name="choose_lock_pattern_message" msgid="6242765203541309524">"為安全起見，請設定鎖定圖案"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"清除"</string>
     <string name="lockpattern_cancel_button_text" msgid="4068764595622381766">"取消"</string>
-    <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"你的新解鎖圖案"</string>
+    <string name="lockpattern_pattern_confirmed" msgid="5984306638250515385">"新解鎖圖案"</string>
     <string name="lockpattern_recording_intro_header" msgid="7864149726033694408">"畫出解鎖圖案"</string>
-    <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"完成時請移開手指"</string>
+    <string name="lockpattern_recording_inprogress" msgid="1575019990484725964">"完成後請移開手指"</string>
     <string name="lockpattern_pattern_entered" msgid="6103071005285320575">"已記錄圖案"</string>
-    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"請再畫一次，以確認圖案無誤"</string>
-    <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"圖案至少需連接 4 點，請再試一次。"</string>
+    <string name="lockpattern_need_to_confirm" msgid="4648070076022940382">"請再次畫出圖案以確認"</string>
+    <string name="lockpattern_recording_incorrect_too_short" msgid="2417932185815083082">"圖案至少要連接 4 點，請再試一次。"</string>
     <string name="lockpattern_pattern_wrong" msgid="929223969555399363">"圖案錯誤"</string>
     <string name="lockpattern_settings_help_how_to_record" msgid="4436556875843192284">"如何畫出解鎖圖案"</string>
-    <string name="error_saving_lockpattern" msgid="2933512812768570130">"儲存圖案時發生錯誤"</string>
+    <string name="error_saving_lockpattern" msgid="2933512812768570130">"儲存鎖定圖案時發生錯誤"</string>
     <string name="okay" msgid="4589873324439764349">"確定"</string>
     <string name="remove_screen_lock_title" msgid="1234382338764193387">"要移除螢幕鎖定嗎？"</string>
     <string name="remove_screen_lock_message" msgid="6675850371585564965">"這樣，任何人都能存取您的帳戶"</string>
     <string name="lock_settings_enter_pin" msgid="1669172111244633904">"請輸入 PIN"</string>
     <string name="lock_settings_enter_password" msgid="2636669926649496367">"請輸入密碼"</string>
-    <string name="choose_lock_pin_message" msgid="2963792070267774417">"為了安全起見，請設定 PIN 碼"</string>
-    <string name="confirm_your_pin_header" msgid="9096581288537156102">"請重新輸入 PIN 碼"</string>
-    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PIN 碼至少要有 4 個數字"</string>
+    <string name="choose_lock_pin_message" msgid="2963792070267774417">"為安全起見，請設定 PIN"</string>
+    <string name="confirm_your_pin_header" msgid="9096581288537156102">"請重新輸入 PIN"</string>
+    <string name="choose_lock_pin_hints" msgid="7362906249992020844">"PIN 必需有至少 4 個數字"</string>
     <string name="lockpin_invalid_pin" msgid="2149191577096327424">"PIN 無效，必須至少有 4 位數字。"</string>
-    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PIN 碼不符"</string>
-    <string name="error_saving_lockpin" msgid="9011960139736000393">"儲存 PIN 碼時發生錯誤"</string>
+    <string name="confirm_pins_dont_match" msgid="4607110139373520720">"PIN 不符"</string>
+    <string name="error_saving_lockpin" msgid="9011960139736000393">"儲存 PIN 時發生錯誤"</string>
     <string name="lockscreen_wrong_pin" msgid="4922465731473805306">"PIN 錯誤"</string>
     <string name="lockscreen_wrong_password" msgid="5757087577162231825">"密碼錯誤"</string>
-    <string name="choose_lock_password_message" msgid="6124341145027370784">"為了安全起見，請設定密碼"</string>
+    <string name="choose_lock_password_message" msgid="6124341145027370784">"為安全起見，請設定密碼"</string>
     <string name="confirm_your_password_header" msgid="7052891840366724938">"請重新輸入密碼"</string>
     <string name="confirm_passwords_dont_match" msgid="7300229965206501753">"密碼不符"</string>
     <string name="lockpassword_clear_label" msgid="6363680971025188064">"清除"</string>
     <string name="lockpassword_cancel_label" msgid="5791237697404166450">"取消"</string>
     <string name="lockpassword_confirm_label" msgid="5918463281546146953">"確認"</string>
     <string name="choose_lock_password_hints" msgid="3903696950202491593">"必須包含至少 4 個字元"</string>
-    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"至少要有 <xliff:g id="COUNT">%d</xliff:g> 個字元"</string>
-    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN 碼至少要有 <xliff:g id="COUNT">%d</xliff:g> 個數字"</string>
-    <string name="lockpassword_password_too_long" msgid="7530214940279491291">"長度必須少於 <xliff:g id="NUMBER">%d</xliff:g> 個字元"</string>
-    <string name="lockpassword_pin_too_long" msgid="62957683396974404">"長度必須少於 <xliff:g id="NUMBER">%d</xliff:g> 個數字"</string>
+    <string name="lockpassword_password_too_short" msgid="6681218025001328405">"必需有至少 <xliff:g id="COUNT">%d</xliff:g> 個字元"</string>
+    <string name="lockpassword_pin_too_short" msgid="6363004004424904218">"PIN 必需有至少 <xliff:g id="COUNT">%d</xliff:g> 個數字"</string>
+    <string name="lockpassword_password_too_long" msgid="7530214940279491291">"必需少於 <xliff:g id="NUMBER">%d</xliff:g> 個字元"</string>
+    <string name="lockpassword_pin_too_long" msgid="62957683396974404">"必需少於 <xliff:g id="NUMBER">%d</xliff:g> 個數字"</string>
     <string name="lockpassword_pin_contains_non_digits" msgid="3044526271686839923">"只可包含數字 0-9。"</string>
-    <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"裝置管理員不允許使用最近用過的 PIN 碼"</string>
-    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"你的 IT 管理員已封鎖常見 PIN 碼，請改用其他 PIN 碼。"</string>
+    <string name="lockpassword_pin_recently_used" msgid="7901918311213276207">"裝置管理員不允許使用最近用過的 PIN"</string>
+    <string name="lockpassword_pin_blacklisted_by_admin" msgid="7412709707800738442">"您的 IT 管理員已禁止使用常用的 PIN，請嘗試輸入另一個 PIN。"</string>
     <string name="lockpassword_illegal_character" msgid="1984970060523635618">"不可包含無效字元。"</string>
     <string name="lockpassword_invalid_password" msgid="1690956113717418430">"密碼無效，必須包含至少 4 個字元。"</string>
     <plurals name="lockpassword_password_requires_letters" formatted="false" msgid="424616259312760303">
-      <item quantity="other">至少必須包含 <xliff:g id="COUNT">%d</xliff:g> 個字母</item>
-      <item quantity="one">至少必須包含 1 個字母</item>
+      <item quantity="other">必需包含至少 <xliff:g id="COUNT">%d</xliff:g> 個字母</item>
+      <item quantity="one">必需包含至少 1 個字母</item>
     </plurals>
     <plurals name="lockpassword_password_requires_lowercase" formatted="false" msgid="2267487180744744833">
-      <item quantity="other">至少必須包含 <xliff:g id="COUNT">%d</xliff:g> 個小寫字母</item>
-      <item quantity="one">至少必須包含 1 個小寫字母</item>
+      <item quantity="other">必需包含至少 <xliff:g id="COUNT">%d</xliff:g> 個小寫字母</item>
+      <item quantity="one">必需包含至少 1 個小寫字母</item>
     </plurals>
     <plurals name="lockpassword_password_requires_uppercase" formatted="false" msgid="7999264563026517898">
-      <item quantity="other">至少必須包含 <xliff:g id="COUNT">%d</xliff:g> 個大寫字母</item>
-      <item quantity="one">至少必須包含 1 個大寫字母</item>
+      <item quantity="other">必需包含至少 <xliff:g id="COUNT">%d</xliff:g> 個大寫字母</item>
+      <item quantity="one">必需包含至少 1 個大寫字母</item>
     </plurals>
     <plurals name="lockpassword_password_requires_numeric" formatted="false" msgid="7935079851855168646">
-      <item quantity="other">至少必須包含 <xliff:g id="COUNT">%d</xliff:g> 個數字</item>
-      <item quantity="one">至少必須包含 1 個數字</item>
+      <item quantity="other">必需包含至少 <xliff:g id="COUNT">%d</xliff:g> 個數字</item>
+      <item quantity="one">必需包含至少 1 個數字</item>
     </plurals>
     <plurals name="lockpassword_password_requires_symbols" formatted="false" msgid="3994046435150094132">
-      <item quantity="other">至少必須包含 <xliff:g id="COUNT">%d</xliff:g> 個特殊符號</item>
-      <item quantity="one">至少必須包含 1 個特殊符號</item>
+      <item quantity="other">必需包含至少 <xliff:g id="COUNT">%d</xliff:g> 個特別符號</item>
+      <item quantity="one">必需包含至少 1 個特別符號</item>
     </plurals>
     <plurals name="lockpassword_password_requires_nonletter" formatted="false" msgid="6878486326748506524">
-      <item quantity="other">至少必須包含 <xliff:g id="COUNT">%d</xliff:g> 個非字母字元</item>
-      <item quantity="one">至少必須包含 1 個非字母字元</item>
+      <item quantity="other">必需包含至少 <xliff:g id="COUNT">%d</xliff:g> 個非字母字元</item>
+      <item quantity="one">必需包含至少 1 個非字母字元</item>
     </plurals>
     <string name="lockpassword_password_recently_used" msgid="8255729487108602924">"裝置管理員不允許使用最近用過的密碼"</string>
     <string name="error_saving_password" msgid="8334882262622500658">"儲存密碼時發生錯誤"</string>
-    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"你的 IT 管理員已封鎖常見密碼，請改用其他密碼。"</string>
+    <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"您的 IT 管理員已禁止使用常用的密碼，請嘗試輸入另一組密碼。"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不可使用依遞增或遞減順序排列或重複的連續數字。"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"螢幕鎖定選項"</string>
-    <string name="forget" msgid="3971143908183848527">"清除"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>：<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"加入信任的裝置"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"信任的裝置"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 部裝置</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 部裝置</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"您的 <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> 將在連接後為此汽車解鎖。如果有人取得您的 <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>，他們或許能存取此裝置。"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"確認"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"移除信任的裝置"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"完成"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"使用隨附應用程式設定信任的裝置。完成設定後，將可以在汽車偵測到手機時解鎖您的使用者設定檔"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1.在手機下載隨附應用程式"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2.在手機選取「<xliff:g id="CAR_NAME">%1$s</xliff:g>」以配對裝置"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock 無法偵測此裝置的安全功能。為保護您的汽車，信任的裝置只會在您解鎖後才保持汽車解鎖。即使信任的裝置在他人手上，仍可在靠近您的汽車時保持汽車解鎖。"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"新增「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」為信任的裝置"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"已成功新增「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」為信任的裝置"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」註冊失敗"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"如要加入信任的裝置，則需要在下一步設定驗證方法。如果未有攜帶信任的裝置，便需要通過驗證才可存取您的設定檔。"</string>
+    <string name="forget" msgid="3971143908183848527">"忘記"</string>
+    <string name="connect" msgid="5861699594602380150">"連接"</string>
+    <string name="disconnect" msgid="6140789953324820336">"解除連接"</string>
     <string name="delete_button" msgid="5840500432614610850">"刪除"</string>
     <string name="remove_button" msgid="6664656962868194178">"移除"</string>
     <string name="cancel" msgid="750286395700355455">"取消"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"結束示範模式"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"執行這項操作後，示範模式帳戶會刪除，而系統會回復原廠設定。所有使用者資料將會失去。"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"結束示範模式"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"完成設定"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"暫時不要"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"關閉"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"無法在駕駛時使用此功能。"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"無法在駕駛時新增使用者。"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 2655112..9b0f468 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"調暗螢幕, 觸控螢幕, 電池"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"調暗螢幕, 夜間, 色調"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"夜間模式"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"網路和網際網路"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"行動網路"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"行動數據"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"使用行動網路存取數據"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"要關閉行動數據嗎？"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"數據用量"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"數據警告與限制"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"應用程式數據用量週期"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"設定數據用量警告"</string>
+    <string name="data_warning" msgid="116776633806885370">"數據用量警告"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"設定數據用量上限"</string>
+    <string name="data_limit" msgid="227338836292511425">"數據用量上限"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"限制數據用量"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"當行動數據用量達到你設定的上限時，車輛資訊娛樂主機將關閉行動數據功能。\n\n由於數據用量是由資訊娛樂主機自動計算，而電信業者對用量的計算方式可能有所不同，因此建議你設定保守的上限值。"</string>
     <string name="wifi_settings" msgid="7701477685273103841">"Wi‑Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"設定、管理無線網路存取點"</string>
     <string name="wifi_starting" msgid="473253087503153167">"正在開啟 Wi-Fi…"</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"正在關閉 Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"正在載入 Wi-Fi 清單"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi 已停用"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"無法清除網路設定"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"無法連上網路"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"新增網路"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"Wi-Fi 已停用"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"連線"</string>
     <string name="wifi_password" msgid="5565632142720292397">"密碼"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"顯示密碼"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"網路名稱"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"輸入 SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"安全性"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"訊號強度"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"訊號強度"</string>
     <string name="wifi_status" msgid="5688013206066543952">"狀態"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"連線速度"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"頻率"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"IP 位址"</string>
+    <string name="show_password" msgid="2074628020371139240">"顯示密碼"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"輸入網路名稱"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"輸入密碼"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"差"</item>
-    <item msgid="2032262610626057081">"一般"</item>
-    <item msgid="3859756017461098953">"良好"</item>
-    <item msgid="1521103743353335724">"極佳"</item>
+    <item msgid="7683058295076342057">"微弱"</item>
+    <item msgid="1639222824821660744">"一般"</item>
+    <item msgid="1838705897358163300">"良好"</item>
+    <item msgid="6067166649320533751">"極佳"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"藍牙"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"開啟藍牙"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"藍牙"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"藍牙已停用"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"網路詳細資料"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"MAC 位址"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"IP 位址"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"子網路遮罩"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"IPv6 位址"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"閘道"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Wi‑Fi 偏好設定"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"自動開啟 Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"位於已儲存的高品質 Wi‑Fi 網路範圍內 (例如家用網路) 時自動重新開啟 Wi‑Fi"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"定位服務已關閉，因此無法使用。請開啟 [定位]"<annotation id="link"></annotation>"。"</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"要開啟 Wi‑Fi 掃描功能嗎？"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"開啟"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"已開啟 Wi‑Fi 掃描功能"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"自動切換到行動網路"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"當 Wi-Fi 功能無法連上網際網路時，使用行動數據 (可能會增加數據用量)。"</string>
+    <string name="learn_more" msgid="8214605928933358604">"瞭解詳情"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"藍牙"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"管理連線，設定裝置名稱和可偵測性"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"電腦"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"耳機"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"手機"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"顯像裝置"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"耳機"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"周邊輸入裝置"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"藍牙"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"配對裝置"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"可用的裝置"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"沒有任何配對裝置"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"沒有可用的裝置"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"配對裝置"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"名稱"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"用於"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"變更藍牙裝置的名稱"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"未命名的裝置"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"已配對的裝置"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"配對新裝置"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"系統將開啟藍牙以配對裝置"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"要中斷裝置連線嗎？"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"你的車輛將中斷與 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 的連線。"</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"車輛的藍牙位址：<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"裝置的藍牙位址：<xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"車輛名稱"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"重新命名這輛車"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"重新命名裝置"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"重新命名"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"可配對的裝置"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"設定檔"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"藍牙配對要求"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"配對並連線"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"藍牙"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"藍牙配對碼"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"PIN 碼含有字母或符號"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"輸入配對碼，然後按下返回鍵或 Enter 鍵"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"通常為 0000 或 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"配對要求"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"輕觸即可與「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」配對。"</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"語言"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"語言與輸入設定"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"鍵盤"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"管理鍵盤"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"文字轉語音輸出"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"偏好的引擎"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"目前的引擎"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"語音速率"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"音調"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"重設"</string>
     <string name="sound_settings" msgid="3072423952331872246">"音效"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"鈴聲音量"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"導航音量"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"媒體"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"設定音樂和影片的音量"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"鬧鐘"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"手機鈴聲"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"預設通知音效"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"預設鬧鐘音效"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"應用程式和通知"</string>
+    <string name="all_applications" msgid="7798210477486822168">"顯示所有應用程式"</string>
+    <string name="default_applications" msgid="1558183275638697087">"預設應用程式"</string>
     <string name="applications_settings" msgid="794261395191035632">"應用程式資訊"</string>
+    <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"要強制停止嗎？"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"如果你強制停止應用程式，應用程式可能無法正常運作。"</string>
     <string name="disable_text" msgid="4358165448648990820">"停用"</string>
     <string name="enable_text" msgid="1794971777861881238">"啟用"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"解除安裝"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"如果你停用這個應用程式，Android 和其他應用程式可能無法正常運作。"</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"停用應用程式"</string>
     <string name="permissions_label" msgid="2701446753515612685">"權限"</string>
     <string name="application_version_label" msgid="8556889839783311649">"版本：%1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"未取得任何授權"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"未要求任何權限"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"數據用量"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"應用程式數據用量"</string>
-    <string name="force_stop" msgid="2153183697014720520">"強制停止"</string>
     <string name="computing_size" msgid="5791407621793083965">"計算中…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="other">還有其他 <xliff:g id="COUNT_1">%d</xliff:g> 項權限</item>
       <item quantity="one">還有其他 <xliff:g id="COUNT_0">%d</xliff:g> 項權限</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"小幫手和語音輸入"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"小幫手應用程式"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"使用畫面中的文字"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"允許小幫手應用程式使用畫面中的文字內容"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"使用螢幕擷取畫面"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"允許小幫手應用程式使用螢幕擷取畫面"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"自動填入服務"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"無"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"已選取"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"小幫手將可讀取系統目前使用中的應用程式相關資訊，包括裝置畫面上顯示的資訊及應用程式內提供存取的資訊。"</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;請確定這是你信任的應用程式&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; 應用程式會根據你的畫面內容判斷要自動填入的內容。"</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"新增服務"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"定位"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"最近的定位要求"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近沒有任何定位要求"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"應用程式層級權限"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"掃描"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"定位服務"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Wi-Fi 掃描"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"允許應用程式和服務隨時掃描 Wi‑Fi 網路 (即使 Wi-Fi 功能處於關閉狀態)。這可以用來改善適地性功能和服務。"</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"藍牙掃描"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"允許應用程式和服務隨時掃描附近裝置 (即使藍牙功能處於關閉狀態)。這可以用來改善適地性功能和服務。"</string>
     <string name="system_setting_title" msgid="6864599341809463440">"系統"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"系統更新"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"系統更新"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
     <string name="security_patch" msgid="4794276590178386903">"Android 安全性修補程式等級"</string>
     <string name="model_info" msgid="4966408071657934452">"型號"</string>
     <string name="baseband_version" msgid="2370088062235041897">"基頻版本"</string>
     <string name="kernel_version" msgid="7327212934187011508">"核心版本"</string>
     <string name="build_number" msgid="3997326631001009102">"版本號碼"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"藍牙位址"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"無法取得"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"狀態"</string>
     <string name="device_status" msgid="267298179806290920">"狀態"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"版權"</string>
     <string name="license_title" msgid="936705938435249965">"授權"</string>
     <string name="terms_title" msgid="5201471373602628765">"條款及細則"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"系統 WebView 授權"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"系統 WebView 授權"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"桌布"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"衛星影像提供者：\n©2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"第三方授權"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"載入授權時發生問題。"</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"載入中…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="other">只要再 <xliff:g id="STEP_COUNT_1">%1$d</xliff:g> 個步驟即可啟用開發人員設定。</item>
+      <item quantity="one">只要再 <xliff:g id="STEP_COUNT_0">%1$d</xliff:g> 個步驟即可啟用開發人員設定。</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"你已啟用開發人員設定！"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"你已啟用開發人員設定。"</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"開發人員選項"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"重設選項"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"重設網路、應用程式或裝置"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"重設網路"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"這麼做會重設所有網路設定，包括："</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698"><li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"行動數據"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284"><li>"藍牙"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"清除所有車輛的 eSIM 卡"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"這項操作不會取消你的服務方案。"</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"無法重設 eSIM 卡"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"選取網路"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"重設設定"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"要重設嗎？"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"要重設所有網路設定嗎？這個動作無法復原！"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"重設設定"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"已重設網路設定"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"重設應用程式偏好設定"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"這麼做會重設下列項目的所有偏好設定：\n\n"<li>"已停用的應用程式"</li>\n<li>"已停用的應用程式通知"</li>\n<li>"執行動作的預設應用程式"</li>\n<li>"應用程式背景資料限制"</li>\n<li>"任何權限限制"</li>\n\n"你不會遺失任何應用程式資料。"</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"重設應用程式"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"已重設應用程式偏好設定"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"清除所有資料 (恢復原廠設定)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"這麼做將會清除車輛資訊娛樂主機的所有資料，包括：\n\n"<li>"你的 Google 帳戶"</li>\n<li>"系統與應用程式的資料和設定"</li>\n<li>"已下載的應用程式"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"你目前已登入下列帳戶："</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"這輛車還有其他使用者。"</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"重設車輛"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"要重設嗎？"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"要清除所有個人資訊和已下載的應用程式嗎？這個動作無法復原！"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"全部清除"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"清除中"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"請稍候…"</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"日期和時間"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"設定日期和時間"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"設定日期、時間、時區及時間格式"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"依照時區排序"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"日期"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"時間"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"新增使用者"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"新增帳戶"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"刪除使用者"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"新使用者"</string>
-    <string name="user_guest" msgid="3465399481257448601">"訪客"</string>
     <string name="user_admin" msgid="1535484812908584809">"管理員"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"登入身分：管理員"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"所有管理員權限"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"設為管理員"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"這位使用者將可以刪除使用者 (包括其他管理員)，以及將系統恢復原廠設定。"</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"這個動作無法復原。"</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"是，設為管理員"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"建立新使用者"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"撥打電話"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"使用車輛的行動數據網路收發簡訊"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"安裝新應用程式"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"解除安裝應用程式"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"新增使用者"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"新使用者"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"要新增使用者嗎？"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"新增的使用者需要自行設定個人空間。"</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"任何使用者都可以為所有其他使用者更新應用程式。"</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"已達使用者數量上限"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="other">最多可建立 <xliff:g id="COUNT">%d</xliff:g> 位使用者。</item>
+      <item quantity="one">只能建立 1 位使用者。</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"無法建立新的使用者設定檔"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"要刪除這位使用者嗎？"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"所有應用程式和資料都會遭到刪除。"</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"無法刪除使用者。"</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"關閉"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"重試"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"要刪除最後一位使用者嗎？"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"刪除這輛車的唯一使用者後，系統會建立新的管理員使用者。"</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"所有與這位使用者相關聯的資料、設定和應用程式都會遭到刪除。你必須重新設定系統。"</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"選擇新管理員"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"你必須設定至少一位管理員。如要刪除這位管理員，請先選擇新的管理員。"</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"選擇管理員"</string>
+    <string name="user_guest" msgid="3465399481257448601">"訪客"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"訪客"</string>
     <string name="user_switch" msgid="6544839750534690781">"切換"</string>
     <string name="current_user_name" msgid="3813671533249316823">"你 (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"名稱"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"尚未設定"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"編輯使用者名稱"</string>
     <string name="users_list_title" msgid="770764290290240909">"使用者"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"已將權限授予%1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"帳戶"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"使用者"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"新增帳戶"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"未新增任何帳戶"</string>
     <string name="account_list_title" msgid="7631588514613843065">"<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g> 的帳戶"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"自動同步處理資料"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"允許應用程式自動重新整理資料"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"要啟用資料自動同步功能嗎？"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"你在網路上對帳戶進行的所有變更都會自動複製到你的裝置。\n\n有些帳戶還可以自動將你在手機上進行的所有變更複製到網路上，Google 帳戶即是按照這種方式運作。"</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"要停用資料自動同步功能嗎？"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"這樣可以節省數據用量，但你必須手動同步處理每個帳戶才能收集最新資訊。此外，系統進行更新時不會通知你。"</string>
     <string name="account_details_title" msgid="7529571432258448573">"帳戶資訊"</string>
     <string name="add_account_title" msgid="5988746086885210040">"新增帳戶"</string>
     <string name="add_an_account" msgid="1072285034300995091">"新增帳戶"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"移除帳戶"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"要移除帳戶嗎？"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"移除帳戶後，裝置上所有的訊息、聯絡人和其他資料將全部遭到刪除！"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"你的管理員不允許這項變更"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"要移除這位使用者嗎？"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"所有應用程式和資料都會遭到刪除。"</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"無法移除使用者。"</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"再試一次？"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"關閉"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"重試"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"要新增使用者嗎？"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"新增的使用者需要自行設定個人空間。"</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"任何使用者都可以為所有其他使用者更新應用程式。"</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"無法移除帳戶。"</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"帳戶同步處理"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"已啟用 <xliff:g id="ID_1">%1$d</xliff:g> 個項目 (共 <xliff:g id="ID_2">%2$d</xliff:g> 個) 的同步處理功能"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"已啟用所有項目的同步處理功能"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"已停用所有項目的同步處理功能"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"已關閉同步處理功能"</string>
+    <string name="sync_error" msgid="6698021343089247914">"同步處理錯誤"</string>
+    <string name="last_synced" msgid="4745124489150101529">"上次同步處理時間：<xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"目前正在同步處理…"</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"輕觸即可立即同步處理 (<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>)"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"立即同步處理"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"取消同步處理"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"同步處理目前發生問題，將於短時間內恢復。"</string>
     <string name="security_settings_title" msgid="6955331714774709746">"安全性"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"螢幕鎖定"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"無"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"PIN 碼"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"密碼"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"選擇鎖定類型"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"螢幕鎖定選項"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"螢幕鎖定選項"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"畫出解鎖圖案"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"確認"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"重畫"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"設定螢幕鎖定"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"選擇 PIN 碼"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"選擇圖案"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"選擇密碼"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"選擇密碼"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"目前的螢幕鎖定方式"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"為了安全起見，請設定圖案"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"清除"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"你的 IT 管理員已封鎖常見密碼，請改用其他密碼。"</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不得使用依遞增或遞減順序排列或是重複的數字。"</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"螢幕鎖定選項"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>：<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"新增信任的裝置"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"信任的裝置"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 部裝置</item>
+      <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 部裝置</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"如果你的 <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> 與這輛車連結，就能將其解鎖。如果其他人取得你的 <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>，對方或許能夠存取這個裝置"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"確認"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"移除信任的裝置"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"完成"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"請使用隨附應用程式設定信任的裝置。設定完成後，你就能在車輛偵測到你的手機時將使用者設定檔解鎖"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. 在手機上下載隨附應用程式"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. 在手機上選取 [<xliff:g id="CAR_NAME">%1$s</xliff:g>] 以便將裝置配對"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"Smart Lock 偵測不到這個裝置的安全性功能。為保護你的車輛，你必須先將信任的裝置解除鎖定，該裝置才能讓車輛保持解鎖狀態。只要信任的裝置位於車輛附近，就能讓車輛保持解鎖狀態，就算該裝置在其他人手中也一樣。"</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"將 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 新增為信任的裝置"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"已成功將 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 新增為信任的裝置"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"無法註冊 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"你必須在新增信任的裝置後設定驗證方法。如果你手邊沒有信任的裝置，就必須通過驗證才能存取自己的個人資料。"</string>
     <string name="forget" msgid="3971143908183848527">"清除"</string>
+    <string name="connect" msgid="5861699594602380150">"連線"</string>
+    <string name="disconnect" msgid="6140789953324820336">"中斷連線"</string>
     <string name="delete_button" msgid="5840500432614610850">"刪除"</string>
     <string name="remove_button" msgid="6664656962868194178">"移除"</string>
     <string name="cancel" msgid="750286395700355455">"取消"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"結束示範模式"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"這項操作會刪除示範帳戶並將系統恢復原廠設定，且所有使用者資料都會遺失。"</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"結束示範模式"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"完成設定"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"暫時不要"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"關閉"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"開車時無法使用這項功能。"</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"無法在開車期間新增使用者。"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 00a843e..5c67c6d 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- 
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
  -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
@@ -30,55 +29,88 @@
     <string name="keywords_display_auto_brightness" msgid="2700310050333468752">"fiphalisa isikrini, isikrini esithintwayo, ibhethri"</string>
     <string name="keywords_display_night_display" msgid="2922294576679769957">"fiphaza isikrini, ubusuku, i-tint"</string>
     <string name="night_mode_tile_label" msgid="6603597795502131664">"Imodi yasebusuku"</string>
+    <string name="network_and_internet" msgid="4229023630498537530">"Inethiwekhi ne-inthanethi"</string>
+    <string name="mobile_network_settings" msgid="1708621113321368597">"Inethiwekhi yeselula"</string>
+    <string name="mobile_network_toggle_title" msgid="3515647310810280063">"Idatha yeselula"</string>
+    <string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Finyelela kudatha usebenzisa inethiwekhi yeselula"</string>
+    <string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vala idatha yeselula?"</string>
+    <string name="data_usage_settings" msgid="7877132994777987848">"Ukusebenzisa idatha"</string>
+    <string name="data_warning_limit_title" msgid="4950868241810828601">"Isexwayiso sedatha nomkhawulo"</string>
+    <string name="app_usage_cycle" msgid="8445927080245880296">"Umjikelezo wokusetshenziswa kwedatha yohlelo lokusebenza"</string>
+    <string name="set_data_warning" msgid="6628236612886588097">"Setha isexwayiso sedatha"</string>
+    <string name="data_warning" msgid="116776633806885370">"Isexwayiso sedatha"</string>
+    <string name="set_data_limit" msgid="7136539812414500084">"Setha umkhawulo wedatha"</string>
+    <string name="data_limit" msgid="227338836292511425">"Umkhawulo wedatha"</string>
+    <string name="data_usage_limit_dialog_title" msgid="1864716658371721883">"Ilinganisela ukusebenza kwedatha"</string>
+    <string name="data_usage_limit_dialog_mobile" msgid="3633960011913085089">"Iyunithi enkulu yemoto yakho izovala idatha yeselula uma isifike kumkhawulo owusethile.\n\nNjengoba ukusetshenziswa kwedatha kulinganiselwa iyunithi eyinhloko, futhi inkampani yakho yenethiwekhi ingakhulumela ukusetshenziswa ngokuhlukile, cabanga ukusetha umkhawulo wakho wokugcinwa."</string>
     <string name="wifi_settings" msgid="7701477685273103841">"I-Wi-Fi"</string>
-    <string name="wifi_settings_summary" msgid="6095898149997291025">"Hlela futhi uphathe izindawo zokungena ezingenantambo"</string>
     <string name="wifi_starting" msgid="473253087503153167">"Ivula i-Wi-Fi..."</string>
     <string name="wifi_stopping" msgid="3534173972547890148">"Ivala i-Wi-Fi…"</string>
+    <string name="loading_wifi_list" msgid="8584901433195876465">"Ilayisha uhlu lwe-Wi-Fi"</string>
+    <string name="wifi_disabled" msgid="5013262438128749950">"I-Wi‑Fi ikhatshaziwe"</string>
     <string name="wifi_failed_forget_message" msgid="121732682699377206">"Yehlulekile ukukhohlwa inethiwekhi"</string>
     <string name="wifi_failed_connect_message" msgid="4447498225022147324">"Yehlulekile ukuxhuma kunethiwekhi"</string>
     <string name="wifi_setup_add_network" msgid="3660498520389954620">"Yengeza inethiwekhi"</string>
-    <string name="wifi_disabled" msgid="5013262438128749950">"I-Wi‑Fi ikhatshaziwe"</string>
     <string name="wifi_setup_connect" msgid="3512399573397979101">"Xhuma"</string>
     <string name="wifi_password" msgid="5565632142720292397">"Iphasiwedi"</string>
     <string name="wifi_show_password" msgid="8423293211933521097">"Bonisa iphasiwedi"</string>
     <string name="wifi_ssid" msgid="488604828159458741">"Igama lenethiwekhi"</string>
+    <string name="wifi_ssid_hint" msgid="3170608752313710099">"Faka i-SSID"</string>
     <string name="wifi_security" msgid="158358046038876532">"Ukuvikela"</string>
-    <string name="wifi_signal" msgid="1817579728350364549">"Amandla esiginali"</string>
+    <string name="wifi_signal_strength" msgid="8507318230553042817">"Amandla esiginali"</string>
     <string name="wifi_status" msgid="5688013206066543952">"Isimo"</string>
     <string name="wifi_speed" msgid="1650692446731850781">"Isivinini sesixhumanisi"</string>
     <string name="wifi_frequency" msgid="8951455949682864922">"Imvamisa"</string>
     <string name="wifi_ip_address" msgid="3128140627890954061">"Ikheli le-IP"</string>
+    <string name="show_password" msgid="2074628020371139240">"Bonisa iphasiwedi"</string>
+    <string name="default_network_name_summary" msgid="8148402439232464276">"Faka igama lenethiwekhi"</string>
+    <string name="default_password_summary" msgid="8789594645836902982">"Faka iphasiwedi"</string>
     <string name="access_point_tag_key" msgid="1517143378973053337">"access_point_tag_key"</string>
   <string-array name="wifi_signals">
     <item msgid="4897376984576812606">"Akukuhle"</item>
-    <item msgid="2032262610626057081">"Kulungile"</item>
-    <item msgid="3859756017461098953">"Kuhle"</item>
-    <item msgid="1521103743353335724">"Kuhle kakhulu"</item>
+    <item msgid="7683058295076342057">"Akukuhle"</item>
+    <item msgid="1639222824821660744">"Kulungile"</item>
+    <item msgid="1838705897358163300">"Kuhle"</item>
+    <item msgid="6067166649320533751">"Kuhle kakhulu"</item>
   </string-array>
-    <string name="bluetooth_quick_toggle_title" msgid="637869245038061523">"I-Bluetooth"</string>
-    <string name="bluetooth_quick_toggle_summary" msgid="4390699431893305353">"Vula i-Bluetooth"</string>
-    <string name="bluetooth_settings" msgid="3878243366013638982">"I-Bluetooth"</string>
-    <string name="bluetooth_disabled" msgid="4187409401590350572">"I-Bluetooth ikhutshaziwe"</string>
+    <string name="link_speed" msgid="7868861844075624445">"%1$d Mbps"</string>
+    <string name="wifi_band_24ghz" msgid="8972492390639295220">"2.4 GHz"</string>
+    <string name="wifi_band_5ghz" msgid="2023762623523105080">"5 GHz"</string>
+    <string name="wifi_network_detail" msgid="9070182553555487360">"Imininingwane yenethiwekhi"</string>
+    <string name="wifi_mac_address" msgid="1466178247802349180">"Ikheli le-MAC"</string>
+    <string name="wifi_ip_address_title" msgid="300539799594024884">"Ikheli le-IP"</string>
+    <string name="wifi_subnet_mask" msgid="6238171812379380608">"Imaski ye-subnet"</string>
+    <string name="wifi_dns" msgid="1841448353154932801">"DNS"</string>
+    <string name="wifi_details_ipv6_address_header" msgid="4707181386646531890">"Amakheli e-IPv6"</string>
+    <string name="wifi_gateway" msgid="4975799192860431013">"Indlela yokuphuma"</string>
+    <string name="wifi_preferences_title" msgid="772788844257225510">"Okuncamelayo kwe-Wi-Fi"</string>
+    <string name="wifi_wakeup" msgid="7451825226044542000">"Vula i-Wi‑Fi ngokuzenzakalelayo"</string>
+    <string name="wifi_wakeup_summary" msgid="7237521683331291414">"I-Wi‑Fi izovuleka eceleni kwamanethiwekhi alondolozwe ngekhwalithi ephezulu, njengenethiwekhi yakho yasekhaya"</string>
+    <string name="wifi_wakeup_summary_no_location" msgid="2821576525488435259">"Akutholakali ngoba indawo ivaliwe. Vula "<annotation id="link">"indawo"</annotation>"."</string>
+    <string name="wifi_settings_scanning_required_title" msgid="2726782203331704928">"Vula ukuskena kwe-Wi-Fi?"</string>
+    <string name="wifi_settings_scanning_required_turn_on" msgid="4464931023377210050">"Vula"</string>
+    <string name="wifi_settings_scanning_required_enabled" msgid="5457372118991438313">"Ukuskena kwe-Wi-Fi kuvuliwe"</string>
+    <string name="wifi_cellular_fallback_title" msgid="8322675436784870862">"Shintshela kudatha yeselula ngokuzenzakalela"</string>
+    <string name="wifi_cellular_fallback_summary" msgid="2433848528924203758">"Sebenzisa idatha yeselula uma i-Wi-Fi ingenakho ukufinyelela kwe-inthanethi. Ukusetshenziswa kwedatha kungasebenza."</string>
+    <string name="learn_more" msgid="8214605928933358604">"Funda kabanzi"</string>
     <string name="bluetooth_settings_title" msgid="3794688574569688649">"I-Bluetooth"</string>
-    <string name="bluetooth_settings_summary" msgid="4023303473646769835">"Lawula uxhumano, setha igama ledivaysi nokutholakala"</string>
-    <string name="bluetooth_talkback_computer" msgid="5223330129934365312">"Ikhompuyutha"</string>
-    <string name="bluetooth_talkback_headset" msgid="6155254514321149935">"Ihedisethi"</string>
-    <string name="bluetooth_talkback_phone" msgid="8833977851215000426">"Ifoni"</string>
-    <string name="bluetooth_talkback_imaging" msgid="8762390801115154654">"Ukwenza isithombe"</string>
-    <string name="bluetooth_talkback_headphone" msgid="5362155791551671490">"Amahedfoni"</string>
-    <string name="bluetooth_talkback_input_peripheral" msgid="868933277567862622">"Okokufaka okulawulwa yikhompuyutha"</string>
-    <string name="bluetooth_talkback_bluetooth" msgid="1715933297419387985">"I-Bluetooth"</string>
-    <string name="bluetooth_preference_paired_devices" msgid="5875643105380630583">"Amadivaysi abhanqene"</string>
-    <string name="bluetooth_preference_found_devices" msgid="125155123214560511">"Amadivayisi atholakalayo"</string>
-    <string name="bluetooth_preference_no_paired_devices" msgid="483742146117390001">"Awekho amadivayisi abhanqiwe"</string>
-    <string name="bluetooth_preference_no_found_devices" msgid="1391812056491062262">"Awekho amadivayisi atholakalayo"</string>
-    <string name="bluetooth_preference_paired_dialog_title" msgid="2470829827455850904">"Idivayisi ebhanqiwe"</string>
-    <string name="bluetooth_preference_paired_dialog_name_label" msgid="3528740139365123415">"Igama"</string>
-    <string name="bluetooth_device_advanced_profile_header_title" msgid="8165093257483965783">"Sebenzisela i-"</string>
-    <string name="wifi_ssid_hint" msgid="4155050863239489553">"Shintsha igama lesevisi ye-Bluetooth"</string>
+    <string name="bluetooth_device" msgid="3178478829314083240">"Idivayisi engenalo igama"</string>
+    <string name="bluetooth_paired_devices" msgid="6463199569164652410">"Amadivaysi abhanqene"</string>
+    <string name="bluetooth_pair_new_device" msgid="6948753485443263095">"Bhanqa idivayisi entsha"</string>
+    <string name="bluetooth_pair_new_device_summary" msgid="2497221247690369031">"I-Bluetooth izovula ukuze ibhanqe"</string>
+    <string name="bluetooth_disconnect_title" msgid="7675271355910637528">"Nqamula idivayisi?"</string>
+    <string name="bluetooth_disconnect_all_profiles" msgid="2017519733701757244">"Imoto yakho izinqamula kusuka ku-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+    <string name="bluetooth_vehicle_mac_address" msgid="7069234636525805937">"Ikheli le-Bluetooth lemoto: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_device_mac_address" msgid="3949829271575045069">"Ikheli le-Bluetooth yedivayisi: <xliff:g id="ADDRESS">%1$s</xliff:g>"</string>
+    <string name="bluetooth_name" msgid="2609869978821094114">"Igama lemoto"</string>
+    <string name="bluetooth_rename_vehicle" msgid="5769424875066563154">"Qamba kabusha le moto"</string>
+    <string name="bluetooth_rename_device" msgid="8406868875363878712">"Qamba kabusha idivaysi"</string>
+    <string name="bluetooth_rename_button" msgid="2397892174725986383">"Qamba kabusha"</string>
+    <string name="bluetooth_available_devices" msgid="1854446368146061448">"Amadivayisi atholakalayo"</string>
+    <string name="bluetooth_profiles" msgid="5580372290862835951">"Amaphrofayli"</string>
+    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="bluetooth_notif_ticker" msgid="7192577740198156792">"Isicelo sokubhanqa i-Bluetooth"</string>
     <string name="bluetooth_device_context_pair_connect" msgid="3138105800372470422">"Pheya futhi uxhume"</string>
-    <string name="bluetooth" msgid="5235115159234688629">"I-Bluetooth"</string>
     <string name="bluetooth_pairing_key_msg" msgid="5066825929751599037">"Ikhodi yokumatanisa ye-Bluetooth"</string>
     <string name="bluetooth_enable_alphanumeric_pin" msgid="1636575922217263060">"Iphinikhodi iqukethe amaletha namasimbui"</string>
     <string name="bluetooth_enter_passkey_msg" msgid="5955236916732265593">"Thayipha ikhodi yokumatanisa bese ucindezela ku-Buyela noma ku-Enter"</string>
@@ -90,8 +122,16 @@
     <string name="bluetooth_pin_values_hint" msgid="1561325817559141687">"Ngokuvamile 0000 noma 1234"</string>
     <string name="bluetooth_notif_title" msgid="8374602799367803335">"Isicelo sokubhangqa"</string>
     <string name="bluetooth_notif_message" msgid="1060821000510108726">"Thepha ukuze ubhanqe ne-<xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
-    <string name="bluetooth_error_title" msgid="2341600997536511742"></string>
     <string name="language_settings" msgid="2079258598337245546">"Izilimi"</string>
+    <string name="languages_and_input_settings" msgid="3672322610529408248">"Izilimi nokokufaka"</string>
+    <string name="keyboard_settings" msgid="1959697870618278081">"Ikhibhodi"</string>
+    <string name="manage_keyboard" msgid="4045394766282200132">"Phatha amakhibhodi"</string>
+    <string name="text_to_speech_settings" msgid="811985746199507343">"Ukuphuma kombhalo ube inkulumo"</string>
+    <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Injini encanyelwayo"</string>
+    <string name="text_to_speech_current_engine" msgid="8133107484909612597">"Injini yamanje"</string>
+    <string name="tts_speech_rate" msgid="4512944877291943133">"Ukulinganisela kwenkulumo"</string>
+    <string name="tts_pitch" msgid="2389171233852604923">"Ukuphakama"</string>
+    <string name="tts_reset" msgid="6289481549801844709">"Setha kabusha"</string>
     <string name="sound_settings" msgid="3072423952331872246">"Umsindo"</string>
     <string name="ring_volume_title" msgid="3135241004980719442">"Ivolumu yokukhalisa"</string>
     <string name="navi_volume_title" msgid="946292066759195165">"Ivolomu yokuzula"</string>
@@ -100,30 +140,65 @@
     <string name="media_volume_title" msgid="6697416686272606865">"Imidiya"</string>
     <string name="media_volume_summary" msgid="2961762827637127239">"Hlela ivolumu yomculo namavidiyo"</string>
     <string name="alarm_volume_title" msgid="840384014895796587">"I-alamu"</string>
+    <string name="ringtone_title" msgid="8370531086214517972">"Ithoni yokukhala yefoni"</string>
+    <string name="notification_ringtone_title" msgid="8661716239594010288">"Umsindo wesaziso ozenzakalelayo"</string>
+    <string name="alarm_ringtone_title" msgid="3257364170646440908">"Umsindo we-alamu ozenzakalelayo"</string>
+    <string name="apps_and_notifications_settings" msgid="8704585874333781975">"Izinhlelo zokusebenza nezaziso"</string>
+    <string name="all_applications" msgid="7798210477486822168">"Bonisa zonke izinhlelo zokusebenza"</string>
+    <string name="default_applications" msgid="1558183275638697087">"Izinhlelo zokusebenza ezizenzakalelayo"</string>
     <string name="applications_settings" msgid="794261395191035632">"Ulwazi lohlelo lokusebenza"</string>
+    <string name="force_stop" msgid="2153183697014720520">"Phoqelela ukuma"</string>
+    <string name="force_stop_dialog_title" msgid="3342850939200388694">"Phoqelela ukumisa?"</string>
+    <string name="force_stop_dialog_text" msgid="4354954014318432599">"Uma uphoqa ukumisa uhlelo lokusebenza, kungenzeka ukuthi lungasebenzi."</string>
     <string name="disable_text" msgid="4358165448648990820">"Khubaza"</string>
     <string name="enable_text" msgid="1794971777861881238">"Nika amandla"</string>
+    <string name="uninstall_text" msgid="277907956072833012">"Khipha"</string>
+    <string name="app_disable_dialog_text" msgid="7731155411006654025">"Uma ukhubaza lolu hlelo lokusebenza, i-Android nezinye izinhlelo zokusebenza kungenzeka zingasasebenzi njengoba zihlosiwe."</string>
+    <string name="app_disable_dialog_positive" msgid="4448684722791563349">"Khubaza uhlelo lokusebenza"</string>
     <string name="permissions_label" msgid="2701446753515612685">"Izimvume"</string>
     <string name="application_version_label" msgid="8556889839783311649">"Inguqulo: %1$s"</string>
     <string name="runtime_permissions_summary_no_permissions_granted" msgid="6001439205270250021">"Azikho izimvume ezinikiwe"</string>
     <string name="runtime_permissions_summary_no_permissions_requested" msgid="4074220596273432442">"Azikho izimvume eziceliwe"</string>
     <string name="data_usage_summary_title" msgid="4368024763485916986">"Ukusebenzisa idatha"</string>
     <string name="data_usage_app_summary_title" msgid="5012851696585421420">"Ukusetshenziswa kwedatha yohlelo lokusebenza"</string>
-    <string name="force_stop" msgid="2153183697014720520">"Phoqelela ukuma"</string>
     <string name="computing_size" msgid="5791407621793083965">"Iyakhompyutha…"</string>
     <plurals name="runtime_permissions_additional_count" formatted="false" msgid="3513360187065317613">
       <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> izimvume ezingeziwe</item>
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> izimvume ezingeziwe</item>
     </plurals>
+    <string name="assist_and_voice_input_settings" msgid="8813195157136637132">"Umsizi nokokufaka kwezwi"</string>
+    <string name="assist_app_settings" msgid="9085261410166776497">"Uhlelo lokusebenza lokusiza"</string>
+    <string name="assist_access_context_title" msgid="8034851731390785301">"Sebenzisa umbhalo kusukela kusikrini"</string>
+    <string name="assist_access_context_summary" msgid="2374281280599443774">"Vumela uhlelo lokusebenza lokusiza ukuthi lufinyelele kokuqukethwe kwesikrini njengombhalo"</string>
+    <string name="assist_access_screenshot_title" msgid="2855956879971465044">"Sebenzisa isithombe-skrini"</string>
+    <string name="assist_access_screenshot_summary" msgid="6246496926635145782">"Vumela uhlelo lokusebenza lokusiza ukuthi lufinyelele kusithombe sesikrini"</string>
+    <!-- no translation found for voice_input_settings_title (3238707827815647526) -->
+    <skip />
+    <string name="autofill_settings_title" msgid="1188754272680049972">"Isevisi yokugcwalisa ngokuzenzakalela"</string>
+    <string name="app_list_preference_none" msgid="7753357799926715901">"Lutho"</string>
+    <string name="default_app_selected_app" msgid="5289396663745484773">"Ekhethiwe"</string>
+    <string name="assistant_security_warning" msgid="1844807956967428012">"Isilekeleli sizokwazi ukufunda ulwazi mayelana nezinhlelo zokusebenza ezisetshenziswayo kusistimu yakho, ezifaka ulwazi olubonakala kusikrini sakho noma ezifinyeleleka ngaphakathi kwezinhlelo zokusebenza."</string>
+    <string name="autofill_confirmation_message" msgid="1832984461556991378">"&lt;b&gt;Qiniseka ukuthi wethemba lolu hlelo lokusebenza&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; isebenzisa okusesikrinini sakho ukunquma okungagcwaliswa ngokuzenzakalela."</string>
+    <string name="autofill_add_service" msgid="6413893366443609951">"Engeza isevisi"</string>
+    <string name="location_settings_title" msgid="901334356682423679">"Indawo"</string>
+    <string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Izicelo zakamuva zendawo"</string>
+    <string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Azikho izicelo zakamuva zendawo"</string>
+    <string name="location_settings_app_permissions_title" msgid="6446735313354321564">"Izimvume zeleveli yohlelo lokusebenza"</string>
+    <string name="location_settings_scanning_title" msgid="4253945869911300740">"Iyaskena"</string>
+    <string name="location_settings_services_title" msgid="1186133632690970468">"Amasevisi endawo"</string>
+    <string name="location_settings_wifi_scanning_title" msgid="8021558840074023719">"Ukuskena kwe-Wi-Fi"</string>
+    <string name="location_settings_wifi_scanning_summary" msgid="2116283960258671324">"Vumela izinhlelo zokusebenza namasevisi ukuthi askenele amanethiwekhi e-Wi-Fi noma kunini, nanoma i-Wi-Fi ivaliwe. Lokhu kungasetshenziselwa, njengesibonelo, ukuthuthukisa izici ezisuselwa endaweni namasevisi."</string>
+    <string name="location_settings_bluetooth_scanning_title" msgid="2969682902241932059">"Ukuskena kwe-Bluetooth"</string>
+    <string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Vumela izinhlelo zokusebenza namasevisi ukuthi askenele amadivayisi aseduze noma kunini, nanoma i-Bluetooth ivaliwe. Lokhu kungasetshenziselwa, njengesibonelo, ukuthuthukisa izici ezisuselwa endaweni namasevisi."</string>
     <string name="system_setting_title" msgid="6864599341809463440">"Isistimu"</string>
-    <string name="system_update_settings_list_item_title" msgid="5182439376921868735">"Izibuyekezo zesistimu"</string>
-    <string name="system_update_settings_list_item_summary" msgid="7395202602021608371"></string>
+    <string name="system_update_settings_title" msgid="8448588267784138855">"Izibuyekezo zesistimu"</string>
     <string name="firmware_version" msgid="8491753744549309333">"Inguqulo ye-Android"</string>
     <string name="security_patch" msgid="4794276590178386903">"Ileveli yokuvikeleka ye-Android"</string>
     <string name="model_info" msgid="4966408071657934452">"Imodeli"</string>
     <string name="baseband_version" msgid="2370088062235041897">"Inguqulo ye-Baseband"</string>
     <string name="kernel_version" msgid="7327212934187011508">"Inguqulo ye-Kernel"</string>
     <string name="build_number" msgid="3997326631001009102">"Yakha inombolo"</string>
+    <string name="bluetooth_mac_address" msgid="7641425947941688072">"Ikheli le-Bluetooth"</string>
     <string name="device_info_not_available" msgid="2095601973977376655">"Ayitholakali"</string>
     <string name="device_status_activity_title" msgid="4083567497305368200">"Isimo"</string>
     <string name="device_status" msgid="267298179806290920">"Isimo"</string>
@@ -140,12 +215,49 @@
     <string name="copyright_title" msgid="4220237202917417876">"I-Copyright"</string>
     <string name="license_title" msgid="936705938435249965">"Ilayisensi"</string>
     <string name="terms_title" msgid="5201471373602628765">"Imigomo nemibandela"</string>
-    <string name="webview_license_title" msgid="2531829466541104826">"Ilayisense yesistimu ye-WebView"</string>
+    <string name="webview_license_title" msgid="6442372337052056463">"Amalayisense we-WebView wesistimu"</string>
     <string name="wallpaper_attributions" msgid="9201272150014500697">"Izithombe zangemuva"</string>
     <string name="wallpaper_attributions_values" msgid="4292446851583307603">"Abanikezeli bezithombe zesathelayithi:\n2014 CNES / Astrium, DigitalGlobe, Bluesky"</string>
     <string name="settings_license_activity_title" msgid="8499293744313077709">"Amalayisense enkampani yangaphandle"</string>
     <string name="settings_license_activity_unavailable" msgid="6104592821991010350">"Kunenkinga yokulayisha amalayisensi."</string>
     <string name="settings_license_activity_loading" msgid="6163263123009681841">"Iyalayisha…"</string>
+    <plurals name="show_dev_countdown" formatted="false" msgid="2968627665608969405">
+      <item quantity="one">Manje usalelwe yizinyathelo ezingu-<xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ukuthi ube ngunjiniyela.</item>
+      <item quantity="other">Manje usalelwe yizinyathelo ezingu-<xliff:g id="STEP_COUNT_1">%1$d</xliff:g> ukuthi ube ngunjiniyela.</item>
+    </plurals>
+    <string name="show_dev_on" msgid="5339077400040834808">"Manje ungunjiniyela!"</string>
+    <string name="show_dev_already" msgid="1678087328973865736">"Asikho isidingo, usuvele ungunjiniyela."</string>
+    <string name="developer_options_settings" msgid="1530739225109118480">"Izinketho zonjiniyela"</string>
+    <string name="reset_options_title" msgid="4388902952861833420">"Izinketho zokusetha kabusha"</string>
+    <string name="reset_options_summary" msgid="5508201367420359293">"Inethiwekhi, izinhlelo zokusebenza, noma ukusetha kabusha idivayisi"</string>
+    <string name="reset_network_title" msgid="1284233059990797263">"Setha kabusha inethiwekhi"</string>
+    <string name="reset_network_desc" msgid="602381374544634925">"Lokhu kuzosetha kabusha zonke izilungiselelo zenethiwekhi, okufaka:"</string>
+    <string name="reset_network_item_wifi" msgid="7569481589699982698">"I-"<li>"Wi‑Fi"</li></string>
+    <string name="reset_network_item_mobile" msgid="5747282716664480997"><li>"Idatha yeselula"</li></string>
+    <string name="reset_network_item_bluetooth" msgid="6035019931106921284">"I-"<li>"Bluetooth"</li></string>
+    <string name="reset_esim_title" msgid="8132107637911831211">"Sula onke ama-eSIM emoto"</string>
+    <string name="reset_esim_desc" msgid="1437276625485586740">"Lokhu ngeke kukhansele uhlelo lwakho lwesevisi."</string>
+    <string name="reset_esim_error_title" msgid="7245109418130525492">"Ayikwazi ukusetha kabusha ama-eSIM"</string>
+    <string name="reset_network_select" msgid="2433825874868038739">"Khetha inethiwekhi"</string>
+    <string name="reset_network_button_text" msgid="8374174455632765033">"Setha kabusha izilungiselelo"</string>
+    <string name="reset_network_confirm_title" msgid="5255502723840197663">"Setha kabusha?"</string>
+    <string name="reset_network_confirm_desc" msgid="7721698076856330212">"Setha kabusha zonke izilungiselelo zenethiwekhi? Awukwazi ukuhlehlisa lesi senzo!"</string>
+    <string name="reset_network_confirm_button_text" msgid="5246859685069024851">"Setha kabusha izilungiselelo"</string>
+    <string name="reset_network_complete_toast" msgid="3804108209431416865">"Izilungiselelo zenethiwekhi zisethwe kabusha"</string>
+    <string name="reset_app_pref_title" msgid="5855420038951743992">"Setha kabusha izintandokazi zezinhlelo zokusebenza"</string>
+    <string name="reset_app_pref_desc" msgid="579392665146962149">"Lokhu kuzosetha kabusha konke okuncamelayo kwe-:\n\n"<li>"Izinhlelo zokusebenza ezikhutshaziwe"</li>\n<li>"Izaziso zezinhlelo zokusebenza ezikhutshaziwe"</li>\n<li>"Izinhlelo zokusebenza ezizenzakalelayo zezenzo"</li>\n<li>"Imikhawulo yedatha yangemuva yezinhlelo zokusebenza"</li>\n<li>"Noma yimiphi imikhawulo yemvume"</li>\n\n"Ngeke uze ulahlekelwe noma iyiphi idatha yohlelo lokusebenza."</string>
+    <string name="reset_app_pref_button_text" msgid="6270820447321231609">"Setha kabusha izinhlelo zokusebenza"</string>
+    <string name="reset_app_pref_complete_toast" msgid="8709072932243594166">"Izintandokazi zohlelo lokusebenza zisethwe kabusha"</string>
+    <string name="master_clear_title" msgid="8515335233363214414">"Sula yonke idatha (ukusethwa kabusha kwasekuqaleni)"</string>
+    <string name="master_clear_desc" msgid="9058719802779893535">"Lokhu kuzosusa yonke idatha kusukela kuyunithi eyinhloko yemoto yakho, efaka:\n\n"<li>"I-akhawunti yakho ye-Google"</li>\n<li>"Isistimu nedatha yohlelo lokusebenza nezilungiselelo"</li>\n<li>"Izinhlelo zokusebenza ezilandiwe"</li></string>
+    <string name="master_clear_accounts" msgid="7797522012993567494">"Manje ungene ngemvume kuma-akhawunti alandelayo:"</string>
+    <string name="master_clear_other_users_present" msgid="8383376863095743337">"Kukhona abanye abasebenzisi abakhona kule moto."</string>
+    <string name="master_clear_button_text" msgid="8010754220392741160">"Setha kabusha imoto"</string>
+    <string name="master_clear_confirm_title" msgid="8646455623132887370">"Setha kabusha?"</string>
+    <string name="master_clear_confirm_desc" msgid="8920446291698038558">"Sula lonke ulwazi lakho lomuntu siqu kanye nezinhlelo zokusebenza ezilandiwe? Awukwazi ukuhlehlisa lesi senzo!"</string>
+    <string name="master_clear_confirm_button_text" msgid="7981254968588121786">"Sula yonke into"</string>
+    <string name="master_clear_progress_title" msgid="7087480656932674774">"Iyasula"</string>
+    <string name="master_clear_progress_text" msgid="3440789441935303176">"Sicela ulinde..."</string>
     <string name="date_and_time_settings_title" msgid="4058492663544475485">"Idethi nesikhathi"</string>
     <string name="date_and_time_settings_title_setup_wizard" msgid="7580119979694174107">"Setha idethi nesikhathi"</string>
     <string name="date_and_time_settings_summary" msgid="7669856855390804666">"Setha idethi, isikhathi, umkhwawulo wesikhathi namafomethi"</string>
@@ -165,23 +277,59 @@
     <string name="zone_list_menu_sort_by_timezone" msgid="4944880536057914136">"Hlunga ngesikhathi somkhawulo"</string>
     <string name="date_picker_title" msgid="1533614225273770178">"Idethi"</string>
     <string name="time_picker_title" msgid="7436045944320504639">"Isikhathi"</string>
-    <string name="user_add_user_menu" msgid="5319151436895941496">"Engeza umsebenzisi"</string>
-    <string name="user_add_account_menu" msgid="6625351983590713721">"Engeza i-akhawunti"</string>
-    <string name="user_delete_user_description" msgid="2300280525351142435">"Susa umsebenzisi"</string>
-    <string name="user_new_user_name" msgid="7115771396412339662">"Umsebenzisi omusha"</string>
-    <string name="user_guest" msgid="3465399481257448601">"Isivakashi"</string>
     <string name="user_admin" msgid="1535484812908584809">"Mqondisi"</string>
     <string name="signed_in_admin_user" msgid="1267225622818673274">"Ungene ngemvume njengomlawuli"</string>
+    <string name="grant_admin_permissions_title" msgid="4628430467359951437">"Zonke izimvume zomphathi"</string>
+    <string name="grant_admin_permissions_button_text" msgid="988239414372882401">"Yenza umphathi"</string>
+    <string name="grant_admin_permissions_message" msgid="1751910369004774830">"Umsebenzisi uzokwazi ukususa abasebenzisi, kufaka phakathi abanye abaphathi, nokusetha kabusha isistimu njengasekuqaleni."</string>
+    <string name="action_not_reversible_message" msgid="740401337875726973">"Lesi senzo asiphindeli emuva."</string>
+    <string name="confirm_grant_admin" msgid="7852596890218647682">"Yebo, yenza umphathi"</string>
+    <string name="create_user_permission_title" msgid="7781550880565935298">"Dala abasebenzisi abasha"</string>
+    <string name="outgoing_calls_permission_title" msgid="1230180443712099293">"Yenza amakholi wefoni"</string>
+    <string name="sms_messaging_permission_title" msgid="6099328509729071243">"Imilayezo ngedatha yeselula yemoto"</string>
+    <string name="install_apps_permission_title" msgid="3099705360827925296">"Faka izinhlelo zokusebenza ezintsha"</string>
+    <string name="uninstall_apps_permission_title" msgid="8448422340567430659">"Khipha izinhlelo zokusebenza"</string>
+    <string name="user_add_user_menu" msgid="5319151436895941496">"Engeza umsebenzisi"</string>
+    <string name="user_new_user_name" msgid="7115771396412339662">"Umsebenzisi omusha"</string>
+    <string name="user_add_user_title" msgid="7458813670614932479">"Engeza umsebenzisi omusha?"</string>
+    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Uma ungeza umsebenzisi omusha, loyo muntu udinga ukusetha izikhala zakhe."</string>
+    <string name="user_add_user_message_update" msgid="1528170913388932459">"Noma yimuphi umsebenzisi angabuyekeza izinhlelo zokusebenza zabanye abasebenzisi."</string>
+    <string name="user_limit_reached_title" msgid="8803355734556061238">"Kufinyelelwe kumkhawulo womsebenzisi"</string>
+    <plurals name="user_limit_reached_message" formatted="false" msgid="2651922256448824747">
+      <item quantity="one">Ungadala kufikela kubasebenzisi abangu-<xliff:g id="COUNT">%d</xliff:g>.</item>
+      <item quantity="other">Ungadala kufikela kubasebenzisi abangu-<xliff:g id="COUNT">%d</xliff:g>.</item>
+    </plurals>
+    <string name="add_user_error_title" msgid="3206300411663817038">"Yehlulekile ukudala umsebenzisi omusha"</string>
+    <string name="delete_user_dialog_title" msgid="3422867434431562007">"Susa lo msebenzisi?"</string>
+    <string name="delete_user_dialog_message" msgid="4346777604351785057">"Zonke izinhlelo zokusebenza nedatha kuzosuswa."</string>
+    <string name="delete_user_error_title" msgid="7609819398530124827">"Yehlulekile ukususa umsebenzisi."</string>
+    <string name="delete_user_error_dismiss" msgid="429156446763738273">"Chitha"</string>
+    <string name="delete_user_error_retry" msgid="5116434895572670563">"Zama futhi"</string>
+    <string name="delete_last_user_dialog_title" msgid="3644392025675369680">"Susa umsebenzisi wokugcina?"</string>
+    <string name="delete_last_user_admin_created_message" msgid="1856897729010319054">"Ngemuva kokususa umsebenzisi osele wale moto, umsebenzisi omusha womlawuli uzodalwa."</string>
+    <string name="delete_last_user_system_setup_required_message" msgid="8550730509371697989">"Yonke idatha, izilungiselelo, kanye nezinhlelo zokusebenza eziphathelene nalo msebenzisi kuzosuswa. Uzodinga ukusetha isistimu futhi."</string>
+    <string name="choose_new_admin_title" msgid="1915428454917699587">"Khetha umlawuli omusha"</string>
+    <string name="choose_new_admin_message" msgid="7468286545352043354">"Udinga okungenani umlawuli oyedwa. Ukuze ususe lo, qala ngokukhetha ukumiselela."</string>
+    <string name="choose_new_admin_label" msgid="5987653639387437939">"Khetha umlawuli"</string>
+    <string name="user_guest" msgid="3465399481257448601">"Isivakashi"</string>
+    <string name="start_guest_session" msgid="4438752398760283201">"Isivakashi"</string>
     <string name="user_switch" msgid="6544839750534690781">"Shintsha"</string>
     <string name="current_user_name" msgid="3813671533249316823">"Wena (%1$s)"</string>
     <string name="user_name_label" msgid="3210832645046206845">"Igama"</string>
     <string name="user_summary_not_set_up" msgid="1473688119241224145">"Akusethiwe"</string>
     <string name="edit_user_name_title" msgid="6890782937520262478">"Hlela igama lomsebenzisi"</string>
     <string name="users_list_title" msgid="770764290290240909">"Abasebenzisi"</string>
+    <string name="user_details_admin_title" msgid="3530292857178371891">"Izimvume zinikwe ku-%1$s"</string>
     <string name="accounts_settings_title" msgid="436190037084293471">"Ama-akhawunti"</string>
-    <string name="user_details_title" msgid="1104762783367701498">"Umsebenzisi"</string>
+    <string name="user_add_account_menu" msgid="6625351983590713721">"Engeza i-akhawunti"</string>
     <string name="no_accounts_added" msgid="5148163140691096055">"Awekho ama-akhawunti angeziwe"</string>
     <string name="account_list_title" msgid="7631588514613843065">"Ama-akhawunti e-<xliff:g id="CURRENT_USER_NAME">%1$s</xliff:g>"</string>
+    <string name="account_auto_sync_title" msgid="3238816995364191432">"Vumelanisa ngokuzenzakalelayo idatha"</string>
+    <string name="account_auto_sync_summary" msgid="6963837893148304128">"Vumela izinhlelo zokusebenza ziqalise kabusha idatha"</string>
+    <string name="data_usage_auto_sync_on_dialog_title" msgid="6027487764261344033">"Vula ukuvumelanisa idatha?"</string>
+    <string name="data_usage_auto_sync_on_dialog" msgid="2770233931307606956">"Noma yiziphi izinguquko ozenzayo kuma-akhawunti wakho kuwebhu kuzokopishelwa ngokuzenzakalela kufoni yakho.\n\nAmanye ama-akhawunti angahle akopishe ngokuzenzakalelayo noma yiziphi izinguquko ozenzayo kufoni kuya kuwebhu. I-Akhawunti ye-Google isebenza ngale ndlela."</string>
+    <string name="data_usage_auto_sync_off_dialog_title" msgid="1235955038330202536">"Vala ukuvumelanisa idatha?"</string>
+    <string name="data_usage_auto_sync_off_dialog" msgid="5040873073016183315">"Lokhu kuzosebenzisa idatha, kodwa uzodinga ukuvumelanisa i-akhawunti ngayinye ukuze uqoqe ulwazi lwakamuva. Futhi ngeke uthole izaziso uma izibuyekezo zivela."</string>
     <string name="account_details_title" msgid="7529571432258448573">"Ulwazi lwe-akhawunti"</string>
     <string name="add_account_title" msgid="5988746086885210040">"Engeza i-akhawunti"</string>
     <string name="add_an_account" msgid="1072285034300995091">"Engeza i-akhawunti"</string>
@@ -189,16 +337,20 @@
     <string name="remove_account_title" msgid="8840386525787836381">"Susa i-akhawunti"</string>
     <string name="really_remove_account_title" msgid="3555164432587924900">"Susa i-akhawunti?"</string>
     <string name="really_remove_account_message" msgid="4296769280849579900">"Ingabe ngempela ufuna ukukhipha le-akhawunti? Ukukukhipha kuzosusa yonke imiyalezo yayo, othintana nabo, neminye imininingo esuka kudivayisi!"</string>
-    <string name="remove_account_failed" msgid="7472511529086294087">"Lolu shintsho aluvunyelwe umlawuli wakho"</string>
-    <string name="really_remove_user_title" msgid="4990029019291756762">"Khipha lomsebenzisi?"</string>
-    <string name="really_remove_user_message" msgid="3828090902833944533">"Zonke izinhlelo zokusebenza nedatha kuzosuswa."</string>
-    <string name="remove_user_error_title" msgid="2038275458657689420">"Yehlulekile ukususa umsebenzisi."</string>
-    <string name="remove_user_error_message" msgid="6803947507134323358">"Zama futhi?"</string>
-    <string name="remove_user_error_dismiss" msgid="4006591159426844335">"Cashisa"</string>
-    <string name="remove_user_error_retry" msgid="8291692909396995093">"Zama futhi"</string>
-    <string name="user_add_user_title" msgid="7458813670614932479">"Engeza umsebenzisi omusha?"</string>
-    <string name="user_add_user_message_setup" msgid="6030901156040053106">"Uma ungeza umsebenzisi omusha, loyo muntu udinga ukusetha izikhala zakhe."</string>
-    <string name="user_add_user_message_update" msgid="1528170913388932459">"Noma yimuphi umsebenzisi angabuyekeza izinhlelo zokusebenza zabanye abasebenzisi."</string>
+    <string name="remove_account_error_title" msgid="8368044943174826635">"Yehlulekile ukususa i-akhawunti."</string>
+    <string name="account_sync_title" msgid="6541844336300236915">"Ukuvumelanisa kwe-akhawunti"</string>
+    <string name="account_sync_summary_some_on" msgid="4525960296068027182">"Ukuvumelanisa kuvulelwe okungu-<xliff:g id="ID_1">%1$d</xliff:g> kuzinto ezingu-<xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="account_sync_summary_all_on" msgid="3652264471870312725">"Ukuvumelanisa kuvulelwe zonke izinto"</string>
+    <string name="account_sync_summary_all_off" msgid="6550959714035312414">"Ukuvumelanisa kuvalelwe zonke izinto"</string>
+    <string name="sync_disabled" msgid="393531064334628258">"Ukuvumelanisa KUVALIWE"</string>
+    <string name="sync_error" msgid="6698021343089247914">"Iphutha lokuvumelanisa"</string>
+    <string name="last_synced" msgid="4745124489150101529">"Ukuvumelanisa kokugcina <xliff:g id="LAST_SYNC_TIME">%1$s</xliff:g>"</string>
+    <string name="sync_in_progress" msgid="1237573373537382416">"Vumelanisa manje..."</string>
+    <string name="sync_one_time_sync" msgid="491707183321353107">"Thepha ukuze uvumelanise manje<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
+    <string name="sync_button_sync_now" msgid="5767643057970371315">"Vumelanisa manje"</string>
+    <string name="sync_button_sync_cancel" msgid="7739510554513641393">"Khansela ukuvumelanisa"</string>
+    <string name="sync_is_failing" msgid="5766255460901806206">"Ukuvumelanisa okwamanje kubhekene nenkinga. Kuzobuya maduze."</string>
     <string name="security_settings_title" msgid="6955331714774709746">"Ukuvikela"</string>
     <string name="security_settings_subtitle" msgid="2244635550239273229">"Isikrini sivaliwe"</string>
     <string name="security_lock_none" msgid="1054645093754839638">"Lutho"</string>
@@ -206,7 +358,7 @@
     <string name="security_lock_pin" msgid="4891899974369503200">"I-PIN"</string>
     <string name="security_lock_password" msgid="4420203740048322494">"Iphasiwedi"</string>
     <string name="lock_settings_picker_title" msgid="6590330165050361632">"Khetha uhlobo lokukhiya"</string>
-    <string name="screen_lock_options" msgid="7023338635352915768">"Izinketho zokukhiya isikrini"</string>
+    <string name="screen_lock_options" msgid="8531177937577168185">"Izinketho zokukhiya"</string>
     <string name="lock_settings_enter_pattern" msgid="4826034565853171624">"Faka iphethini yakho"</string>
     <string name="lockpattern_confirm_button_text" msgid="7784925958324484965">"Qinisekisa"</string>
     <string name="lockpattern_restart_button_text" msgid="9355771277617537">"Dweba kabusha"</string>
@@ -216,7 +368,7 @@
     <string name="set_screen_lock" msgid="5239317292691332780">"Setha ukukhiya kwesikrini"</string>
     <string name="lockscreen_choose_your_pin" msgid="1645229555410061526">"Khetha i-PIN yakho"</string>
     <string name="lockscreen_choose_your_pattern" msgid="6801175111142593404">"Khetha iphathini yakho"</string>
-    <string name="lockscreen_choose_your_password" msgid="5703747830308181428">"Khetha iphasiwedi yakho"</string>
+    <string name="lockscreen_choose_your_password" msgid="4487577710136014069">"Khetha iphasiwedi yakho"</string>
     <string name="current_screen_lock" msgid="637651611145979587">"Ukukhiya isikrini kwamanje"</string>
     <string name="choose_lock_pattern_message" msgid="6242765203541309524">"Ngokuphepha, setha iphethini"</string>
     <string name="lockpattern_retry_button_text" msgid="4655398824001857843">"Sula"</string>
@@ -288,7 +440,28 @@
     <string name="lockpassword_password_blacklisted_by_admin" msgid="7965893810326503891">"Amaphasiwedi avamile avinjelwe umlawuli wakho we-IT. Zama iphasiwedi ehlukile."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ukwenyuka, ukwehla, noma ukulandelana okuphindiwe kwamadijithi akuvunyelwe."</string>
     <string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Izinketho zokukhiya isikrini"</string>
+    <string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> izinsuku ezedlule"</string>
+    <string name="add_device_title" msgid="8452168024017866232">"Engeza idivayisi ethenjiwe"</string>
+    <string name="trusted_device" msgid="5637378361866787603">"Amadivayisi athenjwa"</string>
+    <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+      <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> amadivayisi</item>
+      <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> amadivayisi</item>
+    </plurals>
+    <string name="remove_device_message" msgid="6447820559674148349">"I-<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> yakho izovula le moto uma ixhunyiwe. Uma omunye umuntu athatha i-<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, angakwazi ukufinyelela le divayisi"</string>
+    <string name="trusted_device_confirm_button" msgid="102354635014627996">"Qinisekisa"</string>
+    <string name="trusted_device_remove_button" msgid="6140476996063415420">"Susa idivayisi ethenjiwe"</string>
+    <string name="trusted_device_done_button" msgid="8481956533222625296">"Kwenziwe"</string>
+    <string name="add_trusted_device_instruction" msgid="109228038968439923">"Sebenzisa uhlelo lokusebenza elingumngane ukuze usethe idivayisi ethembekile. Uma ususethile, uzokwazi ukuvula iphrofayela yakho yomsebenszisi uma ifoni yakho itholwe imoto"</string>
+    <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Landa uhlelo lokusebenza elingumngane efonini yakho"</string>
+    <string name="trusted_device_select_device" msgid="198902765179270739">"2. Khetha u-<xliff:g id="CAR_NAME">%1$s</xliff:g> efonini yakho ukuze ubhanqe amadivayisi"</string>
+    <string name="trusted_device_safety_alert" msgid="8937542424166378247">"I-Smart Lock ayikwazi ukuthola izici zokuphepha zale divayisi. Ukuze usize ukuvikela imoto yakho, idivayisi ethembekile izokwazi kuphela ukugcina imoto yakho ivulekile uma isivele ivulwe nguwe. Idivayisi yakho ethembekile ingagcina imoto yakho ivuliwe uma iseduze, ngisho noma othile ayibambile."</string>
+    <string name="trusted_device_pairing_code_dialog_title" msgid="6551880047490332731">"Engeza i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> njengedivayisi ethenjiwe"</string>
+    <string name="trusted_device_success_enrollment_toast" msgid="3275482710090416690">"I-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ingezwe ngempumelelo njengedivayisi ethembekile"</string>
+    <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Ukubhaliswa kwe-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> kwehlulekiile"</string>
+    <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ukungeza idivayisi ethembekile kudinga ukuthi usethe indlela yokugunyaza elandelayo. Uma ungenayo idivayisi yakho ethembekile, ukugunyaza kuzodingeka ukufinyelela iphrofayela yakho."</string>
     <string name="forget" msgid="3971143908183848527">"Khohlwa"</string>
+    <string name="connect" msgid="5861699594602380150">"Xhuma"</string>
+    <string name="disconnect" msgid="6140789953324820336">"Nqamula"</string>
     <string name="delete_button" msgid="5840500432614610850">"Susa"</string>
     <string name="remove_button" msgid="6664656962868194178">"Susa"</string>
     <string name="cancel" msgid="750286395700355455">"Khansela"</string>
@@ -298,8 +471,7 @@
     <string name="exit_retail_mode_dialog_title" msgid="7970631760237469168">"Phuma kumodi yedemo"</string>
     <string name="exit_retail_mode_dialog_body" msgid="8314316171782527301">"Lokhu kuzosusa i-akhawunti ye-demo futhi isethe kabusha idatha yesistimu. Yonke idatha yomsebenzisi izolahleka."</string>
     <string name="exit_retail_mode_dialog_confirmation_button_text" msgid="3147249675355968649">"Phuma kudemo"</string>
-    <string name="suggestion_primary_button" msgid="6421115494714083020">"qedela ukusetha"</string>
-    <string name="suggestion_secondary_button" msgid="7075088546904464681">"hhayi manje"</string>
+    <string name="suggestion_dismiss_button" msgid="4539412646977050641">"CASHISA"</string>
     <string name="restricted_while_driving" msgid="6217369093121968299">"Isici asitholakali ngenkathi ushayela."</string>
     <string name="add_user_restricted_while_driving" msgid="6384004350628271556">"Ayikwazi ukungeza umsebenzisi ngenkathi ushayela."</string>
 </resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
new file mode 100644
index 0000000..62cb3be
--- /dev/null
+++ b/res/values/arrays.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<resources>
+
+    <!-- Values for premium SMS permission selector [CHAR LIMIT=30] -->
+    <string-array name="premium_sms_access_values">
+        <!-- Ask user before sending to premium SMS short code. -->
+        <item>Ask</item>
+        <!-- Never allow app to send to premium SMS short code. -->
+        <item>Never allow</item>
+        <!-- Always allow app to send to premium SMS short code. -->
+        <item>Always allow</item>
+    </string-array>
+
+</resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 9ed19a7..c22af54 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -1,23 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-/*
-** Copyright 2018, 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.
-*/
+    Copyright 2018 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.
 -->
 
-<!-- Defines the attributes and values used in res/xml/car_volume_items.xml -->
 <resources>
     <declare-styleable name="carVolumeItems"/>
 
@@ -45,11 +42,44 @@
         </attr>
 
         <!-- Title and icon resource ids to render on UI -->
-        <attr name="title" format="reference"/>
+        <attr name="titleText" format="reference"/>
         <attr name="icon" format="reference"/>
     </declare-styleable>
 
     <declare-styleable name="PinPadView">
-        <attr name="enterKeyDrawable" format="reference"/>
+        <attr name="layout" format="reference"/>
     </declare-styleable>
+
+    <declare-styleable name="Preference">
+        <!-- Classname of a PreferenceController corresponding to the preference -->
+        <attr name="controller" format="string"/>
+    </declare-styleable>
+
+    <declare-styleable name="TwoActionPreference">
+        <!-- Determines if the secondary action is initially shown -->
+        <attr name="actionShown" format="boolean"/>
+    </declare-styleable>
+
+    <declare-styleable name="ProgressBarPreference">
+        <attr name="min" format="integer"/>
+        <attr name="max" format="integer"/>
+        <attr name="progress" format="integer"/>
+        <attr name="minLabel" format="string"/>
+        <attr name="maxLabel" format="string"/>
+    </declare-styleable>
+
+    <attr name="wifiSignalColor" format="color"/>
+    <attr name="iconColor" format="color"/>
+    <attr name="dividerColor" format="color"/>
+    <attr name="userSwitcherBackground" format="reference"/>
+    <attr name="userSwitcherCurrentUserColor" format="color"/>
+    <attr name="userSwitcherAddIconColor" format="color"/>
+    <attr name="userSwitcherNameTextAppearance" format="reference"/>
+    <attr name="userSwitcherAddIconBackgroundColor" format="color"/>
+    <attr name="quickSettingsEnabledColor" format="color"/>
+    <attr name="quickSettingsDisabledColor" format="color"/>
+    <attr name="quickSettingsIconEnabledColor" format="color"/>
+    <attr name="quickSettingsIconDisabledColor" format="color"/>
+    <attr name="suggestionsPrimaryColor" format="color"/>
+    <attr name="suggestionsSecondaryColor" format="color"/>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
deleted file mode 100644
index 4197d04..0000000
--- a/res/values/colors.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2018 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.
--->
-<resources>
-    <color name="lock_pattern_background">#353839</color>
-
-    <color name="toggle_bg_disabled">@color/car_grey_400</color>
-    <color name="toggle_icon_disabled">@color/car_grey_800</color>
-    <color name="seekbar_track">@color/car_grey_700</color>
-
-    <color name="google_blue_600_dark">#1A73E8</color>
-    <color name="google_blue_600_light">#2581DF</color>
-    <color name="google_blue_600">@color/google_blue_600_dark</color>
-
-    <!-- colors for user switcher -->
-    <color name="car_user_switcher_background_color">@color/car_card</color>
-    <color name="car_user_switcher_name_text_color">@color/car_body1</color>
-    <color name="car_user_switcher_add_user_background_color">@color/car_grey_200</color>
-    <color name="car_user_switcher_add_user_add_sign_color">@color/car_body1</color>
-    <color name="car_user_switcher_current_user_color">@color/car_teal_700</color>
-</resources>
diff --git a/res/values/config.xml b/res/values/config.xml
new file mode 100644
index 0000000..9a31b51
--- /dev/null
+++ b/res/values/config.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<resources>
+    <!-- The fully qualified class name of the fragment to launch when the settings application starts. -->
+    <string name="config_settings_hierarchy_root_fragment" translatable="false">com.android.car.settings.quicksettings.QuickSettingFragment</string>
+    <!-- Whether system_update_settings should be shown or not. -->
+    <bool name="config_show_system_update_settings">true</bool>
+    <!-- Whether Wi-Fi Mac address should be shown or not. -->
+    <bool name="config_show_wifi_mac_address">true</bool>
+    <!-- Whether to show regulatory info or not. -->
+    <bool name="config_show_regulatory_info">true</bool>
+    <!-- Whether premium SMS should be shown or not. -->
+    <bool name="config_show_premium_sms">true</bool>
+    <!-- Whether exit button in settings' root action bar should be shown or not -->
+    <bool name="config_show_settings_root_exit_icon">true</bool>
+    <!-- Whether all preferences should always ignore UX Restrictions -->
+    <bool name="config_always_ignore_ux_restrictions">false</bool>
+    <!-- Array of Preference Keys that ignore UX Restrictions -->
+    <string-array name="config_ignore_ux_restrictions">
+        <item>@string/pk_display_settings_entry</item>
+        <item>@string/pk_sound_settings_entry</item>
+        <item>@string/pk_storage_settings_entry</item>
+        <item>@string/pk_network_and_internet_entry</item>
+        <item>@string/pk_wifi_settings_entry</item>
+        <item>@string/pk_bluetooth_settings_entry</item>
+    </string-array>
+
+    <!-- The component which listens for the enabling of developer options. -->
+    <string name="config_dev_options_module" translatable="false">com.android.car.developeroptions/.Settings$DevelopmentSettingsDashboardActivity</string>
+</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 9105065..9e7cba8 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -1,51 +1,134 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!--
+    Copyright 2018 The Android Open Source Project
 
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
-          http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+    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.
 -->
 
-
 <resources>
-    <dimen name="seekbar_track_height">6dp</dimen>
-    <dimen name="seekbar_track_corner">3dp</dimen>
-    <dimen name="seekbar_padding_top">10dp</dimen>
-    <dimen name="switch_end_padding">5dp</dimen>
-    <dimen name="double_icon_size">112dp</dimen>
+    <dimen name="icon_size">@*android:dimen/car_primary_icon_size</dimen>
+    <dimen name="touch_target_size">@*android:dimen/car_touch_target_size</dimen>
+    <dimen name="divider_height">@*android:dimen/car_list_divider_height</dimen>
+    <dimen name="divider_inset_left">@*android:dimen/car_keyline_1</dimen>
+    <dimen name="divider_inset_right">@*android:dimen/car_keyline_1</dimen>
 
-    <dimen name="action_bar_end_widget_margin_end">46dp</dimen>
-    <dimen name="optical_center_offset">1dp</dimen>
+    <dimen name="button_min_width">@*android:dimen/car_button_min_width</dimen>
+    <dimen name="button_fading_edge_length">40dp</dimen>
+    <dimen name="button_ripple_radius">@*android:dimen/car_radius_1</dimen>
 
-    <dimen name="tile_top_bottom_padding">15dp</dimen>
-    <dimen name="line_item_top_margin">25dp</dimen>
+    <!-- Action Bar -->
+    <dimen name="action_bar_height">@*android:dimen/car_app_bar_height</dimen>
+    <!-- Guideline begin margin for when not showing exit icon -->
+    <dimen name="action_bar_no_icon_start_margin">@*android:dimen/action_bar_button_margin</dimen>
 
-    <integer name="bluetooth_name_length">32</integer>
+    <!-- Suggestions -->
+    <dimen name="suggestions_top_bottom_margin">@*android:dimen/car_padding_4</dimen>
+    <dimen name="suggestions_corner_radius">@*android:dimen/car_radius_3</dimen>
+    <!-- Padding between the top of the card and the text -->
+    <dimen name="suggestions_text_padding_top">@*android:dimen/car_padding_2</dimen>
+    <!-- Padding between the bottom of the text and the action bar -->
+    <dimen name="suggestions_text_padding_bottom">@*android:dimen/car_padding_2</dimen>
+    <!-- The margin between the main suggestion text and the subtext -->
+    <dimen name="suggestions_subtext_margin_top">@*android:dimen/car_padding_1</dimen>
+    <dimen name="suggestions_padding_start">@*android:dimen/car_keyline_1</dimen>
+    <dimen name="suggestions_padding_end">@*android:dimen/car_keyline_1</dimen>
+    <dimen name="suggestions_action_bar_height">@*android:dimen/car_card_action_bar_height</dimen>
 
+    <!-- Quick Settings -->
+    <dimen name="brightness_seekbar_margin_bottom">@*android:dimen/car_padding_4</dimen>
+    <dimen name="brightness_seekbar_height">@*android:dimen/car_single_line_list_item_height</dimen>
+    <dimen name="brightness_seekbar_track_height">6dp</dimen>
+    <dimen name="brightness_seekbar_track_corner">3dp</dimen>
+    <dimen name="brightness_knob_size">44dp</dimen>
+    <dimen name="tile_margin_start">@*android:dimen/car_padding_2</dimen>
+    <dimen name="tile_margin_end">@*android:dimen/car_padding_2</dimen>
+    <dimen name="tile_margin_bottom">@*android:dimen/car_padding_5</dimen>
+    <dimen name="tile_padding">10dp</dimen>
+    <dimen name="tile_icon_margin_bottom">@*android:dimen/car_padding_4</dimen>
+    <dimen name="circle_ripple_bg_radius">90dp</dimen>
+
+    <!-- Bluetooth -->
+    <dimen name="bluetooth_pin_dialog_margin_start">@*android:dimen/car_keyline_1</dimen>
+    <dimen name="bluetooth_pin_dialog_margin_end">@*android:dimen/car_keyline_1</dimen>
+    <dimen name="bluetooth_pin_dialog_section_height">
+        @*android:dimen/car_single_line_list_item_height
+    </dimen>
+    <dimen name="bluetooth_pin_dialog_text_margin_start">@*android:dimen/car_keyline_3</dimen>
+    <dimen name="bluetooth_pin_dialog_text_margin_end">@*android:dimen/car_keyline_3</dimen>
+    <dimen name="bluetooth_pin_dialog_subtext_margin_top">@*android:dimen/car_padding_1</dimen>
+
+    <!-- Edit Username -->
+    <dimen name="edit_username_padding_start">@*android:dimen/car_margin</dimen>
+    <dimen name="edit_username_padding_end">@*android:dimen/car_margin</dimen>
+    <dimen name="edit_username_text_padding_start">@*android:dimen/car_keyline_1</dimen>
+    <dimen name="edit_username_text_padding_end">@*android:dimen/car_keyline_1</dimen>
+    <dimen name="edit_username_text_padding_top">@*android:dimen/car_padding_3</dimen>
+
+    <!-- Security -->
+    <dimen name="choose_title_text_margin_bottom">@*android:dimen/car_padding_2</dimen>
+    <dimen name="choose_pin_title_text_margin_bottom">@*android:dimen/car_padding_5</dimen>
+    <dimen name="pin_password_entry_padding_horizontal">@*android:dimen/car_padding_2</dimen>
     <dimen name="pin_pad_key_width">120dp</dimen>
     <dimen name="pin_pad_key_height">80dp</dimen>
     <dimen name="pin_pad_key_margin">12dp</dimen>
     <dimen name="confirm_pattern_dimension">350dp</dimen>
-    <dimen name="pin_pad_icon_size">32dp</dimen>
+    <dimen name="confirm_lock_message_vertical_spacing">@*android:dimen/car_padding_2</dimen>
 
-    <dimen name="toggle_padding">10dp</dimen>
-    <dimen name="toggle_ripple">90dp</dimen>
-    <dimen name="brightness_knob_size">44dp</dimen>
+    <!-- User Switcher -->
+    <dimen name="user_switcher_image_avatar_size">96dp</dimen>
+    <dimen name="user_switcher_vertical_spacing_between_users">@*android:dimen/car_padding_5
+    </dimen>
+    <dimen name="user_switcher_vertical_spacing_between_name_and_avatar">
+        @*android:dimen/car_padding_4
+    </dimen>
+    <dimen name="user_switcher_current_user_circle_width">126dp</dimen>
+    <dimen name="user_switcher_current_user_circle_stroke_width">7dp</dimen>
 
-    <!-- dimensions for the car user switcher -->
-    <dimen name="car_user_switcher_name_text_size">@dimen/car_body1_size</dimen>
-    <dimen name="car_user_switcher_image_avatar_size">@dimen/car_large_avatar_size</dimen>
-    <dimen name="car_user_switcher_vertical_spacing_between_users">@dimen/car_padding_5</dimen>
-    <dimen name="car_user_switcher_vertical_spacing_between_name_and_avatar">@dimen/car_padding_4</dimen>
-    <dimen name="car_user_switcher_margin_top">@dimen/car_padding_4</dimen>
-    <dimen name="car_user_switcher_current_user_circle_width">126dp</dimen>
-    <dimen name="car_user_switcher_current_user_circle_stroke_width">7dp</dimen>
-</resources>
\ No newline at end of file
+    <!-- Preferences -->
+    <dimen name="preference_padding_top">@dimen/car_padding_2</dimen>
+    <dimen name="preference_padding_bottom">@dimen/car_padding_2</dimen>
+    <dimen name="two_action_preference_divider_width">1dp</dimen>
+    <dimen name="usage_indicator_preference_title_margin_top">@*android:dimen/car_padding_2</dimen>
+    <dimen name="usage_indicator_preference_title_margin_bottom">@*android:dimen/car_padding_2</dimen>
+    <dimen name="usage_indicator_preference_progressbar_height">32dp</dimen>
+    <dimen name="usage_indicator_preference_label_margin_top">@*android:dimen/car_padding_1</dimen>
+    <dimen name="usage_indicator_preference_label_margin_bottom">@*android:dimen/car_padding_4</dimen>
+    <dimen name="usage_indicator_preference_summary_margin_bottom">@*android:dimen/car_padding_2</dimen>
+    <dimen name="data_usage_summary_preference_padding_bottom">@*android:dimen/car_padding_2</dimen>
+    <dimen name="data_usage_summary_preference_button_margin_top">@*android:dimen/car_padding_2</dimen>
+    <dimen name="data_usage_summary_preference_button_height">@*android:dimen/car_button_height</dimen>
+    <dimen name="data_usage_summary_preference_button_min_width">@*android:dimen/car_button_min_width</dimen>
+    <dimen name="progress_bar_preference_progressbar_margin_top">@*android:dimen/car_padding_1</dimen>
+    <dimen name="progress_bar_preference_label_margin_top">@*android:dimen/car_padding_0</dimen>
+    <dimen name="progress_bar_preference_padding_top">@*android:dimen/car_padding_1</dimen>
+    <dimen name="progress_bar_preference_padding_bottom">@*android:dimen/car_padding_1</dimen>
+
+    <!-- Data usage -->
+    <dimen name="usage_number_text_size">36sp</dimen>
+    <dimen name="usage_pickers_margin_vertical">@*android:dimen/car_padding_2</dimen>
+    <dimen name="usage_pickers_text_margin_end">@*android:dimen/car_padding_5</dimen>
+    <dimen name="usage_bytes_picker_margin_horizontal">@*android:dimen/car_padding_5</dimen>
+    <dimen name="usage_bytes_picker_edit_text_min_width">360dp</dimen>
+
+    <!-- Alert Dialog -->
+    <dimen name="alert_dialog_margin_top">@*android:dimen/car_padding_4</dimen>
+    <dimen name="alert_dialog_margin_bottom">@*android:dimen/car_padding_4</dimen>
+    <dimen name="alert_dialog_title_margin_bottom">@*android:dimen/car_padding_4</dimen>
+    <dimen name="alert_dialog_title_margin_start">@*android:dimen/car_padding_3</dimen>
+    <dimen name="alert_dialog_title_margin_end">@*android:dimen/car_padding_3</dimen>
+    <dimen name="alert_dialog_edit_text_margin_start">@*android:dimen/car_padding_3</dimen>
+    <dimen name="alert_dialog_edit_text_margin_end">@*android:dimen/car_padding_3</dimen>
+    <dimen name="alert_dialog_password_checkbox_margin_end">@*android:dimen/car_padding_3</dimen>
+    <dimen name="alert_dialog_password_checkbox_margin_start">@*android:dimen/car_padding_3</dimen>
+    <dimen name="alert_dialog_password_checkbox_margin_top">@*android:dimen/car_padding_1</dimen>
+</resources>
diff --git a/res/values/floats.xml b/res/values/floats.xml
index 5db06cb..cbc4001 100644
--- a/res/values/floats.xml
+++ b/res/values/floats.xml
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 The Android Open Source Project
+<!--
+    Copyright 2018 The Android Open Source Project
 
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
-          http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+    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.
 -->
 
-
 <resources>
-  <!-- opacity -->
-  <item name="opacity_disabled" format="float" type="dimen">0.5</item>
-  <item name="opacity_enabled" format="float" type="dimen">1</item>
+    <!-- opacity -->
+    <item name="opacity_disabled" format="float" type="dimen">0.5</item>
+    <item name="opacity_enabled" format="float" type="dimen">1</item>
 </resources>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index cbaa8f2..91c9522 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-    Copyright (C) 2018 The Android Open Source Project
+    Copyright 2018 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
+         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,
@@ -14,6 +14,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+
 <resources>
     <!-- Weight of the main content in the illustration_layout -->
     <integer name="content_weight">7</integer>
@@ -29,4 +30,19 @@
 
     <!-- user switcher column number TODO: move to support library-->
     <integer name="user_switcher_num_col">3</integer>
-</resources>
\ No newline at end of file
+
+    <!-- Number of times to select build number before enabling developer settings -->
+    <integer name="enable_developer_settings_click_count">7</integer>
+
+    <!-- Number of times to select build number before toast appears -->
+    <integer name="enable_developer_settings_clicks_to_show_toast_count">3</integer>
+
+    <!-- Maximum ems value for all settings buttons -->
+    <integer name="button_max_ems">9</integer>
+
+    <!-- Ems value for data usage bytes threshold picker -->
+    <integer name="data_usage_bytes_threshold_ems">15</integer>
+
+    <!-- Maximum size in pixels of default app icons -->
+    <integer name="default_app_safe_icon_size">500</integer>
+</resources>
diff --git a/res/values/internal_resources.xml b/res/values/internal_resources.xml
new file mode 100644
index 0000000..73286d4
--- /dev/null
+++ b/res/values/internal_resources.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<resources>
+    <bool name="config_automatic_brightness_available">@*android:bool/config_automatic_brightness_available</bool>
+    <integer name="config_networkAvoidBadWifi">@*android:integer/config_networkAvoidBadWifi</integer>
+
+    <!-- Progress bar preference resources -->
+    <color name="config_progress_background_tint">@*android:color/config_progress_background_tint</color>
+    <color name="white_disabled_material">@*android:color/white_disabled_material</color>
+</resources>
diff --git a/res/values/preference_keys.xml b/res/values/preference_keys.xml
new file mode 100644
index 0000000..5dcf88c
--- /dev/null
+++ b/res/values/preference_keys.xml
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<!--
+    Identifiers for preferences. Namespaced with "pk" (Preference Key) to avoid conflicts.
+    Key values should be unique.
+-->
+<resources>
+    <!-- Homepage -->
+    <string name="pk_suggestions" translatable="false">suggestions</string>
+    <string name="pk_display_settings_entry" translatable="false">display_settings_entry</string>
+    <string name="pk_sound_settings_entry" translatable="false">sound_settings_entry</string>
+    <string name="pk_network_and_internet_entry" translatable="false">network_and_internet_entry
+    </string>
+    <string name="pk_wireless_extra_settings" translatable="false">wireless_extra_settings</string>
+    <string name="pk_bluetooth_settings_entry" translatable="false">bluetooth_settings_entry
+    </string>
+    <string name="pk_location_settings_entry" translatable="false">location_settings_entry</string>
+    <string name="pk_apps_and_notifications_settings_entry" translatable="false">
+        apps_and_notifications_settings_entry
+    </string>
+    <string name="pk_date_time_settings_entry" translatable="false">date_time_settings_entry
+    </string>
+    <string name="pk_users_settings_entry" translatable="false">users_settings_entry</string>
+    <string name="pk_accounts_settings_entry" translatable="false">accounts_settings_entry</string>
+    <string name="pk_storage_settings_entry" translatable="false">storage_settings_entry</string>
+    <string name="pk_security_settings_entry" translatable="false">security_settings_entry</string>
+    <string name="pk_system_settings_entry" translatable="false">system_settings_entry</string>
+    <string name="pk_device_extra_settings" translatable="false">device_extra_settings</string>
+    <string name="pk_personal_extra_settings" translatable="false">personal_extra_settings</string>
+
+    <!-- Network -->
+    <string name="pk_mobile_network_settings_entry" translatable="false">
+        mobile_network_settings_entry
+    </string>
+    <string name="pk_network_and_internet_extra_settings" translatable="false">
+        network_and_internet_extra_settings
+    </string>
+    <string name="pk_mobile_network_list" translatable="false">mobile_network_list</string>
+    <string name="pk_mobile_network_list_add_more" translatable="false">
+        mobile_network_list_add_more
+    </string>
+    <string name="pk_mobile_data_toggle" translatable="false">mobile_data_toggle</string>
+    <string name="pk_mobile_roaming_toggle" translatable="false">mobile_roaming_toggle</string>
+    <string name="pk_data_usage_settings_entry" translatable="false">data_usage_settings_entry
+    </string>
+    <string name="pk_data_usage_summary" translatable="false">data_usage_summary</string>
+    <string name="pk_data_warning_and_limit" translatable="false">data_warning_and_limit</string>
+    <string name="pk_data_usage_cycle" translatable="false">data_usage_cycle</string>
+    <string name="pk_data_warning_group" translatable="false">data_warning_group</string>
+    <string name="pk_data_set_warning" translatable="false">data_set_warning</string>
+    <string name="pk_data_warning" translatable="false">data_warning</string>
+    <string name="pk_data_limit_group" translatable="false">data_limit_group</string>
+    <string name="pk_data_set_limit" translatable="false">data_set_limit</string>
+    <string name="pk_data_limit" translatable="false">data_limit</string>
+    <string name="pk_app_data_usage" translatable="false">app_data_usage</string>
+    <string name="pk_app_data_usage_detail" translatable="false">app_data_usage_detail</string>
+    <string name="pk_wifi_tether_settings_entry" translatable="false">wifi_tether_settings_entry
+    </string>
+    <string name="pk_wifi_tether_security" translatable="false">wifi_tether_security</string>
+    <string name="pk_wifi_tether_ap_band" translatable="false">wifi_tether_ap_band</string>
+    <string name="pk_wifi_tether_auto_off" translatable="false">wifi_tether_auto_off</string>
+    <string name="pk_wifi_tether_password" translatable="false">wifi_tether_password</string>
+    <string name="pk_wifi_tether_name" translatable="false">wifi_tether_name</string>
+
+    <!-- WIFI -->
+    <string name="pk_wifi_settings_entry" translatable="false">wifi_settings_entry</string>
+    <string name="pk_wifi_frequency" translatable="false">wifi_frequency</string>
+    <string name="pk_wifi_signal_strength" translatable="false">wifi_signal_strength</string>
+    <string name="pk_wifi_security" translatable="false">wifi_security</string>
+    <string name="pk_wifi_mac_address" translatable="false">wifi_mac_address</string>
+    <string name="pk_wifi_ip" translatable="false">wifi_ip</string>
+    <string name="pk_wifi_ipv6" translatable="false">wifi_ipv6</string>
+    <string name="pk_wifi_gateway" translatable="false">wifi_gateway</string>
+    <string name="pk_wifi_subnet_mask" translatable="false">wifi_subnet_mask</string>
+    <string name="pk_wifi_dns" translatable="false">wifi_dns</string>
+    <string name="pk_wifi_link_speed" translatable="false">wifi_link_speed</string>
+    <string name="pk_wifi_list" translatable="false">wifi_list</string>
+    <string name="pk_add_wifi" translatable="false">add_wifi</string>
+    <string name="pk_wifi_status" translatable="false">wifi_status</string>
+    <string name="pk_add_wifi_network_name" translatable="false">add_wifi_network_name</string>
+    <string name="pk_add_wifi_security" translatable="false">add_wifi_security</string>
+    <string name="pk_add_wifi_password" translatable="false">add_wifi_password</string>
+    <string name="pk_wifi_preferences" translatable="false">wifi_preferences</string>
+    <string name="pk_wifi_cellular_fallback" translatable="false">wifi_cellular_fallback</string>
+    <string name="pk_enable_wifi_wakeup" translatable="false">enable_wifi_wakeup</string>
+
+    <!-- Bluetooth -->
+    <string name="pk_bluetooth_paired_devices" translatable="false">bluetooth_paired_devicesd
+    </string>
+    <string name="pk_bluetooth_pair_new_device" translatable="false">bluetooth_pair_new_device
+    </string>
+    <string name="pk_bluetooth_name" translatable="false">bluetooth_name</string>
+    <string name="pk_bluetooth_address" translatable="false">bluetooth_address</string>
+    <string name="pk_bluetooth_available_devices" translatable="false">bluetooth_available_devices
+    </string>
+    <string name="pk_bluetooth_device_name" translatable="false">bluetooth_device_name</string>
+    <string name="pk_bluetooth_device_profiles" translatable="false">bluetooth_device_profiles
+    </string>
+    <string name="pk_bluetooth_device_address" translatable="false">bluetooth_device_address
+    </string>
+    <string name="pk_bluetooth_device_picker" translatable="false">bluetooth_device_picker</string>
+
+    <!-- Applications and Notifications Settings -->
+    <string name="pk_applications_settings_screen_entry" translatable="false">
+        applications_settings_screen_entry
+    </string>
+    <string name="pk_default_applications_settings_entry" translatable="false">
+        default_applications_entry
+    </string>
+    <string name="pk_app_permissions_entry" translatable="false">app_permissions_entry</string>
+    <string name="pk_special_access_entry" translatable="false">special_access_entry</string>
+
+    <!-- Applications Settings -->
+    <string name="pk_all_applications_settings_list" translatable="false">
+        all_applications_settings_list
+    </string>
+    <string name="pk_application_extra_settings" translatable="false">
+        application_extra_settings
+    </string>
+
+    <!-- Application Details -->
+    <string name="pk_application_details_app" translatable="false">application_details_app</string>
+    <string name="pk_application_details_notifications" translatable="false">
+        application_details_notifications
+    </string>
+    <string name="pk_application_details_permissions" translatable="false">
+        application_details_permissions
+    </string>
+    <string name="pk_application_details_version" translatable="false">
+        application_details_version
+    </string>
+
+    <!-- Default apps Settings -->
+    <string name="pk_default_assist_and_voice" translatable="false">default_assist_and_voice
+    </string>
+    <string name="pk_default_assist" translatable="false">default_assist</string>
+    <string name="pk_assist_use_text_context" translatable="false">assist_use_text_context</string>
+    <string name="pk_assist_use_screenshot" translatable="false">assist_use_screenshot</string>
+    <string name="pk_default_voice_input" translatable="false">default_voice_input</string>
+    <string name="pk_default_voice_input_options" translatable="false">default_voice_input_options
+    </string>
+    <string name="pk_default_autofill_options" translatable="false">default_autofill_options
+    </string>
+    <string name="pk_opening_links_entry" translatable="false">opening_links_entry</string>
+    <string name="pk_opening_links_options" translatable="false">opening_links_options</string>
+    <string name="pk_opening_links_app_details_entry" translatable="false">
+        opening_links_app_details_entry
+    </string>
+    <string name="pk_opening_links_app_details" translatable="false">opening_links_app_details
+    </string>
+    <string name="pk_opening_links_app_details_state" translatable="false">
+        opening_links_app_details_state
+    </string>
+    <string name="pk_opening_links_app_details_urls" translatable="false">
+        opening_links_app_details_urls
+    </string>
+    <string name="pk_opening_links_app_details_reset" translatable="false">
+        opening_links_app_details_reset
+    </string>
+
+    <!-- Special App Access Settings -->
+    <string name="pk_modify_system_settings_entry" translatable="false">
+        modify_system_settings_entry
+    </string>
+    <string name="pk_modify_system_settings" translatable="false">modify_system_settings</string>
+    <string name="pk_modify_system_settings_description" translatable="false">
+        modify_system_settings_description
+    </string>
+    <string name="pk_notification_access_entry" translatable="false">notification_access_entry
+    </string>
+    <string name="pk_notification_access" translatable="false">notification_access</string>
+    <string name="pk_premium_sms_access_entry" translatable="false">premium_sms_access_entry
+    </string>
+    <string name="pk_premium_sms_access" translatable="false">premium_sms_access</string>
+    <string name="pk_premium_sms_access_description" translatable="false">
+        premium_sms_access_description
+    </string>
+    <string name="pk_usage_access_entry" translatable="false">usage_access_entry</string>
+    <string name="pk_usage_access" translatable="false">usage_access</string>
+    <string name="pk_usage_access_description" translatable="false">usage_access_description
+    </string>
+    <string name="pk_wifi_control_entry" translatable="false">wifi_control_entry</string>
+    <string name="pk_wifi_control" translatable="false">wifi_control</string>
+    <string name="pk_wifi_control_description" translatable="false">wifi_control_description
+    </string>
+    <string name="pk_more_special_access" translatable="false">more_special_access</string>
+
+    <!-- DateTime Settings -->
+    <string name="pk_auto_datetime_switch" translatable="false">auto_datetime_switch</string>
+    <string name="pk_auto_timezone_switch" translatable="false">auto_timezone_switch</string>
+    <string name="pk_date_picker_entry" translatable="false">date_picker_entry</string>
+    <string name="pk_time_picker_entry" translatable="false">time_picker_entry</string>
+    <string name="pk_timezone_picker_screen_entry" translatable="false">
+        timezone_picker_screen_entry
+    </string>
+    <string name="pk_use_24hour_switch" translatable="false">use_24hour_switch</string>
+    <string name="pk_timezone_picker_screen" translatable="false">timezone_picker_screen</string>
+
+    <!-- Accounts -->
+    <string name="pk_account_list" translatable="false">account_list</string>
+    <string name="pk_account_settings" translatable="false">account_settings</string>
+    <string name="pk_accounts_extra_settings" translatable="false">accounts_extra_settings</string>
+    <string name="pk_account_auto_sync" translatable="false">account_auto_sync</string>
+    <string name="pk_add_account" translatable="false">add_account</string>
+    <string name="pk_account_details" translatable="false">account_details</string>
+    <string name="pk_account_sync" translatable="false">account_sync</string>
+    <string name="pk_account_details_with_sync" translatable="false">account_details_with_sync
+    </string>
+    <string name="pk_account_sync_details" translatable="false">account_sync_details</string>
+
+    <!-- Storage -->
+    <string name="pk_storage_music_audio" translatable="false">storage_music_audio</string>
+    <string name="pk_storage_music_audio_files" translatable="false">storage_music_audio_files
+    </string>
+    <string name="pk_storage_music_audio_details" translatable="false">storage_music_audio_details
+    </string>
+    <string name="pk_storage_other_apps" translatable="false">storage_other_apps</string>
+    <string name="pk_storage_other_apps_details" translatable="false">storage_other_apps_details
+    </string>
+    <string name="pk_storage_application_size" translatable="false">storage_application_size
+    </string>
+    <string name="pk_storage_application_total_size" translatable="false">
+        storage_application_total_size
+    </string>
+    <string name="pk_storage_application_data_size" translatable="false">
+        storage_application_data_size
+    </string>
+    <string name="pk_storage_application_cache_size" translatable="false">
+        storage_application_cache_size
+    </string>
+    <string name="pk_storage_application_details" translatable="false">storage_application_details
+    </string>
+    <string name="pk_storage_files" translatable="false">storage_files</string>
+    <string name="pk_storage_system" translatable="false">storage_system</string>
+
+    <!-- Display Settings -->
+    <string name="pk_adaptive_brightness_switch" translatable="false">adaptive_brightness_switch
+    </string>
+    <string name="pk_brightness_level" translatable="false">brightness_level</string>
+    <string name="pk_display_extra_settings" translatable="false">display_extra_settings</string>
+
+    <!-- Sound Settings -->
+    <string name="pk_volume_settings" translatable="false">volume_settings</string>
+    <string name="pk_default_ringtone" translatable="false">default_ringtone</string>
+    <string name="pk_default_notification" translatable="false">default_notification</string>
+    <string name="pk_default_alarm" translatable="false">default_alarm</string>
+    <string name="pk_sounds_extra_settings" translatable="false">sounds_extra_settings</string>
+
+    <!-- Units Settings -->
+    <string name="pk_units_settings_entry" translatable="false">units_settings_entry</string>
+    <string name="pk_units_distance" translatable="false">units_distance</string>
+    <string name="pk_units_speed" translatable="false">units_speed</string>
+    <string name="pk_units_fuel_consumption" translatable="false">units_fuel_consumption</string>
+    <string name="pk_units_energy_consumption" translatable="false">units_energy_consumption</string>
+    <string name="pk_units_temperature" translatable="false">units_temperature</string>
+    <string name="pk_units_volume" translatable="false">units_volume</string>
+    <string name="pk_units_pressure" translatable="false">units_pressure</string>
+
+    <!-- Location Settings -->
+    <string name="pk_location_recent_requests_entry" translatable="false">
+        location_recent_requests_entry
+    </string>
+    <string name="pk_location_recent_requests_screen" translatable="false">
+        location_recent_requests_screen
+    </string>
+    <string name="pk_location_app_permissions" translatable="false">location_app_permissions
+    </string>
+    <string name="pk_location_scanning" translatable="false">location_scanning</string>
+    <string name="pk_location_scanning_wifi" translatable="false">location_scanning_wifi</string>
+    <string name="pk_location_scanning_bluetooth" translatable="false">location_scanning_bluetooth
+    </string>
+    <string name="pk_location_services" translatable="false">location_services</string>
+    <string name="pk_location_footer" translatable="false">location_footer</string>
+
+    <!-- Users Settings -->
+    <string name="pk_users_list" translatable="false">users_list</string>
+    <string name="pk_choose_new_admin" translatable="false">choose_new_admin</string>
+    <string name="pk_edit_user_name_entry" translatable="false">edit_user_name_entry</string>
+    <string name="pk_make_user_admin" translatable="false">make_user_admin</string>
+    <string name="pk_user_permissions" translatable="false">user_permissions</string>
+
+    <!-- Security Settings -->
+    <string name="pk_no_lock" translatable="false">no_lock</string>
+    <string name="pk_pattern_lock" translatable="false">pattern_lock</string>
+    <string name="pk_password_lock" translatable="false">password_lock</string>
+    <string name="pk_pin_lock" translatable="false">pin_lock</string>
+    <string name="pk_choose_lock_type" translatable="false">choose_lock_type</string>
+    <string name="pk_trusted_device" translatable="false">trusted_device</string>
+    <string name="pk_car_ble_name" translatable="false">car_ble_name</string>
+    <string name="pk_add_trusted_device" translatable="false">add_trusted_device</string>
+    <string name="pk_trusted_device_list" translatable="false">trusted_device_list</string>
+    <string name="pk_add_device_instruction" translatable="false">add_device_instruction</string>
+    <string name="pk_companion_app_download" translatable="false">companion_app_download</string>
+    <string name="pk_trusted_device_safety_alert" translatable="false">trusted_device_safety_alert
+    </string>
+
+    <!-- System Settings -->
+    <string name="pk_languages_and_input_settings" translatable="false">
+        languages_and_input_settings
+    </string>
+    <string name="pk_system_update_settings" translatable="false">system_update_settings</string>
+    <string name="pk_system_extra_settings" translatable="false">system_extra_settings</string>
+    <string name="pk_about_settings_entry" translatable="false">about_settings_entry</string>
+    <string name="pk_legal_information_entry" translatable="false">legal_information_entry</string>
+    <string name="pk_reset_options_entry" translatable="false">reset_options_entry</string>
+    <string name="pk_developer_options_entry" translatable="false">developer_options_entry</string>
+
+    <!-- Language Settings -->
+    <string name="pk_language_settings_entry" translatable="false">language_settings_entry</string>
+    <string name="pk_language_and_input_extra_settings" translatable="false">
+        pk_language_and_input_extra_settings
+    </string>
+    <string name="pk_current_languages" translatable="false">current_languages</string>
+    <string name="pk_add_language" translatable="false">add_language</string>
+    <string name="pk_language_picker" translatable="false">language_picker</string>
+    <string name="pk_child_locale_picker" translatable="false">child_locale_picker</string>
+    <string name="pk_autofill_picker_entry" translatable="false">autofill_picker_entry</string>
+
+    <!-- Keyboard Settings -->
+    <string name="pk_keyboard_entry" translatable="false">keyboard_entry</string>
+    <string name="pk_enabled_keyboards" translatable="false">enabled_keyboards</string>
+    <string name="pk_manage_keyboard" translatable="false">manage_keyboard</string>
+    <string name="pk_keyboard_management" translatable="false">keyboard_management</string>
+
+    <!-- TTS Settings -->
+    <string name="pk_tts_settings_entry" translatable="false">tts_settings_entry</string>
+    <string name="pk_tts_preferred_engine_entry" translatable="false">tts_preferred_engine_entry
+    </string>
+    <string name="pk_tts_preferred_engine_options" translatable="false">
+        tts_preferred_engine_options
+    </string>
+    <string name="pk_tts_playback_group" translatable="false">tts_playback_group</string>
+    <string name="pk_tts_default_language" translatable="false">tts_default_language</string>
+    <string name="pk_tts_speech_rate" translatable="false">tts_speech_rate</string>
+    <string name="pk_tts_pitch" translatable="false">tts_pitch</string>
+    <string name="pk_tts_reset" translatable="false">tts_reset</string>
+
+    <!-- Legal information -->
+    <string name="pk_system_license_entry" translatable="false">system_license_entry</string>
+    <string name="pk_third_party_license_entry" translatable="false">third_party_license_entry
+    </string>
+
+    <!-- About Settings -->
+    <string name="pk_model_info" translatable="false">model_info</string>
+    <string name="pk_firmware_version" translatable="false">firmware_version</string>
+    <string name="pk_security_patch" translatable="false">security_patch</string>
+    <string name="pk_kernel_version" translatable="false">kernel_version</string>
+    <string name="pk_build_number" translatable="false">build_number</string>
+    <string name="pk_regulatory_labels" translatable="false">regulatory_labels</string>
+    <string name="pk_about_bluetooth_mac_address" translatable="false">about_bluetooth_mac_address
+    </string>
+
+    <!-- Reset Options -->
+    <string name="pk_reset_network" translatable="false">reset_network</string>
+    <string name="pk_reset_app_pref" translatable="false">reset_app_pref</string>
+    <string name="pk_master_clear" translatable="false">master_clear</string>
+
+    <!-- Reset Network -->
+    <string name="pk_reset_network_items" translatable="false">reset_network_items</string>
+    <string name="pk_reset_esim" translatable="false">reset_esim</string>
+    <string name="pk_reset_network_subscription" translatable="false">reset_network_subscription
+    </string>
+
+    <!-- Master Clear -->
+    <string name="pk_master_clear_desc" translatable="false">master_clear_desc</string>
+    <string name="pk_master_clear_account_list" translatable="false">master_clear_account_list
+    </string>
+    <string name="pk_master_clear_other_users_present" translatable="false">
+        master_clear_other_users_present
+    </string>
+    <string name="pk_master_clear_reset_esim" translatable="false">master_clear_reset_esim</string>
+    <string name="pk_master_clear_confirm_desc" translatable="false">master_clear_confirm_desc
+    </string>
+
+    <!-- Developer Options -->
+    <string name="pk_usb_debugging_toggle" translatable="false">usb_debugging_toggle</string>
+</resources>
diff --git a/res/values/string_arrays.xml b/res/values/string_arrays.xml
index c933ee0..50028ad 100644
--- a/res/values/string_arrays.xml
+++ b/res/values/string_arrays.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 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
-  -->
+    Copyright 2017 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.
+-->
 
 <resources>
     <string-array name="wifi_security_method">
@@ -21,4 +21,37 @@
         <item>@string/wifi_security_wep</item>
         <item>@string/wifi_security_wpa_wpa2</item>
     </string-array>
+
+    <!-- Security types for wireless tether -->
+    <string-array translatable="false" name="wifi_tether_security">
+        <item>@string/wifi_security_wpa2</item>
+        <item>@string/wifi_security_none</item>
+    </string-array>
+
+    <!-- Wi-Fi AP band settings.  Either Auto, 2.4GHz or 5GHz. -->
+    <!-- Note that adding/removing/moving the items will need wifi settings code change. -->
+    <string-array translatable="false" name="wifi_ap_band_config_full">
+        <item>0</item>
+        <item>1</item>
+    </string-array>
+
+    <string-array translatable="false" name="wifi_ap_band_summary_full">
+        <item>@string/wifi_ap_choose_2G</item>
+        <item>@string/wifi_ap_choose_5G</item>
+    </string-array>
+
+    <string-array translatable="false" name="wifi_ap_band_dual_mode">
+        <item>0</item>
+        <item>-1</item>
+    </string-array>
+
+    <string-array translatable="false" name="wifi_ap_band_dual_mode_summary">
+        <item>@string/wifi_ap_choose_2G</item>
+        <item>@string/wifi_ap_prefer_5G</item>
+    </string-array>
+
+    <string-array translatable="false" name="wifi_ap_band_config_2G_only">
+        <item>@string/wifi_ap_choose_auto</item>
+        <item>@string/wifi_ap_choose_2G</item>
+    </string-array>
 </resources>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7ca240e..78e3941 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1,23 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
- * Copyright (c) 2017, 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.
-*/
+    Copyright 2018 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.
 -->
+
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Application name, temporarily misspelled to allow it to live alongside the regular
-         android settings without confusion. -->
+    <!-- Application name -->
     <string name="settings_label">Settings</string>
     <string name="more_settings_label">More</string>
     <string name="display_settings">Display</string>
@@ -36,39 +35,165 @@
     <!-- Label for night mode toggle tile in quick setting [CHAR LIMIT=20] -->
     <string name="night_mode_tile_label">Night mode</string>
 
-    <!-- wifi settings--><skip />
+    <!-- Network and internet settings [CHAR LIMIT=40] -->
+    <string name="network_and_internet">Network &amp; internet</string>
+    <!-- Mobile network settings [CHAR LIMIT=30] -->
+    <string name="mobile_network_settings">Mobile network</string>
+    <!-- Summary of the 'Mobile network' item on the Network & internet page when there is more than
+         one mobile service configured (aka "dual SIM") - it shows a count of SIM/eSIM and tapping
+         it leads to a page showing a list of the mobile service subscriptions. [CHAR LIMIT=40] -->
+    <plurals name="mobile_network_summary_count">
+        <item quantity="one"><xliff:g id="count" example="1">%1$d</xliff:g> SIM</item>
+        <item quantity="other"><xliff:g id="count" example="2">%1$d</xliff:g> SIMs</item>
+    </plurals>
+    <!-- Summary for an item in the page listing multiple mobile service subscriptions, indicating
+         that service is active and is tied to a physical SIM card [CHAR LIMIT=40] -->
+    <string name="mobile_network_active_sim">Active / SIM</string>
+    <!-- Summary for an item in the page listing multiple mobile service subscriptions, indicating
+         that service is inactive and is tied to a physical SIM card [CHAR LIMIT=40] -->
+    <string name="mobile_network_inactive_sim">Inactive / SIM</string>
+    <!-- Summary for an item in the page listing multiple mobile service subscriptions, indicating
+         that service is active and is tied to an eSIM profile [CHAR LIMIT=40] -->
+    <string name="mobile_network_active_esim">Active / Downloaded SIM</string>
+    <!-- Summary for an item in the page listing multiple mobile service subscriptions, indicating
+         that service is inactive and is tied to an eSIM profile [CHAR LIMIT=40] -->
+    <string name="mobile_network_inactive_esim">Inactive / Downloaded SIM</string>
+    <!-- Title of item shown at the bottom of the page listing multiple mobile service
+         subscriptions; tapping it leads to a UI to add more [CHAR LIMIT=40] -->
+    <string name="mobile_network_list_add_more">Add more</string>
+    <!-- Mobile network screen, toggle mobile data title [CHAR LIMIT=30] -->
+    <string name="mobile_network_toggle_title">Mobile data</string>
+    <!-- Mobile network screen, toggle mobile data summary [CHAR LIMIT=50] -->
+    <string name="mobile_network_toggle_summary">Access data using mobile network</string>
+    <!-- Mobile network screen, confirmation dialog to turn off mobile data [CHAR LIMIT=50] -->
+    <string name="confirm_mobile_data_disable">Turn off mobile data?</string>
+    <!-- When a SIM preference hasn't been selected yet, this string is displayed as the pref summary until the user chooses a SIM subscription from the preference list. [CHAR LIMIT=50] -->
+    <string name="sim_selection_required_pref">Selection required</string>
+    <!-- Title asking user if they wish to change the default sim for cellular data. [CHAR LIMIT=60] -->
+    <string name="sim_change_data_title">
+        Use <xliff:g id="carrier" example="Google Fi">%1$s</xliff:g> for mobile data?
+    </string>
+    <!-- Message confirming that the user wishes to change the default data SIM from one to another.  [CHAR LIMIT=NONE] -->
+    <string name="sim_change_data_message">
+        You\u0027re using <xliff:g id="carrier2" example="Google Fi">%2$s</xliff:g> for mobile data.
+        If you switch to <xliff:g id="carrier1" example="Verizon">%1$s</xliff:g>,
+        <xliff:g id="carrier2" example="Google Fi">%2$s</xliff:g> will no longer be used for mobile
+        data.
+    </string>
+    <!-- Ok button label confirming the user wishes to change the default data SIM from one to another. [CHAR LIMIT=25] -->
+    <string name="sim_change_data_ok">
+        Use <xliff:g id="carrier" example="Verizon">%1$s</xliff:g>
+    </string>
+    <!-- Mobile network screen, preference title for toggle to enable roaming [CHAR LIMIT=30] -->
+    <string name="roaming_title">Roaming</string>
+    <!-- Mobile network screen, preference summary for toggle to enable roaming [CHAR LIMIT=60] -->
+    <string name="roaming_summary">Connect to data services when roaming</string>
+    <!-- Mobile network settings screen, dialog message title when user selects the Data roaming toggle [CHAR LIMIT=60] -->
+    <string name="roaming_alert_title">Allow data roaming?</string>
+    <!-- Mobile network settings screen, message in dialog box that appears when you select the Data roaming toggle [CHAR LIMIT=80] -->
+    <string name="roaming_warning">You may incur significant charges.</string>
+    <!-- Data usage settings [CHAR LIMIT=30] -->
+    <string name="data_usage_settings">Data usage</string>
+    <!-- Data usage title text [CHAR LIMIT=30] -->
+    <string name="data_usage_title">Primary data</string>
+    <!-- Data usage, amount used [CHAR LIMIT=30] -->
+    <string name="data_used_formatted"><xliff:g name="value" example="500">^1</xliff:g> <xliff:g name="units" example="GB">^2</xliff:g> used</string>
+    <!-- Format for a summary describing the amount of data before the user is warned [CHAR LIMIT=40] -->
+    <string name="cell_data_warning"><xliff:g name="amount" example="1 GB">^1</xliff:g> data warning</string>
+    <!-- Format for a summary describing the amount of data the limit is set to [CHAR LIMIT=40] -->
+    <string name="cell_data_limit"><xliff:g name="amount" example="1 GB">^1</xliff:g> data limit</string>
+    <!-- Format for a summary describing the amount of data before the user is warned or limited [CHAR LIMIT=80] -->
+    <string name="cell_data_warning_and_limit"><xliff:g name="amount" example="1 GB">^1</xliff:g> data warning / <xliff:g name="amount" example="2 GB">^2</xliff:g> data limit</string>
+    <!-- Informational text about time left in billing cycle [CHAR LIMIT=40] -->
+    <plurals name="billing_cycle_days_left">
+        <item quantity="one">%d day left</item>
+        <item quantity="other">%d days left</item>
+    </plurals>
+    <!-- Informational text about time left in billing cycle [CHAR LIMIT=40] -->
+    <string name="billing_cycle_none_left">No time remaining</string>
+    <!-- Informational text about time left in billing cycle [CHAR LIMIT=40] -->
+    <string name="billing_cycle_less_than_one_day_left">Less than 1 day left</string>
+    <!-- Informational text about carrier and update time [CHAR LIMIT=32] -->
+    <string name="carrier_and_update_text">Updated by <xliff:g name="carrier" example="Google Fi">^1</xliff:g> <xliff:g name="time" example="3m">^2</xliff:g> ago</string>
+    <!-- Informational text about update time only, without carrier. First argument intentionally skipped. [CHAR LIMIT=30] -->
+    <string name="no_carrier_update_text">Updated <xliff:g name="time" example="3m">^2</xliff:g> ago</string>
+    <!-- Informational text about a recent carrier and update time [CHAR LIMIT=34] -->
+    <string name="carrier_and_update_now_text">Updated by <xliff:g name="carrier" example="Google Fi">^1</xliff:g> just now</string>
+    <!-- Informational text about recent update time only, without carrier [CHAR LIMIT=30] -->
+    <string name="no_carrier_update_now_text">Updated just now</string>
+    <!-- Button to launch external data plan app [CHAR LIMIT=30] -->
+    <string name="launch_manage_plan_text">View plan</string>
+    <!-- Title for mobile data preference, to display the mobile data usage for each app. [CHAR LIMIT=30] -->
+    <string name="app_data_usage">App data usage</string>
+    <!-- Label for application which has its data usage restricted. [CHAR LIMIT=16] -->
+    <string name="data_usage_app_restricted">restricted</string>
+
+    <!-- Title of dialog for editing data usage cycle reset date. [CHAR LIMIT=48] -->
+    <string name="cycle_reset_day_of_month_picker_title">Usage cycle reset date</string>
+    <!-- Subtitle of dialog for editing data usage cycle reset date. [CHAR LIMIT=32] -->
+    <string name="cycle_reset_day_of_month_picker_subtitle">Date of each month:</string>
+    <!-- Positive button title for data usage cycle reset date picker, confirming that changes should be saved. [CHAR LIMIT=32] -->
+    <string name="cycle_reset_day_of_month_picker_positive_button">Set</string>
+    <!-- Title of button and screen for billing cycle preferences [CHAR LIMIT=40] -->
+    <string name="data_warning_limit_title">Data warning &amp; limit</string>
+    <!-- Title of button for application usage cycle preferences [CHAR LIMIT=40] -->
+    <string name="app_usage_cycle">App data usage cycle</string>
+    <!-- Label for switch about whether to warn user about usage [CHAR LIMIT=40] -->
+    <string name="set_data_warning">Set data warning</string>
+    <!-- Label for button to set the amount of data before user is warned about usage [CHAR LIMIT=30] -->
+    <string name="data_warning">Data warning</string>
+    <!-- Label for switch about whether to limit how much data can be used [CHAR LIMIT=30] -->
+    <string name="set_data_limit">Set data limit</string>
+    <!-- Label for button to set the amount of data before user is limited [CHAR LIMIT=30] -->
+    <string name="data_limit">Data limit</string>
+    <!-- Title of dialog shown before user limits data usage. [CHAR LIMIT=48] -->
+    <string name="data_usage_limit_dialog_title">Limiting data usage</string>
+    <!-- Body of dialog shown before user limits mobile data usage. [CHAR LIMIT=NONE] -->
+    <string name="data_usage_limit_dialog_mobile" >Your vehicle\u2019s head unit will turn off mobile data once it reaches the limit you set.\n\nSince data usage is measured by the head unit, and your carrier may account for usage differently, consider setting a conservative limit.</string>
+    <!-- Title of dialog for editing data usage warning in bytes. [CHAR LIMIT=48] -->
+    <string name="data_usage_warning_editor_title">Set data usage warning</string>
+    <!-- Title of dialog for editing data usage limit in bytes. [CHAR LIMIT=48] -->
+    <string name="data_usage_limit_editor_title">Set data usage limit</string>
+    <!-- Positive button title for data usage bytes threshold picker, confirming that changes should be saved. [CHAR LIMIT=32] -->
+    <string name="usage_bytes_threshold_picker_positive_button">Set</string>
+    <string-array name="bytes_picker_sizes" translatable="false">
+        <item>@*android:string/megabyteShort</item>
+        <item>@*android:string/gigabyteShort</item>
+    </string-array>
+
+    <!-- wifi settings--><skip/>
     <!-- Used in the 1st-level settings screen to go to the 2nd-level settings screen  [CHAR LIMIT=20]-->
     <string name="wifi_settings">Wi\u2011Fi</string>
-    <!-- Summary text of the Wi-fi settings screen -->
-    <string name="wifi_settings_summary">Set up &amp; manage wireless access points</string>
     <!-- Summary text when turning Wi-Fi or bluetooth on -->
     <string name="wifi_starting">Turning Wi\u2011Fi on\u2026</string>
     <!-- Summary text when turning Wi-Fi or bluetooth off -->
     <string name="wifi_stopping">Turning off Wi\u2011Fi\u2026</string>
+    <!-- Summary text when loading Wi-Fi list -->
+    <string name="loading_wifi_list">Loading Wi\u2011Fi list</string>
+    <!-- Summary text shown in place of the Wi-Fi list when wifi is off -->
+    <string name="wifi_disabled">Wi\u2011Fi disabled</string>
     <!-- Failured notification for forget -->
     <string name="wifi_failed_forget_message">Failed to forget network</string>
     <!-- Failured notification for connect -->
     <string name="wifi_failed_connect_message">Failed to connect to network</string>
-    <!-- Button message shown on the button adding manual setting.
-     Used in Wifi Setup For Setup Wizard with XL screen. -->
+    <!-- Button message shown on the button adding manual setting. -->
     <string name="wifi_setup_add_network">Add network</string>
-    <!-- Summary text when Wi-Fi is turned off -->
-    <string name="wifi_disabled">Wi\u2011Fi disabled</string>
-    <!-- Button label to connect to a Wi-Fi network.
-     Used in SetupWizard for XLarge screen [CHAR LIMIT=10] -->
+    <!-- Button label to connect to a Wi-Fi network. [CHAR LIMIT=10] -->
     <string name="wifi_setup_connect">Connect</string>
     <!-- Label for the password of the secured network -->
     <string name="wifi_password">Password</string>
     <!-- Label for the check box to show password -->
     <string name="wifi_show_password">Show password</string>
+    <!-- Toast message when trying to connect to a hidden wifi network without a network name. [CHAR LIMIT=NONE] -->
+    <string name="wifi_no_network_name">Please enter a network name</string>
     <!-- Label for the SSID of the network -->
     <string name="wifi_ssid">Network name</string>
     <!-- Hint for a text field to enter the SSID of a hidden wifi network. [CHAR LIMIT=35] -->
-    <!-- <string name="wifi_ssid_hint">Enter the SSID</string> -->
+    <string name="wifi_ssid_hint">Enter the SSID</string>
     <!-- Label for the security of the connection -->
     <string name="wifi_security">Security</string>
     <!-- Label for the signal strength of the connection -->
-    <string name="wifi_signal">Signal strength</string>
+    <string name="wifi_signal_strength">Signal strength</string>
     <!-- Label for the status of the connection -->
     <string name="wifi_status">Status</string>
     <!-- Label for the link speed of the connection -->
@@ -77,76 +202,170 @@
     <string name="wifi_frequency">Frequency</string>
     <!-- Label for the IP address of the connection -->
     <string name="wifi_ip_address">IP address</string>
+    <!-- Text for show password ListItem -->
+    <string name="show_password">Show password</string>
+    <!-- Summary for wifi network name. [CHAR LIMIT=40] -->
+    <string name="default_network_name_summary">Enter network name</string>
+    <!-- Summary for wifi password dialog. [CHAR LIMIT=40] -->
+    <string name="default_password_summary">Enter password</string>
     <!-- Key for the tag to store UI info for access point -->
     <string name="access_point_tag_key">access_point_tag_key</string>
-    <!-- Match this with drawable.wifi_signal. --> <skip />
+    <!-- Match this with drawable.wifi_signal. --><skip/>
     <!-- Wi-Fi settings. The signal strength a Wi-Fi network has. -->
     <string-array name="wifi_signals">
         <item>Poor</item>
+        <item>Poor</item>
         <item>Fair</item>
         <item>Good</item>
         <item>Excellent</item>
     </string-array>
+    <!-- Link speed on Wifi Status screen -->
+    <string name="link_speed">%1$d Mbps</string>
+    <!-- Wifi 2.4GHz is used as an universal itendifier for 2.4GHz band -->
+    <string name="wifi_band_24ghz">2.4 GHz</string>
+    <!-- Wifi Internal 5GHz as an universal itendifier for 5GHz band -->
+    <string name="wifi_band_5ghz">5 GHz</string>
+    <!-- Label to the section to show details about a Wi-Fi settings -->
+    <string name="wifi_network_detail">Network details</string>
+    <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's MAC address. -->
+    <string name="wifi_mac_address">MAC address</string>
+    <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's current IP address. -->
+    <string name="wifi_ip_address_title">IP address</string>
+    <!-- Wifi details preference title to display router IP subnet mask -->
+    <string name="wifi_subnet_mask">Subnet mask</string>
+    <!-- Wifi details preference title to display router DNS info -->
+    <string name="wifi_dns">DNS</string>
+    <!-- Wifi details preference category title for IPv6 information -->
+    <string name="wifi_details_ipv6_address_header">IPv6 addresses</string>
+    <!-- Label for the gateway of the network -->
+    <string name="wifi_gateway">Gateway</string>
+    <!-- Title of wifi specific settings, which control advanced behaviors of wifi. [CHAR LIMIT=30] -->
+    <string name="wifi_preferences_title">Wi\u2011Fi preferences</string>
+    <!-- Preference title for option to enable Wi-Fi when saved networks are nearby [CHAR LIMIT=40] -->
+    <string name="wifi_wakeup">Turn on Wi\u2011Fi automatically</string>
+    <!-- Preference summary for option to enable Wi-Fi when high quality saved networks are nearby [CHAR LIMIT=120] -->
+    <string name="wifi_wakeup_summary">Wi\u2011Fi will turn back on near high\u2011quality saved networks, like your home network</string>
+    <!-- Preference summary for auto-wifi when user needs to enable location scanning to toggle it [CHAR LIMIT=100] -->
+    <string name="wifi_wakeup_summary_no_location">Unavailable because location is turned off. Turn on <annotation id="link">location</annotation>.</string>
+    <!-- Wi-Fi settings dialog. Title of dialog displayed asking user to enable Wi-Fi Scanning [CHAR LIMIT=60]-->
+    <string name="wifi_settings_scanning_required_title">Turn on Wi\u2011Fi scanning?</string>
+    <!-- Wi-Fi settings dialog. Text for the confirmation button to enable Wi-Fi scanning. [CHAR LIMIT = 20]-->
+    <string name="wifi_settings_scanning_required_turn_on">Turn on</string>
+    <!-- Wi-Fi settings dialog. Text to show in toast for when user turns on wifi scanning. [CHAR LIMIT=NONE] -->
+    <string name="wifi_settings_scanning_required_enabled">Wi\u2011Fi scanning turned on</string>
+    <!-- Preference title for option to automatically switch away from bad wifi networks [CHAR LIMIT=60]-->
+    <string name="wifi_cellular_fallback_title">Switch to mobile data automatically</string>
+    <!-- Preference summary to automatically switch away from bad wifi networks [CHAR LIMIT=None]-->
+    <string name="wifi_cellular_fallback_summary">Use mobile data when Wi\u2011Fi has no internet access. Data usage charges may apply.</string>
+    <!-- url for the wifi scanning required dialog help page -->
+    <string name="help_uri_wifi_scanning_required" translatable="false"></string>
+    <!-- Button label to allow the user to view additional information [CHAR LIMIT=NONE] -->
+    <string name="learn_more">Learn more</string>
+    <!-- Wifi hotspot settings -->
+    <!-- Label for Wifi hotspot name. [CHAR LIMIT=20]-->
+    <string name="wifi_hotspot_name_title">Hotspot name</string>
+    <!-- Summary for Wifi hotspot name when connection is in progress. [CHAR LIMIT=25]-->
+    <string name="wifi_hotspot_name_summary_connecting">Turning on <xliff:g id="wifi_hotspot_name">%1$s</xliff:g>...</string>
+    <!-- Summary for Wifi hotspot name when connected. [CHAR LIMIT=NONE]-->
+    <string name="wifi_hotspot_name_summary_connected">Other devices can connect to <xliff:g id="wifi_hotspot_name">%1$s</xliff:g></string>
+    <!-- Label for Wifi hotspot password. [CHAR LIMIT=30]-->
+    <string name="wifi_hotspot_password_title">Hotspot password</string>
+    <!-- Label for Wifi security type title [CHAR LIMIT=15]-->
+    <string name="wifi_hotspot_security_title">Security</string>
+    <!-- Label for Wifi security type WPA2-Personal [CHAR LIMIT=25]-->
+    <string name="wifi_hotspot_wpa2_personal">WPA2-Personal</string>
+    <!-- Label for Wifi security type WPA2-Personal [CHAR LIMIT=25]-->
+    <string name="wifi_hotspot_security_none">None</string>
+    <!-- Label for Wifi hotspot AP Band. [CHAR LIMIT=15]-->
+    <string name="wifi_hotspot_ap_band_title">AP Band</string>
+    <!-- Label for the RadioGroup to choose wifi ap band [CHAR LIMIT=25]-->
+    <string name="wifi_ap_band_config">Select AP Band</string>
+    <!-- Label for the radio button to choose wifi ap channel automatically [CHAR LIMIT=10]-->
+    <string name="wifi_ap_choose_auto">Auto</string>
+    <!-- Label for the radio button to choose wifi ap 2.4 GHz band [CHAR LIMIT=25]-->
+    <string name="wifi_ap_choose_2G">2.4 GHz Band</string>
+    <!-- Label for the radio button to only choose wifi ap 5GHz band [CHAR LIMIT=25]-->
+    <string name="wifi_ap_choose_5G">5.0 GHz Band</string>
+    <!-- Label for the radio button to prefer 5GHz wifi ap band  [CHAR LIMIT=80]-->
+    <string name="wifi_ap_prefer_5G">5.0 GHz Band preferred</string>
+    <!-- Label for adding to the list of selected bands when 2.4 GHz is selected [CHAR LIMIT=15]-->
+    <string name="wifi_ap_2G">2.4 GHz</string>
+    <!-- Label for adding to the list of selected bands when 5.0 GHz is selected [CHAR LIMIT=15]-->
+    <string name="wifi_ap_5G">5.0 GHz</string>
+    <!-- Label that is shown as a dialog summary informing users they must pick at LEAST one band for their hotspot [CHAR LIMIT=25]-->
+    <string name="wifi_ap_band_select_one">Choose at least one band for Wi\u2011Fi hotspot:</string>
+    <!-- Tethering controls, item title to go into the tethering settings when USB, Bluetooth and Wifi tethering are available [CHAR LIMIT=60]-->
+    <string name="tether_settings_title_all">Hotspot &amp; tethering</string>
+    <!-- Title for the toggle to turn off hotspot automatically [CHAR LIMIT=50]-->
+    <string name="wifi_hotspot_auto_off_title">Turn off hotspot automatically</string>
+    <!-- Summary for the toggle to turn off hotspot automatically [CHAR LIMIT=100]-->
+    <string name="wifi_hotspot_auto_off_summary">Wi\u2011Fi hotspot will turn off if no devices are connected</string>
+    <!-- This string asks the user whether or not to allow an app to enable WiFi. [CHAR LIMIT=NONE] -->
+    <string name="wifi_ask_enable"><xliff:g id="requester" example="FancyApp">%s</xliff:g> wants to turn on Wi-Fi</string>
+    <!-- This string asks the user whether or not to allow an app to disable WiFi. [CHAR LIMIT=NONE] -->
+    <string name="wifi_ask_disable"><xliff:g id="requester" example="FancyApp">%s</xliff:g> wants to turn off Wi-Fi</string>
+    <!-- Summary text when Wi-Fi has error -->
+    <string name="wifi_error">Error</string>
 
-    <!-- Bluetooth settings --><skip />
-    <!-- Bluetooth settings check box title on Main Settings screen -->
-    <string name="bluetooth_quick_toggle_title">Bluetooth</string>
-    <!-- Bluetooth settings check box summary for turning on bluetooth -->
-    <string name="bluetooth_quick_toggle_summary">Turn on Bluetooth</string>
-    <!--Used as title on second screen after selecting Bluetooth settings -->
-    <string name="bluetooth_settings">Bluetooth</string>
-    <!--Bluetooth was disabled. -->
-    <string name="bluetooth_disabled">Bluetooth disabled</string>
-    <!--Wireless controls screen, settings title for the item to take you to the bluetooth settings screen -->
+    <!-- Bluetooth settings --><skip/>
+    <!-- Title of Bluetooth settings pages. [CHAR LIMIT=30] -->
     <string name="bluetooth_settings_title">Bluetooth</string>
-    <!--Wireless controls screen, settings summary for the item tot ake you to the bluetooth settings screen -->
-    <string name="bluetooth_settings_summary">Manage connections, set device name &amp; discoverability</string>
+    <!--Bluetooth settings screen, text for Bluetooth device with no name. [CHAR LIMIT=40] -->
+    <string name="bluetooth_device">Unnamed device</string>
+    <!-- Category title for paired Bluetooth devices. [CHAR LIMIT=40] -->
+    <string name="bluetooth_paired_devices">Paired devices</string>
+    <!-- Title for option to pair a new Bluetooth device. [CHAR LIMIT=40] -->
+    <string name="bluetooth_pair_new_device">Pair new device</string>
+    <!-- Summary for option to pair a new Bluetooth device; alerts user that selecting the option enables Bluetooth. [CHAR LIMIT=NONE]-->
+    <string name="bluetooth_pair_new_device_summary">Bluetooth will turn on to pair</string>
+    <!-- Dialog title to confirm disconnecting from all profiles of a Bluetooth device. [CHAR LIMIT=40] -->
+    <string name="bluetooth_disconnect_title">Disconnect device?</string>
+    <!-- Message for disconnecting a vehicle from all profiles of a Bluetooth device. [CHAR LIMIT=NONE] -->
+    <string name="bluetooth_disconnect_all_profiles">Your vehicle will disconnect from "<xliff:g example="Pixel" id="device_name">%1$s</xliff:g>."</string>
+    <!-- Description of a vehicle's Bluetooth MAC address. [CHAR LIMIT=50] -->
+    <string name="bluetooth_vehicle_mac_address">Vehicle\'s Bluetooth address: <xliff:g example="12:34:56:AB:CD:EF" id="address">%1$s</xliff:g></string>
+    <!-- Description of a remote device's Bluetooth MAC address. [CHAR LIMIT=50] -->
+    <string name="bluetooth_device_mac_address">Device\'s Bluetooth address: <xliff:g example="12:34:56:AB:CD:EF" id="address">%1$s</xliff:g></string>
+    <!-- Title for the vehicle's current Bluetooth name, e.g. "My Car". [CHAR LIMIT=30] -->
+    <string name="bluetooth_name">Vehicle name</string>
+    <!-- Dialog title to change the vehicle's Bluetooth name. [CHAR LIMIT=30] -->
+    <string name="bluetooth_rename_vehicle">Rename this vehicle</string>
+    <!-- Dialog title to change a remote device's Bluetooth name. [CHAR LIMIT=30] -->
+    <string name="bluetooth_rename_device">Rename device</string>
+    <!-- Confirmation button in dialog to rename a Bluetooth device. [CHAR LIMIT=20] -->
+    <string name="bluetooth_rename_button">Rename</string>
+    <!-- Category title for Bluetooth devices available for pairing. [CHAR LIMIT=40] -->
+    <string name="bluetooth_available_devices">Available devices</string>
+    <!-- Category title for Bluetooth profiles. [CHAR LIMIT=40] -->
+    <string name="bluetooth_profiles">Profiles</string>
+    <!-- Title for BT error dialogs. -->
+    <string name="bluetooth_error_title"></string>
+    <!-- Strings for msg to display to user while bluetooth is turning on [CHAR LIMIT=60] -->
+    <string name="bluetooth_turning_on">"Turning Bluetooth on\u2026"</string>
+    <!-- Strings for msg to display to user while bluetooth is turning off [CHAR LIMIT=60] -->
+    <string name="bluetooth_turning_off">"Turning Bluetooth off\u2026"</string>
+    <!-- This string asks the user whether or not to allow an app to enable bluetooth. [CHAR LIMIT=100] -->
+    <string name="bluetooth_ask_enablement"><xliff:g id="app_name" example="FancyApp">%1$s</xliff:g> wants to turn on Bluetooth</string>
+    <!-- This string asks the user whether or not to allow an app to disable bluetooth. [CHAR LIMIT=100] -->
+    <string name="bluetooth_ask_disablement"><xliff:g id="app_name" example="FancyApp">%1$s</xliff:g> wants to turn off Bluetooth</string>
+    <!-- This string asks the user whether or not to allow an app to enable bluetooth. [CHAR LIMIT=100] -->
+    <string name="bluetooth_ask_enablement_no_name">An app wants to turn on Bluetooth</string>
+    <!-- This string asks the user whether or not to allow an app to disable bluetooth. [CHAR LIMIT=100] -->
+    <string name="bluetooth_ask_disablement_no_name">An app wants to turn off Bluetooth</string>
+    <!-- Strings for asking to the user whether to allow an app to enable discovery mode. [CHAR LIMIT=NONE] -->
+    <string name="bluetooth_ask_discovery"><xliff:g id="app_name">%1$s</xliff:g> wants to make your headunit visible to other Bluetooth devices for <xliff:g id="timeout">%2$d</xliff:g> seconds.</string>
+    <!-- Strings for asking to the user whether to allow an app to enable discovery mode. [CHAR LIMIT=NONE] -->
+    <string name="bluetooth_ask_discovery_no_name">An app wants to make your headunit visible to other Bluetooth devices for <xliff:g id="timeout">%1$d</xliff:g> seconds.</string>
+    <!-- Strings for asking to the user whether to allow an app to enable bluetooth and discovery mode. [CHAR LIMIT=NONE] -->
+    <string name="bluetooth_ask_enablement_and_discovery"><xliff:g id="app_name">%1$s</xliff:g> wants to turn on Bluetooth and make your headunit visible to other devices for <xliff:g id="timeout">%2$d</xliff:g> seconds.</string>
+    <!-- Strings for asking to the user whether to allow an app to enable bluetooth and discovery mode. [CHAR LIMIT=NONE] -->
+    <string name="bluetooth_ask_enablement_and_discovery_no_name">An app wants to turn on Bluetooth and make your headunit visible to other devices for <xliff:g id="timeout">%1$d</xliff:g> seconds.</string>
 
-    <!-- Message for telling the user the kind of BT device being displayed in list. -->
-    <string name="bluetooth_talkback_computer">Computer</string>
-
-    <!-- Message for telling the user the kind of BT device being displayed in list. -->
-    <string name="bluetooth_talkback_headset">Headset</string>
-
-    <!-- Message for telling the user the kind of BT device being displayed in list. -->
-    <string name="bluetooth_talkback_phone">Phone</string>
-
-    <!-- Message for telling the user the kind of BT device being displayed in list. -->
-    <string name="bluetooth_talkback_imaging">Imaging</string>
-
-    <!-- Message for telling the user the kind of BT device being displayed in list. -->
-    <string name="bluetooth_talkback_headphone">Headphone</string>
-
-    <!-- Message for telling the user the kind of BT device being displayed in list. -->
-    <string name="bluetooth_talkback_input_peripheral">Input Peripheral</string>
-
-    <!-- Message for telling the user the kind of BT device being displayed in list. -->
-    <string name="bluetooth_talkback_bluetooth">Bluetooth</string>
-    <!-- Bluetooth settings: The sub heading for devices which have already been paired with this device. [CHAR LIMIT=40] -->
-    <string name="bluetooth_preference_paired_devices">Paired devices</string>
-    <!-- Bluetooth settings: The sub heading for available devices during and after scanning. [CHAR LIMIT=40] -->
-    <string name="bluetooth_preference_found_devices">Available devices</string>
-    <!-- Bluetooth settings: The sub heading for no bluetooth device has been paired with this device. [CHAR LIMIT=40] -->
-    <string name="bluetooth_preference_no_paired_devices">No paired devices</string>
-    <!-- Bluetooth settings: The sub heading for no available bluetooth devices during and after scanning. [CHAR LIMIT=40] -->
-    <string name="bluetooth_preference_no_found_devices">No available devices</string>
-    <!-- Bluetooth settings: Paired dialog title [CHAR LIMIT=40] -->
-    <string name="bluetooth_preference_paired_dialog_title">Paired device</string>
-    <!-- Bluetooth settings: Name label [CHAR LIMIT=40] -->
-    <string name="bluetooth_preference_paired_dialog_name_label">Name</string>
-    <!-- Bluetooth settings.  Connection options screen.  The title of the header that is above all of the profiles.
-     When a user decides what Bluetooth capabilities to use with the device.  -->
-    <string name="bluetooth_device_advanced_profile_header_title">Use for</string>
-    <!-- Hint for a text field to change the name of the Bluetooth device. [CHAR LIMIT=35] -->
-    <string name="wifi_ssid_hint">Change the name of the Bluetooth device</string>
-
-    <!-- Bluetooth pairing -->
+    <!-- Bluetooth pairing --><skip/>
     <!-- Notification ticker text (shown in the status bar) when a Bluetooth device wants to pair with us -->
     <string name="bluetooth_notif_ticker">Bluetooth pairing request</string>
     <!-- Bluetooth settings.  Context menu item for a device.  Action will first pair, and then connect to all profiles on the device. -->
     <string name="bluetooth_device_context_pair_connect">Pair &amp; connect</string>
-    <!-- Used as setting title (for checkbox) on second screen after selecting Bluetooth settings -->
-    <string name="bluetooth">Bluetooth</string>
     <!-- Message when bluetooth is informing the user of the pairing key. [CHAR LIMIT=NONE] -->
     <string name="bluetooth_pairing_key_msg">Bluetooth pairing code</string>
     <!-- Checkbox label for alphanumeric PIN entry (default is numeric PIN). [CHAR LIMIT=50] -->
@@ -154,9 +373,9 @@
     <!-- Message when bluetooth dialog for passkey entry is showing. [CHAR LIMIT=NONE] -->
     <string name="bluetooth_enter_passkey_msg">Type the pairing code then press Return or Enter</string>
     <!-- Title for the dialog to enter PIN. [CHAR LIMIT=40] -->
-    <string name="bluetooth_pairing_request">Pair with <xliff:g id="device_name">%1$s</xliff:g>?</string>
+    <string name="bluetooth_pairing_request">Pair with <xliff:g example="Pixel" id="device_name">%1$s</xliff:g>?</string>
     <!-- Checkbox message in pairing dialogs.  [CHAR LIMIT=NONE] -->
-    <string name="bluetooth_pairing_shares_phonebook">Allow <xliff:g id="device_name">%1$s</xliff:g> to access your contacts and call history</string>
+    <string name="bluetooth_pairing_shares_phonebook">Allow <xliff:g example="Pixel" id="device_name">%1$s</xliff:g> to access your contacts and call history</string>
     <!-- Pairing dialog text to remind user to enter the PIN on the other device. [CHAR LIMIT=NONE] -->
     <string name="bluetooth_enter_pin_other_device">You may also need to type this PIN on the other device.</string>
     <!-- Pairing dialog text to remind user to enter the passkey on the other device. [CHAR LIMIT=NONE] -->
@@ -169,13 +388,31 @@
     <string name="bluetooth_notif_title">Pairing request</string>
     <!-- Notification message when a Bluetooth device wants to pair with us -->
     <string name="bluetooth_notif_message">Tap to pair with <xliff:g id="device_name">%1$s</xliff:g>.</string>
-    <!-- Title for BT error dialogs. -->
-    <string name="bluetooth_error_title"></string>
+    <!-- Title for page which supports selecting a Bluetooth device from other applications. [CHAR_LIMIT=40]-->
+    <string name="bluetooth_device_picker">Choose Bluetooth device</string>
 
     <!-- Language settings screen heading. [CHAR LIMIT=30] -->
     <string name="language_settings">Languages</string>
+    <!-- Title of Languages & input settings screen. [CHAR LIMIT=30] -->
+    <string name="languages_and_input_settings">Languages &amp; input</string>
+    <!-- Title for the 'Keyboard' preference sub-screen. [CHAR LIMIT=30] -->
+    <string name="keyboard_settings">Keyboard</string>
+    <!-- Title for the 'Available keyboards' preference sub-screen, where the user can turn on/off installed keyboards.[CHAR LIMIT=35] -->
+    <string name="manage_keyboard">Manage keyboards</string>
+    <!-- Title of the main TTS settings screen. [CHAR LIMIT=50] -->
+    <string name="text_to_speech_settings">Text-to-speech output</string>
+    <!-- Title of preferred TTS settings screen. [CHAR LIMIT=30] -->
+    <string name="text_to_speech_preferred_engine_settings">Preferred engine</string>
+    <!-- Summay which identifies the currently selected preferred engine. [CHAR LIMIT=30] -->
+    <string name="text_to_speech_current_engine">Current engine</string>
+    <!-- Title for the seek bar which controls the TTS speech rate. [CHAR LIMIT=40] -->
+    <string name="tts_speech_rate">Speech Rate</string>
+    <!-- Title for the seek bar which controls the TTS pitch. [CHAR LIMIT=30] -->
+    <string name="tts_pitch">Pitch</string>
+    <!-- Name for button that resets speech rate and pitch for synthesized voice to default values in the text to speech settings. [CHAR LIMIT=30] -->
+    <string name="tts_reset">Reset</string>
 
-    <!-- sound settings --><skip />
+    <!-- sound settings --><skip/>
     <!-- Sound settings screen heading -->
     <string name="sound_settings">Sound</string>
     <!-- Sound settings screen, setting option name -->
@@ -192,16 +429,176 @@
     <string name="media_volume_summary">Set volume for music and videos</string>
     <!-- Sound settings screen, alarm volume slider title -->
     <string name="alarm_volume_title">Alarm</string>
+    <!-- Sound settings screen, title for the option defining the phone ringtone. [CHAR LIMIT=30] -->
+    <string name="ringtone_title">Phone ringtone</string>
+    <!-- Sound settings screen, title for the option defining the default notification sound. [CHAR LIMIT=40] -->
+    <string name="notification_ringtone_title">Default notification sound</string>
+    <!-- Sound settings screen, title for the option defining the default alarm sound. [CHAR LIMIT=30] -->
+    <string name="alarm_ringtone_title">Default alarm sound</string>
 
-    <!-- applications --><skip />
-    <!-- Applications settings title, on main settings screen. If clicked, the user is taken to a settings screen full of application settings-->
+    <!-- Units Settings -->
+    <!-- Units Settings title [CHAR LIMIT=10] -->
+    <string name="units_settings">Units</string>
+    <string name="units_speed_title">Speed</string>
+    <string name="units_distance_title">Distance</string>
+    <string name="units_fuel_consumption_title">Fuel consumption</string>
+    <string name="units_energy_consumption_title">Energy consumption</string>
+    <string name="units_temperature_title">Temperature</string>
+    <string name="units_volume_title">Volume</string>
+    <string name="units_pressure_title">Pressure</string>
+
+    <!--Units list entry, it shows the unit abbreviation (not translated) and then the same unit as it is pronounced, in that order. (e.g. mph - Miles per hour) [CHAR LIMIT = 120] -->
+    <string name="units_list_entry"><xliff:g example="mph" id="unit_abbreviation">%1$s</xliff:g> - <xliff:g example="Miles per hour" id="unit_pronunciation">%2$s</xliff:g></string>
+    <!--Units template for ratio units with numerators and denominators [CHAR LIMIT = 50]-->
+    <string name="units_ratio"><xliff:g example="km" id="unit_numerator">%1$s</xliff:g>/<xliff:g example="h" id="unit_denominator">%2$s</xliff:g></string>
+    <!--Units numerator part that can be used in ratio units string template-->
+    <string name="units_ratio_numerator"><xliff:g example="10" id="unit_numerator_quantity">%1$d</xliff:g><xliff:g example="kWh" id="unit_numerator_unit">%2$s</xliff:g></string>
+    <!--Units denominator part that can be used in ratio units string template-->
+    <string name="units_ratio_denominator"><xliff:g example="100" id="unit_denominator_quantity">%1$d</xliff:g><xliff:g example="mi" id="unit_denominator_unit">%2$s</xliff:g></string>
+    <!-- Meter per Second Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_meter_per_sec">Meter per Second</string>
+    <!-- Revolutions per Minute Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_rpm">Revolutions per Minute</string>
+    <!-- Hertz Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_hertz">Hertz</string>
+    <!-- Percentile Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_percentile">Percentile</string>
+    <!-- Millimeter Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_millimeter">Millimeter</string>
+    <!-- Meter Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_meter">Meter</string>
+    <!-- Kilometer Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_kilometer">Kilometer</string>
+    <!-- Mile Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_mile">Mile</string>
+    <!-- Celsius Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_celsius">Celsius</string>
+    <!-- Fahrenheit Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_fahrenheit">Fahrenheit</string>
+    <!-- Kelvin Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_kelvin">Kelvin</string>
+    <!-- Milliliter Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_milliliter">Milliliter</string>
+    <!-- Liter Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_liter">Liter</string>
+    <!-- Gallon Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_us_gallon">Gallon</string>
+    <!-- Imperial Gallon Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_imperial_gallon">Imperial Gallon</string>
+    <!-- Nanosecond Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_nano_secs">Nanosecond</string>
+    <!-- Second Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_secs">Second</string>
+    <!-- Year Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_year">Year</string>
+    <!-- Kilopascal Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_kilopascal">Kilopascal</string>
+    <!-- Watt Hour Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_watt_hour">Watt Hour</string>
+    <!-- Milliampere Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_milliampere">Milliampere</string>
+    <!-- Millivolt Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_millivolt">Millivolt</string>
+    <!-- Milliwatt Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_milliwatts">Milliwatt</string>
+    <!-- Ampere hour Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_ampere_hour">Ampere hour</string>
+    <!-- Kilowatt hour Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_kilowatt_hour">Kilowatt hour</string>
+    <!-- Pounds per square inch Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_psi">Pounds per square inch</string>
+    <!-- Miles per hour Unit as it is pronounced [CHAR LIMIT = 50]-->
+    <string name="units_unit_name_miles_per_hour">Miles per hour</string>
+    <!-- Kilometers per hour Unit as it is pronounced [CHAR LIMIT = 50]-->
+    <string name="units_unit_name_kilometers_per_hour">Kilometers per hour</string>
+    <!-- Bar Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_bar">Bar</string>
+    <!-- Degree Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_degrees">Degree</string>
+    <!-- Miles per Kilowatt Unit as it is pronounced [CHAR LIMIT=80]-->
+    <string name="units_unit_name_kilowatt_per_hundred_miles">Kilowatt per hundred Miles</string>
+    <!-- Kilometers per Kilowatt Unit as it is pronounced [CHAR LIMIT=80]-->
+    <string name="units_unit_name_kilowatt_per_hundred_kilometers">Kilowatt per hundred Kilometers</string>
+    <!--Miles per gallon Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_miles_per_gallon_us">Miles per Gallon (US)</string>
+    <!--Miles per gallon Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_miles_per_gallon_uk">Miles per Gallon (UK)</string>
+    <!--Kilometers per liter Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_kilometers_per_liter">Kilometers per Liter</string>
+    <!--Kilometers per liter Unit as it is pronounced [CHAR LIMIT=50]-->
+    <string name="units_unit_name_liter_per_hundred_kilometers">Liters per hundred Kilometers</string>
+
+    <!-- Units in abbreviated form -->
+    <string name="units_unit_abbreviation_meter_per_sec" translatable="false">m/s</string>
+    <string name="units_unit_abbreviation_rpm" translatable="false">RPM</string>
+    <string name="units_unit_abbreviation_hertz" translatable="false">Hz</string>
+    <string name="units_unit_abbreviation_percentile" translatable="false">%</string>
+    <string name="units_unit_abbreviation_millimeter" translatable="false">mm</string>
+    <string name="units_unit_abbreviation_meter" translatable="false">m</string>
+    <string name="units_unit_abbreviation_kilometer" translatable="false">km</string>
+    <string name="units_unit_abbreviation_mile" translatable="false">mi</string>
+    <string name="units_unit_abbreviation_celsius" translatable="false">°C</string>
+    <string name="units_unit_abbreviation_fahrenheit" translatable="false">°F</string>
+    <string name="units_unit_abbreviation_kelvin" translatable="false">K</string>
+    <string name="units_unit_abbreviation_milliliter" translatable="false">ml</string>
+    <string name="units_unit_abbreviation_liter" translatable="false">L</string>
+    <string name="units_unit_abbreviation_us_gallon" translatable="false">gal</string>
+    <string name="units_unit_abbreviation_imperial_gallon" translatable="false">IG</string>
+    <string name="units_unit_abbreviation_nano_secs" translatable="false">ns</string>
+    <string name="units_unit_abbreviation_secs" translatable="false">s</string>
+    <string name="units_unit_abbreviation_year" translatable="false">y</string>
+    <string name="units_unit_abbreviation_kilopascal" translatable="false">kPa</string>
+    <string name="units_unit_abbreviation_watt_hour" translatable="false">Wh</string>
+    <string name="units_unit_abbreviation_milliampere" translatable="false">mA</string>
+    <string name="units_unit_abbreviation_millivolt" translatable="false">mV</string>
+    <string name="units_unit_abbreviation_milliwatts" translatable="false">mW</string>
+    <string name="units_unit_abbreviation_ampere_hour" translatable="false">Ah</string>
+    <string name="units_unit_abbreviation_kilowatt_hour" translatable="false">kWh</string>
+    <string name="units_unit_abbreviation_psi" translatable="false">PSI</string>
+    <string name="units_unit_abbreviation_bar" translatable="false">bar</string>
+    <string name="units_unit_abbreviation_degrees" translatable="false">°</string>
+    <string name="units_unit_abbreviation_miles_per_hour" translatable="false">mph</string>
+    <string name="units_unit_abbreviation_kilometers_per_hour" translatable="false">km/h</string>
+    <string name="units_unit_abbreviation_miles_per_gallon_us" translatable="false">mpg (US)</string>
+    <string name="units_unit_abbreviation_miles_per_gallon_uk" translatable="false">mpg (UK)</string>
+    <string name="units_unit_abbreviation_kilometers_per_liter" translatable="false">km/L</string>
+    <string name="units_unit_abbreviation_liters_per_hundred_kilometers" translatable="false">L/100km</string>
+
+    <!-- applications --><skip/>
+    <!-- Apps and notifications settings title, on main settings screen. If clicked, the user is taken to a settings screen full of apps and notifications settings [CHAR LIMIT=40] -->
+    <string name="apps_and_notifications_settings">Apps &amp; notifications</string>
+    <!-- Preference which opens application settings when clicked [CHAR LIMIT=40] -->
+    <string name="all_applications">Show all apps</string>
+    <!-- Default app settings title, which allows user to select defaults for certain application types. [CHAR LIMIT=40] -->
+    <string name="default_applications">Default apps</string>
+    <!-- Label for list that shows all permissions [CHAR LIMIT=40] -->
+    <string name="app_permissions">App permissions</string>
+    <!-- Summary of permissions currently granted to apps [CHAR LIMIT=60] -->
+    <string name="app_permissions_summary">Apps using <xliff:g id="apps" example="location">%1$s</xliff:g></string>
+    <!-- Applications settings title. If clicked, the user is taken to the list of installed applications. [CHAR LIMIT=40] -->
     <string name="applications_settings">App info</string>
-    <!-- [CHAR LIMIT=25] Manage applications, individual application info screen, button label under Storage heading. Button to disable an existing application. -->
+    <!-- Manage applications, text label for button to kill / force stop an application. [CHAR LIMIT=30] -->
+    <string name="force_stop">Force stop</string>
+    <!-- Manage applications, title for dialog when killing persistent apps. [CHAR LIMIT=40] -->
+    <string name="force_stop_dialog_title">Force stop?</string>
+    <!-- Manage applications, text for dialog when killing persistent apps. [CHAR LIMIT=200] -->
+    <string name="force_stop_dialog_text">If you force stop an app, it may misbehave.</string>
+    <!-- Manage applications, individual application info screen. Button to disable an existing application. [CHAR LIMIT=25] -->
     <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. -->
+    <!-- Manage applications, individual application info screen. Button to re-enable an existing application. [CHAR LIMIT=25] -->
     <string name="enable_text">Enable</string>
+    <!-- Manage applications, individual application info screen. Button to remove the application from the system. [CHAR LIMIT=25] -->
+    <string name="uninstall_text">Uninstall</string>
+    <!-- Manage applications, text for dialog when disabling apps. [CHAR LIMIT=200] -->
+    <string name="app_disable_dialog_text">If you disable this app, Android and other apps may no longer function as intended.</string>
+    <!-- Manage applications, label for option to disable app. [CHAR LIMIT=30] -->
+    <string name="app_disable_dialog_positive">Disable app</string>
+    <!-- Manage applications, text informing that an application is not installed for the current user. [CHAR_LIMIT=NONE] -->
+    <string name="not_installed">Not installed for this user</string>
     <!-- Manage applications, individual application info screen, heading for settings related to the app's permissions. for example, it may list all the permissions the app has. -->
     <string name="permissions_label">Permissions</string>
+    <!-- Label for the toggle that enables/disables an app's notifications. [CHAR LIMIT=20] -->
+    <string name="notifications_label">Notifications</string>
     <!-- Label for displaying application version. -->
     <string name="application_version_label">Version: %1$s</string>
     <!-- Runtime permissions preference summary, shown when the app has no permissions granted. [CHAR LIMIT=40] -->
@@ -212,23 +609,145 @@
     <string name="data_usage_summary_title">Data usage</string>
     <!-- Activity title for Appk data usage summary. [CHAR LIMIT=25] -->
     <string name="data_usage_app_summary_title">App data usage</string>
-    <!-- Manage applications, text label for button to kill / force stop an application -->
-    <string name="force_stop">Force stop</string>
     <string name="computing_size">Computing\u2026</string>
     <!-- Runtime permissions preference summary.  Number of additional permissions granted. [CHAR LIMIT=40] -->
     <plurals name="runtime_permissions_additional_count">
-        <item quantity="one"><xliff:g id="count" example="1">%d</xliff:g> additional permission</item>
-        <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> additional permissions</item>
+        <item quantity="one"><xliff:g example="1" id="count">%d</xliff:g> additional permission</item>
+        <item quantity="other"><xliff:g example="10" id="count">%d</xliff:g> additional permissions</item>
     </plurals>
+    <!-- Dialog body explaining that the app just selected by the user will not work after a reboot until after the user enters their credentials, such as a PIN or password. [CHAR LIMIT=NONE] -->
+    <string name="direct_boot_unaware_dialog_message_car">Note: After a reboot, this app can\'t start until you unlock your vehicle.</string>
+    <!-- Assistant and voice input settings title. This setting goes into the manage assistant settings page. [CHAR LIMIT=40] -->
+    <string name="assist_and_voice_input_settings">Assist &amp; voice input</string>
+    <!-- Default assistant settings title. This setting allows users to select the default assistant for the device. [CHAR LIMIT=40] -->
+    <string name="assist_app_settings">Assist app</string>
+    <!-- Title for the text context preference to determine whether assist can access the data currently displayed on-screen [CHAR LIMIT=40] -->
+    <string name="assist_access_context_title">Use text from screen</string>
+    <!-- Summary for the text context preference to determine whether assist can access the data currently displayed on-screen [CHAR LIMIT=NONE] -->
+    <string name="assist_access_context_summary">Allow the assist app to access the screen contents as text</string>
+    <!-- Title for the screenshot context preference to determine whether assist can access the screenshot of your screen [CHAR LIMIT=40] -->
+    <string name="assist_access_screenshot_title">Use screenshot</string>
+    <!-- Summary for the screenshot context preference to determine whether assist can access the screenshot of your screen [CHAR LIMIT=NONE] -->
+    <string name="assist_access_screenshot_summary">Allow the assist app to access an image of the screen</string>
+    <!-- Title of the screen of the voice input settings [CHAR_LIMIT=40]-->
+    <string name="voice_input_settings_title">Voice input</string>
+    <!-- Title of the autofill service settings screen. [CHAR LIMIT=40] -->
+    <string name="autofill_settings_title">Autofill service</string>
+    <!-- Title of the option to remove the default application. [CHAR LIMIT=30] -->
+    <string name="app_list_preference_none">None</string>
+    <!-- Label to show which application is chosen as the default application. [CHAR LIMIT=30] -->
+    <string name="default_app_selected_app">Selected</string>
+    <!-- Warning message about security implications of setting an assistant, displayed as a dialog message when the user selects an assistant. [CHAR_LIMIT=NONE]  -->
+    <string name="assistant_security_warning">The assistant will be able to read information about apps in use on your system, including information visible on your screen or accessible within the apps.</string>
+    <!-- Message of the warning dialog for setting the auto-fill app. [CHAR_LIMIT=NONE] -->
+    <string name="autofill_confirmation_message">
+        <![CDATA[
+        <b>Make sure you trust this app</b>
+        <br/>
+        <br/>
+        <xliff:g id="app_name" example="Google Autofill">%1$s</xliff:g> uses what\'s on
+        your screen to determine what can be autofilled.
+        ]]>
+    </string>
+    <!-- Title of preference to add new autofill services. [CHAR_LIMIT=30] -->
+    <string name="autofill_add_service">Add service</string>
+    <!-- Title of setting to change the handled domain urls [CHAR LIMIT=60]-->
+    <string name="app_launch_domain_links_title">Opening links</string>
+    <!-- Section title for the Domain URL app preference list [CHAR LIMIT=60]-->
+    <string name="domain_url_section_title">Installed apps</string>
+    <!-- Summary for an app that doesn't open any domain URLs [CHAR LIMIT=45] -->
+    <string name="domain_urls_summary_none">Don\u2019t open supported links</string>
+    <!-- Summary of an app that can open URLs for exactly one domain [CHAR LIMIT=45] -->
+    <string name="domain_urls_summary_one">Open <xliff:g id="domain" example="mail.google.com">%s</xliff:g></string>
+    <!-- Summary of an app that can open several domain's URLs [CHAR LIMIT=45] -->
+    <string name="domain_urls_summary_some">Open <xliff:g id="domain" example="mail.google.com">%s</xliff:g> and other URLs</string>
+    <!-- Title of app specific setting to view and modify app launch settings. [CHAR LIMIT=40] -->
+    <string name="app_launch_title">Open by default</string>
+    <!-- Sub heading for preferences not related to managed domain urls. [CHAR LIMIT=40] -->
+    <string name="app_launch_other_defaults_title">Other defaults</string>
+    <!-- Text if the app is NOT a default for actions. [CHAR LIMIT=40] -->
+    <string name="auto_launch_disable_text">No defaults set.</string>
+    <!-- Text if the app is set as a default for some actions. [CHAR LIMIT=80] -->
+    <string name="auto_launch_enable_text">You\u2019ve chosen to launch this app by default for some actions.</string>
+    <!-- Summary to indicate to user that the preference can be clicked to clear the default app preference. [CHAR LIMIT=40] -->
+    <string name="auto_launch_reset_text">Clear defaults</string>
+    <!-- Title of preference to pick how the app should open related urls [CHAR LIMIT=60] -->
+    <string name="app_launch_open_domain_urls_title">Open supported links</string>
+    <!-- Explanation that the app that will ALWAYS be launched to open web links to domains that it understands [CHAR LIMIT=40] -->
+    <string name="app_link_open_always">Open in this app</string>
+    <!-- Explanation that the user will be asked whether to launch the app to open web links to domains that it understands [CHAR LIMIT=40] -->
+    <string name="app_link_open_ask">Ask every time</string>
+    <!-- Explanation that the app that will NEVER be launched to open web links to domains that it understands [CHAR LIMIT=60] -->
+    <string name="app_link_open_never">Don\u2019t open in this app</string>
+    <!-- Title of dialog showing the supported link domains [CHAR LIMIT=40] -->
+    <string name="app_launch_supported_domain_urls_title">Supported links</string>
 
+    <!-- Label for screen where user can grant applications special access to various systems. [CHAR_LIMIT=60] -->
+    <string name="special_access">Special app access</string>
+    <!-- Text for toggle button to control whether system processes are shown in app lists. [CHAR_LIMIT=30] -->
+    <string name="show_system">Show system</string>
+    <!-- Text for toggle button to control whether system processes are hidden in app lists. [CHAR_LIMIT=30] -->
+    <string name="hide_system">Hide system</string>
+    <!-- Title for managing apps which can modify system settings. [CHAR_LIMIT=40] -->
+    <string name="modify_system_settings_title">Modify system settings</string>
+    <!-- Description of modifying system settings. [CHAR_LIMIT=NONE] -->
+    <string name="modify_system_settings_description">This permission allows an app to modify system settings.</string>
+    <!-- Title for managing components which can listen to notifications. [CHAR_LIMIT=30] -->
+    <string name="notification_access_title">Notification access</string>
+    <!-- Title for a warning message about security implications of enabling a notification listener, displayed as a dialog message. [CHAR_LIMIT=NONE] -->
+    <string name="notification_listener_security_warning_title">Allow notification access for <xliff:g id="service" example="NotificationReader">%1$s</xliff:g>?</string>
+    <!-- Summary for a warning message about security implications of enabling a notification listener, displayed as a dialog message. [CHAR_LIMIT=NONE] -->
+    <string name="notification_listener_security_warning_summary"><xliff:g id="notification_listener_name">%1$s</xliff:g> will be able to read all notifications, including personal information such as contact names and the text of messages you receive. It will also be able to dismiss notifications or trigger action buttons they contain.\n\nThis will also give the app the ability to turn Do Not Disturb on or off and change related settings.</string>
+    <!-- Summary for a warning message about revoking notification listener access, displayed as a dialog message. [CHAR_LIMIT=NONE] -->
+    <string name="notification_listener_revoke_warning_summary">If you turn off notification access for <xliff:g id="notification_listener_name">%1$s</xliff:g>, Do Not Disturb access may also be turned off.</string>
+    <!-- Positive button for a dialog warning message about revoking notification listener access. [CHAR_LIMIT=30] -->
+    <string name="notification_listener_revoke_warning_confirm">Turn off</string>
+    <!-- Negative button for a dialog warning message about revoking notification listener access. [CHAR_LIMIT=30] -->
+    <string name="notification_listener_revoke_warning_cancel">Cancel</string>
+    <!-- Title for screen controlling which apps have access to send premium sms messages. [CHAR_LIMIT=60] -->
+    <string name="premium_sms_access_title">Premium SMS access</string>
+    <!-- Message shown for option to enable Premium SMS for an app. [CHAR_LIMIT=NONE] -->
+    <string name="premium_sms_access_description">Premium SMS may cost you money and will add up to your carrier bills. If you enable permission for an app, you will be able to send premium SMS using that app.</string>
+    <!-- Title for managing apps which can query usage data. [CHAR_LIMIT=30] -->
+    <string name="usage_access_title">Usage access</string>
+    <!-- Description of the usage access permission. [CHAR_LIMIT=NONE] -->
+    <string name="usage_access_description">Usage access allows an app to track what other apps you\u2019re using and how often, as well as your carrier, language settings, and other details.</string>
+    <!-- Title for managing apps which can change Wi-Fi state. [CHAR_LIMIT=30] -->
+    <string name="wifi_control_title">Wi-Fi control</string>
+    <!-- Description of the change wifi state permission. [CHAR_LIMIT=NONE] -->
+    <string name="wifi_control_description">Wi-Fi control allows an app to turn Wi-Fi on or off, scan and connect to Wi-Fi networks, add or remove networks, or start a local-only hotspot.</string>
+    <!-- Title for item that when selected will launch into additional special access settings. [CHAR_LIMIT=30] -->
+    <string name="more_special_access_title">More</string>
 
-    <!-- System --><skip />
+    <!-- Location --><skip/>
+    <!-- Main setting menu item to go into location settings [CHAR LIMIT=40] -->
+    <string name="location_settings_title">Location</string>
+    <!-- Title of Recent Location Requests setting [CHAR LIMIT=60] -->
+    <string name="location_settings_recent_requests_title">Recent Location Requests</string>
+    <!-- Message indicating that no apps have requested location recently [CHAR LIMIT=60] -->
+    <string name="location_settings_recent_requests_empty_message">No recent location requests</string>
+    <!-- Title of Location App-level Permissions setting [CHAR LIMIT=60] -->
+    <string name="location_settings_app_permissions_title">App-level permissions</string>
+    <!-- Title of Location Scanning setting [CHAR LIMIT=60] -->
+    <string name="location_settings_scanning_title">Scanning</string>
+    <!-- Title of Location Services category [CHAR LIMIT=60] -->
+    <string name="location_settings_services_title">Location Services</string>
+
+    <!-- Location Scanning --><skip/>
+    <!-- Title of Wi-Fi scanning preference [CHAR LIMIT=60] -->
+    <string name="location_settings_wifi_scanning_title">Wi\u2011Fi scanning</string>
+    <!-- Summary of Wi-Fi scanning preference [CHAR LIMIT=240] -->
+    <string name="location_settings_wifi_scanning_summary">Allow apps and services to scan for Wi\u2011Fi networks at any time, even when Wi\u2011Fi is off. This can be used, for example, to improve location-based features and services.</string>
+    <!-- Title of Bluetooth scanning preference [CHAT LIMIT=60]-->
+    <string name="location_settings_bluetooth_scanning_title">Bluetooth scanning</string>
+    <!-- Summary of Bluetooth scanning preference [CHAR LIMIT=240] -->
+    <string name="location_settings_bluetooth_scanning_summary">Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services.</string>
+
+    <!-- System --><skip/>
     <!-- Main setting menu item to go into system settings -->
     <string name="system_setting_title">System</string>
-    <!-- About phone screen, list item title.  Takes the user to the screen for seeing and installing system updates. [CHAR LIMIT=40] -->
-    <string name="system_update_settings_list_item_title">System updates</string>
-    <!-- About phone screen, list item summary.  Takes the user to the screen for seeing and installing system updates. [CHAR LIMIT=40] -->
-    <string name="system_update_settings_list_item_summary">""</string>
+    <!-- System updates title.  Takes the user to the screen for seeing and installing system updates. [CHAR LIMIT=40] -->
+    <string name="system_update_settings_title">System updates</string>
 
     <!-- About phone screen, status item label  [CHAR LIMIT=40] -->
     <string name="firmware_version">Android version</string>
@@ -242,6 +761,8 @@
     <string name="kernel_version">Kernel version</string>
     <!-- About phone screen,  setting option name  [CHAR LIMIT=40] -->
     <string name="build_number">Build number</string>
+    <!-- About phone screen,  setting option name  [CHAR LIMIT=40] -->
+    <string name="bluetooth_mac_address">Bluetooth address</string>
 
     <!-- About phone screen, show when a value of some status item is unavailable. -->
     <string name="device_info_not_available">Not available</string>
@@ -254,11 +775,11 @@
     <!-- About phone screen, summary of the item to go into the phone status screen -->
     <string name="device_status_summary" product="default">Phone number, signal, etc.</string>
 
-    <!-- About --> <skip />
+    <!-- About --><skip/>
     <!-- Main settings screen, setting title for the user to go into the About phone screen -->
     <string name="about_settings">About</string>
     <!-- Summary of device info page [CHAR LIMIT=NONE] -->
-    <string name="about_summary">Android <xliff:g id="version" example="6.0">%1$s</xliff:g></string>
+    <string name="about_summary">Android <xliff:g example="6.0" id="version">%1$s</xliff:g></string>
     <!-- Main settings screen, setting summary for the user to go into the About phone screen-->
     <string name="about_settings_summary">View legal info, status, software version</string>
     <!-- About phone settings screen, setting option name to go to dialog that shows legal info -->
@@ -271,24 +792,27 @@
     <string name="regulatory_labels">Regulatory labels</string>
     <!-- About phone settings screen, setting option name to show the safety and regulatory manual [CHAR LIMIT=40] -->
     <string name="safety_and_regulatory_info">Safety &amp; regulatory manual</string>
-    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --> <skip />
+    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --><skip/>
     <!-- About phone settings screen, setting option name to see copyright-related info -->
     <string name="copyright_title">Copyright</string>
-    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --> <skip />
+    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --><skip/>
     <!-- About phone settings screen, setting option name to see licensing info -->
     <string name="license_title">License</string>
-    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --> <skip />
+    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --><skip/>
     <!-- About phone settings screen, setting option name to see terms and conditions -->
     <string name="terms_title">Terms and conditions</string>
-    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --> <skip />
+    <!-- Note: this may be replaced by a more-specific title of the activity that will get launched --><skip/>
     <!-- About phone settings screen, setting option name to see licensing info for WebView component. [CHAR LIMIT=35] -->
-    <string name="webview_license_title">System WebView License</string>
+    <string name="webview_license_title">System WebView licenses</string>
     <!-- About phone settings screen, setting option name to see wallpapers attributions -->
     <string name="wallpaper_attributions">Wallpapers</string>
     <!-- About phone settings screen, setting option name to see wallpapers attributions values -->
     <string name="wallpaper_attributions_values">Satellite imagery providers:\n©2014 CNES / Astrium, DigitalGlobe, Bluesky</string>
 
-    <!-- Title for actual Settings license activity. --> <skip />
+    <!-- Text to display in regulatory info screen (from device overlay). [CHAR LIMIT=NONE] -->
+    <string name="regulatory_info_text"></string>
+
+    <!-- Title for actual Settings license activity. --><skip/>
     <!-- About phone settings, Legal information setting option name and title of dialog box holding license info -->
     <string name="settings_license_activity_title">Third-party licenses</string>
     <!-- About phone settings screen, Open source license dialog message when licenses cannot be loaded -->
@@ -296,23 +820,101 @@
     <!-- About phone settings screen, Open source license dialog title until license is fully loaded -->
     <string name="settings_license_activity_loading">Loading\u2026</string>
 
+    <!-- Developer Settings -->
+    <!-- Device Info screen. Countdown for user taps to enable development settings. [CHAR LIMIT=NONE] -->
+    <plurals name="show_dev_countdown">
+        <item quantity="one">You are now <xliff:g id="step_count">%1$d</xliff:g> step away from being a developer.</item>
+        <item quantity="other">You are now <xliff:g id="step_count">%1$d</xliff:g> steps away from being a developer.</item>
+    </plurals>
+    <!-- Device Info screen. Confirmation that developer settings are enabled. [CHAR LIMIT=NONE] -->
+    <string name="show_dev_on">You are now a developer!</string>
+    <!-- Device Info screen. Okay we get it, stop pressing, you already have it on. [CHAR LIMIT=NONE] -->
+    <string name="show_dev_already">No need, you are already a developer.</string>
+    <!-- Title of Developer options preference screen. [CHAR LIMIT=30] -->
+    <string name="developer_options_settings">Developer options</string>
 
-    <!-- Date and time settings --><skip />
+    <!-- Reset options --><skip/>
+    <!-- Title for a screen containing all device reset options. [CHAR LIMIT=50] -->
+    <string name="reset_options_title">Reset options</string>
+    <!-- Summary text for a screen containing all device reset options. [CHAR LIMIT=NONE] -->
+    <string name="reset_options_summary">Network, apps, or device reset</string>
+
+    <!-- Reset Network --><skip/>
+    <!-- Button title to reset Wi-Fi settings, mobile data settings, and Bluetooth settings. [CHAR LIMIT=40] -->
+    <string name="reset_network_title">Reset network</string>
+    <!-- Message on screen after user selects reset network settings. [CHAR LIMIT=NONE] -->
+    <string name="reset_network_desc">This will reset all network settings, including:</string>
+    <!-- List item for Wi-Fi on screen after user selects reset network settings. [CHAR LIMIT=NONE] -->
+    <string name="reset_network_item_wifi"><li>Wi\u2011Fi</li></string>
+    <!-- List item for Mobile data on screen after user selects reset network settings. [CHAR LIMIT=NONE] -->
+    <string name="reset_network_item_mobile"><li>Mobile data</li></string>
+    <!-- List item for Bluetooth on screen after user selects reset network settings. [CHAR LIMIT=NONE] -->
+    <string name="reset_network_item_bluetooth"><li>Bluetooth</li></string>
+    <!-- Title for option to reset all eSIMs for the vehicle. [CHAR LIMIT=50] -->
+    <string name="reset_esim_title">Erase all vehicle eSIMs</string>
+    <!-- Description text for option to reset all eSIMs for the vehicle. [CHAR LIMIT=NONE] -->
+    <string name="reset_esim_desc">This will not cancel your service plan.</string>
+    <!-- Title for error dialog when esim reset fails. [CHAR LIMIT=NONE] -->
+    <string name="reset_esim_error_title">Can\u2019t reset eSIMs</string>
+    <!-- Fallback representation of a network subscription that does not supply a display name, number, or carrier name. -->
+    <string name="reset_network_fallback_subscription_name" translatable="false">MCC:%s MNC:%s Slot:%s Id:%s</string>
+    <!-- Title of dialog to select network to reset. [CHAR LIMIT=30] -->
+    <string name="reset_network_select">Select network</string>
+    <!-- Button on screen after user selects reset network settings. [CHAR LIMIT=30] -->
+    <string name="reset_network_button_text">Reset settings</string>
+    <!-- Reset settings confirmation screen title. [CHAR LIMIT=30] -->
+    <string name="reset_network_confirm_title">Reset?</string>
+    <!-- Message on screen after user selects Reset settings button. [CHAR LIMIT=NONE] -->
+    <string name="reset_network_confirm_desc">Reset all network settings? You can\u2019t undo this action!</string>
+    <!-- Button on screen after user selects Reset settings button. [CHAR LIMIT=30] -->
+    <string name="reset_network_confirm_button_text">Reset settings</string>
+    <!-- Reset settings complete toast text. [CHAR LIMIT=75] -->
+    <string name="reset_network_complete_toast">Network settings have been reset</string>
+
+    <!-- Reset apps --><skip/>
+    <!-- Button title to reset all of user's app preferences. [CHAR LIMIT=40] -->
+    <string name="reset_app_pref_title">Reset app preferences</string>
+    <!-- Message on screen after user selects reset app preferences. [CHAR LIMIT=NONE] -->
+    <string name="reset_app_pref_desc">This will reset all preferences for:\n\n<li>Disabled apps</li>\n<li>Disabled app notifications</li>\n<li>Default applications for actions</li>\n<li>Background data restrictions for apps</li>\n<li>Any permission restrictions</li>\n\nYou will not lose any app data.
+    </string>
+    <!-- Button on screen after user selects reset app preferences. [CHAR LIMIT=30] -->
+    <string name="reset_app_pref_button_text">Reset apps</string>
+    <!-- Reset app preferences complete toast text. [CHAR LIMIT=75] -->
+    <string name="reset_app_pref_complete_toast">App preferences have been reset</string>
+
+    <!-- Master Clear --><skip/>
+    <!-- Button title to factory data reset the entire device. The "(factory reset)" part is optional for translation. [CHAR LIMIT=40]-->
+    <string name="master_clear_title">Erase all data (factory reset)</string>
+    <!-- Message on screen after user selects factory reset. [CHAR LIMIT=NONE] -->
+    <string name="master_clear_desc">This will erase all data from your vehicle\u2019s head unit, including:\n\n<li>Your Google account</li>\n<li>System and app data and settings</li>\n<li>Downloaded apps</li></string>
+    <!-- The list of current accounts follows this text. [CHAR LIMIT=NONE] -->
+    <string name="master_clear_accounts">You are currently signed into the following accounts:</string>
+    <!-- Message on screen if other users are present on the device after user selects factory reset. [CHAR LIMIT=NONE] -->
+    <string name="master_clear_other_users_present">There are other users present on this vehicle.</string>
+    <!-- Button on screen after user selects factory reset. [CHAR LIMIT=30] -->
+    <string name="master_clear_button_text">Reset vehicle</string>
+    <!-- Master clear confirmation screen title. [CHAR LIMIT=30] -->
+    <string name="master_clear_confirm_title">Reset?</string>
+    <!-- Message on screen after user selects Reset device button. [CHAR LIMIT=NONE] -->
+    <string name="master_clear_confirm_desc">Erase all your personal information and downloaded apps?  You can\u2019t undo this action!</string>
+    <string name="master_clear_confirm_button_text">Erase everything</string>
+    <!-- Master clear progress screen title. [CHAR LIMIT=30] -->
+    <string name="master_clear_progress_title" >Erasing</string>
+    <!-- Master clear progress screen text. [CHAR LIMIT=75] -->
+    <string name="master_clear_progress_text">Please wait...</string>
+
+    <!-- Date and time settings --><skip/>
     <!-- Main Settings screen setting option name to go into the date and time settings-->
     <string name="date_and_time_settings_title">Date &amp; time</string>
-    <!-- Title for Date & Time settings screen in SetupWizard [CHAR LIMIT=40] -->
-    <string name="date_and_time_settings_title_setup_wizard">Set date and time</string>
     <!-- Main Settings screen setting option summary text for the item to go into the date and time settings. -->
     <string name="date_and_time_settings_summary">Set date, time, time zone, &amp; formats</string>
     <!-- Date & time setting screen setting check box title if the date and time should be determined automatically [CHAR LIMIT=30] -->
     <string name="date_time_auto">Automatic date &amp; time</string>
-    <!-- Date & time setting screen setting option summary text when Automatic check box is selected
-        (that is, when date and time should be determined automatically) [CHAR LIMIT=100] -->
+    <!-- Date & time setting screen setting option summary text when Automatic check box is selected (that is, when date and time should be determined automatically) [CHAR LIMIT=100] -->
     <string name="date_time_auto_summary">Use network-provided time</string>
     <!-- Date & time setting screen setting check box title if the time zone should be determined automatically [CHAR LIMIT=30] -->
     <string name="zone_auto">Automatic time zone</string>
-    <!-- Date & time setting screen setting option summary text when Automatic time zone check box is selected (that is, when date and time should be determined automatically)
-        [CHAR LIMIT=100]  -->
+    <!-- Date & time setting screen setting option summary text when Automatic time zone check box is selected (that is, when date and time should be determined automatically) [CHAR LIMIT=100]  -->
     <string name="zone_auto_summary">Use network-provided time zone</string>
     <!-- Date & time setting screen setting check box title [CHAR LIMIT=30] -->
     <string name="date_time_24hour_title">24\u2011hour format</string>
@@ -334,27 +936,96 @@
     <string name="zone_list_menu_sort_alphabetically">Sort alphabetically</string>
     <!-- Menu item on Select time zone screen -->
     <string name="zone_list_menu_sort_by_timezone">Sort by time zone</string>
-    <!-- Title string shown above DatePicker, letting a user select system date
-         [CHAR LIMIT=20] -->
+    <!-- Title string shown above DatePicker, letting a user select system date [CHAR LIMIT=20] -->
     <string name="date_picker_title">Date</string>
-    <!-- Title string shown above TimePicker, letting a user select system time
-         [CHAR LIMIT=20] -->
+    <!-- Title string shown above TimePicker, letting a user select system time [CHAR LIMIT=20] -->
     <string name="time_picker_title">Time</string>
 
-    <!-- User settings add user menu [CHAR LIMIT=35] -->
-    <string name="user_add_user_menu">Add user</string>
-    <!-- Button title for adding an account [CHAR LIMIT=35] -->
-    <string name="user_add_account_menu">Add account</string>
-    <!-- Spoken content description for delete icon beside a user [CHAR LIMIT=none] -->
-    <string name="user_delete_user_description">Delete user</string>
-    <!-- User details new user name [CHAR LIMIT=30] -->
-    <string name="user_new_user_name">New user</string>
-    <!-- Title for Guest user [CHAR LIMIT=35] -->
-    <string name="user_guest">Guest</string>
+    <!-- Admin user management --><skip/>
     <!-- Title for Admin user [CHAR LIMIT=35] -->
     <string name="user_admin">Admin</string>
-    <!-- User summary to indicate Admin user is currently logged in[CHAR LIMIT=35] -->
+    <!-- User summary to be displayed next to the currently logged-in user if they are also an admin. [CHAR LIMIT=35] -->
     <string name="signed_in_admin_user">Signed in as admin</string>
+    <!-- Title for the dialog that grants the user admin permissions. [CHAR LIMIT=50]-->
+    <string name="grant_admin_permissions_title">All admin permissions</string>
+    <!-- Button text for granting admin permissions to a user [CHAR LIMIT=35]-->
+    <string name="grant_admin_permissions_button_text">Make Admin</string>
+    <!-- Message to inform the user of what will happen when another user is upgraded to Admin status. [CHAR LIMIT=NONE]-->
+    <string name="grant_admin_permissions_message">The user will be able to delete users, including other Admins, and factory reset the system.</string>
+    <!-- Message to inform the user that granting admin permissions to another user is not reversible. [CHAR LIMIT=100]-->
+    <string name="action_not_reversible_message">This action is not reversible.</string>
+    <!-- Button text to confirm granting admin permissions to another user. [CHAR LIMIT=40]-->
+    <string name="confirm_grant_admin">Yes, make admin</string>
+
+    <!-- User Restrictions --><skip/>
+    <!-- Creating Users --><skip/>
+    <!-- Title for toggle that controls whether a user is able to create other users [CHAR LIMIT=35] -->
+    <string name="create_user_permission_title">Create new users</string>
+
+    <!-- Outgoing Calls --><skip/>
+    <!-- Title for toggle that controls whether a user is able to make outgoing calls [CHAR LIMIT=35] -->
+    <string name="outgoing_calls_permission_title">Make phone calls</string>
+
+    <!-- SMS Messaging --><skip/>
+    <!-- Title for toggle that controls whether a user is able to send and receive sms messages using the car's mobile data [CHAR LIMIT=55] -->
+    <string name="sms_messaging_permission_title">Messaging via car\u0027s mobile data</string>
+
+    <!-- Apps --><skip/>
+    <!-- Title for toggle that controls whether a user is able to install new apps [CHAR LIMIT=35] -->
+    <string name="install_apps_permission_title">Install new apps</string>
+    <!-- Title for toggle that controls whether a user is able to uninstall apps [CHAR LIMIT=35] -->
+    <string name="uninstall_apps_permission_title">Uninstall apps</string>
+
+    <!-- Adding new users --><skip/>
+    <!-- User settings add user menu [CHAR LIMIT=35] -->
+    <string name="user_add_user_menu">Add user</string>
+    <!-- User details new user name [CHAR LIMIT=30] -->
+    <string name="user_new_user_name">New user</string>
+    <!-- Title of the alert dialog to ask user to confirm creation of new user. [CHAR LIMIT=30] -->
+    <string name="user_add_user_title">"Add new user?"</string>
+    <!-- Message to inform user that creation of new user requires that user to set up their space. [CHAR LIMIT=100] -->
+    <string name="user_add_user_message_setup">When you add a new user, that person needs to set up their space.</string>
+    <!-- Message to inform user that the newly created user will have permissions to update apps for all other users. [CHAR LIMIT=100] -->
+    <string name="user_add_user_message_update">Any user can update apps for all other users.</string>
+    <!-- Title for the dialog that lets users know that the maximum allowed number of users on the device has been reached. [CHAR LIMIT=35]-->
+    <string name="user_limit_reached_title">User limit reached</string>
+    <!-- Message that tells people what's the maximum number of uses allowed on the device. [CHAR_LIMIT=NONE]-->
+    <plurals name="user_limit_reached_message">
+        <item quantity="one">Only one user can be created.</item>
+        <item quantity="other">You can create up to <xliff:g example="3" id="count">%d</xliff:g> users.</item>
+    </plurals>
+    <!-- Title of the alert dialog to notify that the creation of new user has failed. [CHAR LIMIT=40] -->
+    <string name="add_user_error_title">Failed to create a new user</string>
+
+    <!-- Deleting users --><skip/>
+    <!-- Title of the alert dialog to ask user to confirm user deletion [CHAR LIMIT=40] -->
+    <string name="delete_user_dialog_title">Delete this user?</string>
+    <!-- Message to inform user that all of user's data will be deleted if confirmed [CHAR LIMIT=NONE] -->
+    <string name="delete_user_dialog_message">"All apps and data will be deleted."</string>
+    <!-- Title of the alert dialog to notify that user deletion has failed. [CHAR LIMIT=40] -->
+    <string name="delete_user_error_title">Failed to delete user.</string>
+    <!-- Button label to dismiss user deletion error [CHAR LIMIT=25] -->
+    <string name="delete_user_error_dismiss">Dismiss</string>
+    <!-- Button label to retry user deletion [CHAR LIMIT=25] -->
+    <string name="delete_user_error_retry">Retry</string>
+    <!-- Title of the alert dialog to ask user to confirm deletion of the last user on the device. [CHAR LIMIT=40] -->
+    <string name="delete_last_user_dialog_title">Delete last user?</string>
+    <!-- Message to inform user that deletion of the last user will prompt the creation of a new admin user. [CHAR LIMIT=NONE] -->
+    <string name="delete_last_user_admin_created_message">"After deleting the only remaining user for this car, a new admin user will be created."</string>
+    <!-- Message to inform user that deletion of the last user will require new system setup. [CHAR LIMIT=NONE] -->
+    <string name="delete_last_user_system_setup_required_message">"All data, settings, and apps associated with this user will be deleted. You'll need to set up the system again."</string>
+    <!-- Title of the alert dialog to notify that new admin should be chosen. [CHAR LIMIT=40] -->
+    <string name="choose_new_admin_title">Choose new admin</string>
+    <!-- Message to notify that new admin must be chosen in order to delete the current one. [CHAR LIMIT=150] -->
+    <string name="choose_new_admin_message">You need at least one admin. To delete this one, first choose a replacement.</string>
+    <!-- Label for choosing new admin. [CHAR LIMIT=30] -->
+    <string name="choose_new_admin_label">Choose admin</string>
+
+    <!-- User info --><skip/>
+    <!-- Title for Guest user [CHAR LIMIT=35] -->
+    <string name="user_guest">Guest</string>
+    <!-- Title for button for starting a new guest session [CHAR LIMIT=35] -->
+    <string name="start_guest_session">Guest</string>
     <!-- Description for icon to switch user [CHAR LIMIT=35] -->
     <string name="user_switch">Switch</string>
     <!-- Description for user name that is currently in use -->
@@ -365,17 +1036,71 @@
     <string name="user_summary_not_set_up">Not set up</string>
     <!-- Title for edit user name page [CHAR LIMIT=30] -->
     <string name="edit_user_name_title">Edit user name</string>
-
     <!-- User settings header for list of users on the system. [CHAR LIMIT=35] -->
     <string name="users_list_title">Users</string>
+    <!-- Title for the user details page that shows the permissions granted to the user. The parameter is the name of the user. [CHAR LIMIT=40] -->
+    <string name="user_details_admin_title">Permissions granted to %1$s</string>
+
+    <!-- Storage management --><skip/>
+    <!-- Title for settings that lead into information about device storage [CHAR LIMIT=35] -->
+    <string name="storage_settings_title">Storage</string>
+    <!-- Preference label for the Music & Audio storage section. [CHAR LIMIT=50] -->
+    <string name="storage_music_audio">Music &amp; audio</string>
+    <!-- Preference label for the Other apps storage section. [CHAR LIMIT=50] -->
+    <string name="storage_other_apps">Other apps</string>
+    <!-- Preference label for the Files storage section. [CHAR LIMIT=50] -->
+    <string name="storage_files">Files</string>
+    <!-- Preference label for the System storage section. [CHAR LIMIT=50] -->
+    <string name="storage_system">System</string>
+    <!-- Body of dialog informing user about the storage used by the Android System [CHAR LIMIT=NONE]-->
+    <string name="storage_detail_dialog_system">System includes files used to run Android version <xliff:g id="version" example="8.0">%s</xliff:g></string>
+    <!-- Car storage settings summary. Displayed when the total memory usage is being calculated. Will be replaced with a number like "12.3 GB" when finished calculating. [CHAR LIMIT=30] -->
+    <!-- Title for preference on storage usage page that opens audio file browsing. [CHAR LIMIT=50] -->
+    <string name="storage_audio_files_title">Audio files</string>
+   <!-- Car storage settings summary. Displayed when the total memory usage is being calculated. Will be replaced with a number like "12.3 GB" when finished calculating. [CHAR LIMIT=30] -->
+    <string name="memory_calculating_size">Calculating\u2026</string>
+    <!-- Individual application info screen, label under Storage heading. The amount of space taken up by the application itself (for example, the java compiled files) [CHAR LIMIT=35] -->
+    <string name="storage_application_size_label">App size</string>
+    <!-- Individual application info screen, label under Storage heading.  The amount of space taken up by the app's data (for example, downloaded emails) [CHAR LIMIT=35] -->
+    <string name="storage_data_size_label">User data</string>
+    <!-- Label that appears next to the cache size [CHAR LIMIT=35] -->
+    <string name="storage_cache_size_label">Cache</string>
+    <!-- Individual application info screen,label under Storage heading.  The total storage space taken up by this app. [CHAR LIMIT=35] -->
+    <string name="storage_total_size_label">Total</string>
+    <!-- Individual application info screen, button label under Storage heading. Button to clear all data associated with tis app (for example, remove all cached emails for an Email app) [CHAR LIMIT=35] -->
+    <string name="storage_clear_user_data_text">Clear storage</string>
+    <!-- Individual application info screen, button label under Storage heading. Text label for button [CHAR LIMIT=35] -->
+    <string name="storage_clear_cache_btn_text">Clear cache</string>
+    <!-- Individual application screen, confirmation dialog title. Displays when user selects to "Clear data". [CHAR LIMIT=45] -->
+    <string name="storage_clear_data_dlg_title">Delete app data?</string>
+    <!-- Individual application screen, confirmation dialog message. Displays when user selects to "Clear data". It warns the user of the consequences of clearing the data for an app. [CHAR LIMIT=200] -->
+    <string name="storage_clear_data_dlg_text">All this app\u2019s data will be deleted permanently. This includes all files, settings, accounts, databases, etc.</string>
+    <!-- Text for dialog if clear data fails. [CHAR LIMIT=55] -->
+    <string name="storage_clear_failed_dlg_text">Couldn\u2019t clear storage for app.</string>
+
+    <!-- Account management --><skip/>
     <!-- Title for settings that lead into information about User's accounts [CHAR LIMIT=35] -->
     <string name="accounts_settings_title">Accounts</string>
-    <!-- Title for detailed user information page [CHAR LIMIT=25] -->
-    <string name="user_details_title">User</string>
+    <!-- Button title for adding an account [CHAR LIMIT=35] -->
+    <string name="user_add_account_menu">Add account</string>
     <!-- Text to display in Accounts settings if the user has not added any accounts yet [CHAR LIMIT=40] -->
     <string name="no_accounts_added">No accounts added</string>
     <!-- Account settings header for list of added accounts [CHAR LIMIT=40] -->
-    <string name="account_list_title">Accounts for <xliff:g id="current_user_name">%1$s</xliff:g></string>
+    <string name="account_list_title">Accounts for
+        <xliff:g id="current_user_name">%1$s</xliff:g>
+    </string>
+    <!-- Switch label to enable auto sync account [CHAR LIMIT=60] -->
+    <string name="account_auto_sync_title">Automatically sync data</string>
+    <!-- Switch summary to enable auto sync account [CHAR LIMIT=60] -->
+    <string name="account_auto_sync_summary">Let apps refresh data automatically</string>
+    <!--  Title of dialog shown when user enables global auto sync [CHAR LIMIT=50] -->
+    <string name="data_usage_auto_sync_on_dialog_title">Turn auto-sync data on?</string>
+    <!--  Body of dialog shown when user enables global auto sync [CHAR LIMIT=NONE] -->
+    <string name="data_usage_auto_sync_on_dialog">Any changes you make to your accounts on the web will be automatically copied to your device.\n\nSome accounts may also automatically copy any changes you make on the phone to the web. A Google Account works this way.</string>
+    <!--  Title of dialog shown when user disables global auto sync [CHAR LIMIT=50] -->
+    <string name="data_usage_auto_sync_off_dialog_title">Turn auto-sync data off?</string>
+    <!--  Body of dialog shown when user disables global auto sync [CHAR LIMIT=NONE] -->
+    <string name="data_usage_auto_sync_off_dialog">This will conserve data, but you\u2019ll need to sync each account manually to collect recent information. And you won\u2019t receive notifications when updates occur.</string>
     <!-- Account details in Settings screen title [CHAR LIMIT=25] -->
     <string name="account_details_title">Account info</string>
     <!-- Account details in Settings screen title [CHAR LIMIT=25] -->
@@ -390,28 +1115,34 @@
     <string name="really_remove_account_title">Remove account?</string>
     <!-- Remove account message in dialog [CHAR LIMIT=NONE] -->
     <string name="really_remove_account_message">Removing this account will delete all of its messages, contacts, and other data from the device!</string>
-    <!-- This is shown if the authenticator for a given account fails to remove it. [CHAR LIMIT=NONE] -->
-    <string name="remove_account_failed">This change isn\'t allowed by your admin</string>
-    <!-- Title of the alert dialog to ask user to confirm user deletion [CHAR LIMIT=25] -->
-    <string name="really_remove_user_title">Remove this user?</string>
-    <!-- Message to inform user that all of user's data will be deleted if confirmed [CHAR LIMIT=NONE] -->
-    <string name="really_remove_user_message">"All apps and data will be deleted."</string>
-    <!-- Title of the alert dialog to ask user to confirm user deletion [CHAR LIMIT=40] -->
-    <string name="remove_user_error_title">Failed to remove user.</string>
-    <!-- Message to ask to retry user deletion [CHAR LIMIT=30] -->
-    <string name="remove_user_error_message">Try again?</string>
-    <!-- Button label to dismiss user deletion error [CHAR LIMIT=25] -->
-    <string name="remove_user_error_dismiss">Dismiss</string>
-    <!-- Button label to retry user deletion [CHAR LIMIT=25] -->
-    <string name="remove_user_error_retry">Retry</string>
-    <!-- Title of the alert dialog to ask user to confirm creation of new user. [CHAR LIMIT=30] -->
-    <string name="user_add_user_title">"Add new user?"</string>
-    <!-- Message to inform user that creation of new user requires that user to set up their space. [CHAR LIMIT=100] -->
-    <string name="user_add_user_message_setup">When you add a new user, that person needs to set up their space.</string>
-    <!-- Message to inform user that the newly created user will have permissions to update apps for all other users. [CHAR LIMIT=100] -->
-    <string name="user_add_user_message_update">Any user can update apps for all other users.</string>
+    <!-- Title of the alert dialog to notify that account deletion has failed. [CHAR LIMIT=40] -->
+    <string name="remove_account_error_title">Failed to remove account.</string>
+    <!-- Preference label to sync account [CHAR LIMIT=60] -->
+    <string name="account_sync_title">Account sync</string>
+    <!-- Preference summary for account sync when syncing is on for some items [CHAR LIMIT=NONE] -->
+    <string name="account_sync_summary_some_on">Sync on for <xliff:g name="count" example="5">%1$d</xliff:g> of <xliff:g name="total" example="8">%2$d</xliff:g> items</string>
+    <!-- Preference summary for account sync when syncing is on for everything [CHAR LIMIT=NONE] -->
+    <string name="account_sync_summary_all_on">Sync on for all items</string>
+    <!-- Preference summary for account sync when syncing is off for everything [CHAR LIMIT=NONE] -->
+    <string name="account_sync_summary_all_off">Sync off for all items</string>
+    <!-- Sync status shown when sync is disabled [CHAR LIMIT=25] -->
+    <string name="sync_disabled">Sync is OFF</string>
+    <!-- Sync status shown when last sync resulted in an error [CHAR LIMIT=25] -->
+    <string name="sync_error">Sync error</string>
+    <!-- Last synced date/time for accounts that synced [CHAR LIMIT=none] -->
+    <string name="last_synced">Last synced <xliff:g id="last_sync_time" example="12/05/18, 12:30 PM">%1$s</xliff:g></string>
+    <!-- Sync status shown when sync is in progress [CHAR LIMIT=30] -->
+    <string name="sync_in_progress">Syncing now\u2026</string>
+    <!-- Data synchronization settings screen, summary of a sync provider (for example, Gmail) when autosync is off and the user wants to do a one-time sync. The last synced time will be shown on a new line. [CHAR LIMIT=none] -->
+    <string name="sync_one_time_sync">Tap to sync now<xliff:g id="last_sync_time" example="\nLast synced 12/05/18, 12:30 PM">\n%1$s</xliff:g></string>
+    <!-- Data synchronization settings screen, text for button that allows the user to immediately start sync [CHAR LIMIT=30]-->
+    <string name="sync_button_sync_now">Sync now</string>
+    <!-- Data synchronization settings screen, text for button that allows the user to cancel sync [CHAR LIMIT=30]-->
+    <string name="sync_button_sync_cancel">Cancel sync</string>
+    <!-- Message when sync is currently failing [CHAR LIMIT=100] -->
+    <string name="sync_is_failing">Sync is currently experiencing problems. It will be back shortly.</string>
 
-    <!-- security lock -->
+    <!-- security lock --><skip/>
     <!-- Title for security settings [CHAR LIMIT=20] -->
     <string name="security_settings_title">Security</string>
     <!-- Subtitle for security settings [CHAR LIMIT=20] -->
@@ -426,8 +1157,8 @@
     <string name="security_lock_password">Password</string>
     <!--  Title for security picker to choose the unlock method: None/Pattern/PIN/Password [CHAR LIMIT=30] -->
     <string name="lock_settings_picker_title">Choose a lock type</string>
-    <!--  Button caption to open a dialog for user to choose an screen lock method: Pattern/PIN/Password [CHAR LIMIT=40] -->
-    <string name="screen_lock_options">Screen lock options</string>
+    <!--  Button caption to open a dialog for user to choose an screen lock method: Pattern/PIN/Password [CHAR LIMIT=20] -->
+    <string name="screen_lock_options">Lock options</string>
     <!--  Title for screen asking user to enter their existing lock pattern [CHAR LIMIT=30] -->
     <string name="lock_settings_enter_pattern">Enter your pattern</string>
     <!-- Security & location settings screen, change unlock pattern screen button, on bottom of screen.  After they draw a pattern and release their finger, we display the pattern so they remember.  When they are ready to draw it once again to confirm it, they press this button. -->
@@ -447,7 +1178,7 @@
     <!-- Title string shown in choose lock pattern [CHAR LIMIT=40] -->
     <string name="lockscreen_choose_your_pattern">Choose your pattern</string>
     <!-- Title string shown in choose lock password [CHAR LIMIT=40] -->
-    <string name="lockscreen_choose_your_password">Choose your passowrd</string>
+    <string name="lockscreen_choose_your_password">Choose your password</string>
     <!-- Subtitle indicating the current screen lock type (none/PIN/pattern/password) [CHAR LIMIT=40] -->
     <string name="current_screen_lock">Current screen lock</string>
     <!-- Message on first screen of choose pattern flow [CHAR LIMIT=40] -->
@@ -516,16 +1247,14 @@
     <!-- Hints for Choose Lock Password Screen [CHAR_LIMIT=73] -->
     <string name="choose_lock_password_hints">Must be at least 4 characters</string>
     <!-- Hint shown in dialog screen when password is too short [CHAR LIMIT=40] -->
-    <string name="lockpassword_password_too_short">Must be at least <xliff:g id="count" example="3">%d</xliff:g> characters</string>
+    <string name="lockpassword_password_too_short">Must be at least <xliff:g example="3" id="count">%d</xliff:g> characters</string>
     <!-- Hint shown in dialog screen when PIN is too short [CHAR LIMIT=44] -->
-    <string name="lockpassword_pin_too_short">PIN must be at least <xliff:g id="count" example="3">%d</xliff:g> digits</string>
+    <string name="lockpassword_pin_too_short">PIN must be at least <xliff:g example="3" id="count">%d</xliff:g> digits</string>
 
     <!-- Error shown in popup when password is too long [CHAR LIMIT=42] -->
-    <string name="lockpassword_password_too_long">Must be fewer than
-        <xliff:g id="number" example="17">%d</xliff:g> characters</string>
+    <string name="lockpassword_password_too_long">Must be fewer than <xliff:g example="17" id="number">%d</xliff:g> characters</string>
     <!-- Error shown in popup when PIN is too long [CHAR LIMIT=42] -->
-    <string name="lockpassword_pin_too_long">Must be fewer than
-        <xliff:g id="number" example="17">%d</xliff:g> digits</string>
+    <string name="lockpassword_pin_too_long">Must be fewer than <xliff:g example="17" id="number">%d</xliff:g> digits</string>
 
     <!-- Error shown when in PIN mode and user enters a non-digit. Because this may be concatenated with other messages, please make sure there's a period at the end of the sentence. [CHAR LIMIT=40] -->
     <string name="lockpassword_pin_contains_non_digits">Must contain only digits 0-9.</string>
@@ -545,42 +1274,41 @@
     <!-- Error shown when in PASSWORD mode and password doesn't contain the required number of letters [CHAR LIMIT=NONE] -->
     <plurals name="lockpassword_password_requires_letters">
         <item quantity="one">Must contain at least 1 letter</item>
-        <item quantity="other">Must contain at least <xliff:g id="count" example="3">%d</xliff:g> letters</item>
+        <item quantity="other">Must contain at least <xliff:g example="3" id="count">%d</xliff:g> letters</item>
     </plurals>
 
     <!-- Error shown when in PASSWORD mode and password doesn't contain the required number of lowercase letters [CHAR LIMIT=NONE] -->
     <plurals name="lockpassword_password_requires_lowercase">
         <item quantity="one">Must contain at least 1 lowercase letter</item>
-        <item quantity="other">Must contain at least <xliff:g id="count" example="3">%d</xliff:g> lowercase letters</item>
+        <item quantity="other">Must contain at least <xliff:g example="3" id="count">%d</xliff:g> lowercase letters</item>
     </plurals>
 
     <!-- Error shown when in PASSWORD mode and password doesn't contain the required number of uppercase letters [CHAR LIMIT=NONE] -->
     <plurals name="lockpassword_password_requires_uppercase">
         <item quantity="one">Must contain at least 1 uppercase letter</item>
-        <item quantity="other">Must contain at least <xliff:g id="count" example="3">%d</xliff:g> uppercase letters</item>
+        <item quantity="other">Must contain at least <xliff:g example="3" id="count">%d</xliff:g> uppercase letters</item>
     </plurals>
 
     <!-- Error shown when in PASSWORD mode and password doesn't contain the required number of numerical digits [CHAR LIMIT=NONE] -->
     <plurals name="lockpassword_password_requires_numeric">
         <item quantity="one">Must contain at least 1 numerical digit</item>
-        <item quantity="other">Must contain at least <xliff:g id="count" example="3">%d</xliff:g> numerical digits</item>
+        <item quantity="other">Must contain at least <xliff:g example="3" id="count">%d</xliff:g> numerical digits</item>
     </plurals>
 
     <!-- Error shown when in PASSWORD mode and password doesn't contain the required number of special symbols [CHAR LIMIT=NONE] -->
     <plurals name="lockpassword_password_requires_symbols">
         <item quantity="one">Must contain at least 1 special symbol</item>
-        <item quantity="other">Must contain at least <xliff:g id="count" example="3">%d</xliff:g> special symbols</item>
+        <item quantity="other">Must contain at least <xliff:g example="3" id="count">%d</xliff:g> special symbols</item>
     </plurals>
 
     <!-- Error shown when in PASSWORD mode and password doesn't contain the required number of non-letter characters [CHAR LIMIT=NONE] -->
     <plurals name="lockpassword_password_requires_nonletter">
         <item quantity="one">Must contain at least 1 non-letter character</item>
-        <item quantity="other">Must contain at least <xliff:g id="count" example="3">%d</xliff:g> non-letter characters</item>
+        <item quantity="other">Must contain at least <xliff:g example="3" id="count">%d</xliff:g> non-letter characters</item>
     </plurals>
 
     <!-- Error shown when in PASSWORD mode and password has been used recently. Please keep this string short! [CHAR LIMIT=NONE] -->
-    <string name="lockpassword_password_recently_used">Device admin doesn\'t allow using a recent
-        password</string>
+    <string name="lockpassword_password_recently_used">Device admin doesn\'t allow using a recent password</string>
 
     <!-- Message shown when error is encountered when saving password [CHAR LIMIT=50] -->
     <string name="error_saving_password">Error saving password</string>
@@ -594,15 +1322,66 @@
     <!-- Label for button in screen lock settings, allowing users to choose other types of screen locks. [CHAR LIMIT=40] -->
     <string name="setup_lock_settings_options_button_label">Screen lock options</string>
 
-    <!-- generic -->
+    <!-- Format of the message displayed at the bottom of the quick settings page, that shows build information in
+         user-debug and eng builds. -->
+    <string name="build_info_fmt"><xliff:g example="google/gcar_emu_x86/..." id="fingerprint">%1$s</xliff:g>\n<xliff:g example="Thu Aug 30" id="date">%2$s</xliff:g> : <xliff:g example="4" id="num_days">%3$s</xliff:g> days ago</string>
+
+    <!-- security trusted device --><skip/>
+    <!-- Label for button to add a trusted device [CHAR LIMIT=50] -->
+    <string name="add_device_title">Add trusted device</string>
+    <!-- Label for button to add a trusted device [CHAR LIMIT=100] -->
+    <string name="add_device_summary">Bluetooth will turn on to add trusted device</string>
+    <!-- Screen title and label for button of trusted device [CHAR LIMIT=30]> -->
+    <string name="trusted_device">Trusted devices</string>
+    <!-- Subtitle of trusted device button in security page which displays the number of devices that are considered trusted[CHAR LIMIT=30]-->
+    <plurals name="trusted_device_subtitle">
+        <item quantity="one"><xliff:g id="count" example="1">%d</xliff:g> device</item>
+        <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> devices</item>
+    </plurals>
+    <!-- Message in dialog which will remind the user what a trusted device can do. [CHAR LIMIT=NONE]-->
+    <string name="remove_device_message">Your <xliff:g id="connected_device_name" example="Pixel2">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="connected_device_name" example="Pixel2">%1$s</xliff:g>, they may be able to access this device</string>
+    <!-- Confirm button label of confirm pairing code dialog [CHAR LIMIT=30]-->
+    <string name="trusted_device_confirm_button">Confirm</string>
+    <!-- Confirm button label of confirm remove device dialog [CHAR LIMIT=40]-->
+    <string name="trusted_device_remove_button">Remove trusted device</string>
+    <!-- Cancel button label of confirm remove device dialog [CHAR LIMIT=20]-->
+    <string name="trusted_device_done_button">Done</string>
+    <!-- Message shown on the add trusted device page [CHAR LIMIT=NONE]-->
+    <string name="add_trusted_device_instruction">Use the companion app to set up a trusted device. Once set up, your user profile will unlock automatically when your phone is detected near the vehicle.</string>
+    <!-- Step one of adding a trusted device [CHAR LIMIT=NONE]-->
+    <string name="trusted_device_download_app">1. Download the companion app on your phone</string>
+    <!-- Step two of adding a trusted device [CHAR LIMIT=NONE]-->
+    <string name="trusted_device_select_device">2. Select <xliff:g id="car_name" example="MyCar">%1$s</xliff:g> on your phone to pair the devices</string>
+    <!-- Messages shown to alert user about the safety of the trusted device feature [CHAR LIMIT=NONE]-->
+    <string name="trusted_device_safety_alert">A trusted device nearby your car will unlock the user profile upon ignition, even if someone else is holding the device.</string>
+    <!-- Confirm pairing code dialog title [CHAR LIMIT=60]-->
+    <string name="trusted_device_pairing_code_dialog_title">Please confirm that the pairing codes match</string>
+    <!-- Toast shown when user enrolls a device successfully [CHAR LIMIT=100]-->
+    <string name="trusted_device_success_enrollment_toast">Phone has been enrolled successfully</string>
+    <!-- Toast shown when enrolling a device fails [CHAR LIMIT=50]-->
+    <string name="trusted_device_fail_enrollment_toast"><xliff:g id="device_name" example="Pixel2">%1$s</xliff:g> enrollment failed</string>
+    <!-- Message shown when user have not set authentication [CHAR LIMIT=NONE]-->
+    <string name="trusted_device_set_authentication_reminder">Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile.</string>
+    <!-- Toast shown when phone is disconnected [CHAR LIMIT=50]-->
+    <string name="trusted_device_disconnected_toast">Device disconnected.</string>
+
+    <!-- generic --><skip/>
     <!-- Button label for generic forget action [CHAR LIMIT=20] -->
     <string name="forget">Forget</string>
+    <!-- Button label for generic connect action [CHAR LIMIT=20] -->
+    <string name="connect">Connect</string>
+    <!-- Button label for generic disconnect action [CHAR LIMIT=20] -->
+    <string name="disconnect">Disconnect</string>
     <!-- Delete button text [CHAR LIMIT=20] -->
     <string name="delete_button">Delete</string>
     <!-- Remove button text [CHAR LIMIT=20] -->
     <string name="remove_button">Remove</string>
     <!-- Cancel button text [CHAR LIMIT=20] -->
     <string name="cancel">Cancel</string>
+    <!-- Generic dialog allow button. [CHAR_LIMIT=20] -->
+    <string name="allow">Allow</string>
+    <!-- Generic dialog deny button. [CHAR_LIMIT=20] -->
+    <string name="deny">Deny</string>
 
     <!-- Accessibility description for the backspace key in the PIN pad [CHAR LIMIT=NONE] -->
     <string name="backspace_key">Backspace key</string>
@@ -621,26 +1400,21 @@
     <string name="nine" translatable="false">9</string>
     <string name="zero" translatable="false">0</string>
 
-    <!-- Demo/Retail-related strings -->
+    <!-- Demo/Retail-related strings --><skip/>
     <!-- Text of button the user presses to exit Retail/Demo mode [CHAR LIMIT=25]-->
     <string name="exit_retail_button_text">Exit Demo</string>
-    <!-- Title of dialog asking the user if they really want to exit the demo, which requires a
-         factory reset [CHAR LIMIT=30]-->
+    <!-- Title of dialog asking the user if they really want to exit the demo, which requires a factory reset [CHAR LIMIT=30]-->
     <string name="exit_retail_mode_dialog_title">Exit demo mode</string>
-    <!-- Message in dialog asking the user if they really want to exit the demo, which requires a
-         factory reset [CHAR LIMIT=150]-->
+    <!-- Message in dialog asking the user if they really want to exit the demo, which requires a factory reset [CHAR LIMIT=150]-->
     <string name="exit_retail_mode_dialog_body">This will delete the demo account and factory data reset the system. All user data will be lost.</string>
     <!-- Text of confirmation button in dialog that appears to confirm that Demo Mode should be exited. [CHAR LIMIT=25]-->
     <string name="exit_retail_mode_dialog_confirmation_button_text">Exit Demo</string>
 
-    <!-- String values for settings suggestions. -->
-    <!-- Button that allows users to re-open the setup wizard (changed to all caps so case doesn't matter) [CHAR_LIMIT=30] -->
-    <string name="suggestion_primary_button">finish setup</string>
-    <!-- Button that dismisses the suggestion to finish setting up their device (changed to all caps so case doesn't matter) [CHAR_LIMIT=30] -->
-    <string name="suggestion_secondary_button">not now</string>
+    <!-- String values for settings suggestions. --><skip/>
+    <!-- Button that dismisses the suggestion to finish setting up their device [CHAR_LIMIT=30] -->
+    <string name="suggestion_dismiss_button">DISMISS</string>
 
-    <!-- Warn user that the action they are trying to perform is blocked while the car is in
-         motion [CHAR LIMIT=60] -->
+    <!-- Warn user that the action they are trying to perform is blocked while the car is in motion [CHAR LIMIT=60] -->
     <string name="restricted_while_driving">Feature not available while driving.</string>
     <!-- Warn user that adding a user is blocked while the car is in motion [CHAR LIMIT=60] -->
     <string name="add_user_restricted_while_driving">Can\'t add user while driving.</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index fb9b96a..fa0195c 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -1,90 +1,66 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!--
+    Copyright 2018 The Android Open Source Project
 
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
-          http://www.apache.org/licenses/LICENSE-2.0
+         http://www.apache.org/licenses/LICENSE-2.0
 
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+    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.
 -->
 
 <resources>
-    <style name="Theme.SettingsBase" parent="@android:style/Theme.Material.Settings" />
-
-    <attr name="WifiSignalColor" format="reference" />
-
-    <style name="CarSettingTheme" parent="Theme.Car.Light.NoActionBar">
-        <item name="wifi_signal">@drawable/wifi_signal</item>
-        <item name="WifiSignalColor">?android:attr/colorAccent</item>
-        <item name="android:windowBackground">@color/car_card</item>
-        <item name="android:windowAnimationStyle">@style/SettingAnimationStyle</item>
-        <item name="android:borderlessButtonStyle">@style/Widget.Car.Settings.ActionBar.Button.Borderless.Colored</item>
+    <style name="PreferenceButtonTextAppearance"
+           parent="@*android:style/TextAppearance.DeviceDefault.Widget.Button.Borderless.Colored">
+        <item name="android:fadingEdgeLength">@dimen/button_fading_edge_length</item>
+        <item name="android:ellipsize">none</item>
+        <item name="android:requiresFadingEdge">horizontal</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:textAllCaps">false</item>
     </style>
 
-    <style name="SettingAnimationStyle">
-        <item name="android:windowEnterAnimation">@anim/trans_fade_in</item>
-        <item name="android:windowExitAnimation">@anim/trans_fade_out</item>
-    </style>
-
-    <style name="ActionBarStyle.Car" parent="Widget.Car.Toolbar">
-        <item name="actionBarSize">@dimen/car_app_bar_height</item>
-    </style>
-
-    <style name="TrimmedHorizontalProgressBar" parent="android:Widget.Material.ProgressBar.Horizontal">
-        <item name="android:indeterminateDrawable">@drawable/progress_indeterminate_horizontal_material_trimmed</item>
+    <style name="TrimmedHorizontalProgressBar"
+           parent="@android:style/Widget.DeviceDefault.ProgressBar.Horizontal">
+        <item name="android:indeterminateDrawable">
+            @drawable/progress_indeterminate_horizontal_material_trimmed
+        </item>
         <item name="android:minHeight">3dp</item>
         <item name="android:maxHeight">3dp</item>
     </style>
 
-    <style name="ListIcon.ActionBar" parent="ListIcon">
-        <item name="android:layout_gravity">center</item>
-        <item name="android:src">@drawable/ic_arrow_back</item>
-    </style>
-
-    <style name="SettingsListHeader" parent="TextAppearance.Car.Body2">
-        <item name="android:textColor">@color/car_accent</item>
-    </style>
-
-    <style name="Widget.Car.Settings.ActionBar.Button.Borderless.Colored"
-           parent="Widget.Car.Button.Borderless.Colored">
-        <item name="android:minWidth">@dimen/car_button_min_width</item>
-        <item name="android:fontFamily">roboto-regular</item>
-    </style>
-
-    <style name="SetupWizardButton.Negative" parent="@style/SuwGlifButton.Secondary">
-        <!-- Negative margin to offset for padding of the button itself. We want the label to be
-             aligned with the text above it -->
-        <item name="android:layout_marginStart">-16dp</item>
-    </style>
-
-    <style name="SetupWizardButton.Positive" parent="@style/SuwGlifButton.Primary" />
-
-    <!-- Style for security lock pattern. -->
-    <style name="LockPatternStyle">
-        <item name="*android:regularColor">@color/lock_pattern_regular</item>
-        <item name="*android:successColor">@color/lock_pattern_success</item>
+    <style name="LockPattern">
+        <item name="*android:regularColor">@*android:color/car_body1</item>
+        <item name="*android:successColor">@*android:color/car_blue_500</item>
         <item name="*android:errorColor">?android:attr/colorError</item>
     </style>
 
     <style name="PinPadKey">
-        <item name="android:layout_width">@dimen/pin_pad_key_width</item>
-        <item name="android:layout_height">@dimen/pin_pad_key_height</item>
-        <item name="android:layout_margin">@dimen/pin_pad_key_margin</item>
         <item name="android:gravity">center</item>
         <item name="android:textStyle">normal</item>
-        <item name="android:textSize">@dimen/car_body1_size</item>
-        <item name="android:textColor">@color/car_body3</item>
+        <item name="android:textSize">@*android:dimen/car_body1_size</item>
+        <item name="android:textColor">@*android:color/car_body3</item>
+        <item name="android:tint">@*android:color/car_body3</item>
         <item name="android:clickable">true</item>
-        <item name="android:background">@drawable/car_button_ripple_background</item>
+        <item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
     </style>
 
-    <style name="SettingList">
-        <item name="gutter">both</item>
+    <style name="DataUsageSummaryCarrierInfoTextAppearance"
+           parent="@android:style/TextAppearance.DeviceDefault.Small">
+        <item name="android:textColor">?android:attr/textColorSecondary</item>
+        <item name="android:fontFamily">sans-serif</item>
+        <item name="android:textStyle">normal</item>
+    </style>
+
+    <style name="DataUsageSummaryCarrierInfoWarningTextAppearance"
+           parent="@android:style/TextAppearance.DeviceDefault.Small">
+        <item name="android:textColor">?android:attr/colorError</item>
+        <item name="android:fontFamily">sans-serif-medium</item>
+        <item name="android:textStyle">normal</item>
     </style>
 </resources>
diff --git a/res/values/styles_preference.xml b/res/values/styles_preference.xml
new file mode 100644
index 0000000..6e8918c
--- /dev/null
+++ b/res/values/styles_preference.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<resources>
+    <style name="PreferenceFragment.Settings">
+        <item name="android:layout">@layout/settings_fragment</item>
+        <item name="android:divider">@drawable/divider</item>
+        <item name="allowDividerAfterLastItem">false</item>
+    </style>
+
+    <style name="PreferenceFragmentList.Settings">
+        <item name="android:paddingTop">0dp</item>
+        <item name="android:paddingBottom">0dp</item>
+        <item name="android:paddingStart">0dp</item>
+        <item name="android:paddingEnd">0dp</item>
+        <item name="android:paddingLeft">0dp</item>
+        <item name="android:paddingRight">0dp</item>
+    </style>
+
+    <style name="Preference.Settings" parent="@*android:style/Preference.DeviceDefault">
+        <item name="allowDividerAbove">true</item>
+        <item name="allowDividerBelow">true</item>
+    </style>
+
+    <style name="Preference.Settings.Category"
+           parent="@*android:style/Preference.DeviceDefault.Category">
+        <item name="allowDividerAbove">true</item>
+        <item name="allowDividerBelow">true</item>
+    </style>
+
+    <style name="Preference.Settings.CheckBoxPreference"
+           parent="@*android:style/Preference.DeviceDefault.CheckBoxPreference">
+        <item name="allowDividerAbove">true</item>
+        <item name="allowDividerBelow">true</item>
+    </style>
+
+    <style name="Preference.Settings.DialogPreference"
+           parent="@*android:style/Preference.DeviceDefault.DialogPreference">
+        <item name="allowDividerAbove">true</item>
+        <item name="allowDividerBelow">true</item>
+    </style>
+
+    <style name="Preference.Settings.DialogPreference.EditTextPreference"
+           parent="@*android:style/Preference.DeviceDefault.DialogPreference.EditTextPreference">
+        <item name="dialogLayout">@layout/preference_dialog_edittext</item>
+        <item name="allowDividerAbove">true</item>
+        <item name="allowDividerBelow">true</item>
+    </style>
+
+    <style name="Preference.Settings.SeekBarPreference"
+           parent="@*android:style/Preference.DeviceDefault.SeekBarPreference">
+        <item name="layout">@layout/seekbar_preference</item>
+        <item name="allowDividerAbove">true</item>
+        <item name="allowDividerBelow">true</item>
+    </style>
+
+    <style name="Preference.Settings.SwitchPreference"
+           parent="@*android:style/Preference.DeviceDefault.SwitchPreference">
+        <item name="allowDividerAbove">true</item>
+        <item name="allowDividerBelow">true</item>
+    </style>
+</resources>
diff --git a/res/values/themes.xml b/res/values/themes.xml
new file mode 100644
index 0000000..d2dc80e
--- /dev/null
+++ b/res/values/themes.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<resources>
+    <style name="CarSettingTheme" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+        <item name="preferenceTheme">@style/PreferenceTheme</item>
+        <item name="wifi_signal">@drawable/wifi_signal</item>
+        <item name="wifiSignalColor">?android:attr/textColorPrimary</item>
+        <item name="iconColor">?android:attr/textColorPrimary</item>
+        <item name="dividerColor">@*android:color/car_list_divider</item>
+        <item name="userSwitcherBackground">?android:attr/colorPrimary</item>
+        <item name="userSwitcherCurrentUserColor">?android:attr/colorAccent</item>
+        <item name="userSwitcherAddIconColor">@*android:color/car_tint</item>
+        <item name="userSwitcherAddIconBackgroundColor">?android:attr/colorPrimaryDark</item>
+        <item name="userSwitcherNameTextAppearance">?android:attr/textAppearanceLarge</item>
+        <item name="quickSettingsEnabledColor">?android:attr/colorControlActivated</item>
+        <item name="quickSettingsDisabledColor">?android:attr/colorControlNormal</item>
+        <item name="quickSettingsIconEnabledColor">?android:attr/colorPrimary</item>
+        <item name="quickSettingsIconDisabledColor">?android:attr/colorPrimaryDark</item>
+        <item name="suggestionsPrimaryColor">?android:attr/colorPrimaryDark</item>
+        <item name="suggestionsSecondaryColor">@android:color/black</item>
+        <item name="android:windowEnterAnimation">@anim/trans_fade_in</item>
+        <item name="android:windowExitAnimation">@anim/trans_fade_out</item>
+        <item name="android:fragmentOpenEnterAnimation">@animator/trans_right_in</item>
+        <item name="android:fragmentOpenExitAnimation">@animator/trans_left_out</item>
+        <item name="android:fragmentCloseEnterAnimation">@animator/trans_left_in</item>
+        <item name="android:fragmentCloseExitAnimation">@animator/trans_right_out</item>
+    </style>
+
+    <style name="PreferenceTheme">
+        <item name="preferenceFragmentCompatStyle">@style/PreferenceFragment.Settings</item>
+        <item name="preferenceFragmentListStyle">@style/PreferenceFragmentList.Settings</item>
+        <item name="preferenceStyle">@style/Preference.Settings</item>
+        <item name="preferenceCategoryStyle">@style/Preference.Settings.Category</item>
+        <item name="checkBoxPreferenceStyle">@style/Preference.Settings.CheckBoxPreference</item>
+        <item name="dialogPreferenceStyle">@style/Preference.Settings.DialogPreference</item>
+        <item name="editTextPreferenceStyle">@style/Preference.Settings.DialogPreference.EditTextPreference</item>
+        <item name="seekBarPreferenceStyle">@style/Preference.Settings.SeekBarPreference</item>
+        <item name="switchPreferenceStyle">@style/Preference.Settings.SwitchPreference</item>
+    </style>
+
+    <style name="FallbackHome" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:colorBackgroundCacheHint">@null</item>
+        <item name="android:windowShowWallpaper">true</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowTranslucentStatus">false</item>
+        <item name="android:windowTranslucentNavigation">false</item>
+        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
+        <item name="android:statusBarColor">#00000000</item>
+        <item name="android:navigationBarColor">#00000000</item>
+    </style>
+
+    <style name="ActionDialogTheme" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowBackground">@android:color/transparent</item>
+        <item name="android:colorBackgroundCacheHint">@null</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowAnimationStyle">@android:style/Animation</item>
+    </style>
+
+    <!-- Themes for Setup Wizard -->
+
+    <style name="FallbackHome.SetupWizard"
+           parent="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen">
+        <item name="android:windowBackground">@android:color/black</item>
+        <item name="android:colorBackgroundCacheHint">@null</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
+        <item name="android:statusBarColor">#00000000</item>
+        <item name="android:navigationBarColor">#00000000</item>
+    </style>
+</resources>
diff --git a/res/xml/about_settings_fragment.xml b/res/xml/about_settings_fragment.xml
new file mode 100644
index 0000000..7dae157
--- /dev/null
+++ b/res/xml/about_settings_fragment.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/about_settings">
+    <Preference
+        android:key="@string/pk_model_info"
+        android:title="@string/model_info"
+        settings:controller="com.android.car.settings.system.ModelInfoPreferenceController"/>
+    <Preference
+        android:key="@string/pk_firmware_version"
+        android:title="@string/firmware_version"
+        settings:controller="com.android.car.settings.system.FirmwareVersionPreferenceController"/>
+    <Preference
+        android:key="@string/pk_security_patch"
+        android:title="@string/security_patch"
+        settings:controller="com.android.car.settings.system.SecurityPatchPreferenceController"/>
+    <Preference
+        android:key="@string/pk_kernel_version"
+        android:title="@string/kernel_version"
+        settings:controller="com.android.car.settings.system.KernelVersionPreferenceController"/>
+    <Preference
+        android:key="@string/pk_build_number"
+        android:title="@string/build_number"
+        settings:controller="com.android.car.settings.system.BuildNumberPreferenceController"/>
+    <Preference
+        android:key="@string/pk_regulatory_labels"
+        android:title="@string/regulatory_labels"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
+        <intent android:action="android.settings.SHOW_REGULATORY_INFO"/>
+    </Preference>
+    <Preference
+        android:key="@string/pk_about_bluetooth_mac_address"
+        android:title="@string/bluetooth_mac_address"
+        settings:controller="com.android.car.settings.system.BluetoothMacAddressPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/account_details_fragment.xml b/res/xml/account_details_fragment.xml
new file mode 100644
index 0000000..b6214f0
--- /dev/null
+++ b/res/xml/account_details_fragment.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <Preference
+        android:key="@string/pk_account_details"
+        android:selectable="false"
+        settings:controller="com.android.car.settings.accounts.AccountDetailsPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_account_settings"
+        settings:controller="com.android.car.settings.accounts.AccountDetailsSettingController">
+        <intent android:action="com.android.settings.action.IA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.ia.account_detail"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+    <Preference
+        android:key="@string/pk_account_sync"
+        android:title="@string/account_sync_title"
+        settings:controller="com.android.car.settings.accounts.AccountSyncPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/account_settings_fragment.xml b/res/xml/account_settings_fragment.xml
new file mode 100644
index 0000000..0280760
--- /dev/null
+++ b/res/xml/account_settings_fragment.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/accounts_settings_title">
+    <PreferenceCategory
+        android:key="@string/pk_account_list"
+        android:title="@string/account_list_title"
+        settings:controller="com.android.car.settings.accounts.AccountListPreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_account_auto_sync"
+        android:title="@string/account_auto_sync_title"
+        android:summary="@string/account_auto_sync_summary"
+        settings:controller="com.android.car.settings.accounts.AccountAutoSyncPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_accounts_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.ia.accounts"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/account_sync_details_fragment.xml b/res/xml/account_sync_details_fragment.xml
new file mode 100644
index 0000000..60e3244
--- /dev/null
+++ b/res/xml/account_sync_details_fragment.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/account_sync_title">
+    <Preference
+        android:key="@string/pk_account_details_with_sync"
+        android:selectable="false"
+        settings:controller="com.android.car.settings.accounts.AccountDetailsWithSyncStatusPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_account_sync_details"
+        settings:controller="com.android.car.settings.accounts.AccountSyncDetailsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/add_trusted_device_progress_fragment.xml b/res/xml/add_trusted_device_progress_fragment.xml
new file mode 100644
index 0000000..a7921f3
--- /dev/null
+++ b/res/xml/add_trusted_device_progress_fragment.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/add_device_title">
+    <Preference
+        android:key="@string/pk_add_device_instruction"
+        android:summary="@string/add_trusted_device_instruction"/>
+    <Preference
+        android:key="@string/pk_companion_app_download"
+        android:title="@string/trusted_device_download_app"/>
+    <Preference
+        android:key="@string/pk_car_ble_name"
+        settings:controller="com.android.car.settings.security.ChooseDeviceInstructionPreferenceController"/>
+    <Preference
+        android:key="@string/pk_trusted_device_safety_alert"
+        android:summary="@string/trusted_device_safety_alert"/>
+</PreferenceScreen>
diff --git a/res/xml/add_wifi_fragment.xml b/res/xml/add_wifi_fragment.xml
new file mode 100644
index 0000000..d0eafa3
--- /dev/null
+++ b/res/xml/add_wifi_fragment.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/wifi_setup_add_network">
+    <EditTextPreference
+        android:key="@string/pk_add_wifi_network_name"
+        android:persistent="false"
+        android:title="@string/wifi_ssid"
+        settings:controller="com.android.car.settings.wifi.NetworkNamePreferenceController"/>
+    <ListPreference
+        android:dialogTitle="@string/wifi_security"
+        android:key="@string/pk_add_wifi_security"
+        android:persistent="false"
+        android:title="@string/wifi_security"
+        settings:controller="com.android.car.settings.wifi.NetworkSecurityPreferenceController"/>
+    <com.android.car.settings.wifi.NetworkNameRestrictedPasswordEditTextPreference
+        android:dialogTitle="@string/wifi_password"
+        android:key="@string/pk_add_wifi_password"
+        android:persistent="false"
+        android:summary="@string/default_password_summary"
+        android:title="@string/wifi_password"
+        settings:controller="com.android.car.settings.wifi.NetworkPasswordPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/app_data_usage_fragment.xml b/res/xml/app_data_usage_fragment.xml
new file mode 100644
index 0000000..647b7d4
--- /dev/null
+++ b/res/xml/app_data_usage_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/app_data_usage">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_app_data_usage_detail"
+        settings:controller="com.android.car.settings.datausage.AppDataUsagePreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/app_storage_settings_details_fragment.xml b/res/xml/app_storage_settings_details_fragment.xml
new file mode 100644
index 0000000..b9eeb41
--- /dev/null
+++ b/res/xml/app_storage_settings_details_fragment.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/storage_settings_title">
+    <Preference
+        android:key="@string/pk_storage_application_details"
+        settings:controller="com.android.car.settings.storage.StorageApplicationPreferenceController"/>
+    <com.android.car.settings.storage.StorageAppDetailPreference
+        android:key="@string/pk_storage_application_size"
+        android:selectable="false"
+        android:title="@string/storage_application_size_label"
+        settings:controller="com.android.car.settings.storage.StorageApplicationSizePreferenceController"/>
+    <com.android.car.settings.storage.StorageAppDetailPreference
+        android:key="@string/pk_storage_application_data_size"
+        android:selectable="false"
+        android:title="@string/storage_data_size_label"
+        settings:controller="com.android.car.settings.storage.StorageApplicationUserDataPreferenceController"/>
+    <com.android.car.settings.storage.StorageAppDetailPreference
+        android:key="@string/pk_storage_application_cache_size"
+        android:selectable="false"
+        android:title="@string/storage_cache_size_label"
+        settings:controller="com.android.car.settings.storage.StorageApplicationCacheSizePreferenceController"/>
+    <com.android.car.settings.storage.StorageAppDetailPreference
+        android:key="@string/pk_storage_application_total_size"
+        android:selectable="false"
+        android:title="@string/storage_total_size_label"
+        settings:controller="com.android.car.settings.storage.StorageApplicationTotalSizePreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/application_details_fragment.xml b/res/xml/application_details_fragment.xml
new file mode 100644
index 0000000..2f4ac1a
--- /dev/null
+++ b/res/xml/application_details_fragment.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/applications_settings">
+    <Preference
+        android:key="@string/pk_application_details_app"
+        settings:controller="com.android.car.settings.applications.ApplicationPreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_application_details_notifications"
+        android:title="@string/notifications_label"
+        settings:controller="com.android.car.settings.applications.NotificationsPreferenceController"/>
+    <Preference
+        android:key="@string/pk_application_details_permissions"
+        android:title="@string/permissions_label"
+        settings:controller="com.android.car.settings.applications.PermissionsPreferenceController"/>
+    <Preference
+        android:key="@string/pk_application_details_version"
+        settings:controller="com.android.car.settings.applications.VersionPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/application_launch_settings_fragment.xml b/res/xml/application_launch_settings_fragment.xml
new file mode 100644
index 0000000..d5e0dcd
--- /dev/null
+++ b/res/xml/application_launch_settings_fragment.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/app_launch_title">
+    <Preference
+        android:key="@string/pk_opening_links_app_details"
+        settings:controller="com.android.car.settings.applications.managedomainurls.ApplicationWithVersionPreferenceController"/>
+    <PreferenceCategory android:title="@string/app_launch_domain_links_title">
+        <ListPreference
+            android:key="@string/pk_opening_links_app_details_state"
+            android:title="@string/app_launch_open_domain_urls_title"
+            android:summary="%s"
+            settings:controller="com.android.car.settings.applications.managedomainurls.AppLinkStatePreferenceController"/>
+        <Preference
+            android:key="@string/pk_opening_links_app_details_urls"
+            android:title="@string/app_launch_supported_domain_urls_title"
+            android:dependency="@string/pk_opening_links_app_details_state"
+            settings:controller="com.android.car.settings.applications.managedomainurls.DomainUrlsPreferenceController"/>
+    </PreferenceCategory>
+    <PreferenceCategory android:title="@string/app_launch_other_defaults_title">
+        <Preference
+            android:key="@string/pk_opening_links_app_details_reset"
+            settings:controller="com.android.car.settings.applications.managedomainurls.ClearDefaultsPreferenceController"/>
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/res/xml/applications_settings_fragment.xml b/res/xml/applications_settings_fragment.xml
new file mode 100644
index 0000000..46d7a82
--- /dev/null
+++ b/res/xml/applications_settings_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/applications_settings">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_all_applications_settings_list"
+        settings:controller="com.android.car.settings.applications.ApplicationsSettingsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/apps_and_notifications_fragment.xml b/res/xml/apps_and_notifications_fragment.xml
new file mode 100644
index 0000000..9bd08f7
--- /dev/null
+++ b/res/xml/apps_and_notifications_fragment.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/apps_and_notifications_settings">
+    <Preference
+        android:fragment="com.android.car.settings.applications.ApplicationsSettingsFragment"
+        android:key="@string/pk_applications_settings_screen_entry"
+        android:title="@string/all_applications"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:key="@string/pk_default_applications_settings_entry"
+        android:title="@string/default_applications"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
+        <intent android:action="android.settings.MANAGE_DEFAULT_APPS_SETTINGS"/>
+    </Preference>
+    <Preference
+        android:key="@string/pk_app_permissions_entry"
+        android:title="@string/app_permissions"
+        settings:controller="com.android.car.settings.applications.AppPermissionsEntryPreferenceController">
+        <intent android:action="android.intent.action.MANAGE_PERMISSIONS"/>
+    </Preference>
+    <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.SpecialAccessSettingsFragment"
+        android:key="@string/pk_special_access_entry"
+        android:title="@string/special_access"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/bluetooth_device_details_fragment.xml b/res/xml/bluetooth_device_details_fragment.xml
new file mode 100644
index 0000000..e6f0483
--- /dev/null
+++ b/res/xml/bluetooth_device_details_fragment.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/bluetooth_settings_title">
+    <Preference
+        android:key="@string/pk_bluetooth_device_name"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothDeviceNamePreferenceController"/>
+    <PreferenceCategory
+        android:key="@string/pk_bluetooth_device_profiles"
+        android:title="@string/bluetooth_profiles"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothDeviceProfilesPreferenceController"/>
+    <Preference
+        android:icon="@drawable/ic_settings_about"
+        android:key="@string/pk_bluetooth_device_address"
+        android:selectable="false"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothDeviceAddressPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/bluetooth_device_picker_fragment.xml b/res/xml/bluetooth_device_picker_fragment.xml
new file mode 100644
index 0000000..95dcacd
--- /dev/null
+++ b/res/xml/bluetooth_device_picker_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/bluetooth_device_picker">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_bluetooth_device_picker"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothDevicePickerPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/bluetooth_pairing_selection_fragment.xml b/res/xml/bluetooth_pairing_selection_fragment.xml
new file mode 100644
index 0000000..4613c53
--- /dev/null
+++ b/res/xml/bluetooth_pairing_selection_fragment.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/bluetooth_pair_new_device">
+    <Preference
+        android:key="@string/pk_bluetooth_name"
+        android:title="@string/bluetooth_name"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothNamePreferenceController"/>
+    <PreferenceCategory
+        android:key="@string/pk_bluetooth_available_devices"
+        android:title="@string/bluetooth_available_devices"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothUnbondedDevicesPreferenceController"/>
+    <Preference
+        android:icon="@drawable/ic_settings_about"
+        android:key="@string/pk_bluetooth_address"
+        android:selectable="false"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothAddressPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/bluetooth_settings_fragment.xml b/res/xml/bluetooth_settings_fragment.xml
new file mode 100644
index 0000000..ccd041b
--- /dev/null
+++ b/res/xml/bluetooth_settings_fragment.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/bluetooth_settings_title">
+    <PreferenceCategory
+        android:key="@string/pk_bluetooth_paired_devices"
+        android:title="@string/bluetooth_paired_devices"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothBondedDevicesPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.bluetooth.BluetoothPairingSelectionFragment"
+        android:icon="@drawable/ic_add"
+        android:key="@string/pk_bluetooth_pair_new_device"
+        android:title="@string/bluetooth_pair_new_device"
+        settings:controller="com.android.car.settings.bluetooth.PairNewDevicePreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/car_volume_items.xml b/res/xml/car_volume_items.xml
index 08ab4f9..9228e02 100644
--- a/res/xml/car_volume_items.xml
+++ b/res/xml/car_volume_items.xml
@@ -1,20 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-/*
-** Copyright 2018, 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.
-*/
+    Copyright 2018 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.
 -->
 
 <!--
@@ -32,52 +30,68 @@
   car_volume_groups.xml, which is read by car audio service.
 -->
 <carVolumeItems xmlns:car="http://schemas.android.com/apk/res-auto">
-    <item car:usage="voice_communication"
-          car:title="@*android:string/volume_call"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="voice_communication_signalling"
-          car:title="@*android:string/volume_call"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="media"
-          car:title="@*android:string/volume_music"
-          car:icon="@*android:drawable/ic_audio_media"/>
-    <item car:usage="game"
-          car:title="@*android:string/volume_music"
-          car:icon="@*android:drawable/ic_audio_media"/>
-    <item car:usage="alarm"
-          car:title="@*android:string/volume_alarm"
-          car:icon="@*android:drawable/ic_audio_alarm"/>
-    <item car:usage="assistance_navigation_guidance"
-          car:title="@string/navi_volume_title"
-          car:icon="@drawable/ic_audio_navi"/>
-    <item car:usage="notification_ringtone"
-          car:title="@*android:string/volume_ringtone"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="assistant"
-          car:title="@*android:string/volume_unknown"
-          car:icon="@*android:drawable/ic_audio_vol"/>
-    <item car:usage="notification"
-          car:title="@*android:string/volume_notification"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="notification_communication_request"
-          car:title="@*android:string/volume_notification"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="notification_communication_instant"
-          car:title="@*android:string/volume_notification"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="notification_communication_delayed"
-          car:title="@*android:string/volume_notification"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="notification_event"
-          car:title="@*android:string/volume_notification"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="assistance_accessibility"
-          car:title="@*android:string/volume_notification"
-          car:icon="@*android:drawable/ic_audio_ring_notif"/>
-    <item car:usage="assistance_sonification"
-          car:title="@*android:string/volume_unknown"
-          car:icon="@*android:drawable/ic_audio_vol"/>
-    <item car:usage="unknown"
-          car:title="@*android:string/volume_unknown"
-          car:icon="@*android:drawable/ic_audio_vol"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_call"
+        car:usage="voice_communication"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_call"
+        car:usage="voice_communication_signalling"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_media"
+        car:titleText="@*android:string/volume_music"
+        car:usage="media"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_media"
+        car:titleText="@*android:string/volume_music"
+        car:usage="game"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_alarm"
+        car:titleText="@*android:string/volume_alarm"
+        car:usage="alarm"/>
+    <item
+        car:icon="@drawable/car_ic_navigation"
+        car:titleText="@string/navi_volume_title"
+        car:usage="assistance_navigation_guidance"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_ringtone"
+        car:usage="notification_ringtone"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_vol"
+        car:titleText="@*android:string/volume_unknown"
+        car:usage="assistant"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_notification"
+        car:usage="notification"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_notification"
+        car:usage="notification_communication_request"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_notification"
+        car:usage="notification_communication_instant"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_notification"
+        car:usage="notification_communication_delayed"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_notification"
+        car:usage="notification_event"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_ring_notif"
+        car:titleText="@*android:string/volume_notification"
+        car:usage="assistance_accessibility"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_vol"
+        car:titleText="@*android:string/volume_unknown"
+        car:usage="assistance_sonification"/>
+    <item
+        car:icon="@*android:drawable/ic_audio_vol"
+        car:titleText="@*android:string/volume_unknown"
+        car:usage="unknown"/>
 </carVolumeItems>
diff --git a/res/xml/child_locale_picker_fragment.xml b/res/xml/child_locale_picker_fragment.xml
new file mode 100644
index 0000000..43a727e
--- /dev/null
+++ b/res/xml/child_locale_picker_fragment.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_child_locale_picker"
+        settings:controller="com.android.car.settings.language.ChildLocalePickerPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/choose_account_fragment.xml b/res/xml/choose_account_fragment.xml
new file mode 100644
index 0000000..e154bd3
--- /dev/null
+++ b/res/xml/choose_account_fragment.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/add_an_account">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_add_account"
+        settings:controller="com.android.car.settings.accounts.ChooseAccountPreferenceController"/>
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/choose_lock_type_fragment.xml b/res/xml/choose_lock_type_fragment.xml
new file mode 100644
index 0000000..a4a10a1
--- /dev/null
+++ b/res/xml/choose_lock_type_fragment.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/lock_settings_picker_title">
+    <Preference
+        android:key="@string/pk_no_lock"
+        android:title="@string/security_lock_none"
+        settings:controller="com.android.car.settings.security.NoLockPreferenceController"/>
+    <Preference
+        android:key="@string/pk_pattern_lock"
+        android:title="@string/security_lock_pattern"
+        settings:controller="com.android.car.settings.security.PatternLockPreferenceController"/>
+    <Preference
+        android:key="@string/pk_password_lock"
+        android:title="@string/security_lock_password"
+        settings:controller="com.android.car.settings.security.PasswordLockPreferenceController"/>
+    <Preference
+        android:key="@string/pk_pin_lock"
+        android:title="@string/security_lock_pin"
+        settings:controller="com.android.car.settings.security.PinLockPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/choose_new_admin_fragment.xml b/res/xml/choose_new_admin_fragment.xml
new file mode 100644
index 0000000..04a1d0c
--- /dev/null
+++ b/res/xml/choose_new_admin_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/choose_new_admin_label">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_choose_new_admin"
+        settings:controller="com.android.car.settings.users.ChooseNewAdminPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/choose_trusted_device_fragment.xml b/res/xml/choose_trusted_device_fragment.xml
new file mode 100644
index 0000000..261b9b9
--- /dev/null
+++ b/res/xml/choose_trusted_device_fragment.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Copyright 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/trusted_device">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_trusted_device_list"
+        settings:controller="com.android.car.settings.security.TrustedDeviceListPreferenceController"/>
+    <Preference
+        android:icon="@drawable/ic_add"
+        android:key="@string/pk_add_trusted_device"
+        android:title="@string/add_device_title"
+        settings:controller="com.android.car.settings.security.AddTrustedDevicePreferenceController">
+        <intent
+            android:targetClass="com.android.car.settings.security.AddTrustedDeviceActivity"
+            android:targetPackage="com.android.car.settings"/>
+    </Preference>
+</PreferenceScreen>
diff --git a/res/xml/data_usage_fragment.xml b/res/xml/data_usage_fragment.xml
new file mode 100644
index 0000000..6ca27c0
--- /dev/null
+++ b/res/xml/data_usage_fragment.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/data_usage_settings">
+    <com.android.car.settings.datausage.DataUsageSummaryPreference
+        android:key="@string/pk_data_usage_summary"
+        settings:controller="com.android.car.settings.datausage.DataUsageSummaryPreferenceController"
+        settings:singleLineTitle="false"/>
+    <Preference
+        android:key="@string/pk_app_data_usage"
+        android:title="@string/app_data_usage"
+        settings:controller="com.android.car.settings.datausage.DataUsagePreferenceController"/>
+    <Preference
+        android:key="@string/pk_data_warning_and_limit"
+        android:title="@string/data_warning_limit_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
+        <intent android:targetPackage="com.android.car.settings"
+                android:targetClass="com.android.car.settings.datausage.DataWarningAndLimitActivity"/>
+    </Preference>
+</PreferenceScreen>
diff --git a/res/xml/data_warning_and_limit_fragment.xml b/res/xml/data_warning_and_limit_fragment.xml
new file mode 100644
index 0000000..8933d6c
--- /dev/null
+++ b/res/xml/data_warning_and_limit_fragment.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/data_warning_limit_title">
+    <Preference
+        android:key="@string/pk_data_usage_cycle"
+        android:title="@string/app_usage_cycle"
+        settings:controller="com.android.car.settings.datausage.CycleResetDayOfMonthPickerPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_data_warning_group"
+        settings:controller="com.android.car.settings.datausage.DataWarningPreferenceController">
+        <SwitchPreference
+            android:key="@string/pk_data_set_warning"
+            android:title="@string/set_data_warning"/>
+        <Preference
+            android:key="@string/pk_data_warning"
+            android:title="@string/data_warning"/>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_data_limit_group"
+        settings:controller="com.android.car.settings.datausage.DataLimitPreferenceController">
+        <SwitchPreference
+            android:key="@string/pk_data_set_limit"
+            android:title="@string/set_data_limit"/>
+        <Preference
+            android:key="@string/pk_data_limit"
+            android:title="@string/data_limit"/>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/datetime_settings_fragment.xml b/res/xml/datetime_settings_fragment.xml
new file mode 100644
index 0000000..6a4902e
--- /dev/null
+++ b/res/xml/datetime_settings_fragment.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/date_and_time_settings_title">
+    <SwitchPreference
+        android:key="@string/pk_auto_datetime_switch"
+        android:summary="@string/date_time_auto_summary"
+        android:title="@string/date_time_auto"
+        settings:controller="com.android.car.settings.datetime.AutoDatetimeTogglePreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_auto_timezone_switch"
+        android:summary="@string/zone_auto_summary"
+        android:title="@string/zone_auto"
+        settings:controller="com.android.car.settings.datetime.AutoTimeZoneTogglePreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.datetime.DatePickerFragment"
+        android:key="@string/pk_date_picker_entry"
+        android:title="@string/date_time_set_date"
+        settings:controller="com.android.car.settings.datetime.DatePickerPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.datetime.TimePickerFragment"
+        android:key="@string/pk_time_picker_entry"
+        android:title="@string/date_time_set_time"
+        settings:controller="com.android.car.settings.datetime.TimePickerPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.datetime.TimeZonePickerScreenFragment"
+        android:key="@string/pk_timezone_picker_screen_entry"
+        android:title="@string/date_time_set_timezone"
+        settings:controller="com.android.car.settings.datetime.TimeZonePickerPreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_use_24hour_switch"
+        android:title="@string/date_time_24hour"
+        settings:controller="com.android.car.settings.datetime.TimeFormatTogglePreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/default_autofill_picker_fragment.xml b/res/xml/default_autofill_picker_fragment.xml
new file mode 100644
index 0000000..e465461
--- /dev/null
+++ b/res/xml/default_autofill_picker_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/autofill_settings_title">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_default_autofill_options"
+        settings:controller="com.android.car.settings.applications.defaultapps.DefaultAutofillPickerPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/default_voice_input_picker_fragment.xml b/res/xml/default_voice_input_picker_fragment.xml
new file mode 100644
index 0000000..042d5be
--- /dev/null
+++ b/res/xml/default_voice_input_picker_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/voice_input_settings_title">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_default_voice_input_options"
+        settings:controller="com.android.car.settings.applications.assist.DefaultVoiceInputPickerPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/developer_options_fragment.xml b/res/xml/developer_options_fragment.xml
new file mode 100644
index 0000000..ebe578b
--- /dev/null
+++ b/res/xml/developer_options_fragment.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/developer_options_settings">
+    <PreferenceCategory
+        android:title="@string/debug_debugging_category">
+        <SwitchPreference
+            android:key="@string/pk_usb_debugging_toggle"
+            android:title="@string/enable_adb"
+            android:summary="@string/enable_adb_summary"
+            settings:controller="com.android.car.settings.development.debugging.EnableAdbPreferenceController"/>
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/res/xml/display_settings_fragment.xml b/res/xml/display_settings_fragment.xml
new file mode 100644
index 0000000..7932f89
--- /dev/null
+++ b/res/xml/display_settings_fragment.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/display_settings">
+    <SwitchPreference
+        android:key="@string/pk_adaptive_brightness_switch"
+        android:summary="@string/auto_brightness_summary"
+        android:title="@string/auto_brightness_title"
+        settings:controller="com.android.car.settings.display.AdaptiveBrightnessTogglePreferenceController"/>
+    <com.android.car.settings.common.SeekBarPreference
+        android:key="@string/pk_brightness_level"
+        android:title="@string/brightness"
+        settings:controller="com.android.car.settings.display.BrightnessLevelPreferenceController"
+        settings:showSeekBarValue="false"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_display_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.ia.display"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/file_paths.xml b/res/xml/file_paths.xml
new file mode 100644
index 0000000..7971793
--- /dev/null
+++ b/res/xml/file_paths.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<paths>
+    <!-- Offer access to files under Context.getCacheDir() -->
+    <cache-path name="my_cache"/>
+</paths>
diff --git a/res/xml/homepage_fragment.xml b/res/xml/homepage_fragment.xml
new file mode 100644
index 0000000..2a69c32
--- /dev/null
+++ b/res/xml/homepage_fragment.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/settings_label">
+    <!-- TODO: Re-enable once more suggestion use cases are supported.
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_suggestions"
+        settings:controller="com.android.car.settings.suggestions.SuggestionsPreferenceController"/>
+    -->
+    <Preference
+        android:fragment="com.android.car.settings.display.DisplaySettingsFragment"
+        android:icon="@drawable/ic_settings_display"
+        android:key="@string/pk_display_settings_entry"
+        android:title="@string/display_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.sound.SoundSettingsFragment"
+        android:icon="@drawable/ic_settings_sound"
+        android:key="@string/pk_sound_settings_entry"
+        android:title="@string/sound_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.units.UnitsSettingsFragment"
+        android:icon="@drawable/ic_settings_units"
+        android:key="@string/pk_units_settings_entry"
+        android:title="@string/units_settings"/>
+    <Preference
+        android:fragment="com.android.car.settings.network.NetworkAndInternetFragment"
+        android:icon="@drawable/ic_settings_wifi"
+        android:key="@string/pk_network_and_internet_entry"
+        android:title="@string/network_and_internet"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_wireless_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.wireless"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+    <Preference
+        android:fragment="com.android.car.settings.bluetooth.BluetoothSettingsFragment"
+        android:icon="@drawable/ic_settings_bluetooth"
+        android:key="@string/pk_bluetooth_settings_entry"
+        android:title="@string/bluetooth_settings_title"
+        settings:controller="com.android.car.settings.bluetooth.BluetoothEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.location.LocationSettingsFragment"
+        android:icon="@drawable/ic_settings_location"
+        android:key="@string/pk_location_settings_entry"
+        android:title="@string/location_settings_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.applications.AppsAndNotificationsFragment"
+        android:icon="@drawable/ic_settings_applications"
+        android:key="@string/pk_apps_and_notifications_settings_entry"
+        android:title="@string/apps_and_notifications_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.datetime.DatetimeSettingsFragment"
+        android:icon="@drawable/ic_settings_date_time"
+        android:key="@string/pk_date_time_settings_entry"
+        android:title="@string/date_and_time_settings_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:icon="@drawable/ic_user"
+        android:key="@string/pk_users_settings_entry"
+        android:title="@string/users_list_title"
+        settings:controller="com.android.car.settings.users.UsersEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.accounts.AccountSettingsFragment"
+        android:icon="@drawable/ic_account"
+        android:key="@string/pk_accounts_settings_entry"
+        android:title="@string/accounts_settings_title"
+        settings:controller="com.android.car.settings.accounts.AccountsEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.storage.StorageSettingsFragment"
+        android:icon="@drawable/ic_storage"
+        android:key="@string/pk_storage_settings_entry"
+        android:title="@string/storage_settings_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.security.SecuritySettingsFragment"
+        android:icon="@drawable/ic_lock"
+        android:key="@string/pk_security_settings_entry"
+        android:title="@string/security_settings_title"
+        settings:controller="com.android.car.settings.security.SecurityEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.system.SystemSettingsFragment"
+        android:icon="@drawable/ic_settings_about"
+        android:key="@string/pk_system_settings_entry"
+        android:title="@string/system_setting_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_device_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.ia.device"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_personal_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.personal"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/keyboard_fragment.xml b/res/xml/keyboard_fragment.xml
new file mode 100644
index 0000000..0ba6b25
--- /dev/null
+++ b/res/xml/keyboard_fragment.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/keyboard_settings">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_enabled_keyboards"
+        settings:controller="com.android.car.settings.inputmethod.EnabledKeyboardPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.inputmethod.KeyboardManagementFragment"
+        android:icon="@drawable/ic_add"
+        android:key="@string/pk_manage_keyboard"
+        android:title="@string/manage_keyboard"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/keyboard_management_fragment.xml b/res/xml/keyboard_management_fragment.xml
new file mode 100644
index 0000000..e82ebe1
--- /dev/null
+++ b/res/xml/keyboard_management_fragment.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/manage_keyboard">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_keyboard_management"
+        settings:controller="com.android.car.settings.inputmethod.KeyboardManagementPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/language_picker_fragment.xml b/res/xml/language_picker_fragment.xml
new file mode 100644
index 0000000..64978bb
--- /dev/null
+++ b/res/xml/language_picker_fragment.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/language_settings">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_language_picker"
+        settings:controller="com.android.car.settings.language.LanguagePickerPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/languages_and_input_fragment.xml b/res/xml/languages_and_input_fragment.xml
new file mode 100644
index 0000000..424eceb
--- /dev/null
+++ b/res/xml/languages_and_input_fragment.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/languages_and_input_settings">
+    <Preference
+        android:fragment="com.android.car.settings.language.LanguagePickerFragment"
+        android:icon="@drawable/ic_translate"
+        android:key="@string/pk_language_settings_entry"
+        android:title="@string/language_settings"
+        settings:controller="com.android.car.settings.language.LanguageSettingsEntryPreferenceController"/>
+    <com.android.car.settings.common.ButtonPreference
+        android:fragment="com.android.car.settings.applications.defaultapps.DefaultAutofillPickerFragment"
+        android:key="@string/pk_autofill_picker_entry"
+        android:summary="@string/app_list_preference_none"
+        android:title="@string/autofill_settings_title"
+        android:widgetLayout="@layout/details_preference_widget"
+        settings:controller="com.android.car.settings.applications.defaultapps.DefaultAutofillPickerEntryPreferenceController"
+        settings:iconSpaceReserved="true"/>
+    <Preference
+        android:fragment="com.android.car.settings.inputmethod.KeyboardFragment"
+        android:key="@string/pk_keyboard_entry"
+        android:title="@string/keyboard_settings"
+        settings:controller="com.android.car.settings.inputmethod.KeyboardPreferenceController"
+        settings:iconSpaceReserved="true"/>
+    <Preference
+        android:fragment="com.android.car.settings.tts.TextToSpeechOutputFragment"
+        android:key="@string/pk_tts_settings_entry"
+        android:title="@string/text_to_speech_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+        settings:iconSpaceReserved="true"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_language_and_input_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.ia.language"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/legal_information_fragment.xml b/res/xml/legal_information_fragment.xml
new file mode 100644
index 0000000..e7e343f
--- /dev/null
+++ b/res/xml/legal_information_fragment.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/legal_information">
+
+    <!-- Terms and conditions -->
+    <Preference
+        android:key="terms"
+        android:title="@string/terms_title"
+        settings:controller="com.android.car.settings.system.legal.TermsPreferenceController"/>
+
+    <!-- System WebView License information -->
+    <Preference
+        android:key="@string/pk_system_license_entry"
+        android:title="@string/webview_license_title"
+        settings:controller="com.android.car.settings.system.legal.WebViewLicensePreferenceController"/>
+
+    <Preference
+        android:key="@string/pk_third_party_license_entry"
+        android:title="@string/settings_license_activity_title"
+        settings:controller="com.android.car.settings.system.legal.ThirdPartyLicensePreferenceController"/>
+
+</PreferenceScreen>
diff --git a/res/xml/location_recent_requests_fragment.xml b/res/xml/location_recent_requests_fragment.xml
new file mode 100644
index 0000000..982cd63
--- /dev/null
+++ b/res/xml/location_recent_requests_fragment.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:key="@string/pk_location_recent_requests_screen"
+                  android:title="@string/location_settings_recent_requests_title"
+                  settings:controller="com.android.car.settings.location.RecentLocationRequestsPreferenceController"/>
\ No newline at end of file
diff --git a/res/xml/location_scanning_fragment.xml b/res/xml/location_scanning_fragment.xml
new file mode 100644
index 0000000..f71f246
--- /dev/null
+++ b/res/xml/location_scanning_fragment.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/location_settings_scanning_title">
+    <SwitchPreference
+        android:key="@string/pk_location_scanning_wifi"
+        android:summary="@string/location_settings_wifi_scanning_summary"
+        android:title="@string/location_settings_wifi_scanning_title"
+        settings:controller="com.android.car.settings.location.WifiScanningPreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_location_scanning_bluetooth"
+        android:summary="@string/location_settings_bluetooth_scanning_summary"
+        android:title="@string/location_settings_bluetooth_scanning_title"
+        settings:controller="com.android.car.settings.location.BluetoothScanningPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/location_settings_fragment.xml b/res/xml/location_settings_fragment.xml
new file mode 100644
index 0000000..4f1b57c
--- /dev/null
+++ b/res/xml/location_settings_fragment.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/location_settings_title">
+    <Preference
+        android:fragment="com.android.car.settings.location.RecentLocationRequestsFragment"
+        android:key="@string/pk_location_recent_requests_entry"
+        android:title="@string/location_settings_recent_requests_title"
+        settings:controller="com.android.car.settings.location.RecentLocationRequestsEntryPreferenceController"/>
+    <Preference
+        android:key="@string/pk_location_app_permissions"
+        android:title="@string/location_settings_app_permissions_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
+        <intent android:action="android.intent.action.MANAGE_PERMISSION_APPS">
+            <extra android:name="android.intent.extra.PERMISSION_NAME"
+                   android:value="android.permission-group.LOCATION"/>
+        </intent>
+    </Preference>
+    <Preference
+        android:fragment="com.android.car.settings.location.LocationScanningFragment"
+        android:key="@string/pk_location_scanning"
+        android:title="@string/location_settings_scanning_title"
+        settings:controller="com.android.car.settings.location.LocationScanningPreferenceController"/>
+    <PreferenceCategory
+        android:key="@string/pk_location_services"
+        android:title="@string/location_settings_services_title"
+        settings:controller="com.android.car.settings.location.LocationServicesPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_location_footer"
+        settings:controller="com.android.car.settings.location.LocationFooterPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/manage_assist_fragment.xml b/res/xml/manage_assist_fragment.xml
new file mode 100644
index 0000000..e5010f8
--- /dev/null
+++ b/res/xml/manage_assist_fragment.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/assist_and_voice_input_settings">
+    <com.android.car.settings.common.ButtonPreference
+        android:key="@string/pk_default_assist"
+        android:title="@string/assist_app_settings"
+        android:widgetLayout="@layout/details_preference_widget"
+        settings:controller="com.android.car.settings.applications.defaultapps.DefaultAssistantPickerEntryPreferenceController"
+        settings:iconSpaceReserved="true"/>
+    <SwitchPreference
+        android:key="@string/pk_assist_use_text_context"
+        android:summary="@string/assist_access_context_summary"
+        android:title="@string/assist_access_context_title"
+        settings:controller="com.android.car.settings.applications.assist.TextContextPreferenceController"
+        settings:iconSpaceReserved="true"/>
+    <SwitchPreference
+        android:key="@string/pk_assist_use_screenshot"
+        android:summary="@string/assist_access_screenshot_summary"
+        android:title="@string/assist_access_screenshot_title"
+        settings:controller="com.android.car.settings.applications.assist.ScreenshotContextPreferenceController"
+        settings:iconSpaceReserved="true"/>
+    <com.android.car.settings.common.ButtonPreference
+        android:fragment="com.android.car.settings.applications.assist.DefaultVoiceInputPickerFragment"
+        android:key="@string/pk_default_voice_input"
+        android:title="@string/voice_input_settings_title"
+        android:widgetLayout="@layout/details_preference_widget"
+        settings:controller="com.android.car.settings.applications.assist.DefaultVoiceInputPickerEntryPreferenceController"
+        settings:iconSpaceReserved="true"/>
+</PreferenceScreen>
diff --git a/res/xml/manage_domain_urls_fragment.xml b/res/xml/manage_domain_urls_fragment.xml
new file mode 100644
index 0000000..525fdd5
--- /dev/null
+++ b/res/xml/manage_domain_urls_fragment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/app_launch_domain_links_title">
+    <PreferenceCategory
+        android:key="@string/pk_opening_links_options"
+        android:title="@string/domain_url_section_title"
+        settings:controller="com.android.car.settings.applications.managedomainurls.DomainAppPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/master_clear_confirm_fragment.xml b/res/xml/master_clear_confirm_fragment.xml
new file mode 100644
index 0000000..0ed99ff
--- /dev/null
+++ b/res/xml/master_clear_confirm_fragment.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/master_clear_confirm_title">
+    <Preference
+        android:key="@string/pk_master_clear_confirm_desc"
+        android:selectable="false"
+        android:title="@string/master_clear_confirm_desc"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+        settings:singleLineTitle="false"/>
+</PreferenceScreen>
diff --git a/res/xml/master_clear_fragment.xml b/res/xml/master_clear_fragment.xml
new file mode 100644
index 0000000..28375be
--- /dev/null
+++ b/res/xml/master_clear_fragment.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/master_clear_title">
+    <Preference
+        android:key="@string/pk_master_clear_desc"
+        android:selectable="false"
+        android:title="@string/master_clear_desc"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+        settings:singleLineTitle="false"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_master_clear_account_list"
+        android:selectable="false"
+        android:title="@string/master_clear_accounts"
+        settings:controller="com.android.car.settings.system.MasterClearAccountsPreferenceController"/>
+    <Preference
+        android:key="@string/pk_master_clear_other_users_present"
+        android:selectable="false"
+        android:title="@string/master_clear_other_users_present"
+        settings:controller="com.android.car.settings.system.MasterClearOtherUsersPresentPreferenceController"
+        settings:singleLineTitle="false"/>
+    <CheckBoxPreference
+        android:defaultValue="true"
+        android:key="@string/pk_master_clear_reset_esim"
+        android:summary="@string/reset_esim_desc"
+        android:title="@string/reset_esim_title"
+        settings:controller="com.android.car.settings.system.MasterClearResetEsimPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/mobile_network_fragment.xml b/res/xml/mobile_network_fragment.xml
new file mode 100644
index 0000000..1b59b1c
--- /dev/null
+++ b/res/xml/mobile_network_fragment.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/mobile_network_settings">
+    <SwitchPreference
+        android:key="@string/pk_mobile_data_toggle"
+        android:summary="@string/mobile_network_toggle_summary"
+        android:title="@string/mobile_network_toggle_title"
+        settings:controller="com.android.car.settings.network.MobileDataTogglePreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_mobile_roaming_toggle"
+        android:summary="@string/roaming_summary"
+        android:title="@string/roaming_title"
+        settings:controller="com.android.car.settings.network.RoamingPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/mobile_network_list_fragment.xml b/res/xml/mobile_network_list_fragment.xml
new file mode 100644
index 0000000..3c7d769
--- /dev/null
+++ b/res/xml/mobile_network_list_fragment.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/mobile_network_settings">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_mobile_network_list"
+        settings:controller="com.android.car.settings.network.MobileNetworkListPreferenceController"/>
+    <Preference
+        android:icon="@drawable/ic_add"
+        android:key="@string/pk_mobile_network_list_add_more"
+        android:title="@string/mobile_network_list_add_more"
+        android:visibility="gone"
+        settings:controller="com.android.car.settings.network.AddMobileNetworkPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/modify_system_settings_fragment.xml b/res/xml/modify_system_settings_fragment.xml
new file mode 100644
index 0000000..7aa22b4
--- /dev/null
+++ b/res/xml/modify_system_settings_fragment.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/modify_system_settings_title">
+    <Preference
+        android:key="@string/pk_modify_system_settings_description"
+        android:selectable="false"
+        android:summary="@string/modify_system_settings_description"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_modify_system_settings"
+        settings:controller="com.android.car.settings.applications.specialaccess.AppOpsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/network_and_internet_fragment.xml b/res/xml/network_and_internet_fragment.xml
new file mode 100644
index 0000000..9539977
--- /dev/null
+++ b/res/xml/network_and_internet_fragment.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/network_and_internet">
+    <com.android.car.settings.common.MasterSwitchPreference
+        android:fragment="com.android.car.settings.wifi.WifiSettingsFragment"
+        android:icon="@drawable/ic_settings_wifi"
+        android:key="@string/pk_wifi_settings_entry"
+        android:title="@string/wifi_settings"
+        settings:controller="com.android.car.settings.wifi.WifiEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.wifi.WifiTetherFragment"
+        android:key="@string/pk_wifi_tether_settings_entry"
+        android:title="@string/tether_settings_title_all"
+        android:icon="@drawable/ic_wifi_tethering"
+        settings:controller="com.android.car.settings.wifi.WifiTetherPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.network.MobileNetworkFragment"
+        android:icon="@drawable/ic_settings_cellular"
+        android:key="@string/pk_mobile_network_settings_entry"
+        android:title="@string/mobile_network_settings"
+        settings:controller="com.android.car.settings.network.MobileNetworkEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.datausage.DataUsageFragment"
+        android:icon="@drawable/ic_settings_data_usage"
+        android:key="@string/pk_data_usage_settings_entry"
+        android:title="@string/data_usage_settings"
+        settings:controller="com.android.car.settings.datausage.DataUsageEntryPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_network_and_internet_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.ia.wireless"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/notification_access_fragment.xml b/res/xml/notification_access_fragment.xml
new file mode 100644
index 0000000..2637bce
--- /dev/null
+++ b/res/xml/notification_access_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/notification_access_title">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_notification_access"
+        settings:controller="com.android.car.settings.applications.specialaccess.NotificationAccessPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/preferred_engine_fragment.xml b/res/xml/preferred_engine_fragment.xml
new file mode 100644
index 0000000..b730caf
--- /dev/null
+++ b/res/xml/preferred_engine_fragment.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/text_to_speech_preferred_engine_settings">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="pk_tts_preferred_engine_options"
+        settings:controller="com.android.car.settings.tts.PreferredEngineOptionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/premium_sms_access_fragment.xml b/res/xml/premium_sms_access_fragment.xml
new file mode 100644
index 0000000..829cfd9
--- /dev/null
+++ b/res/xml/premium_sms_access_fragment.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/premium_sms_access_title">
+    <Preference
+        android:key="@string/pk_premium_sms_access_description"
+        android:selectable="false"
+        android:summary="@string/premium_sms_access_description"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_premium_sms_access"
+        settings:controller="com.android.car.settings.applications.specialaccess.PremiumSmsAccessPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/reset_app_pref_fragment.xml b/res/xml/reset_app_pref_fragment.xml
new file mode 100644
index 0000000..540d0dd
--- /dev/null
+++ b/res/xml/reset_app_pref_fragment.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/reset_app_pref_title">
+    <Preference
+        android:selectable="false"
+        android:title="@string/reset_app_pref_desc"
+        settings:singleLineTitle="false"/>
+</PreferenceScreen>
diff --git a/res/xml/reset_network_confirm_fragment.xml b/res/xml/reset_network_confirm_fragment.xml
new file mode 100644
index 0000000..e861532
--- /dev/null
+++ b/res/xml/reset_network_confirm_fragment.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  android:title="@string/reset_network_confirm_title">
+    <Preference
+        android:selectable="false"
+        android:title="@string/reset_network_confirm_desc"/>
+</PreferenceScreen>
diff --git a/res/xml/reset_network_fragment.xml b/res/xml/reset_network_fragment.xml
new file mode 100644
index 0000000..789f581
--- /dev/null
+++ b/res/xml/reset_network_fragment.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/reset_network_title">
+    <Preference
+        android:key="@string/pk_reset_network_items"
+        android:selectable="false"
+        android:title="@string/reset_network_desc"
+        settings:controller="com.android.car.settings.system.ResetNetworkItemsPreferenceController"
+        settings:singleLineTitle="false"/>
+    <CheckBoxPreference
+        android:key="@string/pk_reset_esim"
+        android:summary="@string/reset_esim_desc"
+        android:title="@string/reset_esim_title"
+        settings:controller="com.android.car.settings.system.ResetEsimPreferenceController"/>
+    <ListPreference
+        android:key="@string/pk_reset_network_subscription"
+        android:title="@string/reset_network_select"
+        android:widgetLayout="@layout/dropdown_preference_widget"
+        settings:controller="com.android.car.settings.system.ResetNetworkSubscriptionPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/reset_options_fragment.xml b/res/xml/reset_options_fragment.xml
new file mode 100644
index 0000000..3802b46
--- /dev/null
+++ b/res/xml/reset_options_fragment.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/reset_options_title">
+    <Preference
+        android:fragment="com.android.car.settings.system.ResetNetworkFragment"
+        android:key="@string/pk_reset_network"
+        android:title="@string/reset_network_title"
+        settings:controller="com.android.car.settings.system.ResetNetworkEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.system.ResetAppPrefFragment"
+        android:key="@string/pk_reset_app_pref"
+        android:title="@string/reset_app_pref_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.system.MasterClearFragment"
+        android:key="@string/pk_master_clear"
+        android:title="@string/master_clear_title"
+        settings:controller="com.android.car.settings.system.MasterClearEntryPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/security_settings_fragment.xml b/res/xml/security_settings_fragment.xml
new file mode 100644
index 0000000..b71d532
--- /dev/null
+++ b/res/xml/security_settings_fragment.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/security_settings_title">
+    <Preference
+        android:icon="@drawable/ic_lock"
+        android:key="@string/pk_choose_lock_type"
+        android:title="@string/lock_settings_picker_title"
+        settings:controller="com.android.car.settings.security.SecurityEntryPreferenceController">
+        <intent
+            android:targetClass="com.android.car.settings.security.SettingsScreenLockActivity"
+            android:targetPackage="com.android.car.settings"/>
+    </Preference>
+    <Preference
+        android:fragment="com.android.car.settings.security.ChooseTrustedDeviceFragment"
+        android:icon="@drawable/ic_lock"
+        android:key="@string/pk_trusted_device"
+        android:title="@string/trusted_device"
+        settings:controller="com.android.car.settings.security.TrustedDeviceEntryPreferenceController"/>
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/sound_settings_fragment.xml b/res/xml/sound_settings_fragment.xml
new file mode 100644
index 0000000..3aab43f
--- /dev/null
+++ b/res/xml/sound_settings_fragment.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/sound_settings">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_volume_settings"
+        settings:controller="com.android.car.settings.sound.VolumeSettingsPreferenceController"/>
+    <com.android.car.settings.sound.RingtonePreference
+        android:key="@string/pk_default_ringtone"
+        android:ringtoneType="ringtone"
+        android:title="@string/ringtone_title"
+        settings:controller="com.android.car.settings.sound.RingtonePreferenceController"/>
+    <com.android.car.settings.sound.RingtonePreference
+        android:key="@string/pk_default_notification"
+        android:ringtoneType="notification"
+        android:title="@string/notification_ringtone_title"
+        settings:controller="com.android.car.settings.sound.RingtonePreferenceController"/>
+    <com.android.car.settings.sound.RingtonePreference
+        android:key="@string/pk_default_alarm"
+        android:ringtoneType="alarm"
+        android:title="@string/alarm_ringtone_title"
+        settings:controller="com.android.car.settings.sound.RingtonePreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_sounds_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.ia.sound"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/special_access_fragment.xml b/res/xml/special_access_fragment.xml
new file mode 100644
index 0000000..e6cadfb
--- /dev/null
+++ b/res/xml/special_access_fragment.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/special_access">
+    <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.ModifySystemSettingsFragment"
+        android:key="@string/pk_modify_system_settings_entry"
+        android:title="@string/modify_system_settings_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.NotificationAccessFragment"
+        android:key="@string/pk_notification_access_entry"
+        android:title="@string/notification_access_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.PremiumSmsAccessFragment"
+        android:key="@string/pk_premium_sms_access_entry"
+        android:title="@string/premium_sms_access_title"
+        settings:controller="com.android.car.settings.applications.specialaccess.PremiumSmsAccessEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.UsageAccessFragment"
+        android:key="@string/pk_usage_access_entry"
+        android:title="@string/usage_access_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.applications.specialaccess.WifiControlFragment"
+        android:key="@string/pk_wifi_control_entry"
+        android:title="@string/wifi_control_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:key="@string/pk_more_special_access"
+        android:title="@string/more_special_access_title"
+        settings:controller="com.android.car.settings.applications.specialaccess.MoreSpecialAccessPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/storage_media_category_detail_fragment.xml b/res/xml/storage_media_category_detail_fragment.xml
new file mode 100644
index 0000000..14f7207
--- /dev/null
+++ b/res/xml/storage_media_category_detail_fragment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/storage_music_audio">
+
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_storage_music_audio_details"
+        settings:controller="com.android.car.settings.storage.StorageMediaCategoryDetailPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/storage_other_category_detail_fragment.xml b/res/xml/storage_other_category_detail_fragment.xml
new file mode 100644
index 0000000..b01877c
--- /dev/null
+++ b/res/xml/storage_other_category_detail_fragment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/storage_other_apps">
+
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_storage_other_apps_details"
+        settings:controller="com.android.car.settings.storage.StorageApplicationListPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/storage_settings_fragment.xml b/res/xml/storage_settings_fragment.xml
new file mode 100644
index 0000000..1d06a1f
--- /dev/null
+++ b/res/xml/storage_settings_fragment.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/storage_settings_title">
+    <com.android.car.settings.common.ProgressBarPreference
+        android:icon="@drawable/ic_media_stream"
+        android:key="@string/pk_storage_music_audio"
+        android:layout="@layout/progress_bar_preference"
+        android:title="@string/storage_music_audio"
+        settings:controller="com.android.car.settings.storage.StorageMediaCategoryPreferenceController"/>
+    <com.android.car.settings.common.ProgressBarPreference
+        android:fragment="com.android.car.settings.storage.StorageOtherCategoryDetailFragment"
+        android:icon="@drawable/ic_storage_apps"
+        android:key="@string/pk_storage_other_apps"
+        android:layout="@layout/progress_bar_preference"
+        android:title="@string/storage_other_apps"
+        settings:controller="com.android.car.settings.storage.StorageOtherCategoryPreferenceController"/>
+    <com.android.car.settings.common.ProgressBarPreference
+        android:icon="@drawable/ic_folder"
+        android:key="@string/pk_storage_files"
+        android:layout="@layout/progress_bar_preference"
+        android:title="@string/storage_files"
+        settings:controller="com.android.car.settings.storage.StorageFileCategoryPreferenceController"/>
+    <com.android.car.settings.common.ProgressBarPreference
+        android:icon="@drawable/ic_system_update"
+        android:key="@string/pk_storage_system"
+        android:layout="@layout/progress_bar_preference"
+        android:title="@string/storage_system"
+        settings:controller="com.android.car.settings.storage.StorageSystemCategoryPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/system_settings_fragment.xml b/res/xml/system_settings_fragment.xml
new file mode 100644
index 0000000..1ce163a
--- /dev/null
+++ b/res/xml/system_settings_fragment.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/system_setting_title">
+    <Preference
+        android:fragment="com.android.car.settings.language.LanguagesAndInputFragment"
+        android:key="@string/pk_languages_and_input_settings"
+        android:icon="@drawable/ic_language"
+        android:title="@string/languages_and_input_settings"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:icon="@drawable/ic_system_update"
+        android:key="@string/pk_system_update_settings"
+        android:title="@string/system_update_settings_title"
+        settings:controller="com.android.car.settings.system.SystemUpdatePreferenceController">
+        <intent android:action="android.settings.SYSTEM_UPDATE_SETTINGS"/>
+    </Preference>
+    <Preference
+        android:fragment="com.android.car.settings.system.AboutSettingsFragment"
+        android:icon="@drawable/ic_settings_about"
+        android:key="@string/pk_about_settings_entry"
+        android:title="@string/about_settings"
+        settings:controller="com.android.car.settings.system.AboutSettingsEntryPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.system.LegalInformationFragment"
+        android:icon="@drawable/ic_settings_about"
+        android:key="@string/pk_legal_information_entry"
+        android:title="@string/legal_information"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.system.ResetOptionsFragment"
+        android:icon="@drawable/ic_restore"
+        android:key="@string/pk_reset_options_entry"
+        android:summary="@string/reset_options_summary"
+        android:title="@string/reset_options_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:icon="@drawable/ic_settings_development"
+        android:key="@string/pk_developer_options_entry"
+        android:title="@string/developer_options_settings"
+        settings:controller="com.android.car.settings.system.DeveloperOptionsEntryPreferenceController">
+        <intent android:action="android.settings.APPLICATION_DEVELOPMENT_SETTINGS"/>
+    </Preference>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_system_extra_settings"
+        settings:controller="com.android.car.settings.common.ExtraSettingsPreferenceController">
+        <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+            <extra android:name="com.android.settings.category"
+                   android:value="com.android.settings.category.ia.system"/>
+        </intent>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/text_to_speech_output_fragment.xml b/res/xml/text_to_speech_output_fragment.xml
new file mode 100644
index 0000000..fcf8f94
--- /dev/null
+++ b/res/xml/text_to_speech_output_fragment.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/text_to_speech_settings">
+    <com.android.car.settings.common.ButtonPreference
+        android:fragment="com.android.car.settings.tts.PreferredEngineFragment"
+        android:key="@string/pk_tts_preferred_engine_entry"
+        android:title="@string/text_to_speech_preferred_engine_settings"
+        android:widgetLayout="@layout/details_preference_widget"
+        settings:controller="com.android.car.settings.tts.PreferredEngineEntryPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_tts_playback_group"
+        settings:controller="com.android.car.settings.tts.TtsPlaybackPreferenceController">
+        <ListPreference
+            android:key="@string/pk_tts_default_language"
+            android:persistent="false"
+            android:summary="@string/tts_default_lang_summary"
+            android:title="@string/tts_default_lang_title"/>
+        <com.android.car.settings.common.SeekBarPreference
+            android:key="@string/pk_tts_speech_rate"
+            android:title="@string/tts_speech_rate"/>
+        <com.android.car.settings.common.SeekBarPreference
+            android:key="@string/pk_tts_pitch"
+            android:title="@string/tts_pitch"/>
+        <Preference
+            android:key="@string/pk_tts_reset"
+            android:title="@string/tts_reset"/>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+</PreferenceScreen>
diff --git a/res/xml/timezone_picker_screen_fragment.xml b/res/xml/timezone_picker_screen_fragment.xml
new file mode 100644
index 0000000..fab12a8
--- /dev/null
+++ b/res/xml/timezone_picker_screen_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/date_time_set_timezone_title">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_timezone_picker_screen"
+        settings:controller="com.android.car.settings.datetime.TimeZonePickerScreenPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/units_fragment.xml b/res/xml/units_fragment.xml
new file mode 100644
index 0000000..ab1d687
--- /dev/null
+++ b/res/xml/units_fragment.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/units_settings" >
+    <ListPreference
+        android:key="@string/pk_units_speed"
+        android:title="@string/units_speed_title"
+        android:dialogTitle="@string/units_speed_title"
+        settings:controller="com.android.car.settings.units.UnitsSpeedPreferenceController"/>
+
+    <ListPreference
+        android:key="@string/pk_units_distance"
+        android:title="@string/units_distance_title"
+        android:dialogTitle="@string/units_distance_title"
+        settings:controller="com.android.car.settings.units.UnitsDistancePreferenceController"/>
+
+    <ListPreference
+        android:key="@string/pk_units_fuel_consumption"
+        android:title="@string/units_fuel_consumption_title"
+        android:dialogTitle="@string/units_fuel_consumption_title"
+        settings:controller="com.android.car.settings.units.UnitsFuelConsumptionPreferenceController"/>
+
+    <ListPreference
+        android:key="@string/pk_units_energy_consumption"
+        android:title="@string/units_energy_consumption_title"
+        android:dialogTitle="@string/units_energy_consumption_title"
+        settings:controller="com.android.car.settings.units.UnitsEnergyConsumptionPreferenceController"/>
+
+    <ListPreference
+        android:key="@string/pk_units_temperature"
+        android:title="@string/units_temperature_title"
+        android:dialogTitle="@string/units_temperature_title"
+        settings:controller="com.android.car.settings.units.UnitsTemperaturePreferenceController"/>
+
+    <ListPreference
+        android:key="@string/pk_units_volume"
+        android:title="@string/units_volume_title"
+        android:dialogTitle="@string/units_volume_title"
+        settings:controller="com.android.car.settings.units.UnitsVolumePreferenceController"/>
+
+    <ListPreference
+        android:key="@string/pk_units_pressure"
+        android:title="@string/units_pressure_title"
+        android:dialogTitle="@string/units_pressure_title"
+        settings:controller="com.android.car.settings.units.UnitsPressurePreferenceController"/>
+
+</PreferenceScreen>
diff --git a/res/xml/usage_access_fragment.xml b/res/xml/usage_access_fragment.xml
new file mode 100644
index 0000000..a1ac3e2
--- /dev/null
+++ b/res/xml/usage_access_fragment.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/usage_access_title">
+    <Preference
+        android:key="@string/pk_usage_access_description"
+        android:selectable="false"
+        android:summary="@string/usage_access_description"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_usage_access"
+        settings:controller="com.android.car.settings.applications.specialaccess.AppOpsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/user_details_fragment.xml b/res/xml/user_details_fragment.xml
new file mode 100644
index 0000000..1317453
--- /dev/null
+++ b/res/xml/user_details_fragment.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <com.android.car.settings.common.ButtonPreference
+        android:key="@string/pk_edit_user_name_entry"
+        android:selectable="false"
+        android:widgetLayout="@layout/edit_icon_preference_widget"
+        settings:controller="com.android.car.settings.users.EditUserNameEntryPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/user_details_permissions_fragment.xml b/res/xml/user_details_permissions_fragment.xml
new file mode 100644
index 0000000..a71a604
--- /dev/null
+++ b/res/xml/user_details_permissions_fragment.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <com.android.car.settings.common.ButtonPreference
+        android:key="@string/pk_make_user_admin"
+        android:selectable="false"
+        android:title="@string/grant_admin_permissions_title"
+        android:widgetLayout="@layout/make_admin_preference_widget"
+        settings:controller="com.android.car.settings.users.MakeAdminPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_user_permissions"
+        settings:controller="com.android.car.settings.users.PermissionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/users_list_fragment.xml b/res/xml/users_list_fragment.xml
new file mode 100644
index 0000000..d483ffe
--- /dev/null
+++ b/res/xml/users_list_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/users_list_title">
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_users_list"
+        settings:controller="com.android.car.settings.users.UsersListPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/wifi_control_fragment.xml b/res/xml/wifi_control_fragment.xml
new file mode 100644
index 0000000..58d4b0e
--- /dev/null
+++ b/res/xml/wifi_control_fragment.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/wifi_control_title">
+    <Preference
+        android:key="@string/pk_wifi_control_description"
+        android:selectable="false"
+        android:summary="@string/wifi_control_description"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_wifi_control"
+        settings:controller="com.android.car.settings.applications.specialaccess.WifiControlPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/wifi_detail_fragment.xml b/res/xml/wifi_detail_fragment.xml
new file mode 100644
index 0000000..a681f4b
--- /dev/null
+++ b/res/xml/wifi_detail_fragment.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/wifi_settings">
+    <!-- General Details Category -->
+    <com.android.car.settings.common.LogicalPreferenceGroup>
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_signal_strength"
+            android:selectable="false"
+            android:title="@string/wifi_signal_strength"
+            settings:controller="com.android.car.settings.wifi.details.WifiSignalStrengthPreferenceController"/>
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_frequency"
+            android:selectable="false"
+            android:title="@string/wifi_frequency"
+            settings:controller="com.android.car.settings.wifi.details.WifiFrequencyPreferenceController"/>
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_security"
+            android:selectable="false"
+            android:title="@string/wifi_security"
+            settings:controller="com.android.car.settings.wifi.details.WifiSecurityPreferenceController"/>
+    </com.android.car.settings.common.LogicalPreferenceGroup>
+
+    <!-- Ip Details Category -->
+    <PreferenceCategory
+        android:title="@string/wifi_network_detail">
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_mac_address"
+            android:selectable="false"
+            android:title="@string/wifi_mac_address"
+            settings:controller="com.android.car.settings.wifi.details.WifiMacAddressPreferenceController"/>
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_ip"
+            android:selectable="false"
+            android:title="@string/wifi_ip_address"
+            settings:controller="com.android.car.settings.wifi.details.WifiIpAddressPreferenceController"/>
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_gateway"
+            android:selectable="false"
+            android:title="@string/wifi_gateway"
+            settings:controller="com.android.car.settings.wifi.details.WifiGatewayPreferenceController"/>
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_subnet_mask"
+            android:selectable="false"
+            android:title="@string/wifi_subnet_mask"
+            settings:controller="com.android.car.settings.wifi.details.WifiSubnetPreferenceController"/>
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_dns"
+            android:selectable="false"
+            android:title="@string/wifi_dns"
+            settings:controller="com.android.car.settings.wifi.details.WifiDnsPreferenceController"/>
+        <com.android.car.settings.wifi.details.WifiDetailsPreference
+            android:key="@string/pk_wifi_link_speed"
+            android:selectable="false"
+            android:title="@string/wifi_speed"
+            settings:controller="com.android.car.settings.wifi.details.WifiLinkSpeedPreferenceController"/>
+    </PreferenceCategory>
+
+    <!-- IPv6 Details -->
+    <PreferenceCategory
+        android:selectable="false"
+        android:title="@string/wifi_details_ipv6_address_header">
+        <Preference
+            android:key="@string/pk_wifi_ipv6"
+            android:selectable="false"
+            settings:controller="com.android.car.settings.wifi.details.WifiIpv6AddressPreferenceController"/>
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/res/xml/wifi_list_fragment.xml b/res/xml/wifi_list_fragment.xml
new file mode 100644
index 0000000..bcd287f
--- /dev/null
+++ b/res/xml/wifi_list_fragment.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/wifi_settings">
+    <Preference
+        android:key="@string/pk_wifi_status"
+        settings:controller="com.android.car.settings.wifi.WifiStatusPreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="@string/pk_wifi_list"
+        settings:controller="com.android.car.settings.wifi.AccessPointListPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.wifi.AddWifiFragment"
+        android:icon="@drawable/ic_add"
+        android:key="@string/pk_add_wifi"
+        android:title="@string/wifi_setup_add_network"
+        settings:controller="com.android.car.settings.wifi.AddWifiPreferenceController"/>
+    <Preference
+        android:fragment="com.android.car.settings.wifi.preferences.WifiPreferencesFragment"
+        android:key="@string/pk_wifi_preferences"
+        android:title="@string/wifi_preferences_title"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/wifi_preferences_fragment.xml b/res/xml/wifi_preferences_fragment.xml
new file mode 100644
index 0000000..f19d174
--- /dev/null
+++ b/res/xml/wifi_preferences_fragment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="@string/wifi_preferences_title">
+    <SwitchPreference
+        android:key="@string/pk_enable_wifi_wakeup"
+        android:title="@string/wifi_wakeup"
+        android:icon="@drawable/ic_settings_auto_wifi"
+        android:summary="@string/wifi_wakeup_summary"
+        settings:controller="com.android.car.settings.wifi.preferences.WifiWakeupTogglePreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_wifi_cellular_fallback"
+        android:summary="@string/wifi_cellular_fallback_summary"
+        android:title="@string/wifi_cellular_fallback_title"
+        settings:controller="com.android.car.settings.wifi.preferences.CellularFallbackTogglePreferenceController"/>
+</PreferenceScreen>
diff --git a/res/xml/wifi_tether_fragment.xml b/res/xml/wifi_tether_fragment.xml
new file mode 100644
index 0000000..a0d1bcf
--- /dev/null
+++ b/res/xml/wifi_tether_fragment.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:title="@string/tether_settings_title_all" >
+    <com.android.car.settings.common.ValidatedEditTextPreference
+        android:key="@string/pk_wifi_tether_name"
+        android:title="@string/wifi_hotspot_name_title"
+        settings:controller="com.android.car.settings.wifi.WifiTetherNamePreferenceController"/>
+    <ListPreference
+        android:key="@string/pk_wifi_tether_security"
+        android:title="@string/wifi_hotspot_security_title"
+        android:dialogTitle="@string/wifi_hotspot_security_title"
+        android:persistent="false"
+        settings:controller="com.android.car.settings.wifi.WifiTetherSecurityPreferenceController"/>
+    <com.android.car.settings.common.ValidatedEditTextPreference
+        android:key="@string/pk_wifi_tether_password"
+        android:title="@string/wifi_hotspot_password_title"
+        android:persistent="false"
+        settings:controller="com.android.car.settings.wifi.WifiTetherPasswordPreferenceController"/>
+    <SwitchPreference
+        android:key="@string/pk_wifi_tether_auto_off"
+        android:title="@string/wifi_hotspot_auto_off_title"
+        android:summary="@string/wifi_hotspot_auto_off_summary"
+        android:persistent="false"
+        settings:controller="com.android.car.settings.wifi.WifiTetherAutoOffPreferenceController"/>
+    <ListPreference
+        android:key="@string/pk_wifi_tether_ap_band"
+        android:title="@string/wifi_hotspot_ap_band_title"
+        android:dialogTitle="@string/wifi_hotspot_ap_band_title"
+        android:persistent="false"
+        settings:controller="com.android.car.settings.wifi.WifiTetherApBandPreferenceController"/>
+</PreferenceScreen>
diff --git a/src/com/android/car/settings/FallbackHome.java b/src/com/android/car/settings/FallbackHome.java
new file mode 100644
index 0000000..41ef281
--- /dev/null
+++ b/src/com/android/car/settings/FallbackHome.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2018 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.car.settings;
+
+import android.app.Activity;
+import android.app.WallpaperColors;
+import android.app.WallpaperManager;
+import android.app.WallpaperManager.OnColorsChangedListener;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.PowerManager;
+import android.os.SystemClock;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.view.View;
+import android.view.WindowManager.LayoutParams;
+import android.view.animation.AnimationUtils;
+
+import com.android.car.settings.common.Logger;
+
+import java.util.Objects;
+
+/**
+ * Copied over from phone settings. This covers the fallback case where no launcher is available.
+ */
+public class FallbackHome extends Activity {
+    private static final Logger LOG = new Logger(FallbackHome.class);
+    private static final int PROGRESS_TIMEOUT = 2000;
+
+    private boolean mProvisioned;
+    private WallpaperManager mWallManager;
+
+    private final Runnable mProgressTimeoutRunnable = () -> {
+        View v = getLayoutInflater().inflate(
+                R.layout.fallback_home_finishing_boot, null /* root */);
+        setContentView(v);
+        v.setAlpha(0f);
+        v.animate()
+                .alpha(1f)
+                .setDuration(500)
+                .setInterpolator(AnimationUtils.loadInterpolator(
+                        this, android.R.interpolator.fast_out_slow_in))
+                .start();
+        getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
+    };
+
+    private final OnColorsChangedListener mColorsChangedListener = new OnColorsChangedListener() {
+        @Override
+        public void onColorsChanged(WallpaperColors colors, int which) {
+            if (colors != null) {
+                View decorView = getWindow().getDecorView();
+                decorView.setSystemUiVisibility(
+                        updateVisibilityFlagsFromColors(colors, decorView.getSystemUiVisibility()));
+                mWallManager.removeOnColorsChangedListener(this);
+            }
+        }
+    };
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Set ourselves totally black before the device is provisioned so that
+        // we don't flash the wallpaper before SUW
+        mProvisioned = Settings.Global.getInt(getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+        int flags;
+        if (!mProvisioned) {
+            setTheme(R.style.FallbackHome_SetupWizard);
+            flags = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+        } else {
+            flags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
+        }
+
+        // Set the system ui flags to light status bar if the wallpaper supports dark text to match
+        // current system ui color tints. Use a listener to wait for colors if not ready yet.
+        mWallManager = getSystemService(WallpaperManager.class);
+        if (mWallManager == null) {
+            LOG.w("Wallpaper manager isn't ready, can't listen to color changes!");
+        } else {
+            WallpaperColors colors = mWallManager.getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
+            if (colors == null) {
+                mWallManager.addOnColorsChangedListener(mColorsChangedListener, null /* handler */);
+            } else {
+                flags = updateVisibilityFlagsFromColors(colors, flags);
+            }
+        }
+        getWindow().getDecorView().setSystemUiVisibility(flags);
+
+        registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED));
+        maybeFinish();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (mProvisioned) {
+            mHandler.postDelayed(mProgressTimeoutRunnable, PROGRESS_TIMEOUT);
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        mHandler.removeCallbacks(mProgressTimeoutRunnable);
+    }
+
+    protected void onDestroy() {
+        super.onDestroy();
+        unregisterReceiver(mReceiver);
+        if (mWallManager != null) {
+            mWallManager.removeOnColorsChangedListener(mColorsChangedListener);
+        }
+    }
+
+    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            maybeFinish();
+        }
+    };
+
+    private void maybeFinish() {
+        if (getSystemService(UserManager.class).isUserUnlocked()) {
+            final Intent homeIntent = new Intent(Intent.ACTION_MAIN)
+                    .addCategory(Intent.CATEGORY_HOME);
+            final ResolveInfo homeInfo = getPackageManager().resolveActivity(homeIntent, 0);
+            if (Objects.equals(getPackageName(), homeInfo.activityInfo.packageName)) {
+                if (UserManager.isSplitSystemUser()
+                        && UserHandle.myUserId() == UserHandle.USER_SYSTEM) {
+                    // This avoids the situation where the system user has no home activity after
+                    // SUW and this activity continues to throw out warnings. See b/28870689.
+                    return;
+                }
+                LOG.d("User unlocked but no home; let's hope someone enables one soon?");
+                mHandler.sendEmptyMessageDelayed(0, 500);
+            } else {
+                LOG.d("User unlocked and real home found; let's go!");
+                getSystemService(PowerManager.class).userActivity(
+                        SystemClock.uptimeMillis(), false);
+                finish();
+            }
+        }
+    }
+
+    private int updateVisibilityFlagsFromColors(WallpaperColors colors, int flags) {
+        if ((colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0) {
+            return flags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
+                    | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
+        }
+        return flags & ~(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)
+                & ~(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
+    }
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            maybeFinish();
+        }
+    };
+}
diff --git a/src/com/android/car/settings/accounts/AccountAutoSyncPreferenceController.java b/src/com/android/car/settings/accounts/AccountAutoSyncPreferenceController.java
new file mode 100644
index 0000000..80d6a83
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountAutoSyncPreferenceController.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.os.UserHandle;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller for the preference that allows the user to toggle automatic syncing of accounts.
+ *
+ * <p>Copied from {@link com.android.settings.users.AutoSyncDataPreferenceController}
+ */
+public class AccountAutoSyncPreferenceController extends PreferenceController<TwoStatePreference> {
+
+    private final UserHandle mUserHandle;
+    /**
+     * Argument key to store a value that indicates whether the account auto sync is being enabled
+     * or disabled.
+     */
+    @VisibleForTesting
+    static final String KEY_ENABLING = "ENABLING";
+    /** Argument key to store user handle. */
+    @VisibleForTesting
+    static final String KEY_USER_HANDLE = "USER_HANDLE";
+
+    @VisibleForTesting
+    final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+        boolean enabling = arguments.getBoolean(KEY_ENABLING);
+        UserHandle userHandle = arguments.getParcelable(KEY_USER_HANDLE);
+        ContentResolver.setMasterSyncAutomaticallyAsUser(enabling, userHandle.getIdentifier());
+        getPreference().setChecked(enabling);
+    };
+
+    public AccountAutoSyncPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        CarUserManagerHelper carUserManagerHelper = new CarUserManagerHelper(context);
+        mUserHandle = carUserManagerHelper.getCurrentProcessUserInfo().getUserHandle();
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(ContentResolver.getMasterSyncAutomaticallyAsUser(
+                mUserHandle.getIdentifier()));
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        // If the dialog is still up, reattach the preference
+        ConfirmationDialogFragment dialog =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG);
+
+        ConfirmationDialogFragment.resetListeners(dialog, mConfirmListener, /* rejectListener= */
+                null);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object checked) {
+        getFragmentController().showDialog(
+                getAutoSyncChangeConfirmationDialogFragment((boolean) checked),
+                ConfirmationDialogFragment.TAG);
+        // The dialog will change the state of the preference if the user confirms, so don't handle
+        // it here
+        return false;
+    }
+
+    private ConfirmationDialogFragment getAutoSyncChangeConfirmationDialogFragment(
+            boolean enabling) {
+        int dialogTitle;
+        int dialogMessage;
+
+        if (enabling) {
+            dialogTitle = R.string.data_usage_auto_sync_on_dialog_title;
+            dialogMessage = R.string.data_usage_auto_sync_on_dialog;
+        } else {
+            dialogTitle = R.string.data_usage_auto_sync_off_dialog_title;
+            dialogMessage = R.string.data_usage_auto_sync_off_dialog;
+        }
+
+        ConfirmationDialogFragment dialogFragment =
+                new ConfirmationDialogFragment.Builder(getContext())
+                        .setTitle(dialogTitle).setMessage(dialogMessage)
+                        .setPositiveButton(android.R.string.ok, mConfirmListener)
+                        .setNegativeButton(android.R.string.cancel, /* rejectListener= */ null)
+                        .addArgumentBoolean(KEY_ENABLING, enabling)
+                        .addArgumentParcelable(KEY_USER_HANDLE, mUserHandle)
+                        .build();
+
+        return dialogFragment;
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/car/settings/accounts/AccountDetailsFragment.java b/src/com/android/car/settings/accounts/AccountDetailsFragment.java
index df9c5c6..465cde8 100644
--- a/src/com/android/car/settings/accounts/AccountDetailsFragment.java
+++ b/src/com/android/car/settings/accounts/AccountDetailsFragment.java
@@ -18,144 +18,167 @@
 import android.accounts.Account;
 import android.accounts.AccountManager;
 import android.accounts.AccountManagerCallback;
-import android.accounts.AccountManagerFuture;
 import android.accounts.AuthenticatorException;
 import android.accounts.OperationCanceledException;
 import android.app.Activity;
+import android.app.AlertDialog;
 import android.app.Dialog;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.UserInfo;
-import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.UserHandle;
-import android.text.TextUtils;
+import android.view.View;
 import android.widget.Button;
+import android.widget.TextView;
 
-import androidx.car.app.CarAlertDialog;
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
 import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
+import com.android.car.settings.common.ErrorDialog;
 import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
 import com.android.settingslib.accounts.AuthenticatorHelper;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Arrays;
 
 /**
  * Shows account details, and delete account option.
  */
-public class AccountDetailsFragment extends ListItemSettingsFragment
-        implements AuthenticatorHelper.OnAccountsUpdateListener {
-    public static final String EXTRA_ACCOUNT_INFO = "extra_account_info";
+public class AccountDetailsFragment extends SettingsFragment implements
+        AuthenticatorHelper.OnAccountsUpdateListener {
+    public static final String EXTRA_ACCOUNT = "extra_account";
+    public static final String EXTRA_ACCOUNT_LABEL = "extra_account_label";
     public static final String EXTRA_USER_INFO = "extra_user_info";
 
     private Account mAccount;
     private UserInfo mUserInfo;
-    private ListItemProvider mItemProvider;
-    private AccountManagerHelper mAccountManagerHelper;
+    private AuthenticatorHelper mAuthenticatorHelper;
 
-    public static AccountDetailsFragment newInstance(
-            Account account, UserInfo userInfo) {
+    /**
+     * Creates a new AccountDetailsFragment.
+     *
+     * <p>Passes the provided account, label, and user info to the fragment via fragment arguments.
+     */
+    public static AccountDetailsFragment newInstance(Account account, CharSequence label,
+            UserInfo userInfo) {
         AccountDetailsFragment
                 accountDetailsFragment = new AccountDetailsFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_TITLE_ID, R.string.account_details_title);
-        bundle.putParcelable(EXTRA_ACCOUNT_INFO, account);
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(EXTRA_ACCOUNT, account);
+        bundle.putCharSequence(EXTRA_ACCOUNT_LABEL, label);
         bundle.putParcelable(EXTRA_USER_INFO, userInfo);
         accountDetailsFragment.setArguments(bundle);
         return accountDetailsFragment;
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mAccount = getArguments().getParcelable(EXTRA_ACCOUNT_INFO);
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.account_details_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        mAccount = getArguments().getParcelable(EXTRA_ACCOUNT);
         mUserInfo = getArguments().getParcelable(EXTRA_USER_INFO);
+
+        use(AccountDetailsPreferenceController.class, R.string.pk_account_details)
+                .setAccount(mAccount);
+        use(AccountDetailsPreferenceController.class, R.string.pk_account_details)
+                .setUserHandle(mUserInfo.getUserHandle());
+
+        use(AccountSyncPreferenceController.class, R.string.pk_account_sync)
+                .setAccount(mAccount);
+        use(AccountDetailsSettingController.class, R.string.pk_account_settings)
+                .setAccount(mAccount);
+        use(AccountSyncPreferenceController.class, R.string.pk_account_sync)
+                .setUserHandle(mUserInfo.getUserHandle());
     }
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
-        // Should be created before calling getListItem().
-        mAccountManagerHelper = new AccountManagerHelper(getContext(), this);
-        mAccountManagerHelper.startListeningToAccountUpdates();
-
-        mItemProvider = new ListItemProvider.ListProvider(getListItems());
-
-        // Super is called only AFTER item provider is instantiated, because
-        // super.onActivityCreated calls getItemProvider().
         super.onActivityCreated(savedInstanceState);
 
-        // Title was set in super.onActivityCreated, but override if account label is available.
-        setFragmentTitle();
+        // Set the fragment's title
+        TextView titleView = requireActivity().findViewById(R.id.title);
+        titleView.setText(getArguments().getCharSequence(EXTRA_ACCOUNT_LABEL));
 
-        showRemoveButton();
+        // Enable the remove account button if the user is allowed to modify accounts.
+        Button removeAccountButton = requireActivity().findViewById(R.id.action_button1);
+        if (new CarUserManagerHelper(getContext()).canCurrentProcessModifyAccounts()) {
+            removeAccountButton.setText(R.string.remove_button);
+            removeAccountButton.setOnClickListener(v -> onRemoveAccountClicked());
+        } else {
+            removeAccountButton.setVisibility(View.GONE);
+        }
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        mAuthenticatorHelper = new AuthenticatorHelper(getContext(), mUserInfo.getUserHandle(),
+                this);
+        mAuthenticatorHelper.listenToAccountUpdates();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mAuthenticatorHelper.stopListeningToAccountUpdates();
     }
 
     @Override
     public void onAccountsUpdate(UserHandle userHandle) {
-        if (!mAccountManagerHelper.accountExists(mAccount)) {
+        if (!accountExists()) {
             // The account was deleted. Pop back.
-            getFragmentController().goBack();
+            goBack();
         }
     }
 
-    @Override
-    public ListItemProvider getItemProvider() {
-        return mItemProvider;
-    }
-
-    private void showRemoveButton() {
-        Button removeAccountBtn = getActivity().findViewById(R.id.action_button1);
-        removeAccountBtn.setText(R.string.remove_button);
-        removeAccountBtn.setOnClickListener(v -> removeAccount());
-    }
-
-    private void setFragmentTitle() {
-        CharSequence accountLabel = mAccountManagerHelper.getLabelForType(mAccount.type);
-        if (!TextUtils.isEmpty(accountLabel)) {
-            setTitle(accountLabel);
+    /** Returns whether the account being shown by this fragment still exists. */
+    @VisibleForTesting
+    boolean accountExists() {
+        if (mAccount == null) {
+            return false;
         }
+
+        Account[] accounts = AccountManager.get(getContext()).getAccountsByTypeAsUser(mAccount.type,
+                mUserInfo.getUserHandle());
+
+        return Arrays.asList(accounts).contains(mAccount);
     }
 
-    private List<ListItem> getListItems() {
-        Drawable icon = mAccountManagerHelper.getDrawableForType(mAccount.type);
-
-        TextListItem item = new TextListItem(getContext());
-        item.setPrimaryActionIcon(icon, /* useLargeIcon= */ false);
-        item.setTitle(mAccount.name);
-
-        List<ListItem> items = new ArrayList<>();
-        items.add(item);
-        return items;
-    }
-
-    public void removeAccount() {
-        ConfirmRemoveAccountDialog.show(this, mAccount, mUserInfo.getUserHandle());
+    private void onRemoveAccountClicked() {
+        ConfirmRemoveAccountDialogFragment.show(this, mAccount, mUserInfo.getUserHandle());
     }
 
     /**
      * Dialog to confirm with user about account removal
      */
-    public static class ConfirmRemoveAccountDialog extends DialogFragment implements
+    public static class ConfirmRemoveAccountDialogFragment extends DialogFragment implements
             DialogInterface.OnClickListener {
         private static final String KEY_ACCOUNT = "account";
         private static final String DIALOG_TAG = "confirmRemoveAccount";
-        private static final Logger LOG = new Logger(ConfirmRemoveAccountDialog.class);
-        private Account mAccount;
-        private UserHandle mUserHandle;
-
+        private static final Logger LOG = new Logger(ConfirmRemoveAccountDialogFragment.class);
         private final AccountManagerCallback<Bundle> mCallback =
-            new AccountManagerCallback<Bundle>() {
-                @Override
-                public void run(AccountManagerFuture<Bundle> future) {
+                future -> {
                     // If already out of this screen, don't proceed.
                     if (!getTargetFragment().isResumed()) {
                         return;
@@ -164,22 +187,26 @@
                     boolean success = false;
                     try {
                         success =
-                                future.getResult().getBoolean(AccountManager.KEY_BOOLEAN_RESULT);
+                                future.getResult().getBoolean(
+                                        AccountManager.KEY_BOOLEAN_RESULT);
                     } catch (OperationCanceledException | IOException | AuthenticatorException e) {
                         LOG.v("removeAccount error: " + e);
                     }
                     final Activity activity = getTargetFragment().getActivity();
                     if (!success && activity != null && !activity.isFinishing()) {
-                        RemoveAccountFailureDialog.show(getTargetFragment());
+                        ErrorDialog.show(getTargetFragment(),
+                                R.string.remove_account_error_title);
                     } else {
                         getTargetFragment().getFragmentManager().popBackStack();
                     }
-                }
-            };
+                };
+        private Account mAccount;
+        private UserHandle mUserHandle;
 
         public static void show(
                 Fragment parent, Account account, UserHandle userHandle) {
-            final ConfirmRemoveAccountDialog dialog = new ConfirmRemoveAccountDialog();
+            final ConfirmRemoveAccountDialogFragment dialog =
+                    new ConfirmRemoveAccountDialogFragment();
             Bundle bundle = new Bundle();
             bundle.putParcelable(KEY_ACCOUNT, account);
             bundle.putParcelable(Intent.EXTRA_USER, userHandle);
@@ -198,9 +225,9 @@
 
         @Override
         public Dialog onCreateDialog(Bundle savedInstanceState) {
-            return new CarAlertDialog.Builder(getContext())
+            return new AlertDialog.Builder(getContext())
                     .setTitle(R.string.really_remove_account_title)
-                    .setBody(R.string.really_remove_account_message)
+                    .setMessage(R.string.really_remove_account_message)
                     .setNegativeButton(android.R.string.cancel, null)
                     .setPositiveButton(R.string.remove_account_title, this)
                     .create();
@@ -214,28 +241,4 @@
             dialog.dismiss();
         }
     }
-
-    /**
-     * Dialog to tell user about account removal failure
-     */
-    public static class RemoveAccountFailureDialog extends DialogFragment {
-
-        private static final String DIALOG_TAG = "removeAccountFailed";
-
-        public static void show(Fragment parent) {
-            final RemoveAccountFailureDialog dialog = new RemoveAccountFailureDialog();
-            dialog.setTargetFragment(parent, 0);
-            dialog.show(parent.getFragmentManager(), DIALOG_TAG);
-        }
-
-        @Override
-        public Dialog onCreateDialog(Bundle savedInstanceState) {
-            return new CarAlertDialog.Builder(getContext())
-                    .setTitle(R.string.really_remove_account_title)
-                    .setBody(R.string.remove_account_failed)
-                    .setPositiveButton(android.R.string.ok, null)
-                    .create();
-        }
-
-    }
 }
diff --git a/src/com/android/car/settings/accounts/AccountDetailsPreferenceController.java b/src/com/android/car/settings/accounts/AccountDetailsPreferenceController.java
new file mode 100644
index 0000000..c47efba
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountDetailsPreferenceController.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.accounts.Account;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserHandle;
+
+import androidx.annotation.CallSuper;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.accounts.AuthenticatorHelper;
+
+/** Controller for the preference that shows the details of an account. */
+public class AccountDetailsPreferenceController extends PreferenceController<Preference> {
+    private static final Logger LOG = new Logger(AccountDetailsPreferenceController.class);
+
+    private Account mAccount;
+    private UserHandle mUserHandle;
+
+    public AccountDetailsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Sets the account that the details are shown for. */
+    public void setAccount(Account account) {
+        mAccount = account;
+    }
+
+    /** Returns the account the details are shown for. */
+    public Account getAccount() {
+        return mAccount;
+    }
+
+    /** Sets the UserHandle used by the controller. */
+    public void setUserHandle(UserHandle userHandle) {
+        mUserHandle = userHandle;
+    }
+
+    /** Returns the UserHandle used by the controller. */
+    public UserHandle getUserHandle() {
+        return mUserHandle;
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /**
+     * Verifies that the controller was properly initialized with
+     * {@link #setAccount(Account)} and {@link #setUserHandle(UserHandle)}.
+     *
+     * @throws IllegalStateException if the account or user handle are {@code null}
+     */
+    @Override
+    @CallSuper
+    protected void checkInitialized() {
+        LOG.v("checkInitialized");
+        if (mAccount == null) {
+            throw new IllegalStateException(
+                    "AccountDetailsPreferenceController must be initialized by calling "
+                            + "setAccount(Account)");
+        }
+        if (mUserHandle == null) {
+            throw new IllegalStateException(
+                    "AccountDetailsPreferenceController must be initialized by calling "
+                            + "setUserHandle(UserHandle)");
+        }
+    }
+
+    @Override
+    @CallSuper
+    protected void updateState(Preference preference) {
+        preference.setTitle(mAccount.name);
+        // Get the icon corresponding to the account's type and set it.
+        AuthenticatorHelper helper = new AuthenticatorHelper(getContext(), mUserHandle, null);
+        preference.setIcon(helper.getDrawableForType(getContext(), mAccount.type));
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountDetailsSettingController.java b/src/com/android/car/settings/accounts/AccountDetailsSettingController.java
new file mode 100644
index 0000000..056e643
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountDetailsSettingController.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2019 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.car.settings.accounts;
+
+import android.accounts.Account;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.CallSuper;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.ExtraSettingsPreferenceController;
+import com.android.car.settings.common.FragmentController;
+
+import java.util.Map;
+
+/**
+ * Injects preferences from other system applications at a placeholder location into the account
+ * details fragment. This class is and extension of {@link ExtraSettingsPreferenceController} which
+ * is needed to check what all preferences to show in the account details page.
+ */
+public class AccountDetailsSettingController extends ExtraSettingsPreferenceController {
+
+    private static final String METADATA_IA_ACCOUNT = "com.android.settings.ia.account";
+    private Account mAccount;
+
+    public AccountDetailsSettingController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions restrictionInfo) {
+        super(context, preferenceKey, fragmentController, restrictionInfo);
+    }
+
+    /** Sets the account that the preferences are being shown for. */
+    public void setAccount(Account account) {
+        mAccount = account;
+    }
+
+    @Override
+    @CallSuper
+    protected void checkInitialized() {
+        if (mAccount == null) {
+            throw new IllegalStateException(
+                    "AccountDetailsSettingController must be initialized by calling "
+                            + "setAccount(Account)");
+        }
+    }
+
+    @Override
+    @CallSuper
+    protected void addExtraSettings(Map<Preference, Bundle> preferenceBundleMap) {
+        for (Preference setting : preferenceBundleMap.keySet()) {
+            if (mAccount != null && !mAccount.type.equals(
+                    preferenceBundleMap.get(setting).getString(METADATA_IA_ACCOUNT))) {
+                continue;
+            }
+            getPreference().addPreference(setting);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceController.java b/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceController.java
new file mode 100644
index 0000000..0def505
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceController.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2019 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.car.settings.accounts;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SyncAdapterType;
+import android.content.SyncInfo;
+import android.content.SyncStatusInfo;
+import android.content.SyncStatusObserver;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Controller for the preference that shows information about an account, including info about
+ * failures.
+ */
+public class AccountDetailsWithSyncStatusPreferenceController extends
+        AccountDetailsPreferenceController {
+    private boolean mIsStarted = false;
+    private Object mStatusChangeListenerHandle;
+    private SyncStatusObserver mSyncStatusObserver =
+            which -> ThreadUtils.postOnMainThread(() -> {
+                // The observer call may occur even if the fragment hasn't been started, so
+                // only force an update if the fragment hasn't been stopped.
+                if (mIsStarted) {
+                    refreshUi();
+                }
+            });
+
+    public AccountDetailsWithSyncStatusPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+
+    /**
+     * Registers the account update and sync status change callbacks.
+     */
+    @Override
+    protected void onStartInternal() {
+        mIsStarted = true;
+        mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
+                ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
+                        | ContentResolver.SYNC_OBSERVER_TYPE_STATUS
+                        | ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, mSyncStatusObserver);
+    }
+
+    /**
+     * Unregisters the account update and sync status change callbacks.
+     */
+    @Override
+    protected void onStopInternal() {
+        mIsStarted = false;
+        if (mStatusChangeListenerHandle != null) {
+            ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
+        }
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        super.updateState(preference);
+        if (isSyncFailing()) {
+            preference.setSummary(R.string.sync_is_failing);
+        } else {
+            preference.setSummary("");
+        }
+    }
+
+    private boolean isSyncFailing() {
+        int userId = getUserHandle().getIdentifier();
+        List<SyncInfo> currentSyncs = ContentResolver.getCurrentSyncsAsUser(userId);
+        boolean syncIsFailing = false;
+
+        Set<SyncAdapterType> syncAdapters = AccountSyncHelper.getVisibleSyncAdaptersForAccount(
+                getContext(), getAccount(), getUserHandle());
+        for (SyncAdapterType syncAdapter : syncAdapters) {
+            String authority = syncAdapter.authority;
+
+            SyncStatusInfo status = ContentResolver.getSyncStatusAsUser(getAccount(), authority,
+                    userId);
+            boolean syncEnabled = ContentResolver.getSyncAutomaticallyAsUser(getAccount(),
+                    authority, userId);
+            boolean activelySyncing = AccountSyncHelper.isSyncing(getAccount(), currentSyncs,
+                    authority);
+
+            AccountSyncHelper.SyncState syncState = AccountSyncHelper.getSyncState(status,
+                    syncEnabled, activelySyncing);
+
+            boolean syncIsPending = status != null && status.pending;
+            if (syncState == AccountSyncHelper.SyncState.FAILED && !activelySyncing
+                    && !syncIsPending) {
+                syncIsFailing = true;
+            }
+        }
+
+        return syncIsFailing;
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountListPreferenceController.java b/src/com/android/car/settings/accounts/AccountListPreferenceController.java
new file mode 100644
index 0000000..0f98700
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountListPreferenceController.java
@@ -0,0 +1,278 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+
+import androidx.collection.ArrayMap;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.accounts.AuthenticatorHelper;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Controller for listing accounts.
+ *
+ * <p>Largely derived from {@link com.android.settings.accounts.AccountPreferenceController}
+ */
+public class AccountListPreferenceController extends
+        PreferenceController<PreferenceCategory> implements
+        AuthenticatorHelper.OnAccountsUpdateListener,
+        CarUserManagerHelper.OnUsersUpdateListener {
+    private static final String NO_ACCOUNT_PREF_KEY = "no_accounts_added";
+
+    private final UserInfo mUserInfo;
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final ArrayMap<String, Preference> mPreferences = new ArrayMap<>();
+    private AuthenticatorHelper mAuthenticatorHelper;
+    private String[] mAuthorities;
+
+    public AccountListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mUserInfo = mCarUserManagerHelper.getCurrentProcessUserInfo();
+        mAuthenticatorHelper = new AuthenticatorHelper(context,
+                mUserInfo.getUserHandle(), /* listener= */ this);
+    }
+
+    /** Sets the account authorities that are available. */
+    public void setAuthorities(String[] authorities) {
+        mAuthorities = authorities;
+    }
+
+    @Override
+    protected Class<PreferenceCategory> getPreferenceType() {
+        return PreferenceCategory.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceCategory preference) {
+        forceUpdateAccountsCategory();
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return mCarUserManagerHelper.canCurrentProcessModifyAccounts() ? AVAILABLE
+                : DISABLED_FOR_USER;
+    }
+
+    /**
+     * Registers the account update and user update callbacks.
+     */
+    @Override
+    protected void onStartInternal() {
+        mAuthenticatorHelper.listenToAccountUpdates();
+        mCarUserManagerHelper.registerOnUsersUpdateListener(this);
+    }
+
+    /**
+     * Unregisters the account update and user update callbacks.
+     */
+    @Override
+    protected void onStopInternal() {
+        mAuthenticatorHelper.stopListeningToAccountUpdates();
+        mCarUserManagerHelper.unregisterOnUsersUpdateListener(this);
+    }
+
+    @Override
+    public void onAccountsUpdate(UserHandle userHandle) {
+        if (userHandle.equals(mUserInfo.getUserHandle())) {
+            forceUpdateAccountsCategory();
+        }
+    }
+
+    @Override
+    public void onUsersUpdate() {
+        forceUpdateAccountsCategory();
+    }
+
+    private boolean onAccountPreferenceClicked(AccountPreference preference) {
+        // Show the account's details when an account is clicked on.
+        getFragmentController().launchFragment(AccountDetailsFragment.newInstance(
+                preference.getAccount(), preference.getLabel(), mUserInfo));
+        return true;
+    }
+
+    /** Forces a refresh of the account preferences. */
+    private void forceUpdateAccountsCategory() {
+        // Set the category title and include the user's name
+        getPreference().setTitle(
+                getContext().getString(R.string.account_list_title, mUserInfo.name));
+
+        // Recreate the authentication helper to refresh the list of enabled accounts
+        mAuthenticatorHelper = new AuthenticatorHelper(getContext(), mUserInfo.getUserHandle(),
+                this);
+
+        Set<String> preferencesToRemove = new HashSet<>(mPreferences.keySet());
+        List<? extends Preference> preferences = getAccountPreferences(preferencesToRemove);
+        // Add all preferences that aren't already shown. Manually set the order so that existing
+        // preferences are reordered correctly.
+        for (int i = 0; i < preferences.size(); i++) {
+            Preference pref = preferences.get(i);
+            pref.setOrder(i);
+            mPreferences.put(pref.getKey(), pref);
+            getPreference().addPreference(pref);
+        }
+
+        for (String key : preferencesToRemove) {
+            getPreference().removePreference(mPreferences.get(key));
+            mPreferences.remove(key);
+        }
+    }
+
+    /**
+     * Returns a list of preferences corresponding to the accounts for the current user.
+     *
+     * <p> Derived from
+     * {@link com.android.settings.accounts.AccountPreferenceController#getAccountTypePreferences}
+     *
+     * @param preferencesToRemove the current preferences shown; only preferences to be removed will
+     *                            remain after method execution
+     */
+    private List<? extends Preference> getAccountPreferences(
+            Set<String> preferencesToRemove) {
+        String[] accountTypes = mAuthenticatorHelper.getEnabledAccountTypes();
+        ArrayList<AccountPreference> accountPreferences =
+                new ArrayList<>(accountTypes.length);
+
+        for (int i = 0; i < accountTypes.length; i++) {
+            String accountType = accountTypes[i];
+            // Skip showing any account that does not have any of the requested authorities
+            if (!accountTypeHasAnyRequestedAuthorities(accountType)) {
+                continue;
+            }
+            CharSequence label = mAuthenticatorHelper.getLabelForType(getContext(), accountType);
+            if (label == null) {
+                continue;
+            }
+
+            Account[] accounts = AccountManager.get(getContext())
+                    .getAccountsByTypeAsUser(accountType, mUserInfo.getUserHandle());
+            Drawable icon = mAuthenticatorHelper.getDrawableForType(getContext(), accountType);
+
+            // Add a preference row for each individual account
+            for (Account account : accounts) {
+                String key = AccountPreference.buildKey(account);
+                AccountPreference preference = (AccountPreference) mPreferences.getOrDefault(key,
+                        new AccountPreference(getContext(), account, label, icon));
+                preference.setOnPreferenceClickListener(
+                        (Preference pref) -> onAccountPreferenceClicked((AccountPreference) pref));
+
+                accountPreferences.add(preference);
+                preferencesToRemove.remove(key);
+            }
+            mAuthenticatorHelper.preloadDrawableForType(getContext(), accountType);
+        }
+
+        // If there are no accounts, return the "no account added" preference.
+        if (accountPreferences.isEmpty()) {
+            preferencesToRemove.remove(NO_ACCOUNT_PREF_KEY);
+            return Arrays.asList(mPreferences.getOrDefault(NO_ACCOUNT_PREF_KEY,
+                    createNoAccountsAddedPreference()));
+        }
+
+        Collections.sort(accountPreferences, Comparator.comparing(
+                (AccountPreference a) -> a.getSummary().toString())
+                .thenComparing((AccountPreference a) -> a.getTitle().toString()));
+
+        return accountPreferences;
+    }
+
+    private Preference createNoAccountsAddedPreference() {
+        Preference emptyPreference = new Preference(getContext());
+        emptyPreference.setTitle(R.string.no_accounts_added);
+        emptyPreference.setKey(NO_ACCOUNT_PREF_KEY);
+        emptyPreference.setSelectable(false);
+
+        return emptyPreference;
+    }
+
+    /**
+     * Returns whether the account type has any of the authorities requested by the caller.
+     *
+     * <p> Derived from {@link AccountPreferenceController#accountTypeHasAnyRequestedAuthorities}
+     */
+    private boolean accountTypeHasAnyRequestedAuthorities(String accountType) {
+        if (mAuthorities == null || mAuthorities.length == 0) {
+            // No authorities required
+            return true;
+        }
+        ArrayList<String> authoritiesForType =
+                mAuthenticatorHelper.getAuthoritiesForAccountType(accountType);
+        if (authoritiesForType == null) {
+            return false;
+        }
+        for (int j = 0; j < mAuthorities.length; j++) {
+            if (authoritiesForType.contains(mAuthorities[j])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static class AccountPreference extends Preference {
+        /** Account that this Preference represents. */
+        private final Account mAccount;
+        private final CharSequence mLabel;
+
+        private AccountPreference(Context context, Account account, CharSequence label,
+                Drawable icon) {
+            super(context);
+            mAccount = account;
+            mLabel = label;
+
+            setKey(buildKey(account));
+            setTitle(account.name);
+            setSummary(label);
+            setIcon(icon);
+        }
+
+        /**
+         * Build a unique preference key based on the account.
+         */
+        public static String buildKey(Account account) {
+            return String.valueOf(account.hashCode());
+        }
+
+        public Account getAccount() {
+            return mAccount;
+        }
+
+        public CharSequence getLabel() {
+            return mLabel;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountManagerHelper.java b/src/com/android/car/settings/accounts/AccountManagerHelper.java
deleted file mode 100644
index c0e56ed..0000000
--- a/src/com/android/car/settings/accounts/AccountManagerHelper.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.accounts;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import com.android.settingslib.accounts.AuthenticatorHelper;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Helper class for managing accounts that belong to a single user.
- */
-class AccountManagerHelper {
-    private final Context mContext;
-    private final AuthenticatorHelper.OnAccountsUpdateListener mUpdateListener;
-    private final AuthenticatorHelper mAuthenticatorHelper;
-
-    private final UserHandle mCurrentUserHandle;
-
-    public AccountManagerHelper(Context context,
-            AuthenticatorHelper.OnAccountsUpdateListener listener) {
-        mContext = context;
-        mUpdateListener = listener;
-        UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
-        mCurrentUserHandle = userManager.getUserInfo(UserHandle.myUserId()).getUserHandle();
-
-        // Listen to account updates for this user.
-        mAuthenticatorHelper =
-                new AuthenticatorHelper(mContext, mCurrentUserHandle, mUpdateListener);
-    }
-
-    /**
-     * Starts listening to account updates. Every registered listener should be unregistered.
-     */
-    public void startListeningToAccountUpdates() {
-        mAuthenticatorHelper.listenToAccountUpdates();
-    }
-
-    /**
-     * Stops listening to account updates. Should be called on cleanup/destroy.
-     */
-    public void stopListeningToAccountUpdates() {
-        mAuthenticatorHelper.stopListeningToAccountUpdates();
-    }
-
-    /**
-     * Returns all the enabled accounts that exist for the current user. These include 1st and 3rd
-     * party accounts.
-     *
-     * @return List of {@code Account} for the currently logged in user.
-     */
-    public List<Account> getAccountsForCurrentUser() {
-        List<Account> accounts = new ArrayList<>();
-
-        String[] accountTypes = mAuthenticatorHelper.getEnabledAccountTypes();
-        for (int i = 0; i < accountTypes.length; i++) {
-            String accountType = accountTypes[i];
-            Account[] accountsForType = AccountManager.get(mContext)
-                    .getAccountsByTypeAsUser(accountType, mCurrentUserHandle);
-            for (Account account : accountsForType) {
-                accounts.add(account);
-            }
-        }
-        return accounts;
-    }
-
-    /**
-     * Returns whether the given account is in the list of accounts for the current user.
-     * Useful for checking whether an account has been deleted.
-     *
-     * @param account Account which existence we're checking for.
-     * @return {@code true} if it exists, {@code false} if it doesn't.
-     */
-    public boolean accountExists(Account account) {
-        if (account == null) {
-            return false;
-        }
-
-        Account[] accounts = AccountManager.get(mContext).getAccountsByTypeAsUser(
-                account.type, mCurrentUserHandle);
-        for (Account other : accounts) {
-            if (other.equals(account)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Wrapper for {@code AuthenticatorHelper.getDrawableForType}.
-     * Gets an icon associated with a particular account type.
-     *
-     * @param accountType the type of account
-     * @return a drawable for the icon
-     */
-    public Drawable getDrawableForType(final String accountType) {
-        return mAuthenticatorHelper.getDrawableForType(mContext, accountType);
-    }
-
-    /**
-     * Wrapper for {@code AuthenticatorHelper.getLabelForType}.
-     * Gets the label associated with a particular account type. If none found, return {@code null}.
-     *
-     * @param accountType the type of account
-     * @return a CharSequence for the label or null if one cannot be found.
-     */
-    public CharSequence getLabelForType(final String accountType) {
-        return mAuthenticatorHelper.getLabelForType(mContext, accountType);
-    }
-}
diff --git a/src/com/android/car/settings/accounts/AccountSettingsFragment.java b/src/com/android/car/settings/accounts/AccountSettingsFragment.java
new file mode 100644
index 0000000..4d3212e
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountSettingsFragment.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Lists the user's accounts and any related options.
+ */
+public class AccountSettingsFragment extends SettingsFragment {
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.account_settings_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Enable the add account button if the user is allowed to modify accounts
+        Button addAccountButton = requireActivity().findViewById(R.id.action_button1);
+        if (new CarUserManagerHelper(getContext()).canCurrentProcessModifyAccounts()) {
+            addAccountButton.setText(R.string.user_add_account_menu);
+            addAccountButton.setOnClickListener(v -> onAddAccountClicked());
+        } else {
+            addAccountButton.setVisibility(View.GONE);
+        }
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        String[] authorities = getActivity().getIntent().getStringArrayExtra(
+                Settings.EXTRA_AUTHORITIES);
+        if (authorities != null) {
+            use(AccountListPreferenceController.class, R.string.pk_account_list)
+                    .setAuthorities(authorities);
+        }
+    }
+
+    private void onAddAccountClicked() {
+        launchFragment(new ChooseAccountFragment());
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountSyncDetailsFragment.java b/src/com/android/car/settings/accounts/AccountSyncDetailsFragment.java
new file mode 100644
index 0000000..65f2bbc
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountSyncDetailsFragment.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SyncAdapterType;
+import android.content.SyncStatusObserver;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.util.Set;
+
+/**
+ * Shows details for syncing an account.
+ */
+public class AccountSyncDetailsFragment extends SettingsFragment {
+    private static final String EXTRA_ACCOUNT = "extra_account";
+    private static final String EXTRA_USER_HANDLE = "extra_user_handle";
+    private boolean mIsStarted = false;
+    private Object mStatusChangeListenerHandle;
+    private SyncStatusObserver mSyncStatusObserver =
+            which -> ThreadUtils.postOnMainThread(() -> {
+                // The observer call may occur even if the fragment hasn't been started, so
+                // only force an update if the fragment hasn't been stopped.
+                if (mIsStarted) {
+                    updateSyncButton();
+                }
+            });
+
+    /**
+     * Creates a new AccountSyncDetailsFragment.
+     *
+     * <p>Passes the provided account and user handle to the fragment via fragment arguments.
+     */
+    public static AccountSyncDetailsFragment newInstance(Account account, UserHandle userHandle) {
+        AccountSyncDetailsFragment accountSyncDetailsFragment = new AccountSyncDetailsFragment();
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(EXTRA_ACCOUNT, account);
+        bundle.putParcelable(EXTRA_USER_HANDLE, userHandle);
+        accountSyncDetailsFragment.setArguments(bundle);
+        return accountSyncDetailsFragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.account_sync_details_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        Account account = getArguments().getParcelable(EXTRA_ACCOUNT);
+        UserHandle userHandle = getArguments().getParcelable(EXTRA_USER_HANDLE);
+
+        use(AccountDetailsWithSyncStatusPreferenceController.class,
+                R.string.pk_account_details_with_sync)
+                .setAccount(account);
+        use(AccountDetailsWithSyncStatusPreferenceController.class,
+                R.string.pk_account_details_with_sync)
+                .setUserHandle(userHandle);
+
+        use(AccountSyncDetailsPreferenceController.class, R.string.pk_account_sync_details)
+                .setAccount(account);
+        use(AccountSyncDetailsPreferenceController.class, R.string.pk_account_sync_details)
+                .setUserHandle(userHandle);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        updateSyncButton();
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mIsStarted = true;
+        mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
+                ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
+                        | ContentResolver.SYNC_OBSERVER_TYPE_STATUS
+                        | ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, mSyncStatusObserver);
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mIsStarted = false;
+        if (mStatusChangeListenerHandle != null) {
+            ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
+        }
+    }
+
+    private void updateSyncButton() {
+        // Set the action button to either request or cancel sync, depending on the current state
+        Button syncButton = requireActivity().findViewById(R.id.action_button1);
+
+        UserHandle userHandle = getArguments().getParcelable(EXTRA_USER_HANDLE);
+        boolean hasActiveSyncs = !ContentResolver.getCurrentSyncsAsUser(
+                userHandle.getIdentifier()).isEmpty();
+
+        // If there are active syncs, clicking the button with cancel them. Otherwise, clicking the
+        // button will start them.
+        syncButton.setText(
+                hasActiveSyncs ? R.string.sync_button_sync_cancel : R.string.sync_button_sync_now);
+        syncButton.setOnClickListener(v -> {
+            if (hasActiveSyncs) {
+                cancelSyncForEnabledProviders();
+            } else {
+                requestSyncForEnabledProviders();
+            }
+        });
+    }
+
+    private void requestSyncForEnabledProviders() {
+        Account account = getArguments().getParcelable(EXTRA_ACCOUNT);
+        UserHandle userHandle = getArguments().getParcelable(EXTRA_USER_HANDLE);
+        int userId = userHandle.getIdentifier();
+
+        Set<SyncAdapterType> adapters = AccountSyncHelper.getSyncableSyncAdaptersForAccount(account,
+                userHandle);
+        for (SyncAdapterType adapter : adapters) {
+            AccountSyncHelper.requestSyncIfAllowed(account, adapter.authority, userId);
+        }
+    }
+
+    private void cancelSyncForEnabledProviders() {
+        Account account = getArguments().getParcelable(EXTRA_ACCOUNT);
+        UserHandle userHandle = getArguments().getParcelable(EXTRA_USER_HANDLE);
+        int userId = userHandle.getIdentifier();
+
+        Set<SyncAdapterType> adapters = AccountSyncHelper.getSyncableSyncAdaptersForAccount(account,
+                userHandle);
+        for (SyncAdapterType adapter : adapters) {
+            ContentResolver.cancelSyncAsUser(account, adapter.authority, userId);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceController.java b/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceController.java
new file mode 100644
index 0000000..435bbf6
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceController.java
@@ -0,0 +1,388 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.app.Activity;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.content.SyncAdapterType;
+import android.content.SyncInfo;
+import android.content.SyncStatusInfo;
+import android.content.SyncStatusObserver;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.text.format.DateFormat;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.collection.ArrayMap;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.accounts.AuthenticatorHelper;
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Controller that presents all visible sync adapters for an account.
+ *
+ * <p>Largely derived from {@link com.android.settings.accounts.AccountSyncSettings}.
+ */
+public class AccountSyncDetailsPreferenceController extends
+        PreferenceController<PreferenceGroup> implements
+        AuthenticatorHelper.OnAccountsUpdateListener {
+    private static final Logger LOG = new Logger(AccountSyncDetailsPreferenceController.class);
+    /**
+     * Preferences are keyed by authority so that existing SyncPreferences can be reused on account
+     * sync.
+     */
+    private final Map<String, SyncPreference> mSyncPreferences = new ArrayMap<>();
+    private boolean mIsStarted = false;
+    private Account mAccount;
+    private UserHandle mUserHandle;
+    private AuthenticatorHelper mAuthenticatorHelper;
+    private Object mStatusChangeListenerHandle;
+    private SyncStatusObserver mSyncStatusObserver =
+            which -> ThreadUtils.postOnMainThread(() -> {
+                // The observer call may occur even if the fragment hasn't been started, so
+                // only force an update if the fragment hasn't been stopped.
+                if (mIsStarted) {
+                    forceUpdateSyncCategory();
+                }
+            });
+
+    public AccountSyncDetailsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Sets the account that the sync preferences are being shown for. */
+    public void setAccount(Account account) {
+        mAccount = account;
+    }
+
+    /** Sets the user handle used by the controller. */
+    public void setUserHandle(UserHandle userHandle) {
+        mUserHandle = userHandle;
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /**
+     * Verifies that the controller was properly initialized with {@link #setAccount(Account)} and
+     * {@link #setUserHandle(UserHandle)}.
+     *
+     * @throws IllegalStateException if the account or user handle is {@code null}
+     */
+    @Override
+    protected void checkInitialized() {
+        LOG.v("checkInitialized");
+        if (mAccount == null) {
+            throw new IllegalStateException(
+                    "AccountSyncDetailsPreferenceController must be initialized by calling "
+                            + "setAccount(Account)");
+        }
+        if (mUserHandle == null) {
+            throw new IllegalStateException(
+                    "AccountSyncDetailsPreferenceController must be initialized by calling "
+                            + "setUserHandle(UserHandle)");
+        }
+    }
+
+    /**
+     * Initializes the authenticator helper.
+     */
+    @Override
+    protected void onCreateInternal() {
+        mAuthenticatorHelper = new AuthenticatorHelper(getContext(), mUserHandle, /* listener= */
+                this);
+    }
+
+    /**
+     * Registers the account update and sync status change callbacks.
+     */
+    @Override
+    protected void onStartInternal() {
+        mIsStarted = true;
+        mAuthenticatorHelper.listenToAccountUpdates();
+
+        mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
+                ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
+                        | ContentResolver.SYNC_OBSERVER_TYPE_STATUS
+                        | ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, mSyncStatusObserver);
+    }
+
+    /**
+     * Unregisters the account update and sync status change callbacks.
+     */
+    @Override
+    protected void onStopInternal() {
+        mIsStarted = false;
+        mAuthenticatorHelper.stopListeningToAccountUpdates();
+        if (mStatusChangeListenerHandle != null) {
+            ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
+        }
+    }
+
+    @Override
+    public void onAccountsUpdate(UserHandle userHandle) {
+        // Only force a refresh if accounts have changed for the current user.
+        if (userHandle.equals(mUserHandle)) {
+            forceUpdateSyncCategory();
+        }
+    }
+
+    @Override
+    public void updateState(PreferenceGroup preferenceGroup) {
+        // Add preferences for each account if the controller should be available
+        forceUpdateSyncCategory();
+    }
+
+    /**
+     * Handles toggling/syncing when a sync preference is clicked on.
+     *
+     * <p>Largely derived from
+     * {@link com.android.settings.accounts.AccountSyncSettings#onPreferenceTreeClick}.
+     */
+    private boolean onSyncPreferenceClicked(SyncPreference preference) {
+        String authority = preference.getKey();
+        String packageName = preference.getPackageName();
+        int uid = preference.getUid();
+        if (preference.isOneTimeSyncMode()) {
+            // If the sync adapter doesn't have access to the account we either
+            // request access by starting an activity if possible or kick off the
+            // sync which will end up posting an access request notification.
+            if (requestAccountAccessIfNeeded(packageName, uid)) {
+                return true;
+            }
+            requestSync(authority);
+        } else {
+            boolean syncOn = preference.isChecked();
+            int userId = mUserHandle.getIdentifier();
+            boolean oldSyncState = ContentResolver.getSyncAutomaticallyAsUser(mAccount,
+                    authority, userId);
+            if (syncOn != oldSyncState) {
+                // Toggling this switch triggers sync but we may need a user approval. If the
+                // sync adapter doesn't have access to the account we either request access by
+                // starting an activity if possible or kick off the sync which will end up
+                // posting an access request notification.
+                if (syncOn && requestAccountAccessIfNeeded(packageName, uid)) {
+                    return true;
+                }
+                // If we're enabling sync, this will request a sync as well.
+                ContentResolver.setSyncAutomaticallyAsUser(mAccount, authority, syncOn, userId);
+                if (syncOn) {
+                    requestSync(authority);
+                } else {
+                    cancelSync(authority);
+                }
+            }
+        }
+        return true;
+    }
+
+    private void requestSync(String authority) {
+        AccountSyncHelper.requestSyncIfAllowed(mAccount, authority, mUserHandle.getIdentifier());
+    }
+
+    private void cancelSync(String authority) {
+        ContentResolver.cancelSyncAsUser(mAccount, authority, mUserHandle.getIdentifier());
+    }
+
+    /**
+     * Requests account access if needed.
+     *
+     * <p>Copied from
+     * {@link com.android.settings.accounts.AccountSyncSettings#requestAccountAccessIfNeeded}.
+     */
+    private boolean requestAccountAccessIfNeeded(String packageName, int uid) {
+        if (packageName == null) {
+            return false;
+        }
+
+        AccountManager accountManager = getContext().getSystemService(AccountManager.class);
+        if (!accountManager.hasAccountAccess(mAccount, packageName, mUserHandle)) {
+            IntentSender intent = accountManager.createRequestAccountAccessIntentSenderAsUser(
+                    mAccount, packageName, mUserHandle);
+            if (intent != null) {
+                try {
+                    getFragmentController().startIntentSenderForResult(intent,
+                            uid, /* fillInIntent= */ null, /* flagsMask= */0,
+                            /* flagsValues= */0, /* options= */null,
+                            this::onAccountRequestApproved);
+                    return true;
+                } catch (IntentSender.SendIntentException e) {
+                    LOG.e("Error requesting account access", e);
+                }
+            }
+        }
+        return false;
+    }
+
+    /** Handles a sync adapter refresh when an account request was approved. */
+    public void onAccountRequestApproved(int uid, int resultCode, @Nullable Intent data) {
+        if (resultCode == Activity.RESULT_OK) {
+            for (SyncPreference pref : mSyncPreferences.values()) {
+                if (pref.getUid() == uid) {
+                    onSyncPreferenceClicked(pref);
+                    return;
+                }
+            }
+        }
+    }
+
+    /** Forces a refresh of the sync adapter preferences. */
+    private void forceUpdateSyncCategory() {
+        Set<String> preferencesToRemove = new HashSet<>(mSyncPreferences.keySet());
+        List<SyncPreference> preferences = getSyncPreferences(preferencesToRemove);
+
+        // Sort the preferences, add the ones that need to be added, and remove the ones that need
+        // to be removed. Manually set the order so that existing preferences are reordered
+        // correctly.
+        Collections.sort(preferences, Comparator.comparing(
+                (SyncPreference a) -> a.getTitle().toString())
+                .thenComparing((SyncPreference a) -> a.getSummary().toString()));
+
+        for (int i = 0; i < preferences.size(); i++) {
+            SyncPreference pref = preferences.get(i);
+            pref.setOrder(i);
+            mSyncPreferences.put(pref.getKey(), pref);
+            getPreference().addPreference(pref);
+        }
+
+        for (String key : preferencesToRemove) {
+            getPreference().removePreference(mSyncPreferences.get(key));
+            mSyncPreferences.remove(key);
+        }
+    }
+
+    /**
+     * Returns a list of preferences corresponding to the visible sync adapters for the current
+     * user.
+     *
+     * <p> Derived from {@link com.android.settings.accounts.AccountSyncSettings#setFeedsState}
+     * and {@link com.android.settings.accounts.AccountSyncSettings#updateAccountSwitches}.
+     *
+     * @param preferencesToRemove the keys for the preferences currently being shown; only the keys
+     *                            for preferences to be removed will remain after method execution
+     */
+    private List<SyncPreference> getSyncPreferences(Set<String> preferencesToRemove) {
+        int userId = mUserHandle.getIdentifier();
+        PackageManager packageManager = getContext().getPackageManager();
+        List<SyncInfo> currentSyncs = ContentResolver.getCurrentSyncsAsUser(userId);
+        // Whether one time sync is enabled rather than automtic sync
+        boolean oneTimeSyncMode = !ContentResolver.getMasterSyncAutomaticallyAsUser(userId);
+
+        List<SyncPreference> syncPreferences = new ArrayList<>();
+
+        Set<SyncAdapterType> syncAdapters = AccountSyncHelper.getVisibleSyncAdaptersForAccount(
+                getContext(), mAccount, mUserHandle);
+        for (SyncAdapterType syncAdapter : syncAdapters) {
+            String authority = syncAdapter.authority;
+
+            int uid;
+            try {
+                uid = packageManager.getPackageUidAsUser(syncAdapter.getPackageName(), userId);
+            } catch (PackageManager.NameNotFoundException e) {
+                LOG.e("No uid for package" + syncAdapter.getPackageName(), e);
+                // If we can't get the Uid for the package hosting the sync adapter, don't show it
+                continue;
+            }
+
+            // If we've reached this point, the sync adapter should be shown. If a preference for
+            // the sync adapter already exists, update its state. Otherwise, create a new
+            // preference.
+            SyncPreference pref = mSyncPreferences.getOrDefault(authority,
+                    new SyncPreference(getContext(), authority));
+            pref.setUid(uid);
+            pref.setPackageName(syncAdapter.getPackageName());
+            pref.setOnPreferenceClickListener(
+                    (Preference p) -> onSyncPreferenceClicked((SyncPreference) p));
+
+            CharSequence title = AccountSyncHelper.getTitle(getContext(), authority, mUserHandle);
+            pref.setTitle(title);
+
+            // Keep track of preferences that need to be added and removed
+            syncPreferences.add(pref);
+            preferencesToRemove.remove(authority);
+
+            SyncStatusInfo status = ContentResolver.getSyncStatusAsUser(mAccount, authority,
+                    userId);
+            boolean syncEnabled = ContentResolver.getSyncAutomaticallyAsUser(mAccount, authority,
+                    userId);
+            boolean activelySyncing = AccountSyncHelper.isSyncing(mAccount, currentSyncs,
+                    authority);
+
+            // The preference should be checked if one one-time sync or regular sync is enabled
+            boolean checked = oneTimeSyncMode || syncEnabled;
+            pref.setChecked(checked);
+
+            String summary = getSummary(status, syncEnabled, activelySyncing);
+            pref.setSummary(summary);
+
+            // Update the sync state so the icon is updated
+            AccountSyncHelper.SyncState syncState = AccountSyncHelper.getSyncState(status,
+                    syncEnabled, activelySyncing);
+            pref.setSyncState(syncState);
+            pref.setOneTimeSyncMode(oneTimeSyncMode);
+        }
+
+        return syncPreferences;
+    }
+
+    private String getSummary(SyncStatusInfo status, boolean syncEnabled, boolean activelySyncing) {
+        long successEndTime = (status == null) ? 0 : status.lastSuccessTime;
+        // Set the summary based on the current syncing state
+        if (!syncEnabled) {
+            return getContext().getString(R.string.sync_disabled);
+        } else if (activelySyncing) {
+            return getContext().getString(R.string.sync_in_progress);
+        } else if (successEndTime != 0) {
+            Date date = new Date();
+            date.setTime(successEndTime);
+            String timeString = formatSyncDate(date);
+            return getContext().getString(R.string.last_synced, timeString);
+        }
+        return "";
+    }
+
+    @VisibleForTesting
+    String formatSyncDate(Date date) {
+        return DateFormat.getDateFormat(getContext()).format(date) + " " + DateFormat.getTimeFormat(
+                getContext()).format(date);
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountSyncHelper.java b/src/com/android/car/settings/accounts/AccountSyncHelper.java
new file mode 100644
index 0000000..109e0d4
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountSyncHelper.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SyncAdapterType;
+import android.content.SyncInfo;
+import android.content.SyncStatusInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ProviderInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.text.TextUtils;
+
+import com.android.car.settings.common.Logger;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/** Helper that provides utility methods for account syncing. */
+class AccountSyncHelper {
+    private static final Logger LOG = new Logger(AccountSyncHelper.class);
+
+    private AccountSyncHelper() {
+    }
+
+    /** Returns the visible sync adapters available for an account. */
+    static Set<SyncAdapterType> getVisibleSyncAdaptersForAccount(Context context, Account account,
+            UserHandle userHandle) {
+        Set<SyncAdapterType> syncableAdapters = getSyncableSyncAdaptersForAccount(account,
+                userHandle);
+
+        syncableAdapters.removeIf(
+                (SyncAdapterType syncAdapter) -> !isVisible(context, syncAdapter, userHandle));
+
+        return syncableAdapters;
+    }
+
+    /** Returns the syncable sync adapters available for an account. */
+    static Set<SyncAdapterType> getSyncableSyncAdaptersForAccount(Account account,
+            UserHandle userHandle) {
+        Set<SyncAdapterType> adapters = new HashSet<>();
+
+        SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypesAsUser(
+                userHandle.getIdentifier());
+        for (int i = 0; i < syncAdapters.length; i++) {
+            SyncAdapterType syncAdapter = syncAdapters[i];
+            String authority = syncAdapter.authority;
+
+            // If the sync adapter is not for this account type, don't include it
+            if (!syncAdapter.accountType.equals(account.type)) {
+                continue;
+            }
+
+            boolean isSyncable = ContentResolver.getIsSyncableAsUser(account, authority,
+                    userHandle.getIdentifier()) > 0;
+            // If the adapter is not syncable, don't include it
+            if (!isSyncable) {
+                continue;
+            }
+
+            adapters.add(syncAdapter);
+        }
+
+        return adapters;
+    }
+
+    /**
+     * Requests a sync if it is allowed.
+     *
+     * <p>Derived from
+     * {@link com.android.settings.accounts.AccountSyncSettings#requestOrCancelSync}.
+     */
+    static void requestSyncIfAllowed(Account account, String authority, int userId) {
+        if (!syncIsAllowed(account, authority, userId)) {
+            return;
+        }
+
+        Bundle extras = new Bundle();
+        extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
+        ContentResolver.requestSyncAsUser(account, authority, userId, extras);
+    }
+
+    /**
+     * Returns the label for a given sync authority.
+     *
+     * @return the title if available, and an empty CharSequence otherwise
+     */
+    static CharSequence getTitle(Context context, String authority, UserHandle userHandle) {
+        PackageManager packageManager = context.getPackageManager();
+        ProviderInfo providerInfo = packageManager.resolveContentProviderAsUser(
+                authority, /* flags= */ 0, userHandle.getIdentifier());
+        if (providerInfo == null) {
+            return "";
+        }
+
+        return providerInfo.loadLabel(packageManager);
+    }
+
+    /** Returns whether a sync adapter is currently syncing for the account being shown. */
+    static boolean isSyncing(Account account, List<SyncInfo> currentSyncs, String authority) {
+        for (SyncInfo syncInfo : currentSyncs) {
+            if (syncInfo.account.equals(account) && syncInfo.authority.equals(authority)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /** Returns the current sync state based on sync status information. */
+    static SyncState getSyncState(SyncStatusInfo status, boolean syncEnabled,
+            boolean activelySyncing) {
+        boolean initialSync = status != null && status.initialize;
+        boolean syncIsPending = status != null && status.pending;
+        boolean lastSyncFailed = syncEnabled && status != null && status.lastFailureTime != 0
+                && status.getLastFailureMesgAsInt(0)
+                != ContentResolver.SYNC_ERROR_SYNC_ALREADY_IN_PROGRESS;
+        if (activelySyncing && !initialSync) {
+            return SyncState.ACTIVE;
+        } else if (syncIsPending && !initialSync) {
+            return SyncState.PENDING;
+        } else if (lastSyncFailed) {
+            return SyncState.FAILED;
+        }
+        return SyncState.NONE;
+    }
+
+    private static boolean syncIsAllowed(Account account, String authority, int userId) {
+        boolean oneTimeSyncMode = !ContentResolver.getMasterSyncAutomaticallyAsUser(userId);
+        boolean syncEnabled = ContentResolver.getSyncAutomaticallyAsUser(account, authority,
+                userId);
+        return oneTimeSyncMode || syncEnabled;
+    }
+
+    private static boolean isVisible(Context context, SyncAdapterType syncAdapter,
+            UserHandle userHandle) {
+        String authority = syncAdapter.authority;
+
+        if (!syncAdapter.isUserVisible()) {
+            // If the sync adapter is not visible, don't show it
+            return false;
+        }
+
+        try {
+            context.getPackageManager().getPackageUidAsUser(syncAdapter.getPackageName(),
+                    userHandle.getIdentifier());
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.e("No uid for package" + syncAdapter.getPackageName(), e);
+            // If we can't get the Uid for the package hosting the sync adapter, don't show it
+            return false;
+        }
+
+        CharSequence title = getTitle(context, authority, userHandle);
+        if (TextUtils.isEmpty(title)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /** Denotes a sync adapter state. */
+    public enum SyncState {
+        /** The sync adapter is actively syncing. */
+        ACTIVE,
+        /** The sync adapter is waiting to start syncing. */
+        PENDING,
+        /** The sync adapter's last attempt to sync failed. */
+        FAILED,
+        /** Nothing to note about the sync adapter's sync state. */
+        NONE;
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountSyncPreferenceController.java b/src/com/android/car/settings/accounts/AccountSyncPreferenceController.java
new file mode 100644
index 0000000..54e6fd0
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountSyncPreferenceController.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.accounts.Account;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SyncAdapterType;
+import android.os.UserHandle;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller for the account syncing preference.
+ *
+ * <p>Largely derived from {@link com.android.settings.accounts.AccountSyncPreferenceController}.
+ */
+public class AccountSyncPreferenceController extends PreferenceController<Preference> {
+    private static final Logger LOG = new Logger(AccountSyncPreferenceController.class);
+    private Account mAccount;
+    private UserHandle mUserHandle;
+
+    public AccountSyncPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Sets the account that the sync preferences are being shown for. */
+    public void setAccount(Account account) {
+        mAccount = account;
+    }
+
+    /** Sets the user handle used by the controller. */
+    public void setUserHandle(UserHandle userHandle) {
+        mUserHandle = userHandle;
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /**
+     * Verifies that the controller was properly initialized with
+     * {@link #setAccount(Account)} and {@link #setUserHandle(UserHandle)}.
+     *
+     * @throws IllegalStateException if the account is {@code null}
+     */
+    @Override
+    protected void checkInitialized() {
+        LOG.v("checkInitialized");
+        if (mAccount == null) {
+            throw new IllegalStateException(
+                    "AccountSyncPreferenceController must be initialized by calling "
+                            + "setAccount(Account)");
+        }
+        if (mUserHandle == null) {
+            throw new IllegalStateException(
+                    "AccountSyncPreferenceController must be initialized by calling "
+                            + "setUserHandle(UserHandle)");
+        }
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(getSummary());
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        getFragmentController().launchFragment(
+                AccountSyncDetailsFragment.newInstance(mAccount, mUserHandle));
+        return true;
+    }
+
+    private CharSequence getSummary() {
+        int userId = mUserHandle.getIdentifier();
+        SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypesAsUser(userId);
+        int total = 0;
+        int enabled = 0;
+        if (syncAdapters != null) {
+            for (int i = 0, n = syncAdapters.length; i < n; i++) {
+                SyncAdapterType sa = syncAdapters[i];
+                // If the sync adapter isn't for this account type or if the user is not visible,
+                // don't show it.
+                if (!sa.accountType.equals(mAccount.type) || !sa.isUserVisible()) {
+                    continue;
+                }
+                int syncState =
+                        ContentResolver.getIsSyncableAsUser(mAccount, sa.authority, userId);
+                if (syncState > 0) {
+                    // If the sync adapter is syncable, add it to the count of items that can be
+                    // synced.
+                    total++;
+
+                    // If sync is enabled for the sync adapter at the master level or at the account
+                    // level, add it to the count of items that are enabled.
+                    boolean syncEnabled = ContentResolver.getSyncAutomaticallyAsUser(
+                            mAccount, sa.authority, userId);
+                    boolean oneTimeSyncMode =
+                            !ContentResolver.getMasterSyncAutomaticallyAsUser(userId);
+                    if (oneTimeSyncMode || syncEnabled) {
+                        enabled++;
+                    }
+                }
+            }
+        }
+        if (enabled == 0) {
+            return getContext().getText(R.string.account_sync_summary_all_off);
+        } else if (enabled == total) {
+            return getContext().getText(R.string.account_sync_summary_all_on);
+        } else {
+            return getContext().getString(R.string.account_sync_summary_some_on, enabled, total);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountsEntryPreferenceController.java b/src/com/android/car/settings/accounts/AccountsEntryPreferenceController.java
new file mode 100644
index 0000000..1133a9f
--- /dev/null
+++ b/src/com/android/car/settings/accounts/AccountsEntryPreferenceController.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller which determines if the top level entry into Account settings should be displayed
+ * based on the user status.
+ */
+public class AccountsEntryPreferenceController extends PreferenceController<Preference> {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public AccountsEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return mCarUserManagerHelper.canCurrentProcessModifyAccounts() ? AVAILABLE
+                : DISABLED_FOR_USER;
+    }
+}
diff --git a/src/com/android/car/settings/accounts/AccountsItemProvider.java b/src/com/android/car/settings/accounts/AccountsItemProvider.java
deleted file mode 100644
index 398bd2c..0000000
--- a/src/com/android/car/settings/accounts/AccountsItemProvider.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.accounts;
-
-import android.accounts.Account;
-import android.car.user.CarUserManagerHelper;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.text.TextUtils;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * Implementation of {@link ListItemProvider} for {@link AccountsListFragment}.
- * Creates items that represent current user's accounts.
- */
-class AccountsItemProvider extends ListItemProvider {
-    private final List<ListItem> mItems = new ArrayList<>();
-    private final Context mContext;
-    private final AccountClickListener mItemClickListener;
-    private final CarUserManagerHelper mCarUserManagerHelper;
-    private final AccountManagerHelper mAccountManagerHelper;
-
-    AccountsItemProvider(Context context, AccountClickListener itemClickListener,
-            CarUserManagerHelper carUserManagerHelper, AccountManagerHelper accountManagerHelper) {
-        mContext = context;
-        mItemClickListener = itemClickListener;
-        mCarUserManagerHelper = carUserManagerHelper;
-        mAccountManagerHelper = accountManagerHelper;
-        refreshItems();
-    }
-
-    @Override
-    public ListItem get(int position) {
-        return mItems.get(position);
-    }
-
-    @Override
-    public int size() {
-        return mItems.size();
-    }
-
-    /**
-     * Clears and recreates the list of items.
-     */
-    public void refreshItems() {
-        mItems.clear();
-
-        UserInfo currUserInfo = mCarUserManagerHelper.getCurrentProcessUserInfo();
-
-        List<Account> accounts = getSortedUserAccounts();
-
-        // Only add account-related items if the User can Modify Accounts
-        if (mCarUserManagerHelper.canCurrentProcessModifyAccounts()) {
-            // Add "Account for $User" title for a list of accounts.
-            mItems.add(createSubtitleItem(
-                    mContext.getString(R.string.account_list_title, currUserInfo.name),
-                    accounts.isEmpty() ? mContext.getString(R.string.no_accounts_added) : ""));
-
-            // Add an item for each account owned by the current user (1st and 3rd party accounts)
-            for (Account account : accounts) {
-                mItems.add(createAccountItem(account, account.type, currUserInfo));
-            }
-        }
-    }
-
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-    List<Account> getSortedUserAccounts() {
-        List<Account> accounts = mAccountManagerHelper.getAccountsForCurrentUser();
-
-        // Sort accounts
-        Collections.sort(accounts, Comparator.comparing(
-                (Account a) -> mAccountManagerHelper.getLabelForType(a.type).toString())
-                .thenComparing(a -> a.name));
-
-        return accounts;
-    }
-
-    // Creates a subtitle line for visual separation in the list
-    private ListItem createSubtitleItem(String title, String body) {
-        TextListItem item = new TextListItem(mContext);
-        item.setTitle(title);
-        item.setBody(body);
-        item.addViewBinder(viewHolder ->
-                viewHolder.getTitle().setTextAppearance(R.style.SettingsListHeader));
-        // Hiding the divider after subtitle, since subtitle is a header for a group of items.
-        item.setHideDivider(true);
-        return item;
-    }
-
-    // Creates a line for an account that belongs to a given user
-    private ListItem createAccountItem(Account account, String accountType,
-            UserInfo userInfo) {
-        TextListItem item = new TextListItem(mContext);
-        item.setPrimaryActionIcon(mAccountManagerHelper.getDrawableForType(accountType),
-                /* useLargeIcon= */ false);
-        item.setTitle(account.name);
-
-        // Set item body = account label.
-        CharSequence itemBody = mAccountManagerHelper.getLabelForType(accountType);
-        if (!TextUtils.isEmpty(itemBody)) {
-            item.setBody(itemBody.toString());
-        }
-
-        item.setOnClickListener(view -> mItemClickListener.onAccountClicked(account, userInfo));
-
-        // setHideDivider = true will hide the divider to group the items together visually.
-        // All of those without a divider between them will be part of the same "group".
-        item.setHideDivider(true);
-        return item;
-    }
-
-    /**
-     * Interface for registering clicks on account items.
-     */
-    interface AccountClickListener {
-        /**
-         * Invoked when a specific account is clicked on.
-         *
-         * @param account  Account for which to display details.
-         * @param userInfo User who's the owner of the account.
-         */
-        void onAccountClicked(Account account, UserInfo userInfo);
-    }
-}
diff --git a/src/com/android/car/settings/accounts/AccountsListFragment.java b/src/com/android/car/settings/accounts/AccountsListFragment.java
deleted file mode 100644
index c1e3766..0000000
--- a/src/com/android/car/settings/accounts/AccountsListFragment.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.accounts;
-
-import android.accounts.Account;
-import android.car.user.CarUserManagerHelper;
-import android.content.pm.UserInfo;
-import android.os.Bundle;
-import android.os.UserHandle;
-import android.view.View;
-import android.widget.Button;
-
-import androidx.car.widget.ListItemProvider;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-import com.android.settingslib.accounts.AuthenticatorHelper;
-
-/**
- * Shows current user and the accounts that belong to the user.
- */
-public class AccountsListFragment extends ListItemSettingsFragment
-        implements AuthenticatorHelper.OnAccountsUpdateListener,
-        CarUserManagerHelper.OnUsersUpdateListener,
-        AccountsItemProvider.AccountClickListener {
-    private AccountsItemProvider mItemProvider;
-    private AccountManagerHelper mAccountManagerHelper;
-    private CarUserManagerHelper mCarUserManagerHelper;
-
-    private Button mAddAccountButton;
-
-    /**
-     * Creates new instance of CurrentUserDetailsFragment.
-     */
-    public static AccountsListFragment newInstance() {
-        AccountsListFragment accountsFragment = new AccountsListFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.accounts_settings_title);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        accountsFragment.setArguments(bundle);
-        return accountsFragment;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        mAccountManagerHelper = new AccountManagerHelper(getContext(), this);
-        mAccountManagerHelper.startListeningToAccountUpdates();
-
-        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
-        mItemProvider = new AccountsItemProvider(getContext(), this,
-                mCarUserManagerHelper, mAccountManagerHelper);
-
-        // Register to receive changes to the users.
-        mCarUserManagerHelper.registerOnUsersUpdateListener(this);
-
-        // Super class's onActivityCreated need to be called after mContext is initialized.
-        // Because getLineItems is called in there.
-        super.onActivityCreated(savedInstanceState);
-
-        mAddAccountButton = (Button) getActivity().findViewById(R.id.action_button1);
-        if (mCarUserManagerHelper.canCurrentProcessModifyAccounts()) {
-            mAddAccountButton.setText(R.string.user_add_account_menu);
-            mAddAccountButton.setOnClickListener(v -> onAddAccountClicked());
-        } else {
-            mAddAccountButton.setVisibility(View.GONE);
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        mCarUserManagerHelper.unregisterOnUsersUpdateListener(this);
-        mAccountManagerHelper.stopListeningToAccountUpdates();
-
-        // The action button may be hidden at some point, so make it visible again
-        mAddAccountButton.setVisibility(View.VISIBLE);
-    }
-
-    @Override
-    public void onAccountsUpdate(UserHandle userHandle) {
-        refreshListItems();
-    }
-
-    @Override
-    public void onUsersUpdate() {
-        refreshListItems();
-    }
-
-    @Override
-    public void onAccountClicked(Account account, UserInfo userInfo) {
-        getFragmentController().launchFragment(
-                AccountDetailsFragment.newInstance(account, userInfo));
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        return mItemProvider;
-    }
-
-    private void refreshListItems() {
-        mItemProvider.refreshItems();
-        refreshList();
-    }
-
-    private void onAddAccountClicked() {
-        getFragmentController().launchFragment(ChooseAccountFragment.newInstance());
-    }
-}
diff --git a/src/com/android/car/settings/accounts/AddAccountActivity.java b/src/com/android/car/settings/accounts/AddAccountActivity.java
index 15910ab..d5ce571 100644
--- a/src/com/android/car/settings/accounts/AddAccountActivity.java
+++ b/src/com/android/car/settings/accounts/AddAccountActivity.java
@@ -24,7 +24,7 @@
 import android.accounts.OperationCanceledException;
 import android.app.Activity;
 import android.app.PendingIntent;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -37,16 +37,15 @@
 import com.android.car.settings.common.Logger;
 
 import java.io.IOException;
+
 /**
- *
  * Entry point Activity for account setup. Works as follows
  *
  * <ol>
- *   <li> After receiving an account type from ChooseAccountFragment, this Activity launches the
- *        account setup specified by AccountManager.
- *   <li> After the account setup, this Activity finishes without showing anything.
+ * <li> After receiving an account type from ChooseAccountFragment, this Activity launches the
+ * account setup specified by AccountManager.
+ * <li> After the account setup, this Activity finishes without showing anything.
  * </ol>
- *
  */
 public class AddAccountActivity extends Activity {
     /**
@@ -54,11 +53,9 @@
      */
     private static final String KEY_ADD_CALLED = "AddAccountCalled";
     /**
-     *
      * Extra parameter to identify the caller. Applications may display a
      * different UI if the call is made from Settings or from a specific
      * application.
-     *
      */
     private static final String KEY_CALLER_IDENTITY = "pendingIntent";
     private static final String SHOULD_NOT_RESOLVE = "SHOULDN'T RESOLVE!";
@@ -79,11 +76,6 @@
     private PendingIntent mPendingIntent;
     private boolean mAddAccountCalled;
 
-    public boolean hasMultipleUsers(Context context) {
-        return ((UserManager) context.getSystemService(Context.USER_SERVICE))
-                .getUsers().size() > 1;
-    }
-
     private final AccountManagerCallback<Bundle> mCallback = new AccountManagerCallback<Bundle>() {
         @Override
         public void run(AccountManagerFuture<Bundle> future) {
@@ -128,14 +120,8 @@
         }
 
         mCarUserManagerHelper = new CarUserManagerHelper(this);
-
-        if (mAddAccountCalled) {
-            // We already called add account - maybe the callback was lost.
-            finish();
-            return;
-        }
-
         mUserHandle = mCarUserManagerHelper.getCurrentProcessUserInfo().getUserHandle();
+
         if (mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
                 UserManager.DISALLOW_MODIFY_ACCOUNTS)) {
             // We aren't allowed to add an account.
@@ -145,6 +131,12 @@
             finish();
             return;
         }
+
+        if (mAddAccountCalled) {
+            // We already called add account - maybe the callback was lost.
+            finish();
+            return;
+        }
         addAccount(getIntent().getStringExtra(EXTRA_SELECTED_ACCOUNT));
     }
 
@@ -187,4 +179,9 @@
                 mUserHandle);
         mAddAccountCalled = true;
     }
+
+    private boolean hasMultipleUsers(Context context) {
+        return ((UserManager) context.getSystemService(Context.USER_SERVICE))
+                .getUsers().size() > 1;
+    }
 }
diff --git a/src/com/android/car/settings/accounts/ChooseAccountFragment.java b/src/com/android/car/settings/accounts/ChooseAccountFragment.java
index a65a29b..2f864ec 100644
--- a/src/com/android/car/settings/accounts/ChooseAccountFragment.java
+++ b/src/com/android/car/settings/accounts/ChooseAccountFragment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,54 +16,43 @@
 
 package com.android.car.settings.accounts;
 
-import android.os.Bundle;
-import android.os.UserHandle;
+import android.content.Context;
+import android.provider.Settings;
 
-import androidx.car.widget.ListItemProvider;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.accounts.AuthenticatorHelper;
+import com.android.car.settings.common.SettingsFragment;
+
+import java.util.Arrays;
+import java.util.HashSet;
 
 /**
- * Activity asking a user to select an account to be set up.
- *
- * <p>An extra {@link UserHandle} can be specified in the intent as {@link EXTRA_USER},
- * if the user for which the action needs to be performed is different to the one the
- * Settings App will run in.
+ * Lists accounts the user can add.
  */
-public class ChooseAccountFragment extends ListItemSettingsFragment
-        implements AuthenticatorHelper.OnAccountsUpdateListener {
-    private static final Logger LOG = new Logger(ChooseAccountFragment.class);
-
-    private ChooseAccountItemProvider mItemProvider;
-
-    public static ChooseAccountFragment newInstance() {
-        ChooseAccountFragment
-                chooseAccountFragment = new ChooseAccountFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.add_an_account);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        chooseAccountFragment.setArguments(bundle);
-        return chooseAccountFragment;
+public class ChooseAccountFragment extends SettingsFragment {
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.choose_account_fragment;
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        mItemProvider = new ChooseAccountItemProvider(getContext(), this);
-        super.onActivityCreated(savedInstanceState);
-    }
+    public void onAttach(Context context) {
+        super.onAttach(context);
 
-    @Override
-    public void onAccountsUpdate(UserHandle userHandle) {
-        LOG.v("Accounts changed, refreshing the account list.");
-        mItemProvider.refreshItems();
-        refreshList();
-    }
+        String[] authorities = requireActivity().getIntent().getStringArrayExtra(
+                Settings.EXTRA_AUTHORITIES);
+        if (authorities != null) {
+            use(ChooseAccountPreferenceController.class, R.string.pk_add_account)
+                    .setAuthorities(Arrays.asList(authorities));
+        }
 
-    @Override
-    public ListItemProvider getItemProvider() {
-        return mItemProvider;
+        String[] accountTypesForFilter = requireActivity().getIntent().getStringArrayExtra(
+                Settings.EXTRA_ACCOUNT_TYPES);
+        if (accountTypesForFilter != null) {
+            use(ChooseAccountPreferenceController.class, R.string.pk_add_account)
+                    .setAccountTypesFilter(new HashSet<>(Arrays.asList(accountTypesForFilter)));
+        }
     }
 }
diff --git a/src/com/android/car/settings/accounts/ChooseAccountItemProvider.java b/src/com/android/car/settings/accounts/ChooseAccountItemProvider.java
deleted file mode 100644
index 210bb9b..0000000
--- a/src/com/android/car/settings/accounts/ChooseAccountItemProvider.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.accounts;
-
-import android.accounts.AccountManager;
-import android.accounts.AuthenticatorDescription;
-import android.annotation.Nullable;
-import android.app.ActivityManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SyncAdapterType;
-import android.content.pm.PackageManager;
-import android.content.pm.UserInfo;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.common.Logger;
-import com.android.internal.util.CharSequences;
-import com.android.settingslib.accounts.AuthenticatorHelper;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Implementation of ListItemProvider for the ChooseAccountFragment.
- */
-class ChooseAccountItemProvider extends ListItemProvider {
-    private static final Logger LOG = new Logger(ChooseAccountItemProvider.class);
-    private static final String AUTHORITIES_FILTER_KEY = "authorities";
-
-    private final List<ListItem> mItems = new ArrayList<>();
-    private final Context mContext;
-    private final ChooseAccountFragment mFragment;
-    private final UserManager mUserManager;
-    private final ArrayList<ProviderEntry> mProviderList = new ArrayList<>();
-    @Nullable private AuthenticatorDescription[] mAuthDescs;
-    @Nullable private HashMap<String, ArrayList<String>> mAccountTypeToAuthorities;
-    private Map<String, AuthenticatorDescription> mTypeToAuthDescription = new HashMap<>();
-    private final AuthenticatorHelper mAuthenticatorHelper;
-
-    // The UserHandle of the user we are choosing an account for
-    private final UserHandle mUserHandle;
-    private final String[] mAuthorities;
-
-    ChooseAccountItemProvider(Context context, ChooseAccountFragment fragment) {
-        mContext = context;
-        mFragment = fragment;
-        mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
-        mUserHandle =
-                mUserManager.getUserInfo(ActivityManager.getCurrentUser()).getUserHandle();
-
-        mAuthorities = fragment.getActivity().getIntent().getStringArrayExtra(
-                AUTHORITIES_FILTER_KEY);
-
-        // create auth helper
-        UserInfo currUserInfo = mUserManager.getUserInfo(ActivityManager.getCurrentUser());
-        mAuthenticatorHelper =
-                new AuthenticatorHelper(mContext, currUserInfo.getUserHandle(), mFragment);
-
-        updateAuthDescriptions();
-        refreshItems();
-    }
-
-    @Override
-    public ListItem get(int position) {
-        return mItems.get(position);
-    }
-
-    @Override
-    public int size() {
-        return mItems.size();
-    }
-
-    /**
-     * Clears the existing item list and rebuilds it with new data.
-     */
-    public void refreshItems() {
-        mItems.clear();
-
-        for (int i = 0; i < mProviderList.size(); i++) {
-            String accountType = mProviderList.get(i).type;
-            Drawable icon = mAuthenticatorHelper.getDrawableForType(mContext, accountType);
-
-            TextListItem item = new TextListItem(mContext);
-            item.setPrimaryActionIcon(icon, /* useLargeIcon= */ false);
-            item.setTitle(mProviderList.get(i).name.toString());
-            item.setOnClickListener(v -> onItemSelected(accountType));
-            mItems.add(item);
-        }
-    }
-
-    // Starts a AddAccountActivity for the accountType that was clicked on.
-    private void onItemSelected(String accountType) {
-        Intent intent = new Intent(mContext, AddAccountActivity.class);
-        intent.putExtra(AddAccountActivity.EXTRA_SELECTED_ACCOUNT, accountType);
-        mContext.startActivity(intent);
-    }
-
-    /**
-     * Updates provider icons.
-     */
-    private void updateAuthDescriptions() {
-        mAuthDescs = AccountManager.get(mContext).getAuthenticatorTypesAsUser(
-                mUserHandle.getIdentifier());
-        for (int i = 0; i < mAuthDescs.length; i++) {
-            mTypeToAuthDescription.put(mAuthDescs[i].type, mAuthDescs[i]);
-        }
-        onAuthDescriptionsUpdated();
-    }
-
-    private void onAuthDescriptionsUpdated() {
-        // Create list of providers to show on page.
-        for (int i = 0; i < mAuthDescs.length; i++) {
-            String accountType = mAuthDescs[i].type;
-            CharSequence providerName = getLabelForType(accountType);
-
-            // Get the account authorities implemented by the account type.
-            ArrayList<String> accountAuths = getAuthoritiesForAccountType(accountType);
-
-            // If there are specific authorities required, we need to check whether it's
-            // included in the account type.
-            if (mAuthorities != null && mAuthorities.length > 0 && accountAuths != null) {
-                for (int k = 0; k < mAuthorities.length; k++) {
-                    if (accountAuths.contains(mAuthorities[k])) {
-                        mProviderList.add(
-                                new ProviderEntry(providerName, accountType));
-                        break;
-                    }
-                }
-            } else {
-                mProviderList.add(
-                        new ProviderEntry(providerName, accountType));
-            }
-        }
-        Collections.sort(mProviderList);
-    }
-
-    private ArrayList<String> getAuthoritiesForAccountType(String type) {
-        if (mAccountTypeToAuthorities == null) {
-            mAccountTypeToAuthorities = new HashMap<>();
-            SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypesAsUser(
-                    mUserHandle.getIdentifier());
-            for (int i = 0, n = syncAdapters.length; i < n; i++) {
-                final SyncAdapterType adapterType = syncAdapters[i];
-                ArrayList<String> authorities =
-                        mAccountTypeToAuthorities.get(adapterType.accountType);
-                if (authorities == null) {
-                    authorities = new ArrayList<String>();
-                    mAccountTypeToAuthorities.put(adapterType.accountType, authorities);
-                }
-                LOG.v("added authority " + adapterType.authority + " to accountType "
-                        + adapterType.accountType);
-                authorities.add(adapterType.authority);
-            }
-        }
-        return mAccountTypeToAuthorities.get(type);
-    }
-
-    /**
-     * Gets the label associated with a particular account type. If none found, return null.
-     *
-     * @param accountType the type of account
-     * @return a CharSequence for the label or null if one cannot be found.
-     */
-    private CharSequence getLabelForType(final String accountType) {
-        CharSequence label = null;
-        if (mTypeToAuthDescription.containsKey(accountType)) {
-            try {
-                AuthenticatorDescription desc = mTypeToAuthDescription.get(accountType);
-                Context authContext = mFragment.getActivity().createPackageContextAsUser(
-                        desc.packageName, 0 /* flags */, mUserHandle);
-                label = authContext.getResources().getText(desc.labelId);
-            } catch (PackageManager.NameNotFoundException e) {
-                LOG.w("No label name for account type " + accountType);
-            } catch (Resources.NotFoundException e) {
-                LOG.w("No label resource for account type " + accountType);
-            }
-        }
-        return label;
-    }
-
-    private static class ProviderEntry implements Comparable<ProviderEntry> {
-        private final CharSequence name;
-        private final String type;
-        ProviderEntry(CharSequence providerName, String accountType) {
-            name = providerName;
-            type = accountType;
-        }
-
-        @Override
-        public int compareTo(ProviderEntry another) {
-            if (name == null) {
-                return -1;
-            }
-            if (another.name == null) {
-                return 1;
-            }
-            return CharSequences.compareToIgnoreCase(name, another.name);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/accounts/ChooseAccountPreferenceController.java b/src/com/android/car/settings/accounts/ChooseAccountPreferenceController.java
new file mode 100644
index 0000000..f28b335
--- /dev/null
+++ b/src/com/android/car/settings/accounts/ChooseAccountPreferenceController.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.collection.ArrayMap;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.accounts.AuthenticatorHelper;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Controller for showing the user the list of accounts they can add.
+ *
+ * <p>Largely derived from {@link com.android.settings.accounts.ChooseAccountActivity}
+ */
+public class ChooseAccountPreferenceController extends
+        PreferenceController<PreferenceGroup> implements
+        AuthenticatorHelper.OnAccountsUpdateListener {
+    private static final int ADD_ACCOUNT_REQUEST_CODE = 1;
+
+    private final UserHandle mUserHandle;
+    private AuthenticatorHelper mAuthenticatorHelper;
+    private List<String> mAuthorities;
+    private Set<String> mAccountTypesFilter;
+    private Set<String> mAccountTypesExclusionFilter;
+    private ArrayMap<String, AuthenticatorDescriptionPreference> mPreferences = new ArrayMap<>();
+
+    public ChooseAccountPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mUserHandle = new CarUserManagerHelper(context).getCurrentProcessUserInfo().getUserHandle();
+
+        HashSet<String> accountTypeExclusionFilter = new HashSet<>();
+
+        // Hardcoding bluetooth account type
+        accountTypeExclusionFilter.add("com.android.bluetooth.pbapsink");
+        setAccountTypesExclusionFilter(accountTypeExclusionFilter);
+    }
+
+    /** Sets the authorities that the user has. */
+    public void setAuthorities(List<String> authorities) {
+        mAuthorities = authorities;
+    }
+
+    /** Sets the filter for accounts that should be shown. */
+    public void setAccountTypesFilter(Set<String> accountTypesFilter) {
+        mAccountTypesFilter = accountTypesFilter;
+    }
+
+    /** Sets the filter for accounts that should NOT be shown. */
+    protected void setAccountTypesExclusionFilter(Set<String> accountTypesExclusionFilterFilter) {
+        mAccountTypesExclusionFilter = accountTypesExclusionFilterFilter;
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        forceUpdateAccountsCategory();
+    }
+
+    /** Initializes the authenticator helper. */
+    @Override
+    protected void onCreateInternal() {
+        mAuthenticatorHelper = new AuthenticatorHelper(getContext(), mUserHandle, this);
+    }
+
+    /**
+     * Registers the account update callback.
+     */
+    @Override
+    protected void onStartInternal() {
+        mAuthenticatorHelper.listenToAccountUpdates();
+    }
+
+    /**
+     * Unregisters the account update callback.
+     */
+    @Override
+    protected void onStopInternal() {
+        mAuthenticatorHelper.stopListeningToAccountUpdates();
+    }
+
+    @Override
+    public void onAccountsUpdate(UserHandle userHandle) {
+        // Only force a refresh if accounts have changed for the current user.
+        if (userHandle.equals(mUserHandle)) {
+            forceUpdateAccountsCategory();
+        }
+    }
+
+    /** Forces a refresh of the authenticator description preferences. */
+    private void forceUpdateAccountsCategory() {
+        Set<String> preferencesToRemove = new HashSet<>(mPreferences.keySet());
+        List<AuthenticatorDescriptionPreference> preferences =
+                getAuthenticatorDescriptionPreferences(preferencesToRemove);
+        // Add all preferences that aren't already shown
+        for (int i = 0; i < preferences.size(); i++) {
+            AuthenticatorDescriptionPreference preference = preferences.get(i);
+            preference.setOrder(i);
+            String key = preference.getKey();
+            getPreference().addPreference(preference);
+            mPreferences.put(key, preference);
+        }
+
+        // Remove all preferences that should no longer be shown
+        for (String key : preferencesToRemove) {
+            getPreference().removePreference(mPreferences.get(key));
+            mPreferences.remove(key);
+        }
+    }
+
+    /**
+     * Returns a list of preferences corresponding to the account types the user can add.
+     *
+     * <p> Derived from
+     * {@link com.android.settings.accounts.ChooseAccountActivity#onAuthDescriptionsUpdated}
+     *
+     * @param preferencesToRemove the current preferences shown; will contain the preferences that
+     *                            need to be removed from the screen after method execution
+     */
+    private List<AuthenticatorDescriptionPreference> getAuthenticatorDescriptionPreferences(
+            Set<String> preferencesToRemove) {
+        AuthenticatorDescription[] authenticatorDescriptions = AccountManager.get(
+                getContext()).getAuthenticatorTypesAsUser(
+                mUserHandle.getIdentifier());
+
+        ArrayList<AuthenticatorDescriptionPreference> authenticatorDescriptionPreferences =
+                new ArrayList<>();
+        // Create list of account providers to show on page.
+        for (AuthenticatorDescription authenticatorDescription : authenticatorDescriptions) {
+            String accountType = authenticatorDescription.type;
+            CharSequence label = mAuthenticatorHelper.getLabelForType(getContext(), accountType);
+            Drawable icon = mAuthenticatorHelper.getDrawableForType(getContext(), accountType);
+
+            List<String> accountAuthorities =
+                    mAuthenticatorHelper.getAuthoritiesForAccountType(accountType);
+
+            // If there are specific authorities required, we need to check whether they are
+            // included in the account type.
+            boolean authorized =
+                    (mAuthorities == null || mAuthorities.isEmpty() || accountAuthorities == null
+                            || !Collections.disjoint(accountAuthorities, mAuthorities));
+
+            // If there is an account type filter, make sure this account type is included.
+            authorized = authorized && (mAccountTypesFilter == null
+                    || mAccountTypesFilter.contains(accountType));
+
+            // Check if the account type is in the exclusion list.
+            authorized = authorized && (mAccountTypesExclusionFilter == null
+                    || !mAccountTypesExclusionFilter.contains(accountType));
+
+            // If authorized, add a preference for the provider to the list and remove it from
+            // preferencesToRemove.
+            if (authorized) {
+                AuthenticatorDescriptionPreference preference = mPreferences.getOrDefault(
+                        accountType,
+                        new AuthenticatorDescriptionPreference(getContext(), accountType, label,
+                                icon));
+                preference.setOnPreferenceClickListener(
+                        pref -> onAddAccount(preference.getAccountType()));
+                authenticatorDescriptionPreferences.add(preference);
+                preferencesToRemove.remove(accountType);
+            }
+        }
+
+        Collections.sort(authenticatorDescriptionPreferences, Comparator.comparing(
+                (AuthenticatorDescriptionPreference a) -> a.getTitle().toString()));
+
+        return authenticatorDescriptionPreferences;
+    }
+
+    /** Starts the {@link AddAccountActivity} to add an account for the given account type. */
+    private boolean onAddAccount(String accountType) {
+        Intent intent = new Intent(getContext(), AddAccountActivity.class);
+        intent.putExtra(AddAccountActivity.EXTRA_SELECTED_ACCOUNT, accountType);
+        getFragmentController().startActivityForResult(intent, ADD_ACCOUNT_REQUEST_CODE,
+                this::onAccountAdded);
+        return true;
+    }
+
+    private void onAccountAdded(int requestCode, int resultCode, @Nullable Intent data) {
+        if (requestCode == ADD_ACCOUNT_REQUEST_CODE) {
+            getFragmentController().goBack();
+        }
+    }
+
+    /** Used for testing to trigger an account update. */
+    @VisibleForTesting
+    AuthenticatorHelper getAuthenticatorHelper() {
+        return mAuthenticatorHelper;
+    }
+
+    /** Handles adding accounts. */
+    interface AddAccountListener {
+        /** Handles adding an account. */
+        void addAccount(String accountType);
+    }
+
+    private static class AuthenticatorDescriptionPreference extends Preference {
+        private final String mType;
+
+        AuthenticatorDescriptionPreference(Context context, String accountType, CharSequence label,
+                Drawable icon) {
+            super(context);
+            mType = accountType;
+
+            setKey(accountType);
+            setTitle(label);
+            setIcon(icon);
+        }
+
+        private String getAccountType() {
+            return mType;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/accounts/SyncPreference.java b/src/com/android/car/settings/accounts/SyncPreference.java
new file mode 100644
index 0000000..612a739
--- /dev/null
+++ b/src/com/android/car/settings/accounts/SyncPreference.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.apps.common.util.Themes;
+import com.android.car.settings.R;
+
+/**
+ * A preference that represents the state of a sync adapter.
+ *
+ * <p>Largely derived from {@link com.android.settings.accounts.SyncStateSwitchPreference}.
+ */
+public class SyncPreference extends SwitchPreference {
+    private int mUid;
+    private String mPackageName;
+    private AccountSyncHelper.SyncState mSyncState = AccountSyncHelper.SyncState.NONE;
+    private boolean mOneTimeSyncMode = false;
+
+    public SyncPreference(Context context, String authority) {
+        super(context);
+        setKey(authority);
+        setPersistent(false);
+        updateIcon();
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+
+        View switchView = view.findViewById(com.android.internal.R.id.switch_widget);
+        if (mOneTimeSyncMode) {
+            switchView.setVisibility(View.GONE);
+
+            /*
+             * Override the summary. Fill in the %1$s with the existing summary
+             * (what ends up happening is the old summary is shown on the next
+             * line).
+             */
+            TextView summary = (TextView) view.findViewById(android.R.id.summary);
+            summary.setText(getContext().getString(R.string.sync_one_time_sync, getSummary()));
+        } else {
+            switchView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    /** Updates the preference icon based on the current syncing state. */
+    private void updateIcon() {
+        switch (mSyncState) {
+            case ACTIVE:
+                setIcon(R.drawable.ic_sync_anim);
+                getIcon().setTintList(Themes.getAttrColorStateList(getContext(), R.attr.iconColor));
+                break;
+            case PENDING:
+                setIcon(R.drawable.ic_sync);
+                getIcon().setTintList(Themes.getAttrColorStateList(getContext(), R.attr.iconColor));
+                break;
+            case FAILED:
+                setIcon(R.drawable.ic_sync_problem);
+                getIcon().setTintList(Themes.getAttrColorStateList(getContext(), R.attr.iconColor));
+                break;
+            default:
+                setIcon(null);
+                setIconSpaceReserved(true);
+                break;
+        }
+    }
+
+    /** Sets the sync state for this preference. */
+    public void setSyncState(AccountSyncHelper.SyncState state) {
+        mSyncState = state;
+        // Force a manual update of the icon since the sync state affects what is shown.
+        updateIcon();
+    }
+
+    /**
+     * Returns whether or not the sync adapter is in one-time sync mode.
+     *
+     * <p>One-time sync mode means that the sync adapter is not being automatically synced but
+     * can be manually synced (i.e. a one time sync).
+     */
+    public boolean isOneTimeSyncMode() {
+        return mOneTimeSyncMode;
+    }
+
+    /** Sets whether one-time sync mode is on for this preference. */
+    public void setOneTimeSyncMode(boolean oneTimeSyncMode) {
+        mOneTimeSyncMode = oneTimeSyncMode;
+        // Force a refresh so that onBindViewHolder is called
+        notifyChanged();
+    }
+
+    /**
+     * Returns the uid corresponding to the sync adapter's package.
+     *
+     * <p>This can be used to create an intent to request account access via
+     * {@link android.accounts.AccountManager#createRequestAccountAccessIntentSenderAsUser}.
+     */
+    public int getUid() {
+        return mUid;
+    }
+
+    /** Sets the uid for this preference. */
+    public void setUid(int uid) {
+        mUid = uid;
+    }
+
+    public String getPackageName() {
+        return mPackageName;
+    }
+
+    public void setPackageName(String packageName) {
+        mPackageName = packageName;
+    }
+}
diff --git a/src/com/android/car/settings/applications/AppListFragment.java b/src/com/android/car/settings/applications/AppListFragment.java
new file mode 100644
index 0000000..c56ab7b
--- /dev/null
+++ b/src/com/android/car/settings/applications/AppListFragment.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2019 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.car.settings.applications;
+
+import android.os.Bundle;
+import android.widget.Button;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Fragment base class for use in cases where a list of applications is displayed with the option to
+ * show/hide system apps in the list.
+ */
+public abstract class AppListFragment extends SettingsFragment {
+
+    private static final String KEY_SHOW_SYSTEM = "showSystem";
+
+    private boolean mShowSystem;
+
+    @Override
+    @XmlRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (savedInstanceState != null) {
+            mShowSystem = savedInstanceState.getBoolean(KEY_SHOW_SYSTEM, false);
+        }
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        Button toggleShowSystem = requireActivity().findViewById(R.id.action_button1);
+        setButtonText(toggleShowSystem);
+        toggleShowSystem.setOnClickListener(v -> {
+            mShowSystem = !mShowSystem;
+            onToggleShowSystemApps(mShowSystem);
+            setButtonText(toggleShowSystem);
+        });
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        onToggleShowSystemApps(mShowSystem);
+    }
+
+    /** Called when a user toggles the option to show system applications in the list. */
+    protected abstract void onToggleShowSystemApps(boolean showSystem);
+
+    /** Returns {@code true} if system applications should be shown in the list. */
+    protected final boolean shouldShowSystemApps() {
+        return mShowSystem;
+    }
+
+    private void setButtonText(Button button) {
+        // Show text to reverse the current state.
+        button.setText(mShowSystem ? R.string.hide_system : R.string.show_system);
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(KEY_SHOW_SYSTEM, mShowSystem);
+    }
+}
diff --git a/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceController.java b/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceController.java
new file mode 100644
index 0000000..9743875
--- /dev/null
+++ b/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceController.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2019 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.car.settings.applications;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionGroupInfo;
+import android.content.pm.PermissionInfo;
+import android.icu.text.ListFormatter;
+import android.util.ArraySet;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Updates the summary of the entry preference for app permissions to show up to a fixed number of
+ * permission groups currently permitted.
+ */
+public class AppPermissionsEntryPreferenceController extends PreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(AppPermissionsEntryPreferenceController.class);
+
+    private static final String[] PERMISSION_GROUPS = new String[]{
+            "android.permission-group.LOCATION",
+            "android.permission-group.MICROPHONE",
+            "android.permission-group.CAMERA",
+            "android.permission-group.SMS",
+            "android.permission-group.CONTACTS",
+            "android.permission-group.PHONE"};
+
+    private static final int NUM_PERMISSION_TO_USE = 3;
+
+    private PackageManager mPackageManager;
+
+    public AppPermissionsEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPackageManager = context.getPackageManager();
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        Set<String> permissions = getAllPermissionsInGroups();
+        Set<String> grantedPermissionGroups = getGrantedPermissionGroups(permissions);
+        int count = 0;
+        final List<String> summaries = new ArrayList<>();
+
+        // Iterate over array instead of set to show sensitive permissions first.
+        for (String group : PERMISSION_GROUPS) {
+            if (!grantedPermissionGroups.contains(group)) {
+                continue;
+            }
+            summaries.add(getPermissionGroupLabel(group).toString().toLowerCase());
+            if (++count >= NUM_PERMISSION_TO_USE) {
+                break;
+            }
+        }
+        String summary = (count > 0) ? getContext().getString(R.string.app_permissions_summary,
+                ListFormatter.getInstance().format(summaries)) : null;
+
+        preference.setSummary(summary);
+    }
+
+    private Set<String> getAllPermissionsInGroups() {
+        Set<String> result = new ArraySet<>();
+        for (String group : PERMISSION_GROUPS) {
+            try {
+                List<PermissionInfo> permissions = mPackageManager.queryPermissionsByGroup(
+                        group, /* flags= */ 0);
+                for (PermissionInfo permissionInfo : permissions) {
+                    result.add(permissionInfo.name);
+                }
+            } catch (PackageManager.NameNotFoundException e) {
+                LOG.e("Error getting permissions in group " + group, e);
+            }
+        }
+        return result;
+    }
+
+    private Set<String> getGrantedPermissionGroups(Set<String> permissions) {
+        Set<String> grantedPermissionGroups = new ArraySet<>();
+        List<PackageInfo> installedPackages =
+                mPackageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
+        for (PackageInfo installedPackage : installedPackages) {
+            if (installedPackage.permissions == null) {
+                continue;
+            }
+            for (PermissionInfo permissionInfo : installedPackage.permissions) {
+                if (permissions.contains(permissionInfo.name)) {
+                    grantedPermissionGroups.add(permissionInfo.group);
+                }
+            }
+        }
+        return grantedPermissionGroups;
+    }
+
+    private CharSequence getPermissionGroupLabel(String group) {
+        try {
+            PermissionGroupInfo groupInfo = mPackageManager.getPermissionGroupInfo(
+                    group, /* flags= */ 0);
+            return groupInfo.loadLabel(mPackageManager);
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.e("Error getting permissions label.", e);
+        }
+        return group;
+    }
+}
diff --git a/src/com/android/car/settings/applications/ApplicationDetailFragment.java b/src/com/android/car/settings/applications/ApplicationDetailFragment.java
deleted file mode 100644
index efcd64d..0000000
--- a/src/com/android/car/settings/applications/ApplicationDetailFragment.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.applications;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.admin.DevicePolicyManager;
-import android.content.BroadcastReceiver;
-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.ResolveInfo;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.UserHandle;
-import android.view.View;
-import android.widget.Button;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.Utils;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Shows details about an application and action associated with that application,
- * like uninstall, forceStop.
- */
-public class ApplicationDetailFragment extends ListItemSettingsFragment {
-    private static final Logger LOG = new Logger(ApplicationDetailFragment.class);
-    public static final String EXTRA_RESOLVE_INFO = "extra_resolve_info";
-
-    private ResolveInfo mResolveInfo;
-    private PackageInfo mPackageInfo;
-
-    private Button mDisableToggle;
-    private Button mForceStopButton;
-    private DevicePolicyManager mDpm;
-
-    public static ApplicationDetailFragment getInstance(ResolveInfo resolveInfo) {
-        ApplicationDetailFragment applicationDetailFragment = new ApplicationDetailFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putParcelable(EXTRA_RESOLVE_INFO, resolveInfo);
-        bundle.putInt(EXTRA_TITLE_ID, R.string.applications_settings);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        applicationDetailFragment.setArguments(bundle);
-        return applicationDetailFragment;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mResolveInfo = getArguments().getParcelable(EXTRA_RESOLVE_INFO);
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        mPackageInfo = getPackageInfo();
-        super.onActivityCreated(savedInstanceState);
-        if (mResolveInfo == null) {
-            LOG.w("No application info set.");
-            return;
-        }
-
-        mDisableToggle = (Button) getActivity().findViewById(R.id.action_button1);
-        mForceStopButton = (Button) getActivity().findViewById(R.id.action_button2);
-        mForceStopButton.setText(R.string.force_stop);
-        mForceStopButton.setVisibility(View.VISIBLE);
-
-        mDpm = (DevicePolicyManager) getContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
-        updateForceStopButton();
-        mForceStopButton.setOnClickListener(
-                v -> forceStopPackage(mResolveInfo.activityInfo.packageName));
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        updateForceStopButton();
-        updateDisableable();
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        return new ListItemProvider.ListProvider(getListItems());
-    }
-
-    private List<ListItem> getListItems() {
-        ArrayList<ListItem> items = new ArrayList<>();
-        items.add(new ApplicationLineItem(
-                getContext(),
-                getContext().getPackageManager(),
-                mResolveInfo,
-                /* fragmentController= */ null,
-                false));
-        items.add(new ApplicationPermissionLineItem(getContext(), mResolveInfo, this));
-        TextListItem versionItem = new TextListItem(getContext());
-        versionItem.setTitle(getContext().getString(
-                R.string.application_version_label, mPackageInfo.versionName));
-        items.add(versionItem);
-        return items;
-    }
-
-    // fetch the latest ApplicationInfo instead of caching it so it reflects the current state.
-    private ApplicationInfo getAppInfo() {
-        try {
-            return getContext().getPackageManager().getApplicationInfo(
-                    mResolveInfo.activityInfo.packageName, 0 /* flag */);
-        } catch (PackageManager.NameNotFoundException e) {
-            LOG.e("incorrect packagename: " + mResolveInfo.activityInfo.packageName, e);
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    private PackageInfo getPackageInfo() {
-        try {
-            return getContext().getPackageManager().getPackageInfo(
-                    mResolveInfo.activityInfo.packageName, 0 /* flag */);
-        } catch (PackageManager.NameNotFoundException e) {
-            LOG.e("incorrect packagename: " + mResolveInfo.activityInfo.packageName, e);
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    private void updateDisableable() {
-        boolean disableable = false;
-        boolean disabled = false;
-        // Try to prevent the user from bricking their phone
-        // by not allowing disabling of apps in the system.
-        if (Utils.isSystemPackage(
-                getResources(), getContext().getPackageManager(), mPackageInfo)) {
-            // Disable button for core system applications.
-            mDisableToggle.setText(R.string.disable_text);
-            disabled = false;
-        } else if (getAppInfo().enabled && !isDisabledUntilUsed()) {
-            mDisableToggle.setText(R.string.disable_text);
-            disableable = true;
-            disabled = false;
-        } else {
-            mDisableToggle.setText(R.string.enable_text);
-            disableable = true;
-            disabled = true;
-        }
-        mDisableToggle.setEnabled(disableable);
-        final int enableState = disabled
-                ? PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
-                : PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
-        mDisableToggle.setOnClickListener(v -> {
-            getContext().getPackageManager().setApplicationEnabledSetting(
-                    mResolveInfo.activityInfo.packageName,
-                    enableState,
-                    0);
-            updateDisableable();
-        });
-    }
-
-    private boolean isDisabledUntilUsed() {
-        return getAppInfo().enabledSetting
-                == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
-    }
-
-    private void forceStopPackage(String pkgName) {
-        ActivityManager am = (ActivityManager) getContext().getSystemService(
-                Context.ACTIVITY_SERVICE);
-        LOG.d("Stopping package " + pkgName);
-        am.forceStopPackage(pkgName);
-        updateForceStopButton();
-    }
-
-    // enable or disable the force stop button:
-    // - disabled if it's a device admin
-    // - if the application is stopped unexplicitly, enabled the button
-    // - if there's a reason for the system to restart the application, that indicates the app
-    //   can be force stopped.
-    private void updateForceStopButton() {
-        if (mDpm.packageHasActiveAdmins(mResolveInfo.activityInfo.packageName)) {
-            // User can't force stop device admin.
-            LOG.d("Disabling button, user can't force stop device admin");
-            mForceStopButton.setEnabled(false);
-        } else if ((getAppInfo().flags & ApplicationInfo.FLAG_STOPPED) == 0) {
-            // If the app isn't explicitly stopped, then always show the
-            // force stop button.
-            LOG.w("App is not explicitly stopped");
-            mForceStopButton.setEnabled(true);
-        } else {
-            Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
-                    Uri.fromParts("package", mResolveInfo.activityInfo.packageName, null));
-            intent.putExtra(Intent.EXTRA_PACKAGES, new String[]{
-                    mResolveInfo.activityInfo.packageName
-            });
-            LOG.d("Sending broadcast to query restart for "
-                    + mResolveInfo.activityInfo.packageName);
-            getActivity().sendOrderedBroadcastAsUser(intent, UserHandle.CURRENT, null,
-                    mCheckKillProcessesReceiver, null, Activity.RESULT_CANCELED, null, null);
-        }
-    }
-
-    private final BroadcastReceiver mCheckKillProcessesReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            final boolean enabled = getResultCode() != Activity.RESULT_CANCELED;
-            LOG.d(MessageFormat.format("Got broadcast response: Restart status for {0} {1}",
-                    mResolveInfo.activityInfo.packageName, enabled));
-            mForceStopButton.setEnabled(enabled);
-        }
-    };
-}
diff --git a/src/com/android/car/settings/applications/ApplicationDetailsFragment.java b/src/com/android/car/settings/applications/ApplicationDetailsFragment.java
new file mode 100644
index 0000000..5042208
--- /dev/null
+++ b/src/com/android/car/settings/applications/ApplicationDetailsFragment.java
@@ -0,0 +1,515 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import static android.app.Activity.RESULT_OK;
+
+import static com.android.car.settings.applications.ApplicationsUtils.isKeepEnabledPackage;
+import static com.android.car.settings.applications.ApplicationsUtils.isProfileOrDeviceOwner;
+
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.admin.DevicePolicyManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+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.ResolveInfo;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.ArraySet;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.Utils;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Shows details about an application and action associated with that application, like uninstall,
+ * forceStop.
+ *
+ * <p>To uninstall an app, it must <i>not</i> be:
+ * <ul>
+ * <li>a system bundled app
+ * <li>system signed
+ * <li>managed by an active admin from a device policy
+ * <li>a device or profile owner
+ * <li>the only home app
+ * <li>the default home app
+ * <li>for a user with the {@link UserManager#DISALLOW_APPS_CONTROL} restriction
+ * <li>for a user with the {@link UserManager#DISALLOW_UNINSTALL_APPS} restriction
+ * </ul>
+ *
+ * <p>For apps that cannot be uninstalled, a disable option is shown instead (or enable if the app
+ * is already disabled).
+ */
+public class ApplicationDetailsFragment extends SettingsFragment implements ActivityResultCallback {
+    private static final Logger LOG = new Logger(ApplicationDetailsFragment.class);
+    public static final String EXTRA_PACKAGE_NAME = "extra_package_name";
+
+    @VisibleForTesting
+    static final String DISABLE_CONFIRM_DIALOG_TAG =
+            "com.android.car.settings.applications.DisableConfirmDialog";
+    @VisibleForTesting
+    static final String FORCE_STOP_CONFIRM_DIALOG_TAG =
+            "com.android.car.settings.applications.ForceStopConfirmDialog";
+    @VisibleForTesting
+    static final int UNINSTALL_REQUEST_CODE = 10;
+
+    private DevicePolicyManager mDpm;
+    private PackageManager mPm;
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    private String mPackageName;
+    private PackageInfo mPackageInfo;
+    private ApplicationsState mAppState;
+    private ApplicationsState.Session mSession;
+    private ApplicationsState.AppEntry mAppEntry;
+
+    // The function of this button depends on which app is shown and the app's current state.
+    // It is an application enable/disable toggle for apps bundled with the system image.
+    private Button mUninstallButton;
+    private Button mForceStopButton;
+
+    /** Creates an instance of this fragment, passing packageName as an argument. */
+    public static ApplicationDetailsFragment getInstance(String packageName) {
+        ApplicationDetailsFragment applicationDetailFragment = new ApplicationDetailsFragment();
+        Bundle bundle = new Bundle();
+        bundle.putString(EXTRA_PACKAGE_NAME, packageName);
+        applicationDetailFragment.setArguments(bundle);
+        return applicationDetailFragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.application_details_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mDpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        mPm = context.getPackageManager();
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+
+        // These should be loaded before onCreate() so that the controller operates as expected.
+        mPackageName = getArguments().getString(EXTRA_PACKAGE_NAME);
+
+        mAppState = ApplicationsState.getInstance(requireActivity().getApplication());
+        mSession = mAppState.newSession(mApplicationStateCallbacks, getLifecycle());
+
+        retrieveAppEntry();
+
+        use(ApplicationPreferenceController.class,
+                R.string.pk_application_details_app)
+                .setAppEntry(mAppEntry).setAppState(mAppState);
+        use(NotificationsPreferenceController.class,
+                R.string.pk_application_details_notifications).setPackageInfo(mPackageInfo);
+        use(PermissionsPreferenceController.class,
+                R.string.pk_application_details_permissions).setPackageName(mPackageName);
+        use(VersionPreferenceController.class,
+                R.string.pk_application_details_version).setPackageInfo(mPackageInfo);
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) findDialogByTag(DISABLE_CONFIRM_DIALOG_TAG),
+                mDisableConfirmListener, /* rejectListener= */ null);
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) findDialogByTag(FORCE_STOP_CONFIRM_DIALOG_TAG),
+                mForceStopConfirmListener, /* rejectListener= */ null);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        mUninstallButton = requireActivity().findViewById(R.id.action_button1);
+        mForceStopButton = requireActivity().findViewById(R.id.action_button2);
+        mForceStopButton.setVisibility(View.VISIBLE);
+        mForceStopButton.setEnabled(false);
+        mForceStopButton.setText(R.string.force_stop);
+        mForceStopButton.setOnClickListener(mForceStopClickListener);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        // Resume the session earlier than the lifecycle so that cached information is updated
+        // even if settings is not resumed (for example in multi-display).
+        mSession.onResume();
+        refresh();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        // Since we resume early in onStart, make sure we clean up even if we don't receive onPause.
+        mSession.onPause();
+    }
+
+    private void refresh() {
+        retrieveAppEntry();
+        if (mAppEntry == null) {
+            goBack();
+        }
+        updateForceStopButton();
+        updateUninstallButton();
+    }
+
+    private void retrieveAppEntry() {
+        mAppEntry = mAppState.getEntry(mPackageName,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+        if (mAppEntry != null) {
+            try {
+                mPackageInfo = mPm.getPackageInfo(mPackageName,
+                        PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.MATCH_ANY_USER
+                                | PackageManager.GET_SIGNATURES | PackageManager.GET_PERMISSIONS);
+            } catch (PackageManager.NameNotFoundException e) {
+                LOG.e("Exception when retrieving package:" + mPackageName, e);
+                mPackageInfo = null;
+            }
+        } else {
+            mPackageInfo = null;
+        }
+    }
+
+    private void updateForceStopButton() {
+        if (mDpm.packageHasActiveAdmins(mPackageName)) {
+            updateForceStopButtonInner(/* enabled= */ false);
+        } else if ((mAppEntry.info.flags & ApplicationInfo.FLAG_STOPPED) == 0) {
+            // If the app isn't explicitly stopped, then always show the force stop button.
+            updateForceStopButtonInner(/* enabled= */ true);
+        } else {
+            Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
+                    Uri.fromParts("package", mPackageName, /* fragment= */ null));
+            intent.putExtra(Intent.EXTRA_PACKAGES, new String[]{mPackageName});
+            intent.putExtra(Intent.EXTRA_UID, mAppEntry.info.uid);
+            intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mAppEntry.info.uid));
+            LOG.d("Sending broadcast to query restart status for " + mPackageName);
+            requireContext().sendOrderedBroadcastAsUser(intent,
+                    UserHandle.CURRENT,
+                    /* receiverPermission= */ null,
+                    mCheckKillProcessesReceiver,
+                    /* scheduler= */ null,
+                    Activity.RESULT_CANCELED,
+                    /* initialData= */ null,
+                    /* initialExtras= */ null);
+        }
+    }
+
+    private void updateForceStopButtonInner(boolean enabled) {
+        mForceStopButton.setEnabled(
+                enabled && !mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                        UserManager.DISALLOW_APPS_CONTROL));
+    }
+
+    private void updateUninstallButton() {
+        if (isBundledApp()) {
+            if (isAppEnabled()) {
+                mUninstallButton.setText(R.string.disable_text);
+                mUninstallButton.setOnClickListener(mDisableClickListener);
+            } else {
+                mUninstallButton.setText(R.string.enable_text);
+                mUninstallButton.setOnClickListener(mEnableClickListener);
+            }
+        } else {
+            mUninstallButton.setText(R.string.uninstall_text);
+            mUninstallButton.setOnClickListener(mUninstallClickListener);
+        }
+
+        mUninstallButton.setEnabled(!shouldDisableUninstallButton());
+    }
+
+    private boolean shouldDisableUninstallButton() {
+        if (shouldDisableUninstallForHomeApp()) {
+            LOG.d("Uninstall disabled for home app");
+            return true;
+        }
+
+        if (isAppEnabled() && isKeepEnabledPackage(requireContext(), mPackageName)) {
+            LOG.d("Disable button disabled for keep enabled package");
+            return true;
+        }
+
+        if (Utils.isSystemPackage(getResources(), mPm, mPackageInfo)) {
+            LOG.d("Uninstall disabled for system package");
+            return true;
+        }
+
+        if (mDpm.packageHasActiveAdmins(mPackageName)) {
+            LOG.d("Uninstall disabled because package has active admins");
+            return true;
+        }
+
+        // We don't allow uninstalling profile/device owner on any user because if it's a system
+        // app, "uninstall" is actually "downgrade to the system version + disable", and
+        // "downgrade" will clear data on all users.
+        if (isProfileOrDeviceOwner(mPackageName, mDpm, mCarUserManagerHelper)) {
+            LOG.d("Uninstall disabled because package is profile or device owner");
+            return true;
+        }
+
+        if (mDpm.isUninstallInQueue(mPackageName)) {
+            LOG.d("Uninstall disabled because intent is already queued");
+            return true;
+        }
+
+        if (mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_APPS_CONTROL)) {
+            LOG.d("Uninstall disabled because user has DISALLOW_APPS_CONTROL restriction");
+            return true;
+        }
+
+        if (mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_UNINSTALL_APPS)) {
+            LOG.d("Uninstall disabled because user has DISALLOW_UNINSTALL_APPS restriction");
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns {@code true} if the package is a Home app that should not be uninstalled. We don't
+     * risk downgrading bundled home apps because that can interfere with home-key resolution. We
+     * can't allow removal of the only home app, and we don't want to allow removal of an
+     * explicitly preferred home app. The user can go to Home settings and pick a different app,
+     * after which we'll permit removal of the now-not-default app.
+     */
+    private boolean shouldDisableUninstallForHomeApp() {
+        Set<String> homePackages = new ArraySet<>();
+        // Get list of "home" apps and trace through any meta-data references.
+        List<ResolveInfo> homeActivities = new ArrayList<>();
+        ComponentName currentDefaultHome = mPm.getHomeActivities(homeActivities);
+        for (int i = 0; i < homeActivities.size(); i++) {
+            ResolveInfo ri = homeActivities.get(i);
+            String activityPkg = ri.activityInfo.packageName;
+            homePackages.add(activityPkg);
+
+            // Also make sure to include anything proxying for the home app.
+            Bundle metadata = ri.activityInfo.metaData;
+            if (metadata != null) {
+                String metaPkg = metadata.getString(ActivityManager.META_HOME_ALTERNATE);
+                if (signaturesMatch(metaPkg, activityPkg)) {
+                    homePackages.add(metaPkg);
+                }
+            }
+        }
+
+        if (homePackages.contains(mPackageName)) {
+            boolean isBundledApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
+            if (isBundledApp) {
+                // Don't risk a downgrade.
+                return true;
+            } else if (currentDefaultHome == null) {
+                // No preferred default. Permit uninstall only when there is more than one
+                // candidate.
+                return (homePackages.size() == 1);
+            } else {
+                // Explicit default home app. Forbid uninstall of that one, but permit it for
+                // installed-but-inactive ones.
+                return mPackageName.equals(currentDefaultHome.getPackageName());
+            }
+        } else {
+            // Not a home app.
+            return false;
+        }
+    }
+
+    private boolean signaturesMatch(String pkg1, String pkg2) {
+        if (pkg1 != null && pkg2 != null) {
+            try {
+                int match = mPm.checkSignatures(pkg1, pkg2);
+                if (match >= PackageManager.SIGNATURE_MATCH) {
+                    return true;
+                }
+            } catch (Exception e) {
+                // e.g. package not found during lookup. Possibly bad input.
+                // Just return false as this isn't a reason to crash given the use case.
+            }
+        }
+        return false;
+    }
+
+    private boolean isBundledApp() {
+        return (mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
+    }
+
+    private boolean isAppEnabled() {
+        return mAppEntry.info.enabled && !(mAppEntry.info.enabledSetting
+                == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED);
+    }
+
+    @Override
+    public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        if (requestCode == UNINSTALL_REQUEST_CODE) {
+            if (resultCode == RESULT_OK) {
+                goBack();
+            } else {
+                LOG.e("Uninstall failed with result " + resultCode);
+            }
+        }
+    }
+
+    private final View.OnClickListener mForceStopClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            ConfirmationDialogFragment dialogFragment =
+                    new ConfirmationDialogFragment.Builder(getContext())
+                            .setTitle(R.string.force_stop_dialog_title)
+                            .setMessage(R.string.force_stop_dialog_text)
+                            .setPositiveButton(android.R.string.ok,
+                                    mForceStopConfirmListener)
+                            .setNegativeButton(android.R.string.cancel, /* rejectListener= */ null)
+                            .build();
+            showDialog(dialogFragment, FORCE_STOP_CONFIRM_DIALOG_TAG);
+        }
+    };
+
+    private final ConfirmationDialogFragment.ConfirmListener mForceStopConfirmListener =
+            new ConfirmationDialogFragment.ConfirmListener() {
+                @Override
+                public void onConfirm(@Nullable Bundle arguments) {
+                    ActivityManager am = (ActivityManager) requireContext().getSystemService(
+                            Context.ACTIVITY_SERVICE);
+                    LOG.d("Stopping package " + mPackageName);
+                    am.forceStopPackage(mPackageName);
+                    int userId = UserHandle.getUserId(mAppEntry.info.uid);
+                    mAppState.invalidatePackage(mPackageName, userId);
+                }
+            };
+
+    private final BroadcastReceiver mCheckKillProcessesReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            boolean enabled = getResultCode() != Activity.RESULT_CANCELED;
+            LOG.d("Got broadcast response: Restart status for " + mPackageName + " " + enabled);
+            updateForceStopButtonInner(enabled);
+        }
+    };
+
+    private final View.OnClickListener mDisableClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            ConfirmationDialogFragment dialogFragment =
+                    new ConfirmationDialogFragment.Builder(getContext())
+                            .setMessage(getString(R.string.app_disable_dialog_text))
+                            .setPositiveButton(R.string.app_disable_dialog_positive,
+                                    mDisableConfirmListener)
+                            .setNegativeButton(android.R.string.cancel, /* rejectListener= */ null)
+                            .build();
+            showDialog(dialogFragment, DISABLE_CONFIRM_DIALOG_TAG);
+        }
+    };
+
+    private final ConfirmationDialogFragment.ConfirmListener mDisableConfirmListener =
+            new ConfirmationDialogFragment.ConfirmListener() {
+                @Override
+                public void onConfirm(@Nullable Bundle arguments) {
+                    mPm.setApplicationEnabledSetting(mPackageName,
+                            PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER, /* flags= */ 0);
+                }
+            };
+
+    private final View.OnClickListener mEnableClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            mPm.setApplicationEnabledSetting(mPackageName,
+                    PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, /* flags= */ 0);
+        }
+    };
+
+    private final View.OnClickListener mUninstallClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            Uri packageUri = Uri.parse("package:" + mPackageName);
+
+            Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
+            uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, true);
+            uninstallIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
+
+            startActivityForResult(uninstallIntent, UNINSTALL_REQUEST_CODE, /* callback= */
+                    ApplicationDetailsFragment.this);
+        }
+    };
+
+    private final ApplicationsState.Callbacks mApplicationStateCallbacks =
+            new ApplicationsState.Callbacks() {
+                @Override
+                public void onRunningStateChanged(boolean running) {
+                }
+
+                @Override
+                public void onPackageListChanged() {
+                    refresh();
+                }
+
+                @Override
+                public void onRebuildComplete(ArrayList<ApplicationsState.AppEntry> apps) {
+                }
+
+                @Override
+                public void onPackageIconChanged() {
+                }
+
+                @Override
+                public void onPackageSizeChanged(String packageName) {
+                }
+
+                @Override
+                public void onAllSizesComputed() {
+                }
+
+                @Override
+                public void onLauncherInfoChanged() {
+                }
+
+                @Override
+                public void onLoadEntriesCompleted() {
+                }
+            };
+}
diff --git a/src/com/android/car/settings/applications/ApplicationLineItem.java b/src/com/android/car/settings/applications/ApplicationLineItem.java
deleted file mode 100644
index cafeefc..0000000
--- a/src/com/android/car/settings/applications/ApplicationLineItem.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.applications;
-
-import android.annotation.NonNull;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-
-/**
- * Represents an application in application settings page.
- */
-public class ApplicationLineItem extends TextListItem {
-
-    public ApplicationLineItem(
-            @NonNull Context context,
-            PackageManager pm,
-            ResolveInfo resolveInfo,
-            BaseFragment.FragmentController fragmentController) {
-        this(context, pm, resolveInfo, fragmentController, true);
-    }
-
-    public ApplicationLineItem(
-            @NonNull Context context,
-            PackageManager pm,
-            ResolveInfo resolveInfo,
-            BaseFragment.FragmentController fragmentController,
-            boolean clickable) {
-        super(context);
-        setTitle(resolveInfo.loadLabel(pm).toString());
-        setPrimaryActionIcon(resolveInfo.loadIcon(pm), /* useLargeIcon= */ false);
-        if (clickable) {
-            setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-            setOnClickListener(v ->
-                    fragmentController.launchFragment(
-                            ApplicationDetailFragment.getInstance(resolveInfo)));
-        }
-    }
-}
diff --git a/src/com/android/car/settings/applications/ApplicationListItemManager.java b/src/com/android/car/settings/applications/ApplicationListItemManager.java
new file mode 100644
index 0000000..8f7f95b
--- /dev/null
+++ b/src/com/android/car/settings/applications/ApplicationListItemManager.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications;
+
+import android.graphics.drawable.Drawable;
+import android.os.storage.VolumeInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * Class used to load the applications installed on the system with their metadata.
+ */
+// TODO: consolidate with AppEntryListManager.
+public class ApplicationListItemManager implements ApplicationsState.Callbacks {
+    /**
+     * Callback that is called once the list of applications are loaded.
+     */
+    public interface AppListItemListener {
+        /**
+         * Called when the data is successfully loaded from {@link ApplicationsState.Callbacks} and
+         * icon, title and summary are set for all the applications.
+         */
+        void onDataLoaded(ArrayList<ApplicationsState.AppEntry> apps);
+    }
+
+    private static final Logger LOG = new Logger(ApplicationListItemManager.class);
+
+    private final VolumeInfo mVolumeInfo;
+    private final Lifecycle mLifecycle;
+    private final ApplicationsState mAppState;
+    private final List<AppListItemListener> mAppListItemListeners = new ArrayList<>();
+
+    private ApplicationsState.Session mSession;
+    private ApplicationsState.AppFilter mAppFilter;
+    private Comparator<ApplicationsState.AppEntry> mAppEntryComparator;
+
+    public ApplicationListItemManager(VolumeInfo volumeInfo, Lifecycle lifecycle,
+            ApplicationsState appState) {
+        mVolumeInfo = volumeInfo;
+        mLifecycle = lifecycle;
+        mAppState = appState;
+    }
+
+    /**
+     * Registers a listener that will be notified once the data is loaded.
+     */
+    public void registerListener(AppListItemListener appListItemListener) {
+        if (!mAppListItemListeners.contains(appListItemListener) && appListItemListener != null) {
+            mAppListItemListeners.add(appListItemListener);
+        }
+    }
+
+    /**
+     * Unregisters the listener.
+     */
+    public void unregisterlistener(AppListItemListener appListItemListener) {
+        mAppListItemListeners.remove(appListItemListener);
+    }
+
+    /**
+     * Resumes the session on fragment start.
+     */
+    public void onFragmentStart() {
+        mSession.onResume();
+    }
+
+    /**
+     * Pause the session on fragment stop.
+     */
+    public void onFragmentStop() {
+        mSession.onPause();
+    }
+
+    /**
+     * Starts the new session and start loading the list of installed applications on the device.
+     * This list will be filtered out based on the {@link ApplicationsState.AppFilter} provided.
+     * Once the list is ready, {@link AppListItemListener#onDataLoaded} will be called.
+     *
+     * @param appFilter          based on which the list of applications will be filtered before
+     *                           returning.
+     * @param appEntryComparator comparator based on which the application list will be sorted.
+     */
+    public void startLoading(ApplicationsState.AppFilter appFilter,
+            Comparator<ApplicationsState.AppEntry> appEntryComparator) {
+        if (mSession != null) {
+            LOG.w("Loading already started but restart attempted.");
+            return; // Prevent leaking sessions.
+        }
+        mAppFilter = appFilter;
+        mAppEntryComparator = appEntryComparator;
+        mSession = mAppState.newSession(this, mLifecycle);
+    }
+
+    /**
+     * Rebuilds the list of applications using the provided {@link ApplicationsState.AppFilter}.
+     * The filter will be used for all subsequent loading. Once the list is ready, {@link
+     * AppListItemListener#onDataLoaded} will be called.
+     */
+    public void rebuildWithFilter(ApplicationsState.AppFilter appFilter) {
+        mAppFilter = appFilter;
+        rebuild();
+    }
+
+    @Override
+    public void onPackageIconChanged() {
+        rebuild();
+    }
+
+    @Override
+    public void onPackageSizeChanged(String packageName) {
+        rebuild();
+    }
+
+    @Override
+    public void onAllSizesComputed() {
+        rebuild();
+    }
+
+    @Override
+    public void onLauncherInfoChanged() {
+        rebuild();
+    }
+
+    @Override
+    public void onLoadEntriesCompleted() {
+        rebuild();
+    }
+
+    @Override
+    public void onRunningStateChanged(boolean running) {
+    }
+
+    @Override
+    public void onPackageListChanged() {
+        rebuild();
+    }
+
+    @Override
+    public void onRebuildComplete(ArrayList<ApplicationsState.AppEntry> apps) {
+        List<String> successfullyLoadedApplications = new ArrayList<>();
+        for (ApplicationsState.AppEntry appEntry : apps) {
+            String key = appEntry.label + appEntry.sizeStr;
+            if (isLoaded(appEntry.label,
+                    appEntry.sizeStr, appEntry.icon)) {
+                successfullyLoadedApplications.add(key);
+            }
+        }
+
+        if (successfullyLoadedApplications.size() == apps.size()) {
+            for (AppListItemListener appListItemListener : mAppListItemListeners) {
+                appListItemListener.onDataLoaded(apps);
+            }
+        }
+    }
+
+    private boolean isLoaded(String title, String summary, Drawable icon) {
+        return title != null && summary != null && icon != null;
+    }
+
+    ApplicationsState.AppFilter getCompositeFilter(String volumeUuid) {
+        if (mAppFilter == null) {
+            return null;
+        }
+        ApplicationsState.AppFilter filter = new ApplicationsState.VolumeFilter(volumeUuid);
+        filter = new ApplicationsState.CompoundFilter(mAppFilter, filter);
+        return filter;
+    }
+
+    private void rebuild() {
+        ApplicationsState.AppFilter filterObj = ApplicationsState.FILTER_EVERYTHING;
+
+        filterObj = new ApplicationsState.CompoundFilter(filterObj,
+                ApplicationsState.FILTER_NOT_HIDE);
+        ApplicationsState.AppFilter compositeFilter = getCompositeFilter(mVolumeInfo.getFsUuid());
+        if (compositeFilter != null) {
+            filterObj = new ApplicationsState.CompoundFilter(filterObj, compositeFilter);
+        }
+        ApplicationsState.AppFilter finalFilterObj = filterObj;
+        mSession.rebuild(finalFilterObj, mAppEntryComparator, /* foreground= */ false);
+    }
+}
diff --git a/src/com/android/car/settings/applications/ApplicationPermissionLineItem.java b/src/com/android/car/settings/applications/ApplicationPermissionLineItem.java
deleted file mode 100644
index 157aaec..0000000
--- a/src/com/android/car/settings/applications/ApplicationPermissionLineItem.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.applications;
-
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ResolveInfo;
-import android.content.res.Resources;
-import android.icu.text.ListFormatter;
-import android.text.TextUtils;
-
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.AnimationUtil;
-import com.android.car.settings.common.ListController;
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.applications.PermissionsSummaryHelper;
-import com.android.settingslib.applications.PermissionsSummaryHelper.PermissionsResultCallback;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Shows details about an application and action associated with that application,
- * like uninstall, forceStop.
- */
-public class ApplicationPermissionLineItem extends TextListItem {
-    private static final Logger LOG = new Logger(ApplicationPermissionLineItem.class);
-
-    private final ResolveInfo mResolveInfo;
-    private final Context mContext;
-    private final ListController mListController;
-    private String mSummary;
-
-    public ApplicationPermissionLineItem(Context context, ResolveInfo resolveInfo,
-            ListController listController) {
-        super(context);
-        mResolveInfo = resolveInfo;
-        mContext = context;
-        mListController = listController;
-
-        PermissionsSummaryHelper.getPermissionSummary(mContext,
-                mResolveInfo.activityInfo.packageName, mPermissionCallback);
-        setTitle(context.getString(R.string.permissions_label));
-        setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-        updateBody();
-    }
-
-    private void updateBody() {
-        if (TextUtils.isEmpty(mSummary)) {
-            setBody(mContext.getString(R.string.computing_size));
-            setOnClickListener(null);
-        } else {
-            setBody(mSummary);
-            setOnClickListener(view -> {
-                // start new activity to manage app permissions
-                Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
-                intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mResolveInfo.activityInfo.packageName);
-                try {
-                    mContext.startActivity(
-                            intent, AnimationUtil.slideInFromRightOption(mContext).toBundle());
-                } catch (ActivityNotFoundException e) {
-                    LOG.w("No app can handle android.intent.action.MANAGE_APP_PERMISSIONS");
-                }
-            });
-        }
-    }
-
-    private final PermissionsResultCallback mPermissionCallback = new PermissionsResultCallback() {
-        @Override
-        public void onPermissionSummaryResult(int standardGrantedPermissionCount,
-                int requestedPermissionCount, int additionalGrantedPermissionCount,
-                List<CharSequence> grantedGroupLabels) {
-            Resources res = mContext.getResources();
-
-            if (requestedPermissionCount == 0) {
-                mSummary = res.getString(
-                        R.string.runtime_permissions_summary_no_permissions_requested);
-            } else {
-                ArrayList<CharSequence> list = new ArrayList<>(grantedGroupLabels);
-                if (additionalGrantedPermissionCount > 0) {
-                    // N additional permissions.
-                    list.add(res.getQuantityString(
-                            R.plurals.runtime_permissions_additional_count,
-                            additionalGrantedPermissionCount, additionalGrantedPermissionCount));
-                }
-                if (list.isEmpty()) {
-                    mSummary = res.getString(
-                            R.string.runtime_permissions_summary_no_permissions_granted);
-                } else {
-                    mSummary = ListFormatter.getInstance().format(list);
-                }
-            }
-            updateBody();
-            mListController.refreshList();
-        }
-    };
-}
diff --git a/src/com/android/car/settings/applications/ApplicationPreferenceController.java b/src/com/android/car/settings/applications/ApplicationPreferenceController.java
new file mode 100644
index 0000000..63e0227
--- /dev/null
+++ b/src/com/android/car/settings/applications/ApplicationPreferenceController.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+
+/** Business logic for the Application field in the application details page. */
+public class ApplicationPreferenceController extends PreferenceController<Preference> {
+
+    private AppEntry mAppEntry;
+    private ApplicationsState mApplicationsState;
+
+    public ApplicationPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /** Sets the {@link AppEntry} which is used to load the app name and icon. */
+    public ApplicationPreferenceController setAppEntry(AppEntry appEntry) {
+        mAppEntry = appEntry;
+        return this;
+    }
+
+    /** Sets the {@link ApplicationsState} which is used to load the app name and icon. */
+    public ApplicationPreferenceController setAppState(ApplicationsState applicationsState) {
+        mApplicationsState = applicationsState;
+        return this;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mAppEntry == null || mApplicationsState == null) {
+            throw new IllegalStateException(
+                    "AppEntry and AppState should be set before calling this function");
+        }
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setTitle(getAppName());
+        preference.setIcon(getAppIcon());
+    }
+
+    protected String getAppName() {
+        mAppEntry.ensureLabel(getContext());
+        return mAppEntry.label;
+    }
+
+    protected Drawable getAppIcon() {
+        mApplicationsState.ensureIcon(mAppEntry);
+        return mAppEntry.icon;
+    }
+
+    protected String getAppVersion() {
+        return mAppEntry.getVersion(getContext());
+    }
+}
diff --git a/src/com/android/car/settings/applications/ApplicationSettingsFragment.java b/src/com/android/car/settings/applications/ApplicationSettingsFragment.java
deleted file mode 100644
index eb1aa94..0000000
--- a/src/com/android/car/settings/applications/ApplicationSettingsFragment.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.applications;
-
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.Bundle;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Lists all installed applications and their summary.
- */
-public class ApplicationSettingsFragment extends ListItemSettingsFragment {
-
-    /**
-     * Gets an instance of this object.
-     */
-    public static ApplicationSettingsFragment newInstance() {
-        ApplicationSettingsFragment applicationSettingsFragment = new ApplicationSettingsFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.applications_settings);
-        applicationSettingsFragment.setArguments(bundle);
-        return applicationSettingsFragment;
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        return new ListItemProvider.ListProvider(getListItems());
-    }
-
-    private List<ListItem> getListItems() {
-        PackageManager pm = getContext().getPackageManager();
-        Intent intent= new Intent(Intent.ACTION_MAIN);
-        intent.addCategory(Intent.CATEGORY_LAUNCHER);
-        List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent,
-                PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
-                        | PackageManager.MATCH_DISABLED_COMPONENTS);
-        ArrayList<ListItem> items = new ArrayList<>();
-        for (ResolveInfo resolveInfo : resolveInfos) {
-            items.add(new ApplicationLineItem(
-                    getContext(), pm, resolveInfo, getFragmentController()));
-        }
-        return items;
-    }
-}
diff --git a/src/com/android/car/settings/applications/ApplicationsSettingsFragment.java b/src/com/android/car/settings/applications/ApplicationsSettingsFragment.java
new file mode 100644
index 0000000..0dce6be
--- /dev/null
+++ b/src/com/android/car/settings/applications/ApplicationsSettingsFragment.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import static com.android.car.settings.storage.StorageUtils.maybeInitializeVolume;
+
+import android.app.Application;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
+
+import com.android.car.settings.R;
+import com.android.settingslib.applications.ApplicationsState;
+
+/**
+ * Lists all installed applications and their summary.
+ */
+public class ApplicationsSettingsFragment extends AppListFragment {
+
+    private ApplicationListItemManager mAppListItemManager;
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.applications_settings_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        Application application = requireActivity().getApplication();
+        StorageManager sm = context.getSystemService(StorageManager.class);
+        VolumeInfo volume = maybeInitializeVolume(sm, getArguments());
+        mAppListItemManager = new ApplicationListItemManager(volume, getLifecycle(),
+                ApplicationsState.getInstance(application));
+        mAppListItemManager.registerListener(
+                use(ApplicationsSettingsPreferenceController.class,
+                        R.string.pk_all_applications_settings_list));
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mAppListItemManager.startLoading(getAppFilter(), ApplicationsState.ALPHA_COMPARATOR);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mAppListItemManager.onFragmentStart();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mAppListItemManager.onFragmentStop();
+    }
+
+    @Override
+    protected void onToggleShowSystemApps(boolean showSystem) {
+        mAppListItemManager.rebuildWithFilter(getAppFilter());
+    }
+
+    private ApplicationsState.AppFilter getAppFilter() {
+        return shouldShowSystemApps() ? null
+                : ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER_AND_INSTANT;
+    }
+}
diff --git a/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceController.java b/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceController.java
new file mode 100644
index 0000000..f94e9af
--- /dev/null
+++ b/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceController.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.ArrayList;
+
+/** Business logic which populates the applications in this setting. */
+public class ApplicationsSettingsPreferenceController extends
+        PreferenceController<PreferenceGroup> implements
+        ApplicationListItemManager.AppListItemListener {
+
+    public ApplicationsSettingsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    public void onDataLoaded(ArrayList<ApplicationsState.AppEntry> apps) {
+        getPreference().removeAll();
+        for (ApplicationsState.AppEntry appEntry : apps) {
+            getPreference().addPreference(
+                    createPreference(appEntry.label, appEntry.sizeStr, appEntry.icon,
+                            appEntry.info.packageName));
+        }
+    }
+
+    private Preference createPreference(String title, String summary, Drawable icon,
+            String packageName) {
+        Preference preference = new Preference(getContext());
+        preference.setTitle(title);
+        preference.setSummary(summary);
+        preference.setIcon(icon);
+        preference.setKey(packageName);
+        preference.setOnPreferenceClickListener(p -> {
+            getFragmentController().launchFragment(
+                    ApplicationDetailsFragment.getInstance(packageName));
+            return true;
+        });
+        return preference;
+    }
+}
diff --git a/src/com/android/car/settings/applications/ApplicationsUtils.java b/src/com/android/car/settings/applications/ApplicationsUtils.java
new file mode 100644
index 0000000..00aa190
--- /dev/null
+++ b/src/com/android/car/settings/applications/ApplicationsUtils.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2019 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.car.settings.applications;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.telecom.DefaultDialerManager;
+import android.text.TextUtils;
+import android.util.ArraySet;
+
+import com.android.internal.telephony.SmsApplication;
+
+import java.util.List;
+import java.util.Set;
+
+/** Utility functions for use in applications settings. */
+public class ApplicationsUtils {
+
+    private ApplicationsUtils() {
+    }
+
+    /**
+     * Returns {@code true} if the package should always remain enabled.
+     */
+    // TODO: investigate making this behavior configurable via a feature factory with the current
+    //  contents as the default.
+    public static boolean isKeepEnabledPackage(Context context, String packageName) {
+        // Find current default phone/sms app. We should keep them enabled.
+        Set<String> keepEnabledPackages = new ArraySet<>();
+        String defaultDialer = DefaultDialerManager.getDefaultDialerApplication(context);
+        if (!TextUtils.isEmpty(defaultDialer)) {
+            keepEnabledPackages.add(defaultDialer);
+        }
+        ComponentName defaultSms = SmsApplication.getDefaultSmsApplication(
+                context, /* updateIfNeeded= */ true);
+        if (defaultSms != null) {
+            keepEnabledPackages.add(defaultSms.getPackageName());
+        }
+        return keepEnabledPackages.contains(packageName);
+    }
+
+    /**
+     * Returns {@code true} if the given {@code packageName} is device owner or profile owner of at
+     * least one user.
+     */
+    public static boolean isProfileOrDeviceOwner(String packageName, DevicePolicyManager dpm,
+            CarUserManagerHelper um) {
+        if (dpm.isDeviceOwnerAppOnAnyUser(packageName)) {
+            return true;
+        }
+        List<UserInfo> userInfos = um.getAllUsers();
+        for (int i = 0; i < userInfos.size(); i++) {
+            ComponentName cn = dpm.getProfileOwnerAsUser(userInfos.get(i).id);
+            if (cn != null && cn.getPackageName().equals(packageName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/car/settings/applications/AppsAndNotificationsFragment.java b/src/com/android/car/settings/applications/AppsAndNotificationsFragment.java
new file mode 100644
index 0000000..a935aee
--- /dev/null
+++ b/src/com/android/car/settings/applications/AppsAndNotificationsFragment.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Shows subsettings related to apps and notifications. */
+public class AppsAndNotificationsFragment extends SettingsFragment {
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.apps_and_notifications_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/applications/NotificationsPreferenceController.java b/src/com/android/car/settings/applications/NotificationsPreferenceController.java
new file mode 100644
index 0000000..db7da71
--- /dev/null
+++ b/src/com/android/car/settings/applications/NotificationsPreferenceController.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications;
+
+import static android.app.NotificationManager.IMPORTANCE_NONE;
+import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
+
+import android.app.INotificationManager;
+import android.app.NotificationChannel;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.os.ServiceManager;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.annotations.VisibleForTesting;
+
+/**
+ * Controller for preference which enables / disables showing notifications for an application.
+ */
+public class NotificationsPreferenceController extends PreferenceController<TwoStatePreference> {
+
+    private static final Logger LOG = new Logger(NotificationsPreferenceController.class);
+
+    private String mPackageName;
+    private int mUid;
+
+    @VisibleForTesting
+    INotificationManager mNotificationManager =
+            INotificationManager.Stub.asInterface(
+                    ServiceManager.getService(Context.NOTIFICATION_SERVICE));
+
+    public NotificationsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /**
+     * Set the package info of the application.
+     */
+    public void setPackageInfo(PackageInfo packageInfo) {
+        mPackageName = packageInfo.packageName;
+        mUid = packageInfo.applicationInfo.uid;
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(isNotificationsEnabled());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean enabled = (boolean) newValue;
+
+        try {
+            if (mNotificationManager.onlyHasDefaultChannel(mPackageName, mUid)) {
+                NotificationChannel defaultChannel =
+                        mNotificationManager.getNotificationChannelForPackage(
+                                mPackageName,
+                                mUid,
+                                NotificationChannel.DEFAULT_CHANNEL_ID,
+                                /* includeDeleted= */ true);
+                defaultChannel.setImportance(enabled ? IMPORTANCE_UNSPECIFIED : IMPORTANCE_NONE);
+                mNotificationManager
+                        .updateNotificationChannelForPackage(mPackageName, mUid, defaultChannel);
+            }
+            mNotificationManager.setNotificationsEnabledForPackage(mPackageName, mUid, enabled);
+        } catch (Exception e) {
+            LOG.w("Error querying notification setting for package");
+            return false;
+        }
+        return true;
+    }
+
+    private boolean isNotificationsEnabled() {
+        try {
+            return mNotificationManager.areNotificationsEnabledForPackage(mPackageName, mUid);
+        } catch (Exception e) {
+            LOG.w("Error querying notification setting for package");
+            return false;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/PermissionsPreferenceController.java b/src/com/android/car/settings/applications/PermissionsPreferenceController.java
new file mode 100644
index 0000000..98d4634
--- /dev/null
+++ b/src/com/android/car/settings/applications/PermissionsPreferenceController.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.icu.text.ListFormatter;
+import android.text.TextUtils;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.PermissionsSummaryHelper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Business logic for the permissions entry in the application details settings. */
+public class PermissionsPreferenceController extends PreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(PermissionsPreferenceController.class);
+
+    private String mPackageName;
+    private String mSummary;
+
+    public PermissionsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /**
+     * Set the packageName, which is used on the intent to open the permissions
+     * selection screen.
+     */
+    public void setPackageName(String packageName) {
+        mPackageName = packageName;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mPackageName == null) {
+            throw new IllegalStateException(
+                    "PackageName should be set before calling this function");
+        }
+    }
+
+    @Override
+    protected void onStartInternal() {
+        PermissionsSummaryHelper.getPermissionSummary(getContext(), mPackageName,
+                mPermissionCallback);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(getSummary());
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
+        intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mPackageName);
+        try {
+            getContext().startActivity(intent);
+        } catch (ActivityNotFoundException e) {
+            LOG.w("No app can handle android.intent.action.MANAGE_APP_PERMISSIONS");
+        }
+        return true;
+    }
+
+    private CharSequence getSummary() {
+        if (TextUtils.isEmpty(mSummary)) {
+            return getContext().getString(R.string.computing_size);
+        }
+        return mSummary;
+    }
+
+    private final PermissionsSummaryHelper.PermissionsResultCallback mPermissionCallback =
+            new PermissionsSummaryHelper.PermissionsResultCallback() {
+                @Override
+                public void onPermissionSummaryResult(int standardGrantedPermissionCount,
+                        int requestedPermissionCount, int additionalGrantedPermissionCount,
+                        List<CharSequence> grantedGroupLabels) {
+                    Resources res = getContext().getResources();
+
+                    if (requestedPermissionCount == 0) {
+                        mSummary = res.getString(
+                                R.string.runtime_permissions_summary_no_permissions_requested);
+                    } else {
+                        ArrayList<CharSequence> list = new ArrayList<>(grantedGroupLabels);
+                        if (additionalGrantedPermissionCount > 0) {
+                            // N additional permissions.
+                            list.add(res.getQuantityString(
+                                    R.plurals.runtime_permissions_additional_count,
+                                    additionalGrantedPermissionCount,
+                                    additionalGrantedPermissionCount));
+                        }
+                        if (list.isEmpty()) {
+                            mSummary = res.getString(
+                                    R.string.runtime_permissions_summary_no_permissions_granted);
+                        } else {
+                            mSummary = ListFormatter.getInstance().format(list);
+                        }
+                    }
+                    refreshUi();
+                }
+            };
+}
diff --git a/src/com/android/car/settings/applications/VersionPreferenceController.java b/src/com/android/car/settings/applications/VersionPreferenceController.java
new file mode 100644
index 0000000..8df5ce0
--- /dev/null
+++ b/src/com/android/car/settings/applications/VersionPreferenceController.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic for the Version field in the application details page. */
+public class VersionPreferenceController extends PreferenceController<Preference> {
+
+    private PackageInfo mPackageInfo;
+
+    public VersionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /** Set the package info which is used to get the version name. */
+    public void setPackageInfo(PackageInfo packageInfo) {
+        mPackageInfo = packageInfo;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mPackageInfo == null) {
+            throw new IllegalStateException(
+                    "PackageInfo should be set before calling this function");
+        }
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setTitle(getContext().getString(
+                R.string.application_version_label, mPackageInfo.versionName));
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/AssistConfigBasePreferenceController.java b/src/com/android/car/settings/applications/assist/AssistConfigBasePreferenceController.java
new file mode 100644
index 0000000..1a7ea28
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/AssistConfigBasePreferenceController.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.app.AssistUtils;
+
+import java.util.List;
+
+/** Common logic for preference controllers that configure the assistant's behavior. */
+public abstract class AssistConfigBasePreferenceController extends
+        PreferenceController<TwoStatePreference> {
+
+    private final SettingObserver mSettingObserver;
+    private final AssistUtils mAssistUtils;
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public AssistConfigBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAssistUtils = new AssistUtils(context);
+        mSettingObserver = new SettingObserver(getSettingUris(), this::refreshUi);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        int userId = mCarUserManagerHelper.getCurrentProcessUserId();
+        return mAssistUtils.getAssistComponentForUser(userId) != null ? AVAILABLE
+                : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mSettingObserver.register(getContext().getContentResolver(), true);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mSettingObserver.register(getContext().getContentResolver(), false);
+    }
+
+    /** Gets the Setting Uris that should be observed */
+    protected abstract List<Uri> getSettingUris();
+
+    /**
+     * Creates an observer that listens for changes to {@link Settings.Secure#ASSISTANT} as well as
+     * any other URI defined by {@link #getSettingUris()}.
+     */
+    private static class SettingObserver extends ContentObserver {
+
+        private static final Uri ASSIST_URI = Settings.Secure.getUriFor(Settings.Secure.ASSISTANT);
+        private final List<Uri> mUriList;
+        private final Runnable mSettingChangeListener;
+
+        SettingObserver(List<Uri> uriList, Runnable settingChangeListener) {
+            super(new Handler(Looper.getMainLooper()));
+            mUriList = uriList;
+            mSettingChangeListener = settingChangeListener;
+        }
+
+        /** Registers or unregisters this observer to the given content resolver. */
+        void register(ContentResolver cr, boolean register) {
+            if (register) {
+                cr.registerContentObserver(ASSIST_URI, /* notifyForDescendants= */ false,
+                        /* observer= */ this);
+                if (mUriList != null) {
+                    for (Uri uri : mUriList) {
+                        cr.registerContentObserver(uri, /* notifyForDescendants= */ false,
+                                /* observer=*/ this);
+                    }
+                }
+            } else {
+                cr.unregisterContentObserver(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+
+            if (shouldUpdatePreference(uri)) {
+                mSettingChangeListener.run();
+            }
+        }
+
+        private boolean shouldUpdatePreference(Uri uri) {
+            return ASSIST_URI.equals(uri) || (mUriList != null && mUriList.contains(uri));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceController.java b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceController.java
new file mode 100644
index 0000000..e0ed7a9
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceController.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
+
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.applications.defaultapps.DefaultAppsPickerEntryBasePreferenceController;
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.app.AssistUtils;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import java.util.Objects;
+
+/**
+ * Business logic to show the currently selected default voice input service and also link to the
+ * service settings, if it exists.
+ */
+public class DefaultVoiceInputPickerEntryPreferenceController extends
+        DefaultAppsPickerEntryBasePreferenceController {
+
+    private static final Uri ASSIST_URI = Settings.Secure.getUriFor(Settings.Secure.ASSISTANT);
+
+    private final ContentObserver mSettingObserver = new ContentObserver(
+            new Handler(Looper.getMainLooper())) {
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+
+            if (ASSIST_URI.equals(uri)) {
+                refreshUi();
+            }
+        }
+    };
+
+    private final VoiceInputInfoProvider mVoiceInputInfoProvider;
+    private final AssistUtils mAssistUtils;
+
+    public DefaultVoiceInputPickerEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mVoiceInputInfoProvider = new VoiceInputInfoProvider(context);
+        mAssistUtils = new AssistUtils(context);
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        ComponentName currentVoiceService = VoiceInputUtils.getCurrentService(getContext());
+        ComponentName currentAssist = mAssistUtils.getAssistComponentForUser(
+                getCurrentProcessUserId());
+
+        return Objects.equals(currentAssist, currentVoiceService) ? CONDITIONALLY_UNAVAILABLE
+                : AVAILABLE;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        getContext().getContentResolver().registerContentObserver(ASSIST_URI,
+                /* notifyForDescendants= */ false, mSettingObserver);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        getContext().getContentResolver().unregisterContentObserver(mSettingObserver);
+    }
+
+    @Nullable
+    @Override
+    protected DefaultAppInfo getCurrentDefaultAppInfo() {
+        VoiceInputInfoProvider.VoiceInputInfo info = mVoiceInputInfoProvider.getInfoForComponent(
+                VoiceInputUtils.getCurrentService(getContext()));
+        return (info == null) ? null : new DefaultVoiceInputServiceInfo(getContext(),
+                getContext().getPackageManager(), getCurrentProcessUserId(), info,
+                /* enabled= */ true);
+    }
+
+    @Nullable
+    @Override
+    protected Intent getSettingIntent(@Nullable DefaultAppInfo info) {
+        if (info instanceof DefaultVoiceInputServiceInfo) {
+            return ((DefaultVoiceInputServiceInfo) info).getSettingIntent();
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerFragment.java b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerFragment.java
new file mode 100644
index 0000000..1460ade
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Shows the screen to pick the default voice input service. */
+public class DefaultVoiceInputPickerFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.default_voice_input_picker_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceController.java b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceController.java
new file mode 100644
index 0000000..0cc1eaf
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceController.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+
+import com.android.car.settings.applications.defaultapps.DefaultAppsPickerBasePreferenceController;
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.app.AssistUtils;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/** Business logic for displaying and choosing the default voice input service. */
+public class DefaultVoiceInputPickerPreferenceController extends
+        DefaultAppsPickerBasePreferenceController {
+
+    private final AssistUtils mAssistUtils;
+    private final VoiceInputInfoProvider mVoiceInputInfoProvider;
+
+    // Current assistant component name, used to restrict available voice inputs.
+    private String mAssistComponentName = null;
+
+    public DefaultVoiceInputPickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAssistUtils = new AssistUtils(context);
+        mVoiceInputInfoProvider = new VoiceInputInfoProvider(context);
+        if (Objects.equals(mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId()),
+                VoiceInputUtils.getCurrentService(getContext()))) {
+            ComponentName cn = mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId());
+            if (cn != null) {
+                mAssistComponentName = cn.flattenToString();
+            }
+        }
+    }
+
+    @NonNull
+    @Override
+    protected List<DefaultAppInfo> getCandidates() {
+        List<DefaultAppInfo> candidates = new ArrayList<>();
+        for (VoiceInputInfoProvider.VoiceInteractionInfo info :
+                mVoiceInputInfoProvider.getVoiceInteractionInfoList()) {
+            boolean enabled = TextUtils.equals(info.getComponentName().flattenToString(),
+                    mAssistComponentName);
+            candidates.add(
+                    new DefaultVoiceInputServiceInfo(getContext(), getContext().getPackageManager(),
+                            getCurrentProcessUserId(), info, enabled));
+        }
+
+        for (VoiceInputInfoProvider.VoiceRecognitionInfo info :
+                mVoiceInputInfoProvider.getVoiceRecognitionInfoList()) {
+            candidates.add(
+                    new DefaultVoiceInputServiceInfo(getContext(), getContext().getPackageManager(),
+                            getCurrentProcessUserId(), info, /* enabled= */ true));
+        }
+        return candidates;
+    }
+
+    @Override
+    protected String getCurrentDefaultKey() {
+        ComponentName cn = VoiceInputUtils.getCurrentService(getContext());
+        if (cn == null) {
+            return null;
+        }
+        return cn.flattenToString();
+    }
+
+    @Override
+    protected void setCurrentDefault(String key) {
+        ComponentName cn = ComponentName.unflattenFromString(key);
+        VoiceInputInfoProvider.VoiceInputInfo info = mVoiceInputInfoProvider.getInfoForComponent(
+                cn);
+
+        if (info instanceof VoiceInputInfoProvider.VoiceInteractionInfo) {
+            VoiceInputInfoProvider.VoiceInteractionInfo interactionInfo =
+                    (VoiceInputInfoProvider.VoiceInteractionInfo) info;
+            Settings.Secure.putString(getContext().getContentResolver(),
+                    Settings.Secure.VOICE_INTERACTION_SERVICE, key);
+            Settings.Secure.putString(getContext().getContentResolver(),
+                    Settings.Secure.VOICE_RECOGNITION_SERVICE,
+                    new ComponentName(interactionInfo.getPackageName(),
+                            interactionInfo.getRecognitionService())
+                            .flattenToString());
+        } else if (info instanceof VoiceInputInfoProvider.VoiceRecognitionInfo) {
+            Settings.Secure.putString(getContext().getContentResolver(),
+                    Settings.Secure.VOICE_INTERACTION_SERVICE, "");
+            Settings.Secure.putString(getContext().getContentResolver(),
+                    Settings.Secure.VOICE_RECOGNITION_SERVICE, key);
+        }
+    }
+
+    @Override
+    protected boolean includeNonePreference() {
+        return false;
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/DefaultVoiceInputServiceInfo.java b/src/com/android/car/settings/applications/assist/DefaultVoiceInputServiceInfo.java
new file mode 100644
index 0000000..369281e
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/DefaultVoiceInputServiceInfo.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.applications.assist.VoiceInputInfoProvider.VoiceInteractionInfo;
+import com.android.car.settings.applications.assist.VoiceInputInfoProvider.VoiceRecognitionInfo;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+/** An extension of {@link DefaultAppInfo} to help represent voice input services. */
+public class DefaultVoiceInputServiceInfo extends DefaultAppInfo {
+
+    private VoiceInputInfoProvider.VoiceInputInfo mInfo;
+
+    /**
+     * Constructs a {@link DefaultVoiceInputServiceInfo}
+     *
+     * @param info    a {@link VoiceInteractionInfo} or {@link VoiceRecognitionInfo} that describes
+     *                the Voice Input Service.
+     * @param enabled determines whether the service should be selectable or not.
+     */
+    public DefaultVoiceInputServiceInfo(Context context, PackageManager pm, int userId,
+            VoiceInputInfoProvider.VoiceInputInfo info, boolean enabled) {
+        super(context, pm, userId, info.getComponentName(), /* summary= */ null, enabled);
+        mInfo = info;
+    }
+
+    @Override
+    public CharSequence loadLabel() {
+        return mInfo.getLabel();
+    }
+
+    /** Gets the intent to open the related settings component if it exists. */
+    @Nullable
+    public Intent getSettingIntent() {
+        if (mInfo.getSettingsActivityComponentName() == null) {
+            return null;
+        }
+        return new Intent(Intent.ACTION_MAIN).setComponent(
+                mInfo.getSettingsActivityComponentName());
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/ManageAssistActivity.java b/src/com/android/car/settings/applications/assist/ManageAssistActivity.java
new file mode 100644
index 0000000..3ac4fa5
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/ManageAssistActivity.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * Starts {@link ManageAssistFragment} in a separate activity to help with the back navigation
+ * flow. This setting differs from the other settings in that the user arrives here from the
+ * PermissionController rather than from within the Settings app itself.
+ */
+public class ManageAssistActivity extends BaseCarSettingsActivity {
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        return new ManageAssistFragment();
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java b/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java
new file mode 100644
index 0000000..b817e81
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.car.settings.applications.defaultapps.DefaultAppEntryBasePreferenceController;
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.app.AssistUtils;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+/**
+ * Business logic to show the currently selected default assist.
+ */
+public class ManageAssistEntryPreferenceController extends
+        DefaultAppEntryBasePreferenceController<Preference> {
+
+    private final AssistUtils mAssistUtils;
+
+    public ManageAssistEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAssistUtils = new AssistUtils(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Nullable
+    protected DefaultAppInfo getCurrentDefaultAppInfo() {
+        ComponentName cn = mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId());
+        if (cn == null) {
+            return null;
+        }
+        return new DefaultAppInfo(getContext(), getContext().getPackageManager(),
+                getCurrentProcessUserId(), cn);
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/ManageAssistFragment.java b/src/com/android/car/settings/applications/assist/ManageAssistFragment.java
new file mode 100644
index 0000000..d4fd2f5
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/ManageAssistFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Assistant management settings screen. */
+public class ManageAssistFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.manage_assist_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/ScreenshotContextPreferenceController.java b/src/com/android/car/settings/applications/assist/ScreenshotContextPreferenceController.java
new file mode 100644
index 0000000..eadad84
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/ScreenshotContextPreferenceController.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.Uri;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** Toggles the assistant's ability to use a screenshot of the screen for context. */
+public class ScreenshotContextPreferenceController extends AssistConfigBasePreferenceController {
+
+    public ScreenshotContextPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        boolean checked = Settings.Secure.getInt(getContext().getContentResolver(),
+                Settings.Secure.ASSIST_SCREENSHOT_ENABLED, 1) != 0;
+        preference.setChecked(checked);
+
+        boolean contextChecked = Settings.Secure.getInt(getContext().getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1) != 0;
+        preference.setEnabled(contextChecked);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        Settings.Secure.putInt(getContext().getContentResolver(),
+                Settings.Secure.ASSIST_SCREENSHOT_ENABLED, (boolean) newValue ? 1 : 0);
+        return true;
+    }
+
+    @Override
+    protected List<Uri> getSettingUris() {
+        return Arrays.asList(
+                Settings.Secure.getUriFor(Settings.Secure.ASSIST_SCREENSHOT_ENABLED),
+                Settings.Secure.getUriFor(Settings.Secure.ASSIST_STRUCTURE_ENABLED));
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/TextContextPreferenceController.java b/src/com/android/car/settings/applications/assist/TextContextPreferenceController.java
new file mode 100644
index 0000000..336d5f7
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/TextContextPreferenceController.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.Uri;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+
+import java.util.Collections;
+import java.util.List;
+
+/** Toggles the assistant's ability to use the text on the screen for context. */
+public class TextContextPreferenceController extends AssistConfigBasePreferenceController {
+
+    public TextContextPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(isAssistContextEnabled());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        Settings.Secure.putInt(getContext().getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, (boolean) newValue ? 1 : 0);
+        return true;
+    }
+
+    @Override
+    protected List<Uri> getSettingUris() {
+        return Collections.singletonList(
+                Settings.Secure.getUriFor(Settings.Secure.ASSIST_STRUCTURE_ENABLED));
+    }
+
+    private boolean isAssistContextEnabled() {
+        return Settings.Secure.getInt(getContext().getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1) != 0;
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/VoiceInputInfoProvider.java b/src/com/android/car/settings/applications/assist/VoiceInputInfoProvider.java
new file mode 100644
index 0000000..ef01f4d
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/VoiceInputInfoProvider.java
@@ -0,0 +1,305 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
+import android.service.voice.VoiceInteractionService;
+import android.service.voice.VoiceInteractionServiceInfo;
+import android.speech.RecognitionService;
+import android.util.AttributeSet;
+import android.util.Xml;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.collection.ArrayMap;
+import androidx.collection.ArraySet;
+
+import com.android.car.settings.common.Logger;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Extracts the voice interaction services and voice recognition services and converts them into
+ * {@link VoiceInteractionInfo} instances and {@link VoiceRecognitionInfo} instances.
+ */
+public class VoiceInputInfoProvider {
+
+    private static final Logger LOG = new Logger(VoiceInputInfoProvider.class);
+    @VisibleForTesting
+    static final Intent VOICE_INTERACTION_SERVICE_TAG = new Intent(
+            VoiceInteractionService.SERVICE_INTERFACE);
+    @VisibleForTesting
+    static final Intent VOICE_RECOGNITION_SERVICE_TAG = new Intent(
+            RecognitionService.SERVICE_INTERFACE);
+
+    private final Context mContext;
+    private final Map<ComponentName, VoiceInputInfo> mComponentToInfoMap = new ArrayMap<>();
+    private final List<VoiceInteractionInfo> mVoiceInteractionInfoList = new ArrayList<>();
+    private final List<VoiceRecognitionInfo> mVoiceRecognitionInfoList = new ArrayList<>();
+    private final Set<ComponentName> mRecognitionServiceNames = new ArraySet<>();
+
+    public VoiceInputInfoProvider(Context context) {
+        mContext = context;
+
+        loadVoiceInteractionServices();
+        loadVoiceRecognitionServices();
+    }
+
+    /**
+     * Gets the list of voice interaction services represented as {@link VoiceInteractionInfo}
+     * instances.
+     */
+    public List<VoiceInteractionInfo> getVoiceInteractionInfoList() {
+        return mVoiceInteractionInfoList;
+    }
+
+    /**
+     * Gets the list of voice recognition services represented as {@link VoiceRecognitionInfo}
+     * instances.
+     */
+    public List<VoiceRecognitionInfo> getVoiceRecognitionInfoList() {
+        return mVoiceRecognitionInfoList;
+    }
+
+    /**
+     * Returns the appropriate {@link VoiceInteractionInfo} or {@link VoiceRecognitionInfo} based on
+     * the provided {@link ComponentName}.
+     *
+     * @return {@link VoiceInputInfo} if it exists for the component name, null otherwise.
+     */
+    @Nullable
+    public VoiceInputInfo getInfoForComponent(ComponentName key) {
+        return mComponentToInfoMap.getOrDefault(key, null);
+    }
+
+    private void loadVoiceInteractionServices() {
+        List<ResolveInfo> mAvailableVoiceInteractionServices =
+                mContext.getPackageManager().queryIntentServices(VOICE_INTERACTION_SERVICE_TAG,
+                        PackageManager.GET_META_DATA);
+
+        for (ResolveInfo resolveInfo : mAvailableVoiceInteractionServices) {
+            VoiceInteractionServiceInfo interactionServiceInfo = new VoiceInteractionServiceInfo(
+                    mContext.getPackageManager(), resolveInfo.serviceInfo);
+            if (interactionServiceInfo.getParseError() != null) {
+                LOG.w("Error in VoiceInteractionService " + resolveInfo.serviceInfo.packageName
+                        + "/" + resolveInfo.serviceInfo.name + ": "
+                        + interactionServiceInfo.getParseError());
+                continue;
+            }
+            VoiceInteractionInfo voiceInteractionInfo = new VoiceInteractionInfo(mContext,
+                    interactionServiceInfo);
+            mVoiceInteractionInfoList.add(voiceInteractionInfo);
+            if (interactionServiceInfo.getRecognitionService() != null) {
+                mRecognitionServiceNames.add(new ComponentName(resolveInfo.serviceInfo.packageName,
+                        interactionServiceInfo.getRecognitionService()));
+            }
+            mComponentToInfoMap.put(new ComponentName(resolveInfo.serviceInfo.packageName,
+                    resolveInfo.serviceInfo.name), voiceInteractionInfo);
+        }
+        Collections.sort(mVoiceInteractionInfoList);
+    }
+
+    private void loadVoiceRecognitionServices() {
+        List<ResolveInfo> mAvailableRecognitionServices =
+                mContext.getPackageManager().queryIntentServices(VOICE_RECOGNITION_SERVICE_TAG,
+                        PackageManager.GET_META_DATA);
+        for (ResolveInfo resolveInfo : mAvailableRecognitionServices) {
+            ComponentName componentName = new ComponentName(resolveInfo.serviceInfo.packageName,
+                    resolveInfo.serviceInfo.name);
+
+            VoiceRecognitionInfo voiceRecognitionInfo = new VoiceRecognitionInfo(mContext,
+                    resolveInfo.serviceInfo);
+            mVoiceRecognitionInfoList.add(voiceRecognitionInfo);
+            mRecognitionServiceNames.add(componentName);
+            mComponentToInfoMap.put(componentName, voiceRecognitionInfo);
+        }
+        Collections.sort(mVoiceRecognitionInfoList);
+    }
+
+    /**
+     * Base object used to represent {@link VoiceInteractionInfo} and {@link VoiceRecognitionInfo}.
+     */
+    abstract static class VoiceInputInfo implements Comparable {
+        private final Context mContext;
+        private final ServiceInfo mServiceInfo;
+
+        VoiceInputInfo(Context context, ServiceInfo serviceInfo) {
+            mContext = context;
+            mServiceInfo = serviceInfo;
+        }
+
+        protected Context getContext() {
+            return mContext;
+        }
+
+        protected ServiceInfo getServiceInfo() {
+            return mServiceInfo;
+        }
+
+        @Override
+        public int compareTo(Object o) {
+            return getTag().toString().compareTo(((VoiceInputInfo) o).getTag().toString());
+        }
+
+        /**
+         * Returns the {@link ComponentName} which represents the settings activity, if it exists.
+         */
+        @Nullable
+        ComponentName getSettingsActivityComponentName() {
+            String activity = getSettingsActivity();
+            return (activity != null) ? new ComponentName(mServiceInfo.packageName, activity)
+                    : null;
+        }
+
+        /** Returns the package name for the service represented by this {@link VoiceInputInfo}. */
+        String getPackageName() {
+            return mServiceInfo.packageName;
+        }
+
+        /**
+         * Returns the component name for the service represented by this {@link VoiceInputInfo}.
+         */
+        ComponentName getComponentName() {
+            return new ComponentName(mServiceInfo.packageName, mServiceInfo.name);
+        }
+
+        /**
+         * Returns the label to describe the service represented by this {@link VoiceInputInfo}.
+         */
+        abstract CharSequence getLabel();
+
+        /**
+         * The string representation of the settings activity for the service represented by this
+         * {@link VoiceInputInfo}.
+         */
+        protected abstract String getSettingsActivity();
+
+        /**
+         * Returns a tag used to determine the sort order of the {@link VoiceInputInfo} instances.
+         */
+        protected CharSequence getTag() {
+            return mServiceInfo.loadLabel(mContext.getPackageManager());
+        }
+    }
+
+    /** An object to represent {@link VoiceInteractionService} instances. */
+    static class VoiceInteractionInfo extends VoiceInputInfo {
+        private final VoiceInteractionServiceInfo mInteractionServiceInfo;
+
+        VoiceInteractionInfo(Context context, VoiceInteractionServiceInfo info) {
+            super(context, info.getServiceInfo());
+
+            mInteractionServiceInfo = info;
+        }
+
+        /** Returns the recognition service associated with this {@link VoiceInteractionService}. */
+        String getRecognitionService() {
+            return mInteractionServiceInfo.getRecognitionService();
+        }
+
+        @Override
+        protected String getSettingsActivity() {
+            return mInteractionServiceInfo.getSettingsActivity();
+        }
+
+        @Override
+        CharSequence getLabel() {
+            return getServiceInfo().applicationInfo.loadLabel(getContext().getPackageManager());
+        }
+    }
+
+    /** An object to represent {@link RecognitionService} instances. */
+    static class VoiceRecognitionInfo extends VoiceInputInfo {
+
+        VoiceRecognitionInfo(Context context, ServiceInfo serviceInfo) {
+            super(context, serviceInfo);
+        }
+
+        @Override
+        protected String getSettingsActivity() {
+            return getServiceSettingsActivity(getServiceInfo());
+        }
+
+        @Override
+        CharSequence getLabel() {
+            return getTag();
+        }
+
+        private String getServiceSettingsActivity(ServiceInfo serviceInfo) {
+            XmlResourceParser parser = null;
+            String settingActivity = null;
+            try {
+                parser = serviceInfo.loadXmlMetaData(getContext().getPackageManager(),
+                        RecognitionService.SERVICE_META_DATA);
+                if (parser == null) {
+                    throw new XmlPullParserException(
+                            "No " + RecognitionService.SERVICE_META_DATA + " meta-data for "
+                                    + serviceInfo.packageName);
+                }
+
+                Resources res = getContext().getPackageManager().getResourcesForApplication(
+                        serviceInfo.applicationInfo);
+
+                AttributeSet attrs = Xml.asAttributeSet(parser);
+
+                int type;
+                while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                        && type != XmlPullParser.START_TAG) {
+                    continue;
+                }
+
+                String nodeName = parser.getName();
+                if (!"recognition-service".equals(nodeName)) {
+                    throw new XmlPullParserException(
+                            "Meta-data does not start with recognition-service tag");
+                }
+
+                TypedArray array = res.obtainAttributes(attrs,
+                        com.android.internal.R.styleable.RecognitionService);
+                settingActivity = array.getString(
+                        com.android.internal.R.styleable.RecognitionService_settingsActivity);
+                array.recycle();
+            } catch (XmlPullParserException e) {
+                LOG.e("error parsing recognition service meta-data", e);
+            } catch (IOException e) {
+                LOG.e("error parsing recognition service meta-data", e);
+            } catch (PackageManager.NameNotFoundException e) {
+                LOG.e("error parsing recognition service meta-data", e);
+            } finally {
+                if (parser != null) parser.close();
+            }
+
+            return settingActivity;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/assist/VoiceInputUtils.java b/src/com/android/car/settings/applications/assist/VoiceInputUtils.java
new file mode 100644
index 0000000..0098fd8
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/VoiceInputUtils.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+/** Utilities to help interact with voice input services. */
+final class VoiceInputUtils {
+
+    private VoiceInputUtils() {
+    }
+
+    /**
+     * Chooses the current service based on the current voice interaction service and current
+     * recognizer service.
+     */
+    static ComponentName getCurrentService(Context context) {
+        ComponentName currentVoiceInteraction = getComponentNameOrNull(context,
+                Settings.Secure.VOICE_INTERACTION_SERVICE);
+        ComponentName currentVoiceRecognizer = getComponentNameOrNull(context,
+                Settings.Secure.VOICE_RECOGNITION_SERVICE);
+
+        if (currentVoiceInteraction != null) {
+            return currentVoiceInteraction;
+        } else if (currentVoiceRecognizer != null) {
+            return currentVoiceRecognizer;
+        } else {
+            return null;
+        }
+    }
+
+    private static ComponentName getComponentNameOrNull(Context context, String secureSettingKey) {
+        String currentSetting = Settings.Secure.getString(context.getContentResolver(),
+                secureSettingKey);
+        if (!TextUtils.isEmpty(currentSetting)) {
+            return ComponentName.unflattenFromString(currentSetting);
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceController.java
new file mode 100644
index 0000000..a686785
--- /dev/null
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceController.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+/**
+ * Base preference which handles the logic to display the currently selected default app.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller expects to
+ *            operate.
+ */
+public abstract class DefaultAppEntryBasePreferenceController<V extends Preference> extends
+        PreferenceController<V> {
+
+    private static final Logger LOG = new Logger(
+            DefaultAppEntryBasePreferenceController.class);
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public DefaultAppEntryBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected void updateState(V preference) {
+        CharSequence defaultAppLabel = getDefaultAppLabel();
+        if (!TextUtils.isEmpty(defaultAppLabel)) {
+            preference.setSummary(defaultAppLabel);
+            DefaultAppUtils.setSafeIcon(preference, getDefaultAppIcon(),
+                    getContext().getResources().getInteger(R.integer.default_app_safe_icon_size));
+        } else {
+            LOG.d("No default app");
+            preference.setSummary(R.string.app_list_preference_none);
+            preference.setIcon(null);
+        }
+    }
+
+    /** Specifies the currently selected default app. */
+    @Nullable
+    protected abstract DefaultAppInfo getCurrentDefaultAppInfo();
+
+    /** Gets the current process user id. */
+    protected int getCurrentProcessUserId() {
+        return mCarUserManagerHelper.getCurrentProcessUserId();
+    }
+
+    private Drawable getDefaultAppIcon() {
+        DefaultAppInfo app = getCurrentDefaultAppInfo();
+        if (app != null) {
+            return app.loadIcon();
+        }
+        return null;
+    }
+
+    private CharSequence getDefaultAppLabel() {
+        DefaultAppInfo app = getCurrentDefaultAppInfo();
+        if (app != null) {
+            return app.loadLabel();
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAppUtils.java b/src/com/android/car/settings/applications/defaultapps/DefaultAppUtils.java
new file mode 100644
index 0000000..2910860
--- /dev/null
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAppUtils.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.VectorDrawable;
+
+import androidx.preference.Preference;
+
+/** Utilities related to default apps. */
+public class DefaultAppUtils {
+
+    private DefaultAppUtils() {}
+
+    /**
+     * Sets the preference icon with a drawable that is scaled down to to avoid crashing Settings if
+     * it's too big.
+     */
+    public static void setSafeIcon(Preference pref, Drawable icon, int maxDimension) {
+        Drawable safeIcon = icon;
+        if ((icon != null) && !(icon instanceof VectorDrawable)) {
+            safeIcon = getSafeDrawable(icon, maxDimension);
+        }
+        pref.setIcon(safeIcon);
+    }
+
+    /**
+     * Gets a drawable with a limited size to avoid crashing Settings if it's too big.
+     *
+     * @param original     original drawable, typically an app icon.
+     * @param maxDimension maximum width/height, in pixels.
+     */
+    private static Drawable getSafeDrawable(Drawable original, int maxDimension) {
+        int actualWidth = original.getMinimumWidth();
+        int actualHeight = original.getMinimumHeight();
+
+        if (actualWidth <= maxDimension && actualHeight <= maxDimension) {
+            return original;
+        }
+
+        float scaleWidth = ((float) maxDimension) / actualWidth;
+        float scaleHeight = ((float) maxDimension) / actualHeight;
+        float scale = Math.min(scaleWidth, scaleHeight);
+        int width = (int) (actualWidth * scale);
+        int height = (int) (actualHeight * scale);
+
+        Bitmap bitmap;
+        if (original instanceof BitmapDrawable) {
+            bitmap = Bitmap.createScaledBitmap(((BitmapDrawable) original).getBitmap(), width,
+                    height, false);
+        } else {
+            bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+            Canvas canvas = new Canvas(bitmap);
+            original.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+            original.draw(canvas);
+        }
+        return new BitmapDrawable(null, bitmap);
+    }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceController.java
new file mode 100644
index 0000000..5e38a6e
--- /dev/null
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceController.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/** Defines the shared logic in picking a default application. */
+public abstract class DefaultAppsPickerBasePreferenceController extends
+        PreferenceController<PreferenceGroup> implements Preference.OnPreferenceClickListener {
+
+    private static final Logger LOG = new Logger(DefaultAppsPickerBasePreferenceController.class);
+    private static final String DIALOG_KEY_ARG = "key_arg";
+    protected static final String NONE_PREFERENCE_KEY = "";
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final Map<String, DefaultAppInfo> mDefaultAppInfoMap = new HashMap<>();
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+        setCurrentDefault(arguments.getString(DIALOG_KEY_ARG));
+        refreshUi();
+    };
+    private List<DefaultAppInfo> mCurrentCandidates;
+
+    public DefaultAppsPickerBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG),
+                mConfirmListener,
+                /* rejectListener= */ null);
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        List<DefaultAppInfo> defaultAppInfos = getCandidates();
+        if (!equalToCurrentCandidates(defaultAppInfos)) {
+            mCurrentCandidates = defaultAppInfos;
+            preferenceGroup.removeAll();
+            if (includeNonePreference()) {
+                preferenceGroup.addPreference(createNonePreference());
+            }
+            if (mCurrentCandidates != null) {
+                for (DefaultAppInfo info : mCurrentCandidates) {
+                    mDefaultAppInfoMap.put(info.getKey(), info);
+
+                    Preference preference = new Preference(getContext());
+                    bindPreference(preference, info);
+                    getPreference().addPreference(preference);
+                }
+            } else {
+                LOG.i("no candidate provided");
+            }
+        }
+
+        // This is done separately from above, since the summary can change without changing the
+        // list of candidates.
+        for (int i = 0; i < preferenceGroup.getPreferenceCount(); i++) {
+            Preference preference = preferenceGroup.getPreference(i);
+            String newPreferenceSummary = TextUtils.equals(preference.getKey(),
+                    getCurrentDefaultKey()) ? getContext().getString(
+                    R.string.default_app_selected_app) : "";
+            preference.setSummary(newPreferenceSummary);
+        }
+    }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference) {
+        String selectedKey = preference.getKey();
+        if (TextUtils.equals(selectedKey, getCurrentDefaultKey())) {
+            return false;
+        }
+
+        CharSequence message = getConfirmationMessage(mDefaultAppInfoMap.get(selectedKey));
+        if (!TextUtils.isEmpty(message)) {
+            ConfirmationDialogFragment dialogFragment =
+                    new ConfirmationDialogFragment.Builder(getContext())
+                            .setMessage(message.toString())
+                            .setPositiveButton(android.R.string.ok, mConfirmListener)
+                            .setNegativeButton(android.R.string.cancel, /* rejectListener= */ null)
+                            .addArgumentString(DIALOG_KEY_ARG, selectedKey)
+                            .build();
+            getFragmentController().showDialog(dialogFragment, ConfirmationDialogFragment.TAG);
+        } else {
+            setCurrentDefault(selectedKey);
+            refreshUi();
+        }
+        return true;
+    }
+
+    /** Modifies the preference based on the information provided. */
+    protected void bindPreference(Preference preference, DefaultAppInfo info) {
+        preference.setTitle(info.loadLabel());
+        preference.setKey(info.getKey());
+        preference.setEnabled(info.enabled);
+        preference.setOnPreferenceClickListener(this);
+        DefaultAppUtils.setSafeIcon(preference, info.loadIcon(),
+                getContext().getResources().getInteger(R.integer.default_app_safe_icon_size));
+    }
+
+    /** Gets all of the candidates that should be considered when choosing a default application. */
+    @NonNull
+    protected abstract List<DefaultAppInfo> getCandidates();
+
+    /** Gets the key of the currently selected candidate. */
+    protected abstract String getCurrentDefaultKey();
+
+    /**
+     * Sets the key of the currently selected candidate.
+     *
+     * @param key represents the key from {@link DefaultAppInfo} which should mark the default
+     *            application.
+     */
+    protected abstract void setCurrentDefault(String key);
+
+    /**
+     * Defines the warning dialog message to be shown when a default app is selected.
+     */
+    protected CharSequence getConfirmationMessage(DefaultAppInfo info) {
+        return null;
+    }
+
+    /** Gets the current process user id. */
+    protected int getCurrentProcessUserId() {
+        return mCarUserManagerHelper.getCurrentProcessUserId();
+    }
+
+    /**
+     * Determines whether the list of default apps should include "none". Implementation classes can
+     * override this value to {@code false} in order to remove the "none" preference.
+     */
+    protected boolean includeNonePreference() {
+        return true;
+    }
+
+    private Preference createNonePreference() {
+        Preference nonePreference = new Preference(getContext());
+        nonePreference.setKey(NONE_PREFERENCE_KEY);
+        nonePreference.setTitle(R.string.app_list_preference_none);
+        nonePreference.setOnPreferenceClickListener(this);
+        nonePreference.setIcon(R.drawable.ic_remove_circle);
+        return nonePreference;
+    }
+
+    /**
+     * Check that the provided {@link DefaultAppInfo} list is equivalent to the current list of
+     * candidates.
+     */
+    private boolean equalToCurrentCandidates(@NonNull List<DefaultAppInfo> defaultAppInfos) {
+        if (mCurrentCandidates == null) {
+            return false;
+        }
+
+        Set<String> keys = new HashSet<>();
+        for (DefaultAppInfo info : mCurrentCandidates) {
+            keys.add(info.getKey());
+        }
+        for (DefaultAppInfo info : defaultAppInfos) {
+            if (!keys.remove(info.getKey())) {
+                return false;
+            }
+        }
+        return keys.isEmpty();
+    }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerEntryBasePreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerEntryBasePreferenceController.java
new file mode 100644
index 0000000..e64df67
--- /dev/null
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerEntryBasePreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+/**
+ * Base preference which handles the logic to display the currently selected default app as well as
+ * an option to navigate to the settings of the selected default app.
+ */
+public abstract class DefaultAppsPickerEntryBasePreferenceController extends
+        DefaultAppEntryBasePreferenceController<ButtonPreference> {
+
+    public DefaultAppsPickerEntryBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ButtonPreference> getPreferenceType() {
+        return ButtonPreference.class;
+    }
+
+    @Override
+    protected void updateState(ButtonPreference preference) {
+        super.updateState(preference);
+
+        Intent intent = getSettingIntent(getCurrentDefaultAppInfo());
+        preference.showAction(intent != null);
+        if (intent != null) {
+            preference.setOnButtonClickListener(p -> getContext().startActivity(intent));
+        }
+    }
+
+    /**
+     * Returns an optional intent that will be launched when clicking the secondary action icon.
+     */
+    @Nullable
+    protected Intent getSettingIntent(@Nullable DefaultAppInfo info) {
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceController.java
new file mode 100644
index 0000000..a754297
--- /dev/null
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceController.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import android.app.role.RoleManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.service.voice.VoiceInteractionService;
+import android.service.voice.VoiceInteractionServiceInfo;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.app.AssistUtils;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import java.util.List;
+
+/**
+ * Business logic to show the currently selected default assistant and also show the assistant
+ * settings, if it exists.
+ */
+public class DefaultAssistantPickerEntryPreferenceController extends
+        DefaultAppsPickerEntryBasePreferenceController {
+
+    @VisibleForTesting
+    static final Intent ASSISTANT_SERVICE = new Intent(
+            VoiceInteractionService.SERVICE_INTERFACE);
+
+    private final AssistUtils mAssistUtils;
+
+    public DefaultAssistantPickerEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAssistUtils = new AssistUtils(context);
+    }
+
+    @Nullable
+    @Override
+    protected DefaultAppInfo getCurrentDefaultAppInfo() {
+        ComponentName cn = mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId());
+        if (cn == null) {
+            return null;
+        }
+        return new DefaultAppInfo(getContext(), getContext().getPackageManager(),
+                getCurrentProcessUserId(), cn);
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(ButtonPreference preference) {
+        String packageName = getContext().getPackageManager().getPermissionControllerPackageName();
+        if (packageName != null) {
+            Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP)
+                    .setPackage(packageName)
+                    .putExtra(Intent.EXTRA_ROLE_NAME, RoleManager.ROLE_ASSISTANT);
+            getContext().startActivity(intent);
+        }
+        return true;
+    }
+
+    @Nullable
+    @Override
+    protected Intent getSettingIntent(@Nullable DefaultAppInfo info) {
+        ComponentName cn = mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId());
+        if (cn == null) {
+            return null;
+        }
+
+        Intent probe = ASSISTANT_SERVICE.setPackage(cn.getPackageName());
+        PackageManager pm = getContext().getPackageManager();
+        List<ResolveInfo> services = pm.queryIntentServices(probe, PackageManager.GET_META_DATA);
+        if (services == null || services.isEmpty()) {
+            return null;
+        }
+
+        String activity = getAssistSettingsActivity(pm, services.get(0));
+        if (activity == null) {
+            return null;
+        }
+
+        return new Intent(Intent.ACTION_MAIN).setComponent(
+                new ComponentName(cn.getPackageName(), activity));
+    }
+
+    private String getAssistSettingsActivity(PackageManager pm, ResolveInfo resolveInfo) {
+        VoiceInteractionServiceInfo voiceInfo = new VoiceInteractionServiceInfo(pm,
+                resolveInfo.serviceInfo);
+        if (!voiceInfo.getSupportsAssist()) {
+            return null;
+        }
+        return voiceInfo.getSettingsActivity();
+    }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceController.java
new file mode 100644
index 0000000..91652a1
--- /dev/null
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceController.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.provider.Settings;
+import android.service.autofill.AutofillService;
+import android.service.autofill.AutofillServiceInfo;
+import android.text.TextUtils;
+import android.view.autofill.AutofillManager;
+
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import java.util.List;
+
+/** Business logic for displaying the currently selected autofill app. */
+public class DefaultAutofillPickerEntryPreferenceController extends
+        DefaultAppsPickerEntryBasePreferenceController {
+
+    private static final Logger LOG = new Logger(
+            DefaultAutofillPickerEntryPreferenceController.class);
+    private final AutofillManager mAutofillManager;
+
+    public DefaultAutofillPickerEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAutofillManager = context.getSystemService(AutofillManager.class);
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (mAutofillManager != null && mAutofillManager.isAutofillSupported()) {
+            return AVAILABLE;
+        }
+        return UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Nullable
+    @Override
+    protected DefaultAppInfo getCurrentDefaultAppInfo() {
+        String flattenComponent = Settings.Secure.getString(getContext().getContentResolver(),
+                Settings.Secure.AUTOFILL_SERVICE);
+        if (!TextUtils.isEmpty(flattenComponent)) {
+            DefaultAppInfo appInfo = new DefaultAppInfo(getContext(),
+                    getContext().getPackageManager(), getCurrentProcessUserId(),
+                    ComponentName.unflattenFromString(flattenComponent));
+            return appInfo;
+        }
+        return null;
+    }
+
+    @Nullable
+    @Override
+    protected Intent getSettingIntent(@Nullable DefaultAppInfo info) {
+        if (info == null) {
+            return null;
+        }
+
+        Intent intent = new Intent(AutofillService.SERVICE_INTERFACE);
+        List<ResolveInfo> resolveInfos = getContext().getPackageManager().queryIntentServices(
+                intent, PackageManager.GET_META_DATA);
+
+        for (ResolveInfo resolveInfo : resolveInfos) {
+            ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+            String flattenKey = new ComponentName(serviceInfo.packageName,
+                    serviceInfo.name).flattenToString();
+            if (TextUtils.equals(info.getKey(), flattenKey)) {
+                String settingsActivity;
+                try {
+                    settingsActivity = new AutofillServiceInfo(getContext(), serviceInfo)
+                            .getSettingsActivity();
+                } catch (SecurityException e) {
+                    // Service does not declare the proper permission, ignore it.
+                    LOG.w("Error getting info for " + serviceInfo + ": " + e);
+                    continue;
+                }
+                if (TextUtils.isEmpty(settingsActivity)) {
+                    continue;
+                }
+                return new Intent(Intent.ACTION_MAIN).setComponent(
+                        new ComponentName(serviceInfo.packageName, settingsActivity));
+            }
+        }
+
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerFragment.java b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerFragment.java
new file mode 100644
index 0000000..5a97fea
--- /dev/null
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Shows the option to choose the default autofill service. */
+public class DefaultAutofillPickerFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.default_autofill_picker_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceController.java
new file mode 100644
index 0000000..8dcc5d9
--- /dev/null
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceController.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import android.Manifest;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.provider.Settings;
+import android.service.autofill.AutofillService;
+import android.text.Html;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Business logic for displaying and choosing the default autofill service. */
+public class DefaultAutofillPickerPreferenceController extends
+        DefaultAppsPickerBasePreferenceController {
+
+    public DefaultAutofillPickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @NonNull
+    @Override
+    protected List<DefaultAppInfo> getCandidates() {
+        List<DefaultAppInfo> candidates = new ArrayList<>();
+        List<ResolveInfo> resolveInfos = getContext().getPackageManager().queryIntentServices(
+                new Intent(AutofillService.SERVICE_INTERFACE), PackageManager.GET_META_DATA);
+        for (ResolveInfo info : resolveInfos) {
+            String permission = info.serviceInfo.permission;
+            if (Manifest.permission.BIND_AUTOFILL_SERVICE.equals(permission)) {
+                candidates.add(new DefaultAppInfo(getContext(), getContext().getPackageManager(),
+                        getCurrentProcessUserId(),
+                        new ComponentName(info.serviceInfo.packageName, info.serviceInfo.name)));
+            }
+        }
+        return candidates;
+    }
+
+    @Override
+    protected String getCurrentDefaultKey() {
+        String setting = Settings.Secure.getString(getContext().getContentResolver(),
+                Settings.Secure.AUTOFILL_SERVICE);
+        if (setting != null) {
+            ComponentName componentName = ComponentName.unflattenFromString(setting);
+            if (componentName != null) {
+                return componentName.flattenToString();
+            }
+        }
+        return DefaultAppsPickerBasePreferenceController.NONE_PREFERENCE_KEY;
+    }
+
+    @Override
+    protected void setCurrentDefault(String key) {
+        Settings.Secure.putString(getContext().getContentResolver(),
+                Settings.Secure.AUTOFILL_SERVICE, key);
+    }
+
+    @Override
+    @Nullable
+    protected CharSequence getConfirmationMessage(DefaultAppInfo info) {
+        if (info == null) {
+            return null;
+        }
+
+        CharSequence appName = info.loadLabel();
+        String message = getContext().getString(R.string.autofill_confirmation_message, appName);
+        return Html.fromHtml(message, Html.FROM_HTML_MODE_LEGACY);
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/AppLaunchSettingsBasePreferenceController.java b/src/com/android/car/settings/applications/managedomainurls/AppLaunchSettingsBasePreferenceController.java
new file mode 100644
index 0000000..40adda3
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/AppLaunchSettingsBasePreferenceController.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.List;
+
+/**
+ * Shared logic for preference controllers related to app launch settings.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class AppLaunchSettingsBasePreferenceController<V extends Preference> extends
+        PreferenceController<V> {
+
+    @VisibleForTesting
+    static final Intent sBrowserIntent = new Intent()
+            .setAction(Intent.ACTION_VIEW)
+            .addCategory(Intent.CATEGORY_BROWSABLE)
+            .setData(Uri.parse("http:"));
+
+    private final PackageManager mPm;
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    private String mPackageName;
+    private ApplicationsState.AppEntry mAppEntry;
+
+    public AppLaunchSettingsBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPm = context.getPackageManager();
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    /** Sets the app entry associated with this settings screen. */
+    public void setAppEntry(ApplicationsState.AppEntry entry) {
+        mAppEntry = entry;
+    }
+
+    /** Returns the app entry. */
+    public ApplicationsState.AppEntry getAppEntry() {
+        return mAppEntry;
+    }
+
+    /** Returns the package name. */
+    public String getPackageName() {
+        return mAppEntry.info.packageName;
+    }
+
+    /** Returns the current user id. */
+    protected int getCurrentUserId() {
+        return mCarUserManagerHelper.getCurrentProcessUserId();
+    }
+
+    /** Returns {@code true} if the current package is a browser app. */
+    protected boolean isBrowserApp() {
+        sBrowserIntent.setPackage(getPackageName());
+        List<ResolveInfo> list = mPm.queryIntentActivitiesAsUser(sBrowserIntent,
+                PackageManager.MATCH_ALL, getCurrentUserId());
+        for (ResolveInfo info : list) {
+            if (info.activityInfo != null && info.handleAllWebDataURI) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/AppLinkStatePreferenceController.java b/src/com/android/car/settings/applications/managedomainurls/AppLinkStatePreferenceController.java
new file mode 100644
index 0000000..310d14b
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/AppLinkStatePreferenceController.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
+import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
+import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+
+/**
+ * Business logic to define how the app should handle related domain links (whether related domain
+ * links should be opened always, never, or after asking).
+ */
+public class AppLinkStatePreferenceController extends
+        AppLaunchSettingsBasePreferenceController<ListPreference> {
+
+    private static final Logger LOG = new Logger(AppLinkStatePreferenceController.class);
+
+    private final PackageManager mPm;
+    private boolean mHasDomainUrls;
+
+    public AppLinkStatePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPm = context.getPackageManager();
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mHasDomainUrls =
+                (getAppEntry().info.privateFlags & ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS)
+                        != 0;
+    }
+
+    @Override
+    protected void updateState(ListPreference preference) {
+        if (isBrowserApp()) {
+            preference.setEnabled(false);
+        } else {
+            preference.setEnabled(mHasDomainUrls);
+
+            preference.setEntries(new CharSequence[]{
+                    getContext().getString(R.string.app_link_open_always),
+                    getContext().getString(R.string.app_link_open_ask),
+                    getContext().getString(R.string.app_link_open_never),
+            });
+            preference.setEntryValues(new CharSequence[]{
+                    Integer.toString(INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS),
+                    Integer.toString(INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK),
+                    Integer.toString(INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER),
+            });
+
+            if (mHasDomainUrls) {
+                int state = mPm.getIntentVerificationStatusAsUser(getPackageName(),
+                        getCurrentUserId());
+                preference.setValueIndex(linkStateToIndex(state));
+            }
+        }
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ListPreference preference, Object newValue) {
+        if (isBrowserApp()) {
+            // We shouldn't get into this state, but if we do make sure
+            // not to cause any permanent mayhem.
+            return false;
+        }
+
+        int newState = Integer.parseInt((String) newValue);
+        int priorState = mPm.getIntentVerificationStatusAsUser(getPackageName(),
+                getCurrentUserId());
+        if (priorState == newState) {
+            return false;
+        }
+
+        boolean success = mPm.updateIntentVerificationStatusAsUser(getPackageName(), newState,
+                getCurrentUserId());
+        if (success) {
+            // Read back the state to see if the change worked.
+            int updatedState = mPm.getIntentVerificationStatusAsUser(getPackageName(),
+                    getCurrentUserId());
+            success = (newState == updatedState);
+        } else {
+            LOG.e("Couldn't update intent verification status!");
+        }
+        return success;
+    }
+
+    private int linkStateToIndex(int state) {
+        switch (state) {
+            case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS:
+                return getPreference().findIndexOfValue(
+                        Integer.toString(INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS));
+            case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER:
+                return getPreference().findIndexOfValue(
+                        Integer.toString(INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER));
+            case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK:
+            default:
+                return getPreference().findIndexOfValue(
+                        Integer.toString(INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/ApplicationLaunchSettingsFragment.java b/src/com/android/car/settings/applications/managedomainurls/ApplicationLaunchSettingsFragment.java
new file mode 100644
index 0000000..198d67a
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/ApplicationLaunchSettingsFragment.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** Settings screen to show details about launching a specific app. */
+public class ApplicationLaunchSettingsFragment extends SettingsFragment {
+
+    @VisibleForTesting
+    static final String ARG_PACKAGE_NAME = "arg_package_name";
+
+    private ApplicationsState mState;
+    private ApplicationsState.AppEntry mAppEntry;
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    /** Creates a new instance of this fragment for the package specified in the arguments. */
+    public static ApplicationLaunchSettingsFragment newInstance(String pkg) {
+        ApplicationLaunchSettingsFragment fragment = new ApplicationLaunchSettingsFragment();
+        Bundle args = new Bundle();
+        args.putString(ARG_PACKAGE_NAME, pkg);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.application_launch_settings_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mState = ApplicationsState.getInstance(requireActivity().getApplication());
+
+        String pkgName = getArguments().getString(ARG_PACKAGE_NAME);
+        mAppEntry = mState.getEntry(pkgName, mCarUserManagerHelper.getCurrentProcessUserId());
+
+        ApplicationWithVersionPreferenceController appController = use(
+                ApplicationWithVersionPreferenceController.class,
+                R.string.pk_opening_links_app_details);
+        appController.setAppState(mState);
+        appController.setAppEntry(mAppEntry);
+
+        List<AppLaunchSettingsBasePreferenceController> preferenceControllers = Arrays.asList(
+                use(AppLinkStatePreferenceController.class,
+                        R.string.pk_opening_links_app_details_state),
+                use(DomainUrlsPreferenceController.class,
+                        R.string.pk_opening_links_app_details_urls),
+                use(ClearDefaultsPreferenceController.class,
+                        R.string.pk_opening_links_app_details_reset));
+
+        for (AppLaunchSettingsBasePreferenceController controller : preferenceControllers) {
+            controller.setAppEntry(mAppEntry);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/ApplicationWithVersionPreferenceController.java b/src/com/android/car/settings/applications/managedomainurls/ApplicationWithVersionPreferenceController.java
new file mode 100644
index 0000000..5915c07
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/ApplicationWithVersionPreferenceController.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.applications.ApplicationPreferenceController;
+import com.android.car.settings.common.FragmentController;
+
+/** In addition to showing the app name and icon, shows the app version in the summary. */
+public class ApplicationWithVersionPreferenceController extends ApplicationPreferenceController {
+
+    public ApplicationWithVersionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        super.updateState(preference);
+        preference.setSummary(getAppVersion());
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceController.java b/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceController.java
new file mode 100644
index 0000000..e608196
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceController.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.hardware.usb.IUsbManager;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.applications.AppUtils;
+
+/**
+ * Business logic to reset a user preference for auto launching an app.
+ *
+ * <p>i.e. if a user has both NavigationAppA and NavigationAppB installed and NavigationAppA is set
+ * as the default navigation app, the user can reset that preference to pick a different default
+ * navigation app.
+ */
+public class ClearDefaultsPreferenceController extends
+        AppLaunchSettingsBasePreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(ClearDefaultsPreferenceController.class);
+
+    private final IUsbManager mUsbManager;
+    private final PackageManager mPm;
+
+    public ClearDefaultsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        IBinder b = ServiceManager.getService(Context.USB_SERVICE);
+        mUsbManager = IUsbManager.Stub.asInterface(b);
+        mPm = context.getPackageManager();
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        boolean autoLaunchEnabled = AppUtils.hasPreferredActivities(mPm, getPackageName())
+                || isDefaultBrowser(getPackageName())
+                || hasUsbDefaults(mUsbManager, getPackageName());
+
+        preference.setEnabled(autoLaunchEnabled);
+        if (autoLaunchEnabled) {
+            preference.setTitle(R.string.auto_launch_reset_text);
+            preference.setSummary(R.string.auto_launch_enable_text);
+        } else {
+            preference.setTitle(R.string.auto_launch_disable_text);
+            preference.setSummary(null);
+        }
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        if (mUsbManager != null) {
+            int userId = getCurrentUserId();
+            mPm.clearPackagePreferredActivities(getPackageName());
+            if (isDefaultBrowser(getPackageName())) {
+                mPm.setDefaultBrowserPackageNameAsUser(/* packageName= */ null, userId);
+            }
+            try {
+                mUsbManager.clearDefaults(getPackageName(), userId);
+            } catch (RemoteException e) {
+                LOG.e("mUsbManager.clearDefaults", e);
+            }
+            refreshUi();
+        }
+        return true;
+    }
+
+    private boolean isDefaultBrowser(String packageName) {
+        String defaultBrowser = mPm.getDefaultBrowserPackageNameAsUser(getCurrentUserId());
+        return packageName.equals(defaultBrowser);
+    }
+
+    private boolean hasUsbDefaults(IUsbManager usbManager, String packageName) {
+        try {
+            if (usbManager != null) {
+                return usbManager.hasDefaults(packageName, getCurrentUserId());
+            }
+        } catch (RemoteException e) {
+            LOG.e("mUsbManager.hasDefaults", e);
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceController.java b/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceController.java
new file mode 100644
index 0000000..a45796c
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceController.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import android.app.Application;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.util.ArrayMap;
+import android.util.IconDrawableFactory;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.ArrayList;
+
+/** Business logic to populate the list of apps that deal with domain urls. */
+public class DomainAppPreferenceController extends PreferenceController<PreferenceGroup> {
+
+    private final ApplicationsState mApplicationsState;
+    private final PackageManager mPm;
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    @VisibleForTesting
+    final ApplicationsState.Callbacks mApplicationStateCallbacks =
+            new ApplicationsState.Callbacks() {
+                @Override
+                public void onRunningStateChanged(boolean running) {
+                }
+
+                @Override
+                public void onPackageListChanged() {
+                }
+
+                @Override
+                public void onRebuildComplete(ArrayList<ApplicationsState.AppEntry> apps) {
+                    rebuildAppList(apps);
+                }
+
+                @Override
+                public void onPackageIconChanged() {
+                }
+
+                @Override
+                public void onPackageSizeChanged(String packageName) {
+                }
+
+                @Override
+                public void onAllSizesComputed() {
+                }
+
+                @Override
+                public void onLauncherInfoChanged() {
+                }
+
+                @Override
+                public void onLoadEntriesCompleted() {
+                    mSession.rebuild(ApplicationsState.FILTER_WITH_DOMAIN_URLS,
+                            ApplicationsState.ALPHA_COMPARATOR);
+                }
+            };
+
+    private ApplicationsState.Session mSession;
+    private ArrayMap<String, Preference> mPreferenceCache;
+
+    public DomainAppPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mApplicationsState = ApplicationsState.getInstance(
+                (Application) context.getApplicationContext());
+        mPm = context.getPackageManager();
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mSession == null) {
+            throw new IllegalStateException("session should be non null by this point");
+        }
+    }
+
+    /** Sets the lifecycle to create a new session. */
+    public void setLifecycle(Lifecycle lifecycle) {
+        mSession = mApplicationsState.newSession(mApplicationStateCallbacks, lifecycle);
+    }
+
+    @Override
+    protected void onStartInternal() {
+        // Resume the session earlier than the lifecycle so that cached information is updated
+        // even if settings is not resumed (for example in multi-display).
+        mSession.onResume();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        // Since we resume early in onStart, make sure we clean up even if we don't receive onPause.
+        mSession.onPause();
+    }
+
+    private void rebuildAppList(ArrayList<ApplicationsState.AppEntry> apps) {
+        PreferenceGroup preferenceGroup = getPreference();
+        preferenceGroup.removeAll();
+        for (int i = 0; i < apps.size(); i++) {
+            ApplicationsState.AppEntry entry = apps.get(i);
+            preferenceGroup.addPreference(createPreference(entry));
+        }
+    }
+
+    private Preference createPreference(ApplicationsState.AppEntry entry) {
+        String key = entry.info.packageName + "|" + entry.info.uid;
+        IconDrawableFactory iconDrawableFactory = IconDrawableFactory.newInstance(getContext());
+        Preference preference = new Preference(getContext());
+        preference.setKey(key);
+        preference.setTitle(entry.label);
+        preference.setSummary(
+                DomainUrlsUtils.getDomainsSummary(getContext(), entry.info.packageName,
+                        mCarUserManagerHelper.getCurrentProcessUserId(),
+                        DomainUrlsUtils.getHandledDomains(mPm, entry.info.packageName)));
+        preference.setIcon(iconDrawableFactory.getBadgedIcon(entry.info));
+        preference.setOnPreferenceClickListener(pref -> {
+            getFragmentController().launchFragment(
+                    ApplicationLaunchSettingsFragment.newInstance(entry.info.packageName));
+            return true;
+        });
+        return preference;
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceController.java b/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceController.java
new file mode 100644
index 0000000..80b8f4e
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceController.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.util.ArraySet;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+
+/** Business logic to generate and see the list of supported domain urls. */
+public class DomainUrlsPreferenceController extends
+        AppLaunchSettingsBasePreferenceController<Preference> {
+
+    private ArraySet<String> mDomains;
+
+    public DomainUrlsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mDomains = DomainUrlsUtils.getHandledDomains(getContext().getPackageManager(),
+                getPackageName());
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setEnabled(!isBrowserApp());
+        preference.setSummary(
+                DomainUrlsUtils.getDomainsSummary(getContext(), getPackageName(),
+                        getCurrentUserId(), mDomains));
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        String newLines = System.lineSeparator() + System.lineSeparator();
+        String message = String.join(newLines, mDomains);
+
+        // Not exactly a "confirmation" dialog, but reusing to remove the need for a custom
+        // dialog fragment.
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(
+                getContext())
+                .setTitle(R.string.app_launch_supported_domain_urls_title)
+                .setMessage(message)
+                .setNegativeButton(android.R.string.cancel, /* rejectListener= */ null)
+                .build();
+        getFragmentController().showDialog(dialogFragment, ConfirmationDialogFragment.TAG);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/DomainUrlsUtils.java b/src/com/android/car/settings/applications/managedomainurls/DomainUrlsUtils.java
new file mode 100644
index 0000000..9769196
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/DomainUrlsUtils.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.IntentFilterVerificationInfo;
+import android.content.pm.PackageManager;
+import android.util.ArraySet;
+
+import com.android.car.settings.R;
+
+import java.util.List;
+
+/** Utility functions related to handling application domain urls. */
+public final class DomainUrlsUtils {
+    private DomainUrlsUtils() {
+    }
+
+    /** Get a summary text based on the number of handled domains. */
+    public static CharSequence getDomainsSummary(Context context, String packageName, int userId,
+            ArraySet<String> domains) {
+        PackageManager pm = context.getPackageManager();
+
+        // If the user has explicitly said "no" for this package, that's the string we should show.
+        int domainStatus = pm.getIntentVerificationStatusAsUser(packageName, userId);
+        if (domainStatus == PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER) {
+            return context.getText(R.string.domain_urls_summary_none);
+        }
+        // Otherwise, ask package manager for the domains for this package, and show the first
+        // one (or none if there aren't any).
+        if (domains.isEmpty()) {
+            return context.getText(R.string.domain_urls_summary_none);
+        } else if (domains.size() == 1) {
+            return context.getString(R.string.domain_urls_summary_one, domains.valueAt(0));
+        } else {
+            return context.getString(R.string.domain_urls_summary_some, domains.valueAt(0));
+        }
+    }
+
+    /** Get the list of domains handled by the given package. */
+    public static ArraySet<String> getHandledDomains(PackageManager pm, String packageName) {
+        List<IntentFilterVerificationInfo> iviList = pm.getIntentFilterVerifications(packageName);
+        List<IntentFilter> filters = pm.getAllIntentFilters(packageName);
+
+        ArraySet<String> result = new ArraySet<>();
+        if (iviList != null && iviList.size() > 0) {
+            for (IntentFilterVerificationInfo ivi : iviList) {
+                for (String host : ivi.getDomains()) {
+                    result.add(host);
+                }
+            }
+        }
+        if (filters != null && filters.size() > 0) {
+            for (IntentFilter filter : filters) {
+                if (filter.hasCategory(Intent.CATEGORY_BROWSABLE)
+                        && (filter.hasDataScheme(IntentFilter.SCHEME_HTTP)
+                        || filter.hasDataScheme(IntentFilter.SCHEME_HTTPS))) {
+                    result.addAll(filter.getHostsList());
+                }
+            }
+        }
+        return result;
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsActivity.java b/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsActivity.java
new file mode 100644
index 0000000..6920892
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsActivity.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * Starts {@link ManageDomainUrlsFragment} in a separate activity to help with the back navigation
+ * flow. This setting differs from the other settings in that the user arrives here from the
+ * PermissionController rather than from within the Settings app itself.
+ */
+public class ManageDomainUrlsActivity extends BaseCarSettingsActivity {
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        return new ManageDomainUrlsFragment();
+    }
+}
diff --git a/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsFragment.java b/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsFragment.java
new file mode 100644
index 0000000..7aacc16
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsFragment.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import android.content.Context;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Fragment which shows a list of applications to manage handled domain urls. */
+public class ManageDomainUrlsFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.manage_domain_urls_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        use(DomainAppPreferenceController.class, R.string.pk_opening_links_options).setLifecycle(
+                getLifecycle());
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/AppEntryListManager.java b/src/com/android/car/settings/applications/specialaccess/AppEntryListManager.java
new file mode 100644
index 0000000..7359f80
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/AppEntryListManager.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.app.Application;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+
+import androidx.annotation.Nullable;
+
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Manages a list of {@link ApplicationsState.AppEntry} instances by syncing in the background and
+ * providing updates via a {@link Callback}. Clients may provide an {@link ExtraInfoBridge} to
+ * populate the {@link ApplicationsState.AppEntry#extraInfo} field with use case sepecific data.
+ * Clients may also provide an {@link ApplicationsState.AppFilter} via an {@link AppFilterProvider}
+ * to determine which entries will appear in the list updates.
+ *
+ * <p>Clients should call {@link #init(ExtraInfoBridge, AppFilterProvider, Callback)} to specify
+ * behavior and then {@link #start()} to begin loading. {@link #stop()} will cancel loading, and
+ * {@link #destroy()} will clean up resources when this class will no longer be used.
+ */
+public class AppEntryListManager {
+
+    /** Callback for receiving events from {@link AppEntryListManager}. */
+    public interface Callback {
+        /**
+         * Called when the list of {@link ApplicationsState.AppEntry} instances or the {@link
+         * ApplicationsState.AppEntry#extraInfo} fields have changed.
+         */
+        void onAppEntryListChanged(List<ApplicationsState.AppEntry> entries);
+    }
+
+    /**
+     * Provides an {@link ApplicationsState.AppFilter} to tailor the entries in the list updates.
+     */
+    public interface AppFilterProvider {
+        /**
+         * Returns the filter that should be used to trim the entries list before callback delivery.
+         */
+        ApplicationsState.AppFilter getAppFilter();
+    }
+
+    /** Bridges extra information to {@link ApplicationsState.AppEntry#extraInfo}. */
+    public interface ExtraInfoBridge {
+        /**
+         * Populates the {@link ApplicationsState.AppEntry#extraInfo} field on the {@code enrties}
+         * with the relevant data for the implementation.
+         */
+        void loadExtraInfo(List<ApplicationsState.AppEntry> entries);
+    }
+
+    private final ApplicationsState.Callbacks mSessionCallbacks =
+            new ApplicationsState.Callbacks() {
+                @Override
+                public void onRunningStateChanged(boolean running) {
+                    // No op.
+                }
+
+                @Override
+                public void onPackageListChanged() {
+                    forceUpdate();
+                }
+
+                @Override
+                public void onRebuildComplete(ArrayList<ApplicationsState.AppEntry> apps) {
+                    if (mCallback != null) {
+                        mCallback.onAppEntryListChanged(apps);
+                    }
+                }
+
+                @Override
+                public void onPackageIconChanged() {
+                    // No op.
+                }
+
+                @Override
+                public void onPackageSizeChanged(String packageName) {
+                    // No op.
+                }
+
+                @Override
+                public void onAllSizesComputed() {
+                    // No op.
+                }
+
+                @Override
+                public void onLauncherInfoChanged() {
+                    // No op.
+                }
+
+                @Override
+                public void onLoadEntriesCompleted() {
+                    mHasReceivedLoadEntries = true;
+                    forceUpdate();
+                }
+            };
+
+    private final ApplicationsState mApplicationsState;
+    private final BackgroundHandler mBackgroundHandler;
+    private final MainHandler mMainHandler;
+
+    private ExtraInfoBridge mExtraInfoBridge;
+    private AppFilterProvider mFilterProvider;
+    private Callback mCallback;
+    private ApplicationsState.Session mSession;
+
+    private boolean mHasReceivedLoadEntries;
+    private boolean mHasReceivedExtraInfo;
+
+    public AppEntryListManager(Context context) {
+        mApplicationsState = ApplicationsState.getInstance(
+                (Application) context.getApplicationContext());
+        // Run on the same background thread as the ApplicationsState to make sure updates don't
+        // conflict.
+        mBackgroundHandler = new BackgroundHandler(new WeakReference<>(this),
+                mApplicationsState.getBackgroundLooper());
+        mMainHandler = new MainHandler(new WeakReference<>(this));
+    }
+
+    /**
+     * Specifies the behavior of this manager.
+     *
+     * @param extraInfoBridge an optional bridge to load information into the entries.
+     * @param filterProvider  provides a filter to tailor the contents of the list updates.
+     * @param callback        callback to which updated lists are delivered.
+     */
+    public void init(@Nullable ExtraInfoBridge extraInfoBridge,
+            @Nullable AppFilterProvider filterProvider,
+            Callback callback) {
+        if (mSession != null) {
+            destroy();
+        }
+        mExtraInfoBridge = extraInfoBridge;
+        mFilterProvider = filterProvider;
+        mCallback = callback;
+        mSession = mApplicationsState.newSession(mSessionCallbacks);
+    }
+
+    /**
+     * Starts loading the information in the background. When loading is finished, the {@link
+     * Callback} will be notified on the main thread.
+     */
+    public void start() {
+        mSession.onResume();
+    }
+
+    /**
+     * Stops any pending loading.
+     */
+    public void stop() {
+        mSession.onPause();
+        clearHandlers();
+    }
+
+    /**
+     * Cleans up internal state when this will no longer be used.
+     */
+    public void destroy() {
+        mSession.onDestroy();
+        clearHandlers();
+        mExtraInfoBridge = null;
+        mFilterProvider = null;
+        mCallback = null;
+    }
+
+    /**
+     * Schedules updates for all {@link ApplicationsState.AppEntry} instances. When loading is
+     * finished, the {@link Callback} will be notified on the main thread.
+     */
+    public void forceUpdate() {
+        mBackgroundHandler.sendEmptyMessage(BackgroundHandler.MSG_LOAD_ALL);
+    }
+
+    /**
+     * Schedules an update for the given {@code entry}. When loading is finished, the {@link
+     * Callback} will be notified on the main thread.
+     */
+    public void forceUpdate(ApplicationsState.AppEntry entry) {
+        mBackgroundHandler.obtainMessage(BackgroundHandler.MSG_LOAD_PKG,
+                entry).sendToTarget();
+    }
+
+    private void rebuild() {
+        if (!mHasReceivedLoadEntries || !mHasReceivedExtraInfo) {
+            // Don't rebuild the list until all the app entries are loaded.
+            return;
+        }
+        mSession.rebuild((mFilterProvider != null) ? mFilterProvider.getAppFilter()
+                        : ApplicationsState.FILTER_EVERYTHING,
+                ApplicationsState.ALPHA_COMPARATOR, /* foreground= */ false);
+    }
+
+    private void clearHandlers() {
+        mBackgroundHandler.removeMessages(BackgroundHandler.MSG_LOAD_ALL);
+        mBackgroundHandler.removeMessages(BackgroundHandler.MSG_LOAD_PKG);
+        mMainHandler.removeMessages(MainHandler.MSG_INFO_UPDATED);
+    }
+
+    private void loadInfo(List<ApplicationsState.AppEntry> entries) {
+        if (mExtraInfoBridge != null) {
+            mExtraInfoBridge.loadExtraInfo(entries);
+        }
+        for (ApplicationsState.AppEntry entry : entries) {
+            mApplicationsState.ensureIcon(entry);
+        }
+    }
+
+    private static class BackgroundHandler extends Handler {
+        private static final int MSG_LOAD_ALL = 1;
+        private static final int MSG_LOAD_PKG = 2;
+
+        private final WeakReference<AppEntryListManager> mOuter;
+
+        BackgroundHandler(WeakReference<AppEntryListManager> outer, Looper looper) {
+            super(looper);
+            mOuter = outer;
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            AppEntryListManager outer = mOuter.get();
+            if (outer == null) {
+                return;
+            }
+            switch (msg.what) {
+                case MSG_LOAD_ALL:
+                    outer.loadInfo(outer.mSession.getAllApps());
+                    outer.mMainHandler.sendEmptyMessage(MainHandler.MSG_INFO_UPDATED);
+                    break;
+                case MSG_LOAD_PKG:
+                    ApplicationsState.AppEntry entry = (ApplicationsState.AppEntry) msg.obj;
+                    outer.loadInfo(Collections.singletonList(entry));
+                    outer.mMainHandler.sendEmptyMessage(MainHandler.MSG_INFO_UPDATED);
+                    break;
+            }
+        }
+    }
+
+    private static class MainHandler extends Handler {
+        private static final int MSG_INFO_UPDATED = 1;
+
+        private final WeakReference<AppEntryListManager> mOuter;
+
+        MainHandler(WeakReference<AppEntryListManager> outer) {
+            mOuter = outer;
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            AppEntryListManager outer = mOuter.get();
+            if (outer == null) {
+                return;
+            }
+            switch (msg.what) {
+                case MSG_INFO_UPDATED:
+                    outer.mHasReceivedExtraInfo = true;
+                    outer.rebuild();
+                    break;
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/AppOpsPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/AppOpsPreferenceController.java
new file mode 100644
index 0000000..043aec9
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/AppOpsPreferenceController.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.app.AppOpsManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.specialaccess.AppStateAppOpsBridge.PermissionState;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+import com.android.settingslib.applications.ApplicationsState.AppFilter;
+import com.android.settingslib.applications.ApplicationsState.CompoundFilter;
+
+import java.util.List;
+
+/**
+ * Displays a list of toggles for applications requesting permission to perform the operation with
+ * which this controller was initialized. {@link #init(int, String, int)} should be called when
+ * this controller is instantiated to specify the {@link AppOpsManager} operation code to control
+ * access for.
+ */
+public class AppOpsPreferenceController extends PreferenceController<PreferenceGroup> {
+
+    private static final AppFilter FILTER_HAS_INFO = new AppFilter() {
+        @Override
+        public void init() {
+            // No op.
+        }
+
+        @Override
+        public boolean filterApp(AppEntry info) {
+            return info.extraInfo != null;
+        }
+    };
+
+    private final AppOpsManager mAppOpsManager;
+
+    private final Preference.OnPreferenceChangeListener mOnPreferenceChangeListener =
+            new Preference.OnPreferenceChangeListener() {
+                @Override
+                public boolean onPreferenceChange(Preference preference, Object newValue) {
+                    AppOpPreference appOpPreference = (AppOpPreference) preference;
+                    AppEntry entry = appOpPreference.mEntry;
+                    PermissionState extraInfo = (PermissionState) entry.extraInfo;
+                    boolean allowOp = (Boolean) newValue;
+                    if (allowOp != extraInfo.isPermissible()) {
+                        mAppOpsManager.setMode(mAppOpsOpCode, entry.info.uid,
+                                entry.info.packageName,
+                                allowOp ? AppOpsManager.MODE_ALLOWED : mNegativeOpMode);
+                        // Update the extra info of this entry so that it reflects the new mode.
+                        mAppEntryListManager.forceUpdate(entry);
+                        return true;
+                    }
+                    return false;
+                }
+            };
+
+    private final AppEntryListManager.Callback mCallback = new AppEntryListManager.Callback() {
+        @Override
+        public void onAppEntryListChanged(List<AppEntry> entries) {
+            mEntries = entries;
+            refreshUi();
+        }
+    };
+
+    private int mAppOpsOpCode = AppOpsManager.OP_NONE;
+    private String mPermission;
+    private int mNegativeOpMode = -1;
+
+    @VisibleForTesting
+    AppEntryListManager mAppEntryListManager;
+    private List<AppEntry> mEntries;
+
+    private boolean mShowSystem;
+
+    public AppOpsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+        mAppEntryListManager = new AppEntryListManager(context);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /**
+     * Initializes this controller with the {@code appOpsOpCode} (selected from the operations in
+     * {@link AppOpsManager}) to control access for.
+     *
+     * @param permission     the {@link android.Manifest.permission} apps must hold to perform the
+     *                       operation.
+     * @param negativeOpMode the operation mode that will be passed to {@link
+     *                       AppOpsManager#setMode(int, int, String, int)} when access for a app is
+     *                       revoked.
+     */
+    public void init(int appOpsOpCode, String permission, int negativeOpMode) {
+        mAppOpsOpCode = appOpsOpCode;
+        mPermission = permission;
+        mNegativeOpMode = negativeOpMode;
+    }
+
+    /**
+     * Rebuilds the preference list to show system applications if {@code showSystem} is true.
+     * System applications will be hidden otherwise.
+     */
+    public void setShowSystem(boolean showSystem) {
+        if (mShowSystem != showSystem) {
+            mShowSystem = showSystem;
+            mAppEntryListManager.forceUpdate();
+        }
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mAppOpsOpCode == AppOpsManager.OP_NONE) {
+            throw new IllegalStateException("App operation code must be initialized");
+        }
+        if (mPermission == null) {
+            throw new IllegalStateException("Manifest permission must be initialized");
+        }
+        if (mNegativeOpMode == -1) {
+            throw new IllegalStateException("Negative case app operation mode must be initialized");
+        }
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        AppStateAppOpsBridge extraInfoBridge = new AppStateAppOpsBridge(getContext(), mAppOpsOpCode,
+                mPermission);
+        mAppEntryListManager.init(extraInfoBridge, this::getAppFilter, mCallback);
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mAppEntryListManager.start();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mAppEntryListManager.stop();
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mAppEntryListManager.destroy();
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preference) {
+        if (mEntries == null) {
+            // Still loading.
+            return;
+        }
+        preference.removeAll();
+        for (AppEntry entry : mEntries) {
+            Preference appOpPreference = new AppOpPreference(getContext(), entry);
+            appOpPreference.setOnPreferenceChangeListener(mOnPreferenceChangeListener);
+            preference.addPreference(appOpPreference);
+        }
+    }
+
+    @CallSuper
+    protected AppFilter getAppFilter() {
+        AppFilter filterObj = new CompoundFilter(FILTER_HAS_INFO,
+                ApplicationsState.FILTER_NOT_HIDE);
+        if (!mShowSystem) {
+            filterObj = new CompoundFilter(filterObj,
+                    ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER);
+        }
+        return filterObj;
+    }
+
+    private static class AppOpPreference extends SwitchPreference {
+
+        private final AppEntry mEntry;
+
+        AppOpPreference(Context context, AppEntry entry) {
+            super(context);
+            String key = entry.info.packageName + "|" + entry.info.uid;
+            setKey(key);
+            setTitle(entry.label);
+            setIcon(entry.icon);
+            setSummary(getAppStateText(entry.info));
+            setPersistent(false);
+            PermissionState extraInfo = (PermissionState) entry.extraInfo;
+            setChecked(extraInfo.isPermissible());
+            mEntry = entry;
+        }
+
+        private String getAppStateText(ApplicationInfo info) {
+            if ((info.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
+                return getContext().getString(R.string.not_installed);
+            } else if (!info.enabled || info.enabledSetting
+                    == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) {
+                return getContext().getString(R.string.disabled);
+            }
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/AppStateAppOpsBridge.java b/src/com/android/car/settings/applications/specialaccess/AppStateAppOpsBridge.java
new file mode 100644
index 0000000..4a3d0a1
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/AppStateAppOpsBridge.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.app.AppGlobals;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.ArrayMap;
+import android.util.SparseArray;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.Logger;
+import com.android.internal.util.ArrayUtils;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Bridges {@link AppOpsManager} app operation permission information into {@link
+ * AppEntry#extraInfo} as {@link PermissionState} objects.
+ */
+public class AppStateAppOpsBridge implements AppEntryListManager.ExtraInfoBridge {
+
+    private static final Logger LOG = new Logger(AppStateAppOpsBridge.class);
+
+    private final Context mContext;
+    private final IPackageManager mIPackageManager;
+    private final List<UserHandle> mProfiles;
+    private final AppOpsManager mAppOpsManager;
+    private final int mAppOpsOpCode;
+    private final String mPermission;
+
+    /**
+     * Constructor.
+     *
+     * @param appOpsOpCode the {@link AppOpsManager} op code constant to fetch information for.
+     * @param permission   the {@link android.Manifest.permission} required to perform the
+     *                     operation.
+     */
+    public AppStateAppOpsBridge(Context context, int appOpsOpCode, String permission) {
+        this(context, appOpsOpCode, permission, AppGlobals.getPackageManager());
+    }
+
+    @VisibleForTesting
+    AppStateAppOpsBridge(Context context, int appOpsOpCode, String permission,
+            IPackageManager packageManager) {
+        mContext = context;
+        mIPackageManager = packageManager;
+        mProfiles = UserManager.get(context).getUserProfiles();
+        mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+        mAppOpsOpCode = appOpsOpCode;
+        mPermission = permission;
+    }
+
+    @Override
+    public void loadExtraInfo(List<AppEntry> entries) {
+        SparseArray<Map<String, PermissionState>> packageToStatesMapByProfileId =
+                getPackageToStateMapsByProfileId();
+        loadAppOpModes(packageToStatesMapByProfileId);
+
+        for (AppEntry entry : entries) {
+            Map<String, PermissionState> packageStatesMap = packageToStatesMapByProfileId.get(
+                    UserHandle.getUserId(entry.info.uid));
+            entry.extraInfo = (packageStatesMap != null) ? packageStatesMap.get(
+                    entry.info.packageName) : null;
+        }
+    }
+
+    private SparseArray<Map<String, PermissionState>> getPackageToStateMapsByProfileId() {
+        SparseArray<Map<String, PermissionState>> entries = new SparseArray<>();
+        try {
+            for (UserHandle profile : mProfiles) {
+                int profileId = profile.getIdentifier();
+                List<PackageInfo> packageInfos = getPackageInfos(profileId);
+                Map<String, PermissionState> entriesForProfile = new ArrayMap<>();
+                entries.put(profileId, entriesForProfile);
+                for (PackageInfo packageInfo : packageInfos) {
+                    boolean isAvailable = mIPackageManager.isPackageAvailable(
+                            packageInfo.packageName,
+                            profileId);
+                    if (shouldIgnorePackage(packageInfo) || !isAvailable) {
+                        LOG.d("Ignoring " + packageInfo.packageName + " isAvailable="
+                                + isAvailable);
+                        continue;
+                    }
+                    PermissionState newEntry = new PermissionState();
+                    newEntry.mRequestedPermissions = packageInfo.requestedPermissions;
+                    entriesForProfile.put(packageInfo.packageName, newEntry);
+                }
+            }
+        } catch (RemoteException e) {
+            LOG.w("PackageManager is dead. Can't get list of packages requesting "
+                    + mPermission, e);
+        }
+        return entries;
+    }
+
+    @SuppressWarnings("unchecked") // safe by specification.
+    private List<PackageInfo> getPackageInfos(int profileId) throws RemoteException {
+        return mIPackageManager.getPackagesHoldingPermissions(new String[]{mPermission},
+                PackageManager.GET_PERMISSIONS, profileId).getList();
+    }
+
+    private boolean shouldIgnorePackage(PackageInfo packageInfo) {
+        return packageInfo.packageName.equals("android")
+                || packageInfo.packageName.equals(mContext.getPackageName())
+                || !ArrayUtils.contains(packageInfo.requestedPermissions, mPermission);
+    }
+
+    /** Sets the {@link PermissionState#mAppOpMode} field. */
+    private void loadAppOpModes(
+            SparseArray<Map<String, PermissionState>> packageToStateMapsByProfileId) {
+        // Find out which packages have been granted permission from AppOps.
+        List<AppOpsManager.PackageOps> packageOps = mAppOpsManager.getPackagesForOps(
+                new int[]{mAppOpsOpCode});
+        if (packageOps == null) {
+            return;
+        }
+        for (AppOpsManager.PackageOps packageOp : packageOps) {
+            int userId = UserHandle.getUserId(packageOp.getUid());
+            Map<String, PermissionState> packageStateMap = packageToStateMapsByProfileId.get(
+                    userId);
+            if (packageStateMap == null) {
+                // Profile is not for the current user.
+                continue;
+            }
+            PermissionState permissionState = packageStateMap.get(packageOp.getPackageName());
+            if (permissionState == null) {
+                LOG.w("AppOp permission exists for package " + packageOp.getPackageName()
+                        + " of user " + userId + " but package doesn't exist or did not request "
+                        + mPermission + " access");
+                continue;
+            }
+            if (packageOp.getOps().size() < 1) {
+                LOG.w("No AppOps permission exists for package " + packageOp.getPackageName());
+                continue;
+            }
+            permissionState.mAppOpMode = packageOp.getOps().get(0).getMode();
+        }
+    }
+
+    /**
+     * Data class for use in {@link AppEntry#extraInfo} which indicates whether
+     * the app operation used to construct the data bridge is permitted for the associated
+     * application.
+     */
+    public static class PermissionState {
+        private String[] mRequestedPermissions;
+        private int mAppOpMode = AppOpsManager.MODE_DEFAULT;
+
+        /** Returns {@code true} if the entry's application is allowed to perform the operation. */
+        public boolean isPermissible() {
+            // Default behavior is permissible as long as the package requested this permission.
+            if (mAppOpMode == AppOpsManager.MODE_DEFAULT) {
+                return true;
+            }
+            return mAppOpMode == AppOpsManager.MODE_ALLOWED;
+        }
+
+        /** Returns the permissions requested by the entry's application. */
+        public String[] getRequestedPermissions() {
+            return mRequestedPermissions;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/AppStatePremiumSmsBridge.java b/src/com/android/car/settings/applications/specialaccess/AppStatePremiumSmsBridge.java
new file mode 100644
index 0000000..b13fedb
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/AppStatePremiumSmsBridge.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.os.RemoteException;
+
+import com.android.internal.telephony.ISms;
+import com.android.internal.telephony.SmsUsageMonitor;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.List;
+
+/**
+ * Bridges the value of {@link ISms#getPremiumSmsPermission(String)} into the {@link
+ * ApplicationsState.AppEntry#extraInfo} for each entry's package name.
+ */
+public class AppStatePremiumSmsBridge implements AppEntryListManager.ExtraInfoBridge {
+
+    private final ISms mSmsManager;
+
+    public AppStatePremiumSmsBridge(ISms smsManager) {
+        mSmsManager = smsManager;
+    }
+
+    @Override
+    public void loadExtraInfo(List<ApplicationsState.AppEntry> entries) {
+        for (ApplicationsState.AppEntry entry : entries) {
+            entry.extraInfo = getSmsState(entry.info.packageName);
+        }
+    }
+
+    private int getSmsState(String packageName) {
+        try {
+            return mSmsManager.getPremiumSmsPermission(packageName);
+        } catch (RemoteException e) {
+            return SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/ModifySystemSettingsFragment.java b/src/com/android/car/settings/applications/specialaccess/ModifySystemSettingsFragment.java
new file mode 100644
index 0000000..fae0522
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/ModifySystemSettingsFragment.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.Manifest;
+import android.app.AppOpsManager;
+import android.content.Context;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.AppListFragment;
+
+/**
+ * Displays apps which have requested to modify system settings and their current allowed status.
+ */
+public class ModifySystemSettingsFragment extends AppListFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.modify_system_settings_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        use(AppOpsPreferenceController.class, R.string.pk_modify_system_settings).init(
+                AppOpsManager.OP_WRITE_SETTINGS,
+                Manifest.permission.WRITE_SETTINGS,
+                AppOpsManager.MODE_ERRORED);
+    }
+
+    @Override
+    protected void onToggleShowSystemApps(boolean showSystem) {
+        use(AppOpsPreferenceController.class, R.string.pk_modify_system_settings).setShowSystem(
+                showSystem);
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceController.java
new file mode 100644
index 0000000..05f2a80
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Launches into additional special access settings if they are supported by the permission
+ * controller package.
+ */
+public class MoreSpecialAccessPreferenceController extends PreferenceController<Preference> {
+
+    @Nullable
+    private final Intent mIntent;
+
+    public MoreSpecialAccessPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        PackageManager packageManager = getContext().getPackageManager();
+        String packageName = packageManager.getPermissionControllerPackageName();
+        if (packageName != null) {
+            Intent intent = new Intent(Intent.ACTION_MANAGE_SPECIAL_APP_ACCESSES).setPackage(
+                    packageName);
+            ResolveInfo resolveInfo = packageManager.resolveActivity(intent,
+                    PackageManager.MATCH_DEFAULT_ONLY);
+            mIntent = (resolveInfo != null) ? intent : null;
+        } else {
+            mIntent = null;
+        }
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return (mIntent != null) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        if (mIntent != null) {
+            getContext().startActivity(mIntent);
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/NotificationAccessFragment.java b/src/com/android/car/settings/applications/specialaccess/NotificationAccessFragment.java
new file mode 100644
index 0000000..8583b3d
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/NotificationAccessFragment.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Displays controls for managing notification listener permissions. */
+public class NotificationAccessFragment extends SettingsFragment {
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.notification_access_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/NotificationAccessPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/NotificationAccessPreferenceController.java
new file mode 100644
index 0000000..0f30329
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/NotificationAccessPreferenceController.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.Manifest;
+import android.app.NotificationManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageItemInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.os.AsyncTask;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.service.notification.NotificationListenerService;
+import android.util.IconDrawableFactory;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.ServiceListing;
+
+import java.util.List;
+
+/**
+ * Displays a list of notification listener services and provides toggles to allow the user to
+ * grant/revoke permission for listening to notifications. Before changing the value of a
+ * permission, the user is shown a confirmation dialog with information about the risks and
+ * potential effects.
+ */
+public class NotificationAccessPreferenceController extends PreferenceController<PreferenceGroup> {
+
+    private static final Logger LOG = new Logger(NotificationAccessPreferenceController.class);
+
+    @VisibleForTesting
+    static final String GRANT_CONFIRM_DIALOG_TAG =
+            "com.android.car.settings.applications.specialaccess.GrantNotificationAccessDialog";
+    @VisibleForTesting
+    static final String REVOKE_CONFIRM_DIALOG_TAG =
+            "com.android.car.settings.applications.specialaccess.RevokeNotificationAccessDialog";
+    private static final String KEY_SERVICE = "service";
+
+    private final NotificationManager mNm;
+    private final ServiceListing mServiceListing;
+    private final IconDrawableFactory mIconDrawableFactory;
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    private final ServiceListing.Callback mCallback = this::onServicesReloaded;
+
+    private final ConfirmationDialogFragment.ConfirmListener mGrantConfirmListener = arguments -> {
+        ComponentName service = arguments.getParcelable(KEY_SERVICE);
+        grantNotificationAccess(service);
+    };
+    private final ConfirmationDialogFragment.ConfirmListener mRevokeConfirmListener =
+            arguments -> {
+                ComponentName service = arguments.getParcelable(KEY_SERVICE);
+                revokeNotificationAccess(service);
+            };
+
+    public NotificationAccessPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mNm = context.getSystemService(NotificationManager.class);
+        mServiceListing = new ServiceListing.Builder(context)
+                .setPermission(Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE)
+                .setIntentAction(NotificationListenerService.SERVICE_INTERFACE)
+                .setSetting(Settings.Secure.ENABLED_NOTIFICATION_LISTENERS)
+                .setTag(NotificationAccessPreferenceController.class.getSimpleName())
+                .setNoun("notification listener") // For logging.
+                .build();
+        mIconDrawableFactory = IconDrawableFactory.newInstance(context);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        ConfirmationDialogFragment grantConfirmDialogFragment =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        GRANT_CONFIRM_DIALOG_TAG);
+        ConfirmationDialogFragment.resetListeners(grantConfirmDialogFragment,
+                mGrantConfirmListener, /* rejectListener= */ null);
+
+        ConfirmationDialogFragment revokeConfirmDialogFragment =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        REVOKE_CONFIRM_DIALOG_TAG);
+        ConfirmationDialogFragment.resetListeners(revokeConfirmDialogFragment,
+                mRevokeConfirmListener, /* rejectListener= */ null);
+
+        mServiceListing.addCallback(mCallback);
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mServiceListing.reload();
+        mServiceListing.setListening(true);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mServiceListing.setListening(false);
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mServiceListing.removeCallback(mCallback);
+    }
+
+    private void onServicesReloaded(List<ServiceInfo> services) {
+        PackageManager packageManager = getContext().getPackageManager();
+        services.sort(new PackageItemInfo.DisplayNameComparator(packageManager));
+        getPreference().removeAll();
+        for (ServiceInfo service : services) {
+            ComponentName cn = new ComponentName(service.packageName, service.name);
+            CharSequence title = null;
+            try {
+                title = packageManager.getApplicationInfoAsUser(service.packageName, /* flags= */ 0,
+                        mCarUserManagerHelper.getCurrentProcessUserId()).loadLabel(packageManager);
+            } catch (PackageManager.NameNotFoundException e) {
+                LOG.e("can't find package name", e);
+            }
+            String summary = service.loadLabel(packageManager).toString();
+            SwitchPreference pref = new SwitchPreference(getContext());
+            pref.setPersistent(false);
+            pref.setIcon(mIconDrawableFactory.getBadgedIcon(service, service.applicationInfo,
+                    UserHandle.getUserId(service.applicationInfo.uid)));
+            if (title != null && !title.equals(summary)) {
+                pref.setTitle(title);
+                pref.setSummary(summary);
+            } else {
+                pref.setTitle(summary);
+            }
+            pref.setKey(cn.flattenToString());
+            pref.setChecked(isAccessGranted(cn));
+            pref.setOnPreferenceChangeListener((preference, newValue) -> {
+                boolean enable = (boolean) newValue;
+                return promptUserToConfirmChange(cn, summary, enable);
+            });
+            getPreference().addPreference(pref);
+        }
+    }
+
+    private boolean isAccessGranted(ComponentName service) {
+        return mNm.isNotificationListenerAccessGranted(service);
+    }
+
+    private void grantNotificationAccess(ComponentName service) {
+        mNm.setNotificationListenerAccessGranted(service, /* granted= */ true);
+    }
+
+    private void revokeNotificationAccess(ComponentName service) {
+        mNm.setNotificationListenerAccessGranted(service, /* granted= */ false);
+        AsyncTask.execute(() -> {
+            if (!mNm.isNotificationPolicyAccessGrantedForPackage(service.getPackageName())) {
+                mNm.removeAutomaticZenRules(service.getPackageName());
+            }
+        });
+    }
+
+    private boolean promptUserToConfirmChange(ComponentName service, String label,
+            boolean grantAccess) {
+        if (isAccessGranted(service) == grantAccess) {
+            return true;
+        }
+        ConfirmationDialogFragment.Builder dialogFragment =
+                grantAccess ? createConfirmGrantDialogFragment(label)
+                        : createConfirmRevokeDialogFragment(label);
+        dialogFragment.addArgumentParcelable(KEY_SERVICE, service);
+        getFragmentController().showDialog(dialogFragment.build(),
+                grantAccess ? GRANT_CONFIRM_DIALOG_TAG : REVOKE_CONFIRM_DIALOG_TAG);
+        return false;
+    }
+
+    private ConfirmationDialogFragment.Builder createConfirmGrantDialogFragment(String label) {
+        String title = getContext().getResources().getString(
+                R.string.notification_listener_security_warning_title, label);
+        String summary = getContext().getResources().getString(
+                R.string.notification_listener_security_warning_summary, label);
+        return new ConfirmationDialogFragment.Builder(getContext())
+                .setTitle(title)
+                .setMessage(summary)
+                .setPositiveButton(R.string.allow, mGrantConfirmListener)
+                .setNegativeButton(R.string.deny, /* rejectionListener= */ null);
+    }
+
+    private ConfirmationDialogFragment.Builder createConfirmRevokeDialogFragment(String label) {
+        String summary = getContext().getResources().getString(
+                R.string.notification_listener_revoke_warning_summary, label);
+        return new ConfirmationDialogFragment.Builder(getContext())
+                .setMessage(summary)
+                .setPositiveButton(R.string.notification_listener_revoke_warning_confirm,
+                        mRevokeConfirmListener)
+                .setNegativeButton(R.string.notification_listener_revoke_warning_cancel,
+                        /* rejectionListener= */ null);
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessEntryPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessEntryPreferenceController.java
new file mode 100644
index 0000000..3270b0e
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessEntryPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller for the entry point to premium SMS access settings. It reads an overlayable config
+ * value to determine if premium SMS is supported and returns an appropriate availability status.
+ */
+public class PremiumSmsAccessEntryPreferenceController extends PreferenceController<Preference> {
+
+    public PremiumSmsAccessEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return getContext().getResources().getBoolean(R.bool.config_show_premium_sms) ? AVAILABLE
+                : UNSUPPORTED_ON_DEVICE;
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessFragment.java b/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessFragment.java
new file mode 100644
index 0000000..d485581
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Displays controls for managing premium SMS access. */
+public class PremiumSmsAccessFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.premium_sms_access_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessPreferenceController.java
new file mode 100644
index 0000000..1673dcb
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessPreferenceController.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.telephony.ISms;
+import com.android.internal.telephony.SmsUsageMonitor;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+import com.android.settingslib.applications.ApplicationsState.AppFilter;
+
+import java.util.List;
+
+/**
+ * Displays the list of apps which have a known premium SMS access state. When a user selects an
+ * app, they are shown a dialog which allows them to configure the state to one of:
+ *
+ * <ul>
+ * <li>Ask - the user will be prompted before app sends premium SMS.
+ * <li>Never allow - app can never send premium SMS.
+ * <li>Always allow - app can automatically send premium SMS.
+ * </ul>
+ */
+public class PremiumSmsAccessPreferenceController extends PreferenceController<PreferenceGroup> {
+
+    private static final Logger LOG = new Logger(PremiumSmsAccessPreferenceController.class);
+
+    private static final AppFilter FILTER_SMS_STATE_KNOWN = new AppFilter() {
+        @Override
+        public void init() {
+            // No op.
+        }
+
+        @Override
+        public boolean filterApp(AppEntry info) {
+            return info.extraInfo != null
+                    && (Integer) info.extraInfo != SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN;
+        }
+    };
+
+    private final ISms mSmsManager;
+
+    private final Preference.OnPreferenceChangeListener mOnPreferenceChangeListener =
+            new Preference.OnPreferenceChangeListener() {
+                @Override
+                public boolean onPreferenceChange(Preference preference, Object newValue) {
+                    PremiumSmsPreference appPreference = (PremiumSmsPreference) preference;
+                    AppEntry entry = appPreference.mEntry;
+                    int smsState = Integer.parseInt((String) newValue);
+                    if (smsState != (Integer) entry.extraInfo) {
+                        try {
+                            mSmsManager.setPremiumSmsPermission(entry.info.packageName, smsState);
+                        } catch (RemoteException e) {
+                            LOG.w("Unable to set premium sms permission for "
+                                    + entry.info.packageName + " " + entry.info.uid, e);
+                            return false;
+                        }
+                        // Update the extra info of this entry so that it reflects the new state.
+                        mAppEntryListManager.forceUpdate(entry);
+                        return true;
+                    }
+                    return false;
+                }
+            };
+
+    private final AppEntryListManager.Callback mCallback = new AppEntryListManager.Callback() {
+        @Override
+        public void onAppEntryListChanged(List<AppEntry> entries) {
+            mEntries = entries;
+            refreshUi();
+        }
+    };
+
+    @VisibleForTesting
+    AppEntryListManager mAppEntryListManager;
+    private List<AppEntry> mEntries;
+
+    public PremiumSmsAccessPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSmsManager = ISms.Stub.asInterface(ServiceManager.getService("isms"));
+        mAppEntryListManager = new AppEntryListManager(context);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mAppEntryListManager.init(new AppStatePremiumSmsBridge(mSmsManager),
+                () -> FILTER_SMS_STATE_KNOWN, mCallback);
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mAppEntryListManager.start();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mAppEntryListManager.stop();
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mAppEntryListManager.destroy();
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preference) {
+        if (mEntries == null) {
+            // Still loading.
+            return;
+        }
+        preference.removeAll();
+        for (AppEntry entry : mEntries) {
+            Preference appPreference = new PremiumSmsPreference(getContext(), entry);
+            appPreference.setOnPreferenceChangeListener(mOnPreferenceChangeListener);
+            preference.addPreference(appPreference);
+        }
+    }
+
+    private static class PremiumSmsPreference extends ListPreference {
+
+        private final AppEntry mEntry;
+
+        PremiumSmsPreference(Context context, AppEntry entry) {
+            super(context);
+            String key = entry.info.packageName + "|" + entry.info.uid;
+            setKey(key);
+            setTitle(entry.label);
+            setIcon(entry.icon);
+            setPersistent(false);
+            setEntries(R.array.premium_sms_access_values);
+            setEntryValues(new CharSequence[]{
+                    String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER),
+                    String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW),
+                    String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW)
+            });
+            setValue(String.valueOf(entry.extraInfo));
+            setSummary("%s");
+            mEntry = entry;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/SpecialAccessSettingsFragment.java b/src/com/android/car/settings/applications/specialaccess/SpecialAccessSettingsFragment.java
new file mode 100644
index 0000000..3c89a71
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/SpecialAccessSettingsFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Top-level page which lists the types of special access the user can grant to applications.
+ * Selecting an option will open a detailed page for granting access to individual apps.
+ */
+public class SpecialAccessSettingsFragment extends SettingsFragment {
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.special_access_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/UsageAccessFragment.java b/src/com/android/car/settings/applications/specialaccess/UsageAccessFragment.java
new file mode 100644
index 0000000..266afd8
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/UsageAccessFragment.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.Manifest;
+import android.app.AppOpsManager;
+import android.content.Context;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.AppListFragment;
+
+/**
+ * Displays apps which have requested to access usage data and their current allowed status.
+ */
+public class UsageAccessFragment extends AppListFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.usage_access_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        use(AppOpsPreferenceController.class, R.string.pk_usage_access).init(
+                AppOpsManager.OP_GET_USAGE_STATS,
+                Manifest.permission.PACKAGE_USAGE_STATS,
+                AppOpsManager.MODE_IGNORED);
+    }
+
+    @Override
+    protected void onToggleShowSystemApps(boolean showSystem) {
+        use(AppOpsPreferenceController.class, R.string.pk_usage_access).setShowSystem(showSystem);
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/WifiControlFragment.java b/src/com/android/car/settings/applications/specialaccess/WifiControlFragment.java
new file mode 100644
index 0000000..87b7728
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/WifiControlFragment.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.AppListFragment;
+
+/**
+ * Displays apps which have requested to control Wi-Fi settings and their current allowed status.
+ */
+public class WifiControlFragment extends AppListFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.wifi_control_fragment;
+    }
+
+    @Override
+    protected void onToggleShowSystemApps(boolean showSystem) {
+        use(WifiControlPreferenceController.class, R.string.pk_wifi_control).setShowSystem(
+                showSystem);
+    }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/WifiControlPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/WifiControlPreferenceController.java
new file mode 100644
index 0000000..8780f1f
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/WifiControlPreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import android.Manifest;
+import android.app.AppOpsManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.applications.specialaccess.AppStateAppOpsBridge.PermissionState;
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.util.ArrayUtils;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.ApplicationsState.AppFilter;
+import com.android.settingslib.applications.ApplicationsState.CompoundFilter;
+
+/**
+ * Manages the list of apps requesting to control Wi-Fi settings. Apps that also request {@link
+ * Manifest.permission#NETWORK_SETTINGS} are excluded from the list as this permission overrules
+ * {@link Manifest.permission#CHANGE_WIFI_STATE}.
+ */
+public class WifiControlPreferenceController extends AppOpsPreferenceController {
+
+    private static final AppFilter FILTER_CHANGE_WIFI_STATE = new AppFilter() {
+        @Override
+        public void init() {
+            // No op.
+        }
+
+        @Override
+        public boolean filterApp(ApplicationsState.AppEntry info) {
+            return !ArrayUtils.contains(
+                    ((PermissionState) info.extraInfo).getRequestedPermissions(),
+                    Manifest.permission.NETWORK_SETTINGS);
+        }
+    };
+
+    public WifiControlPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        init(AppOpsManager.OP_CHANGE_WIFI_STATE, Manifest.permission.CHANGE_WIFI_STATE,
+                AppOpsManager.MODE_IGNORED);
+    }
+
+    @Override
+    protected AppFilter getAppFilter() {
+        AppFilter filter = super.getAppFilter();
+        return new CompoundFilter(filter, FILTER_CHANGE_WIFI_STATE);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceController.java
new file mode 100644
index 0000000..e5e599b
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceController.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Displays the Bluetooth MAC address of the vehicle.
+ */
+public class BluetoothAddressPreferenceController extends
+        BluetoothPreferenceController<Preference> {
+
+    public BluetoothAddressPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        String address = BluetoothAdapter.getDefaultAdapter().getAddress();
+        String formattedAddress = getContext().getString(R.string.bluetooth_vehicle_mac_address,
+                address);
+        preference.setTitle(formattedAddress);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceController.java
new file mode 100644
index 0000000..8402974
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceController.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+/**
+ * Displays a list of bonded (paired) Bluetooth devices. Clicking on a device will attempt a
+ * connection with that device. If a device is already connected, a click will prompt the user to
+ * disconnect. Devices are shown with an addition affordance which launches the device details page.
+ */
+public class BluetoothBondedDevicesPreferenceController extends
+        BluetoothDevicesGroupPreferenceController {
+
+    public BluetoothBondedDevicesPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected BluetoothDeviceFilter.Filter getDeviceFilter() {
+        return BluetoothDeviceFilter.BONDED_DEVICE_FILTER;
+    }
+
+    @Override
+    protected BluetoothDevicePreference createDevicePreference(CachedBluetoothDevice cachedDevice) {
+        BluetoothDevicePreference pref = super.createDevicePreference(cachedDevice);
+        if (!getCarUserManagerHelper().isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)) {
+            pref.setWidgetLayoutResource(R.layout.details_preference_widget);
+            pref.setOnButtonClickListener(preference -> getFragmentController().launchFragment(
+                    BluetoothDeviceDetailsFragment.newInstance(cachedDevice)));
+            pref.showAction(true);
+        }
+        return pref;
+    }
+
+    @Override
+    protected void onDeviceClicked(CachedBluetoothDevice cachedDevice) {
+        if (cachedDevice.isConnected()) {
+            getFragmentController().showDialog(
+                    BluetoothDisconnectConfirmDialogFragment.newInstance(cachedDevice),
+                    /* tag= */ null);
+        } else {
+            cachedDevice.connect(/* connectAllProfiles= */ true);
+        }
+    }
+
+    @Override
+    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
+        refreshUi();
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDetailFragment.java b/src/com/android/car/settings/bluetooth/BluetoothDetailFragment.java
deleted file mode 100644
index 2a27f58..0000000
--- a/src/com/android/car/settings/bluetooth/BluetoothDetailFragment.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.bluetooth;
-
-import android.bluetooth.BluetoothDevice;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-
-import com.android.car.list.EditTextLineItem;
-import com.android.car.list.SingleTextLineItem;
-import com.android.car.list.TypedPagedListAdapter;
-import com.android.car.settings.R;
-import com.android.car.settings.common.ListSettingsFragment;
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfile;
-
-import java.util.ArrayList;
-
-/**
- * Shows details about a bluetooth device, including actions related to the device,
- * e.g. forget etc. The intent should include information about the device, use that to
- * render UI, e.g. show name etc.
- */
-public class BluetoothDetailFragment extends ListSettingsFragment implements
-        BluetoothProfileLineItem.DataChangedListener {
-    private static final Logger LOG = new Logger(BluetoothDetailFragment.class);
-
-    public static final String EXTRA_BT_DEVICE = "extra_bt_device";
-
-    private BluetoothDevice mDevice;
-    private CachedBluetoothDevice mCachedDevice;
-
-    private CachedBluetoothDeviceManager mDeviceManager;
-    private LocalBluetoothManager mLocalManager;
-    private EditTextLineItem mInputLineItem;
-    private Button mOkButton;
-
-    public static BluetoothDetailFragment getInstance(BluetoothDevice btDevice) {
-        BluetoothDetailFragment bluetoothDetailFragment = new BluetoothDetailFragment();
-        Bundle bundle = ListSettingsFragment.getBundle();
-        bundle.putParcelable(EXTRA_BT_DEVICE, btDevice);
-        bundle.putInt(EXTRA_TITLE_ID, R.string.bluetooth_settings);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        bluetoothDetailFragment.setArguments(bundle);
-        return bluetoothDetailFragment;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mDevice = getArguments().getParcelable(EXTRA_BT_DEVICE);
-        mLocalManager =
-                LocalBluetoothManager.getInstance(getContext(), /* onInitCallback= */ null);
-        if (mLocalManager == null) {
-            LOG.e("Bluetooth is not supported on this device");
-            return;
-        }
-        mDeviceManager = mLocalManager.getCachedDeviceManager();
-        mCachedDevice = mDeviceManager.findDevice(mDevice);
-        if (mCachedDevice == null) {
-            mCachedDevice = mDeviceManager.addDevice(
-                    mLocalManager.getBluetoothAdapter(),
-                    mLocalManager.getProfileManager(),
-                    mDevice);
-        }
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        if (mDevice == null) {
-            LOG.w("No bluetooth device set.");
-            return;
-        }
-        super.onActivityCreated(savedInstanceState);
-
-        setupForgetButton();
-        setupOkButton();
-    }
-
-    @Override
-    public void onDataChanged() {
-        mPagedListAdapter.notifyDataSetChanged();
-    }
-
-    @Override
-    public ArrayList<TypedPagedListAdapter.LineItem> getLineItems() {
-        ArrayList<TypedPagedListAdapter.LineItem> lineItems = new ArrayList<>();
-        mInputLineItem = new EditTextLineItem(
-                getContext().getText(R.string.bluetooth_preference_paired_dialog_name_label),
-                mCachedDevice.getName());
-        mInputLineItem.setTextType(EditTextLineItem.TextType.TEXT);
-        lineItems.add(mInputLineItem);
-        lineItems.add(new SingleTextLineItem(getContext().getText(
-                R.string.bluetooth_device_advanced_profile_header_title)));
-        addProfileLineItems(lineItems);
-        return lineItems;
-    }
-
-    private void addProfileLineItems(ArrayList<TypedPagedListAdapter.LineItem> lineItems) {
-        for (LocalBluetoothProfile profile : mCachedDevice.getConnectableProfiles()) {
-            lineItems.add(new BluetoothProfileLineItem(
-                    getContext(), profile, mCachedDevice, this));
-        }
-    }
-
-    private void setupForgetButton() {
-        Button fortgetButton = getActivity().findViewById(R.id.action_button2);
-        fortgetButton.setVisibility(View.VISIBLE);
-        fortgetButton.setText(R.string.forget);
-        fortgetButton.setOnClickListener(v -> {
-            mCachedDevice.unpair();
-            getFragmentController().goBack();
-        });
-    }
-
-    private void setupOkButton() {
-        mOkButton = getActivity().findViewById(R.id.action_button1);
-        mOkButton.setText(android.R.string.ok);
-        mOkButton.setOnClickListener(v -> {
-            if (!mInputLineItem.getInput().equals(mCachedDevice.getName())) {
-                mCachedDevice.setName(mInputLineItem.getInput());
-            }
-            getFragmentController().goBack();
-        });
-    }
-}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceAddressPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceAddressPreferenceController.java
new file mode 100644
index 0000000..e2e74bf
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceAddressPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Displays the Bluetooth MAC address of a remote device.
+ */
+public class BluetoothDeviceAddressPreferenceController extends
+        BluetoothDevicePreferenceController<Preference> {
+
+    public BluetoothDeviceAddressPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        String address = getContext().getString(R.string.bluetooth_device_mac_address,
+                getCachedDevice().getAddress());
+        preference.setTitle(address);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragment.java
new file mode 100644
index 0000000..0c15570
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragment.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+/**
+ * Page which displays information for a remote Bluetooth device including the name, icon,
+ * connection status, supported profiles, and MAC. Buttons are shown to enable
+ * connecting/disconnecting and forgetting the device.
+ */
+public class BluetoothDeviceDetailsFragment extends SettingsFragment {
+
+    private static final String KEY_DEVICE_ADDRESS = "device_address";
+
+    private final CachedBluetoothDevice.Callback mDeviceCallback =
+            this::updateConnectionButtonState;
+
+    private CachedBluetoothDevice mCachedDevice;
+    private Button mConnectionButton;
+
+    /**
+     * Returns a new {@link BluetoothDeviceDetailsFragment} for the given {@code device}.
+     */
+    public static BluetoothDeviceDetailsFragment newInstance(CachedBluetoothDevice device) {
+        Bundle args = new Bundle();
+        args.putString(BluetoothDeviceDetailsFragment.KEY_DEVICE_ADDRESS, device.getAddress());
+        BluetoothDeviceDetailsFragment fragment = new BluetoothDeviceDetailsFragment();
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.bluetooth_device_details_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        LocalBluetoothManager manager = BluetoothUtils.getLocalBtManager(context);
+        if (manager == null) {
+            goBack();
+            return;
+        }
+        String deviceAddress = getArguments().getString(KEY_DEVICE_ADDRESS);
+        BluetoothDevice remoteDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(
+                deviceAddress);
+        mCachedDevice = manager.getCachedDeviceManager().findDevice(remoteDevice);
+        if (mCachedDevice == null) {
+            goBack();
+            return;
+        }
+
+        use(BluetoothDeviceNamePreferenceController.class,
+                R.string.pk_bluetooth_device_name).setCachedDevice(mCachedDevice);
+        use(BluetoothDeviceProfilesPreferenceController.class,
+                R.string.pk_bluetooth_device_profiles).setCachedDevice(mCachedDevice);
+        use(BluetoothDeviceAddressPreferenceController.class,
+                R.string.pk_bluetooth_device_address).setCachedDevice(mCachedDevice);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        setupForgetButton();
+        setupConnectionButton();
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mCachedDevice.registerCallback(mDeviceCallback);
+        updateConnectionButtonState();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mCachedDevice.unregisterCallback(mDeviceCallback);
+    }
+
+    private void setupForgetButton() {
+        Button forgetButton = requireActivity().findViewById(R.id.action_button2);
+        forgetButton.setVisibility(View.VISIBLE);
+        forgetButton.setText(R.string.forget);
+        forgetButton.setOnClickListener(v -> {
+            mCachedDevice.unpair();
+            goBack();
+        });
+    }
+
+    private void setupConnectionButton() {
+        mConnectionButton = requireActivity().findViewById(R.id.action_button1);
+        updateConnectionButtonState();
+    }
+
+    private void updateConnectionButtonState() {
+        mConnectionButton.setEnabled(!mCachedDevice.isBusy());
+        if (mCachedDevice.isConnected()) {
+            mConnectionButton.setText(R.string.disconnect);
+            mConnectionButton.setOnClickListener(view -> mCachedDevice.disconnect());
+        } else {
+            mConnectionButton.setText(R.string.connect);
+            mConnectionButton.setOnClickListener(
+                    view -> mCachedDevice.connect(/* connectAllProfiles= */ true));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceListAdapter.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceListAdapter.java
deleted file mode 100644
index 3566641..0000000
--- a/src/com/android/car/settings/bluetooth/BluetoothDeviceListAdapter.java
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.bluetooth;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothClass;
-import android.bluetooth.BluetoothDevice;
-import android.content.Context;
-import android.content.res.Resources;
-import android.os.AsyncTask;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.SystemProperties;
-import android.util.Pair;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.car.widget.PagedListView;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
-import com.android.settingslib.bluetooth.HidProfile;
-import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfile;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Renders {@link android.bluetooth.BluetoothDevice} to a view to be displayed as a row in a list.
- */
-public class BluetoothDeviceListAdapter
-        extends RecyclerView.Adapter<BluetoothDeviceListAdapter.ViewHolder>
-        implements PagedListView.ItemCap, BluetoothCallback {
-    private static final Logger LOG = new Logger(BluetoothDeviceListAdapter.class);
-    // Copied from BluetoothDeviceNoNamePreferenceController.java
-    private static final String BLUETOOTH_SHOW_DEVICES_WITHOUT_NAMES_PROPERTY =
-            "persist.bluetooth.showdeviceswithoutnames";
-    private static final int DEVICE_ROW_TYPE = 1;
-    private static final int BONDED_DEVICE_HEADER_TYPE = 2;
-    private static final int AVAILABLE_DEVICE_HEADER_TYPE = 3;
-    private static final int NUM_OF_HEADERS = 2;
-    public static final int DELAY_MILLIS = 1000;
-
-    private final Handler mHandler = new Handler(Looper.getMainLooper());
-    private final HashSet<CachedBluetoothDevice> mBondedDevices = new HashSet<>();
-    private final HashSet<CachedBluetoothDevice> mAvailableDevices = new HashSet<>();
-    private final LocalBluetoothAdapter mLocalAdapter;
-    private final LocalBluetoothManager mLocalManager;
-    private final CachedBluetoothDeviceManager mDeviceManager;
-    private final Context mContext;
-    private final BaseFragment.FragmentController mFragmentController;
-    private final boolean mShowDevicesWithoutNames;
-
-    /* Talk-back descriptions for various BT icons */
-    public final String mComputerDescription;
-    public final String mInputPeripheralDescription;
-    public final String mHeadsetDescription;
-    public final String mPhoneDescription;
-    public final String mImagingDescription;
-    public final String mHeadphoneDescription;
-    public final String mBluetoothDescription;
-
-    private SortTask mSortTask;
-
-    private ArrayList<CachedBluetoothDevice> mBondedDevicesSorted = new ArrayList<>();
-    private ArrayList<CachedBluetoothDevice> mAvailableDevicesSorted = new ArrayList<>();
-
-    class ViewHolder extends RecyclerView.ViewHolder {
-        private final ImageView mIcon;
-        private final TextView mTitle;
-        private final TextView mDesc;
-        private final ImageButton mActionButton;
-        private final DeviceAttributeChangeCallback mCallback =
-                new DeviceAttributeChangeCallback(this);
-
-        public ViewHolder(View view) {
-            super(view);
-            mTitle = (TextView) view.findViewById(R.id.title);
-            mDesc = (TextView) view.findViewById(R.id.desc);
-            mIcon = (ImageView) view.findViewById(R.id.icon);
-            mActionButton = (ImageButton) view.findViewById(R.id.action);
-            view.setOnClickListener(new BluetoothClickListener(this));
-        }
-    }
-
-    public BluetoothDeviceListAdapter(
-            Context context,
-            LocalBluetoothManager localBluetoothManager,
-            BaseFragment.FragmentController fragmentController) {
-        mContext = context;
-        mLocalManager = localBluetoothManager;
-        mFragmentController = fragmentController;
-        mLocalAdapter = mLocalManager.getBluetoothAdapter();
-        mDeviceManager = mLocalManager.getCachedDeviceManager();
-
-        Resources r = context.getResources();
-        mComputerDescription = r.getString(R.string.bluetooth_talkback_computer);
-        mInputPeripheralDescription = r.getString(
-                R.string.bluetooth_talkback_input_peripheral);
-        mHeadsetDescription = r.getString(R.string.bluetooth_talkback_headset);
-        mPhoneDescription = r.getString(R.string.bluetooth_talkback_phone);
-        mImagingDescription = r.getString(R.string.bluetooth_talkback_imaging);
-        mHeadphoneDescription = r.getString(R.string.bluetooth_talkback_headphone);
-        mBluetoothDescription = r.getString(R.string.bluetooth_talkback_bluetooth);
-        mShowDevicesWithoutNames =
-                SystemProperties.getBoolean(BLUETOOTH_SHOW_DEVICES_WITHOUT_NAMES_PROPERTY, false);
-    }
-
-    public void start() {
-        mLocalManager.getEventManager().registerCallback(this);
-        if (mLocalAdapter.isEnabled()) {
-            mLocalAdapter.startScanning(true);
-            addBondDevices();
-            addCachedDevices();
-        }
-        // create task here to avoid re-executing existing tasks.
-        mSortTask = new SortTask();
-        mSortTask.execute();
-    }
-
-    public void stop() {
-        mLocalAdapter.stopScanning();
-        mDeviceManager.clearNonBondedDevices();
-        mLocalManager.getEventManager().unregisterCallback(this);
-        mBondedDevices.clear();
-        mBondedDevicesSorted.clear();
-        mAvailableDevices.clear();
-        mAvailableDevicesSorted.clear();
-        mSortTask.cancel(true);
-    }
-
-    @Override
-    public BluetoothDeviceListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
-            int viewType) {
-        View v;
-        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
-        switch (viewType) {
-            case BONDED_DEVICE_HEADER_TYPE:
-                v = layoutInflater.inflate(R.layout.single_text_line_item, parent, false);
-                v.setEnabled(false);
-                ((TextView) v.findViewById(R.id.title)).setText(
-                        R.string.bluetooth_preference_paired_devices);
-                break;
-            case AVAILABLE_DEVICE_HEADER_TYPE:
-                v = layoutInflater.inflate(R.layout.single_text_line_item, parent, false);
-                v.setEnabled(false);
-                ((TextView) v.findViewById(R.id.title)).setText(
-                        R.string.bluetooth_preference_found_devices);
-                break;
-            default:
-                v = layoutInflater.inflate(R.layout.icon_widget_line_item, parent, false);
-        }
-        return new ViewHolder(v);
-    }
-
-    @Override
-    public int getItemCount() {
-        return mAvailableDevicesSorted.size() + NUM_OF_HEADERS + mBondedDevicesSorted.size();
-    }
-
-    @Override
-    public void setMaxItems(int maxItems) {
-        // no limit in this list.
-    }
-
-    @Override
-    public void onBindViewHolder(ViewHolder holder, int position) {
-        final CachedBluetoothDevice bluetoothDevice = getItem(position);
-        if (bluetoothDevice == null) {
-            // this row is for in-list headers
-            return;
-        }
-        if (holder.getOldPosition() != RecyclerView.NO_POSITION) {
-            getItem(holder.getOldPosition()).unregisterCallback(holder.mCallback);
-        }
-        bluetoothDevice.registerCallback(holder.mCallback);
-        holder.mTitle.setText(bluetoothDevice.getName());
-        Pair<Integer, String> pair = getBtClassDrawableWithDescription(bluetoothDevice);
-        holder.mIcon.setImageResource(pair.first);
-        String summaryText = bluetoothDevice.getCarConnectionSummary();
-        if (summaryText != null) {
-            holder.mDesc.setText(summaryText);
-            holder.mDesc.setVisibility(View.VISIBLE);
-        } else {
-            holder.mDesc.setVisibility(View.GONE);
-        }
-        if (BluetoothDeviceFilter.BONDED_DEVICE_FILTER.matches(bluetoothDevice.getDevice())) {
-            holder.mActionButton.setVisibility(View.VISIBLE);
-            holder.mActionButton.setOnClickListener(v -> {
-                mFragmentController.launchFragment(
-                        BluetoothDetailFragment.getInstance(bluetoothDevice.getDevice()));
-                });
-        } else {
-            holder.mActionButton.setVisibility(View.GONE);
-        }
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        // the first row is the header for the bonded device list;
-        if (position == 0) {
-            return BONDED_DEVICE_HEADER_TYPE;
-        }
-        // after the end of the bonded device list is the header of the available device list.
-        if (position == mBondedDevicesSorted.size() + 1) {
-            return AVAILABLE_DEVICE_HEADER_TYPE;
-        }
-        return DEVICE_ROW_TYPE;
-    }
-
-    private CachedBluetoothDevice getItem(int position) {
-        if (position > 0 && position <= mBondedDevicesSorted.size()) {
-            // off set the header row
-            return mBondedDevicesSorted.get(position - 1);
-        }
-        if (position > mBondedDevicesSorted.size() + 1
-                && position <= mBondedDevicesSorted.size() + 1 + mAvailableDevicesSorted.size()) {
-            // off set two header row and the size of bonded device list.
-            return mAvailableDevicesSorted.get(
-                    position - NUM_OF_HEADERS - mBondedDevicesSorted.size());
-        }
-        // otherwise it's a in list header
-        return null;
-    }
-
-    // callback functions
-    @Override
-    public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
-        if (addDevice(cachedDevice)) {
-            ArrayList<CachedBluetoothDevice> devices = new ArrayList<>(mBondedDevices);
-            Collections.sort(devices);
-            mBondedDevicesSorted = devices;
-            notifyDataSetChanged();
-        }
-    }
-
-    @Override
-    public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
-        // the device might changed bonding state, so need to remove from both sets.
-        if (mBondedDevices.remove(cachedDevice)) {
-            mBondedDevicesSorted.remove(cachedDevice);
-        }
-        mAvailableDevices.remove(cachedDevice);
-        notifyDataSetChanged();
-    }
-
-    @Override
-    public void onBluetoothStateChanged(int bluetoothState) {
-        switch (bluetoothState) {
-            case BluetoothAdapter.STATE_OFF:
-                mBondedDevices.clear();
-                mBondedDevicesSorted.clear();
-                mAvailableDevices.clear();
-                mAvailableDevicesSorted.clear();
-                notifyDataSetChanged();
-                break;
-            case BluetoothAdapter.STATE_ON:
-                mLocalAdapter.startScanning(true);
-                addBondDevices();
-                addCachedDevices();
-                break;
-            default:
-        }
-    }
-
-    public void reset() {
-        mBondedDevices.clear();
-        mBondedDevicesSorted.clear();
-        mAvailableDevices.clear();
-        mAvailableDevicesSorted.clear();
-        mLocalAdapter.startScanning(true);
-        addBondDevices();
-        addCachedDevices();
-        notifyDataSetChanged();
-    }
-
-    @Override
-    public void onScanningStateChanged(boolean started) {
-        // don't care
-    }
-
-    @Override
-    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
-        onDeviceDeleted(cachedDevice);
-        onDeviceAdded(cachedDevice);
-    }
-
-    /**
-     * Call back for the first connection or the last connection to ANY device/profile. Not
-     * suitable for monitor per device level connection.
-     */
-    @Override
-    public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {
-        onDeviceDeleted(cachedDevice);
-        onDeviceAdded(cachedDevice);
-    }
-
-    @Override
-    public void onActiveDeviceChanged(CachedBluetoothDevice activeDevice, int bluetoothProfile) {
-        // Not used (for now)
-    }
-
-    @Override
-    public void onAudioModeChanged() {
-        // Not used (for now)
-    }
-
-    private void addDevices(Collection<CachedBluetoothDevice> cachedDevices) {
-        boolean needSort = false;
-        for (CachedBluetoothDevice device : cachedDevices) {
-            if (addDevice(device)) {
-                needSort = true;
-            }
-        }
-        if (needSort) {
-            ArrayList<CachedBluetoothDevice> devices =
-                    new ArrayList<CachedBluetoothDevice>(mBondedDevices);
-            Collections.sort(devices);
-            mBondedDevicesSorted = devices;
-            notifyDataSetChanged();
-        }
-    }
-
-    /**
-     * @return {@code true} if list changed and needed sort again.
-     */
-    private boolean addDevice(CachedBluetoothDevice cachedDevice) {
-        boolean needSort = false;
-        if (BluetoothDeviceFilter.BONDED_DEVICE_FILTER.matches(cachedDevice.getDevice())) {
-            if (mBondedDevices.add(cachedDevice)) {
-                needSort = true;
-            }
-        }
-        if (BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER.matches(cachedDevice.getDevice())
-                && (mShowDevicesWithoutNames || cachedDevice.hasHumanReadableName())) {
-            // reset is done at SortTask.
-            mAvailableDevices.add(cachedDevice);
-        }
-        return needSort;
-    }
-
-    private void addBondDevices() {
-        Set<BluetoothDevice> bondedDevices = mLocalAdapter.getBondedDevices();
-        if (bondedDevices == null) {
-            return;
-        }
-        ArrayList<CachedBluetoothDevice> cachedBluetoothDevices = new ArrayList<>();
-        for (BluetoothDevice device : bondedDevices) {
-            CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device);
-            if (cachedDevice == null) {
-                cachedDevice = mDeviceManager.addDevice(
-                        mLocalAdapter, mLocalManager.getProfileManager(), device);
-            }
-            cachedBluetoothDevices.add(cachedDevice);
-        }
-        addDevices(cachedBluetoothDevices);
-    }
-
-    private void addCachedDevices() {
-        addDevices(mDeviceManager.getCachedDevicesCopy());
-    }
-
-    private Pair<Integer, String> getBtClassDrawableWithDescription(
-            CachedBluetoothDevice bluetoothDevice) {
-        BluetoothClass btClass = bluetoothDevice.getBtClass();
-        if (btClass != null) {
-            switch (btClass.getMajorDeviceClass()) {
-                case BluetoothClass.Device.Major.COMPUTER:
-                    return new Pair<>(R.drawable.ic_bt_laptop, mComputerDescription);
-
-                case BluetoothClass.Device.Major.PHONE:
-                    return new Pair<>(R.drawable.ic_bt_cellphone, mPhoneDescription);
-
-                case BluetoothClass.Device.Major.PERIPHERAL:
-                    return new Pair<>(HidProfile.getHidClassDrawable(btClass),
-                            mInputPeripheralDescription);
-
-                case BluetoothClass.Device.Major.IMAGING:
-                    return new Pair<>(R.drawable.ic_bt_imaging, mImagingDescription);
-
-                default:
-                    // unrecognized device class; continue
-            }
-        } else {
-            LOG.w("btClass is null");
-        }
-
-        List<LocalBluetoothProfile> profiles = bluetoothDevice.getProfiles();
-        for (LocalBluetoothProfile profile : profiles) {
-            int resId = profile.getDrawableResource(btClass);
-            if (resId != 0) {
-                return new Pair<Integer, String>(resId, null);
-            }
-        }
-        if (btClass != null) {
-            if (btClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) {
-                return new Pair<Integer, String>(R.drawable.ic_bt_headset_hfp, mHeadsetDescription);
-            }
-            if (btClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) {
-                return new Pair<Integer, String>(R.drawable.ic_bt_headphones_a2dp,
-                        mHeadphoneDescription);
-            }
-        }
-        return new Pair<Integer, String>(R.drawable.ic_settings_bluetooth, mBluetoothDescription);
-    }
-
-    /**
-     * Updates device render upon device attribute change.
-     */
-    // TODO: This is a walk around for handling attribute callback. Since the callback doesn't
-    // contain the information about which device needs to be updated, we have to maintain a
-    // local reference to the device. Fix the code in CachedBluetoothDevice.Callback to return
-    // a reference of the device been updated.
-    private class DeviceAttributeChangeCallback implements CachedBluetoothDevice.Callback {
-
-        private final ViewHolder mViewHolder;
-
-        DeviceAttributeChangeCallback(ViewHolder viewHolder) {
-            mViewHolder = viewHolder;
-        }
-
-        @Override
-        public void onDeviceAttributesChanged() {
-            notifyItemChanged(mViewHolder.getAdapterPosition());
-        }
-    }
-
-    private class BluetoothClickListener implements OnClickListener {
-        private final ViewHolder mViewHolder;
-
-        BluetoothClickListener(ViewHolder viewHolder) {
-            mViewHolder = viewHolder;
-        }
-
-        @Override
-        public void onClick(View v) {
-            CachedBluetoothDevice device = getItem(mViewHolder.getAdapterPosition());
-            int bondState = device.getBondState();
-
-            if (device.isConnected()) {
-                // TODO: ask user for confirmation
-                device.disconnect();
-            } else if (bondState == BluetoothDevice.BOND_BONDED) {
-                device.connect(true);
-            } else if (bondState == BluetoothDevice.BOND_NONE) {
-                if (!device.startPairing()) {
-                    showError(device.getName(),
-                            R.string.bluetooth_pairing_error_message);
-                    return;
-                }
-                // allow MAP and PBAP since this is client side, permission should be handled on
-                // server side. i.e. the phone side.
-                device.setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
-                device.setMessagePermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
-            }
-        }
-    }
-
-    private void showError(String name, int messageResId) {
-        String message = mContext.getString(messageResId, name);
-        Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
-    }
-
-    /**
-     * Provides an ordered bt device list periodically.
-     */
-    // TODO: improve the way we sort BT devices. Ideally we should keep all devices in a TreeSet
-    // and as devices are added the correct order is maintained, that requires a consistent
-    // logic between equals and compareTo function, unfortunately it's not the case in
-    // CachedBluetoothDevice class. Fix that and improve the way we order devices.
-    private class SortTask extends AsyncTask<Void, Void, ArrayList<CachedBluetoothDevice>> {
-
-        /**
-         * Returns {code null} if no changed are made.
-         */
-        @Override
-        protected ArrayList<CachedBluetoothDevice> doInBackground(Void... v) {
-            if (mAvailableDevicesSorted != null
-                    && mAvailableDevicesSorted.size() == mAvailableDevices.size()) {
-                return null;
-            }
-            ArrayList<CachedBluetoothDevice> devices =
-                    new ArrayList<CachedBluetoothDevice>(mAvailableDevices);
-            Collections.sort(devices);
-            return devices;
-        }
-
-        @Override
-        protected void onPostExecute(ArrayList<CachedBluetoothDevice> devices) {
-            // skip if no changes are made.
-            if (devices != null) {
-                mAvailableDevicesSorted = devices;
-                notifyDataSetChanged();
-            }
-            mHandler.postDelayed(new Runnable() {
-                public void run() {
-                    mSortTask = new SortTask();
-                    mSortTask.execute();
-                }
-            }, DELAY_MILLIS);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java
new file mode 100644
index 0000000..3d09b37
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.Pair;
+
+import androidx.preference.Preference;
+
+import com.android.car.apps.common.util.Themes;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+import java.util.StringJoiner;
+
+/**
+ * Displays the name, icon, and status (connected/disconnected, etc.) of a remote Bluetooth device.
+ * When the associated preference is clicked, a dialog is shown to allow the user to update the
+ * display name of the remote device.
+ */
+public class BluetoothDeviceNamePreferenceController extends
+        BluetoothDevicePreferenceController<Preference> {
+
+    public BluetoothDeviceNamePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        CachedBluetoothDevice cachedDevice = getCachedDevice();
+        Pair<Drawable, String> pair =
+                com.android.settingslib.bluetooth.BluetoothUtils.getBtClassDrawableWithDescription(
+                        getContext(),
+                        cachedDevice);
+        StringJoiner summaryJoiner = new StringJoiner(System.lineSeparator());
+        summaryJoiner.setEmptyValue("");
+
+        String summaryText = cachedDevice.getCarConnectionSummary();
+        if (!TextUtils.isEmpty(summaryText)) {
+            summaryJoiner.add(summaryText);
+        }
+        // If hearing aids are connected, two battery statuses should be shown.
+        String pairDeviceSummary =
+                getBluetoothManager().getCachedDeviceManager().getSubDeviceSummary(cachedDevice);
+        if (!TextUtils.isEmpty(pairDeviceSummary)) {
+            summaryJoiner.add(pairDeviceSummary);
+        }
+        preference.setTitle(cachedDevice.getName());
+        preference.setIcon(pair.first);
+        preference.getIcon().setTintList(
+                Themes.getAttrColorStateList(getContext(), R.attr.iconColor));
+        preference.setSummary(summaryJoiner.toString());
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        getFragmentController().showDialog(
+                RemoteRenameDialogFragment.newInstance(getCachedDevice()),
+                RemoteRenameDialogFragment.TAG);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePickerActivity.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePickerActivity.java
new file mode 100644
index 0000000..db89075
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePickerActivity.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2019 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.car.settings.bluetooth;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * Displays a list of Bluetooth devices at the request of another application. When a user selects a
+ * device from the list, its details are returned to the requester. See {@link
+ * android.bluetooth.BluetoothDevicePicker}.
+ */
+public class BluetoothDevicePickerActivity extends BaseCarSettingsActivity {
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        return new BluetoothDevicePickerFragment();
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragment.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragment.java
new file mode 100644
index 0000000..658690d
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragment.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2019 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.car.settings.bluetooth;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ProgressBar;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+/**
+ * Hosts {@link BluetoothDevicePickerPreferenceController} to display the list of Bluetooth
+ * devices. The progress bar is shown while this fragment is visible to indicate discovery or
+ * pairing progress.
+ */
+public class BluetoothDevicePickerFragment extends SettingsFragment {
+
+    private LocalBluetoothManager mManager;
+    private ProgressBar mProgressBar;
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.bluetooth_device_picker_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mManager = BluetoothUtils.getLocalBtManager(context);
+        if (mManager == null) {
+            goBack();
+            return;
+        }
+
+        use(BluetoothDevicePickerPreferenceController.class,
+                R.string.pk_bluetooth_device_picker).setLaunchIntent(requireActivity().getIntent());
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        mProgressBar = requireActivity().findViewById(R.id.progress_bar);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mManager.setForegroundActivity(requireActivity());
+        mProgressBar.setVisibility(View.VISIBLE);
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mManager.setForegroundActivity(null);
+        mProgressBar.setVisibility(View.GONE);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePickerPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePickerPreferenceController.java
new file mode 100644
index 0000000..0c68eb5
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePickerPreferenceController.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2019 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.car.settings.bluetooth;
+
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothDevicePicker;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+/**
+ * Displays a list of Bluetooth devices for the user to select. When a device is selected, a
+ * {@link BluetoothDevicePicker#ACTION_DEVICE_SELECTED} broadcast is sent containing {@link
+ * BluetoothDevice#EXTRA_DEVICE}.
+ *
+ * <p>This is useful to other application to obtain a device without needing to implement the UI.
+ * The activity hosting this controller should be launched with an intent as detailed in {@link
+ * BluetoothDevicePicker#ACTION_LAUNCH}. This controller will filter devices as specified by {@link
+ * BluetoothDevicePicker#EXTRA_FILTER_TYPE} and deliver the broadcast to the specified {@link
+ * BluetoothDevicePicker#EXTRA_LAUNCH_PACKAGE} {@link BluetoothDevicePicker#EXTRA_LAUNCH_CLASS}
+ * component.  If authentication is required ({@link BluetoothDevicePicker#EXTRA_NEED_AUTH}), this
+ * controller will initiate pairing with the device and send the selected broadcast once the device
+ * successfully pairs. If no device is selected and this controller is destroyed, a broadcast with
+ * a {@code null} {@link BluetoothDevice#EXTRA_DEVICE} is sent.
+ */
+public class BluetoothDevicePickerPreferenceController extends
+        BluetoothScanningDevicesGroupPreferenceController {
+
+    private static final Logger LOG = new Logger(BluetoothDevicePickerPreferenceController.class);
+
+    private BluetoothDeviceFilter.Filter mFilter;
+
+    private boolean mNeedAuth;
+    private String mLaunchPackage;
+    private String mLaunchClass;
+
+    private CachedBluetoothDevice mSelectedDevice;
+
+    public BluetoothDevicePickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /**
+     * Sets the intent with which {@link BluetoothDevicePickerActivity} was launched. The intent
+     * may contain {@link BluetoothDevicePicker} extras to customize the selection list and specify
+     * the destination of the selected device. See {@link BluetoothDevicePicker#ACTION_LAUNCH}.
+     */
+    public void setLaunchIntent(Intent intent) {
+        mNeedAuth = intent.getBooleanExtra(BluetoothDevicePicker.EXTRA_NEED_AUTH, false);
+        mFilter = BluetoothDeviceFilter.getFilter(
+                intent.getIntExtra(BluetoothDevicePicker.EXTRA_FILTER_TYPE,
+                        BluetoothDevicePicker.FILTER_TYPE_ALL));
+        mLaunchPackage = intent.getStringExtra(BluetoothDevicePicker.EXTRA_LAUNCH_PACKAGE);
+        mLaunchClass = intent.getStringExtra(BluetoothDevicePicker.EXTRA_LAUNCH_CLASS);
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mFilter == null) {
+            throw new IllegalStateException("launch intent must be set");
+        }
+    }
+
+    @Override
+    protected BluetoothDeviceFilter.Filter getDeviceFilter() {
+        return mFilter;
+    }
+
+    @Override
+    protected void onDeviceClickedInternal(CachedBluetoothDevice cachedDevice) {
+        mSelectedDevice = cachedDevice;
+        BluetoothUtils.persistSelectedDeviceInPicker(getContext(), cachedDevice.getAddress());
+
+        if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED || !mNeedAuth) {
+            sendDevicePickedIntent(cachedDevice.getDevice());
+            getFragmentController().goBack();
+            return;
+        }
+
+        if (cachedDevice.startPairing()) {
+            LOG.d("startPairing");
+        } else {
+            BluetoothUtils.showError(getContext(), cachedDevice.getName(),
+                    R.string.bluetooth_pairing_error_message);
+            refreshUi();
+        }
+    }
+
+    @Override
+    protected void onStartInternal() {
+        super.onStartInternal();
+        mSelectedDevice = null;
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        super.onDestroyInternal();
+        if (mSelectedDevice == null) {
+            // Notify that no device was selected.
+            sendDevicePickedIntent(null);
+        }
+    }
+
+    @Override
+    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
+        super.onDeviceBondStateChanged(cachedDevice, bondState);
+        if (bondState == BluetoothDevice.BOND_BONDED && cachedDevice.equals(mSelectedDevice)) {
+            sendDevicePickedIntent(mSelectedDevice.getDevice());
+            getFragmentController().goBack();
+        }
+    }
+
+    private void sendDevicePickedIntent(BluetoothDevice device) {
+        LOG.d("sendDevicePickedIntent device: " + device + " package: " + mLaunchPackage
+                + " class: " + mLaunchClass);
+        Intent intent = new Intent(BluetoothDevicePicker.ACTION_DEVICE_SELECTED);
+        intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
+        if (mLaunchPackage != null && mLaunchClass != null) {
+            intent.setClassName(mLaunchPackage, mLaunchClass);
+        }
+        getContext().sendBroadcast(intent);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java
new file mode 100644
index 0000000..dfba4c6
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.SystemProperties;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+
+import com.android.car.apps.common.util.Themes;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+/**
+ * Preference which represents a specific {@link CachedBluetoothDevice}. The title, icon, and
+ * summary are kept in sync with the device when the preference is shown. When the device is busy,
+ * the preference is disabled. The equality and sort order of this preference is determined by the
+ * underlying cached device {@link CachedBluetoothDevice#equals(Object)} and {@link
+ * CachedBluetoothDevice#compareTo(CachedBluetoothDevice)}. If two devices are considered equal, the
+ * default preference sort ordering is used (see {@link #compareTo(Preference)}.
+ */
+public class BluetoothDevicePreference extends ButtonPreference {
+    private static final String BLUETOOTH_SHOW_DEVICES_WITHOUT_NAMES_PROPERTY =
+            "persist.bluetooth.showdeviceswithoutnames";
+
+    private final CachedBluetoothDevice mCachedDevice;
+    private final boolean mShowDevicesWithoutNames;
+    private final CachedBluetoothDevice.Callback mDeviceCallback = this::refreshUi;
+
+    public BluetoothDevicePreference(Context context, CachedBluetoothDevice cachedDevice) {
+        super(context);
+        mCachedDevice = cachedDevice;
+        mShowDevicesWithoutNames = SystemProperties.getBoolean(
+                BLUETOOTH_SHOW_DEVICES_WITHOUT_NAMES_PROPERTY, false);
+        // Hide action by default.
+        showAction(false);
+    }
+
+    /**
+     * Returns the {@link CachedBluetoothDevice} represented by this preference.
+     */
+    public CachedBluetoothDevice getCachedDevice() {
+        return mCachedDevice;
+    }
+
+    @Override
+    public void onAttached() {
+        super.onAttached();
+        mCachedDevice.registerCallback(mDeviceCallback);
+        refreshUi();
+    }
+
+    @Override
+    public void onDetached() {
+        super.onDetached();
+        mCachedDevice.unregisterCallback(mDeviceCallback);
+    }
+
+    private void refreshUi() {
+        setTitle(mCachedDevice.getName());
+        setSummary(mCachedDevice.getCarConnectionSummary());
+
+        final Pair<Drawable, String> pair = com.android.settingslib.bluetooth.BluetoothUtils
+                .getBtClassDrawableWithDescription(getContext(), mCachedDevice);
+        if (pair.first != null) {
+            setIcon(pair.first);
+            getIcon().setTintList(Themes.getAttrColorStateList(getContext(), R.attr.iconColor));
+        }
+
+        setEnabled(!mCachedDevice.isBusy());
+        setVisible(mShowDevicesWithoutNames || mCachedDevice.hasHumanReadableName());
+
+        // Notify since the ordering may have changed.
+        notifyHierarchyChanged();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (!(o instanceof BluetoothDevicePreference)) {
+            return false;
+        }
+        return mCachedDevice.equals(((BluetoothDevicePreference) o).mCachedDevice);
+    }
+
+    @Override
+    public int hashCode() {
+        return mCachedDevice.hashCode();
+    }
+
+    @Override
+    public int compareTo(@NonNull Preference another) {
+        if (!(another instanceof BluetoothDevicePreference)) {
+            // Rely on default sort.
+            return super.compareTo(another);
+        }
+
+        return mCachedDevice
+                .compareTo(((BluetoothDevicePreference) another).mCachedDevice);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceController.java
new file mode 100644
index 0000000..4fc12c3
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceController.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+/**
+ * Encapsulates common functionality for all {@link BluetoothPreferenceController} instances
+ * which display state of a specific {@link CachedBluetoothDevice}. The controller will refresh
+ * the UI whenever the device properties change. The controller is not available to users with
+ * the {@link UserManager#DISALLOW_CONFIG_BLUETOOTH} restriction.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller expects
+ *         to operate.
+ */
+public abstract class BluetoothDevicePreferenceController<V extends Preference> extends
+        BluetoothPreferenceController<V> {
+
+    private final CachedBluetoothDevice.Callback mDeviceCallback = this::refreshUi;
+    private CachedBluetoothDevice mCachedDevice;
+
+    public BluetoothDevicePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /**
+     * Sets the {@link CachedBluetoothDevice} which the controller represents. The device must be
+     * set or an {@link IllegalStateException} will be thrown when this controller begins its
+     * lifecycle.
+     */
+    public void setCachedDevice(CachedBluetoothDevice device) {
+        mCachedDevice = device;
+    }
+
+    /**
+     * Returns the {@link CachedBluetoothDevice} represented by this controller.
+     */
+    public CachedBluetoothDevice getCachedDevice() {
+        return mCachedDevice;
+    }
+
+
+    @Override
+    protected void checkInitialized() {
+        if (mCachedDevice == null) {
+            throw new IllegalStateException("Must be initialized with a CachedBluetoothDevice");
+        }
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        int availabilityStatus = super.getAvailabilityStatus();
+        if (availabilityStatus == AVAILABLE) {
+            return getCarUserManagerHelper().isCurrentProcessUserHasRestriction(
+                    DISALLOW_CONFIG_BLUETOOTH) ? DISABLED_FOR_USER : AVAILABLE;
+        }
+        return availabilityStatus;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        super.onStartInternal();
+        mCachedDevice.registerCallback(mDeviceCallback);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        super.onStopInternal();
+        mCachedDevice.unregisterCallback(mDeviceCallback);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilePreference.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilePreference.java
new file mode 100644
index 0000000..a6ac320
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilePreference.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.bluetooth.BluetoothProfile.STATE_CONNECTED;
+
+import android.content.Context;
+
+import androidx.preference.SwitchPreference;
+
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+import com.android.settingslib.bluetooth.PanProfile;
+
+/**
+ * Preference that represents a {@link LocalBluetoothProfile} for a {@link CachedBluetoothDevice}.
+ */
+public class BluetoothDeviceProfilePreference extends SwitchPreference {
+
+    private final LocalBluetoothProfile mProfile;
+    private final CachedBluetoothDevice mCachedDevice;
+    private final CachedBluetoothDevice.Callback mDeviceCallback = this::refreshUi;
+
+    public BluetoothDeviceProfilePreference(Context context, LocalBluetoothProfile profile,
+            CachedBluetoothDevice cachedDevice) {
+        super(context);
+        mProfile = profile;
+        mCachedDevice = cachedDevice;
+        setKey(profile.toString());
+        setTitle(profile.getNameResource(cachedDevice.getDevice()));
+    }
+
+    /**
+     * Returns the {@link LocalBluetoothProfile} represented by this preference.
+     */
+    public LocalBluetoothProfile getProfile() {
+        return mProfile;
+    }
+
+    /**
+     * Returns the {@link CachedBluetoothDevice} used to construct this preference.
+     */
+    public CachedBluetoothDevice getCachedDevice() {
+        return mCachedDevice;
+    }
+
+    @Override
+    public void onAttached() {
+        super.onAttached();
+        mCachedDevice.registerCallback(mDeviceCallback);
+        refreshUi();
+    }
+
+    @Override
+    public void onDetached() {
+        super.onDetached();
+        mCachedDevice.unregisterCallback(mDeviceCallback);
+    }
+
+    private void refreshUi() {
+        setEnabled(!mCachedDevice.isBusy());
+        if (mProfile instanceof PanProfile) {
+            setChecked(
+                    mProfile.getConnectionStatus(mCachedDevice.getDevice()) == STATE_CONNECTED);
+        } else {
+            setChecked(mProfile.isPreferred(mCachedDevice.getDevice()));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilesPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilesPreferenceController.java
new file mode 100644
index 0000000..9df8054
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilesPreferenceController.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+
+/**
+ * Displays toggles for Bluetooth profiles supported by a device. Toggling a profile on will set it
+ * as preferred and attempt a connection. Toggling a profile off will disconnect the profile. If no
+ * profiles are supported, the preference is hidden.
+ */
+public class BluetoothDeviceProfilesPreferenceController extends
+        BluetoothDevicePreferenceController<PreferenceGroup> {
+
+    private final Preference.OnPreferenceChangeListener mProfileChangeListener =
+            (preference, newValue) -> {
+                boolean isChecked = (boolean) newValue;
+                BluetoothDeviceProfilePreference profilePref =
+                        (BluetoothDeviceProfilePreference) preference;
+                LocalBluetoothProfile profile = profilePref.getProfile();
+                profile.setPreferred(profilePref.getCachedDevice().getDevice(), isChecked);
+                if (isChecked) {
+                    getCachedDevice().connectProfile(profile);
+                } else {
+                    getCachedDevice().disconnect(profile);
+                }
+                return true;
+            };
+
+    public BluetoothDeviceProfilesPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        for (LocalBluetoothProfile profile : getCachedDevice().getProfiles()) {
+            Preference profilePref = preferenceGroup.findPreference(profile.toString());
+            if (profilePref == null) {
+                profilePref = new BluetoothDeviceProfilePreference(getContext(), profile,
+                        getCachedDevice());
+                profilePref.setOnPreferenceChangeListener(mProfileChangeListener);
+                preferenceGroup.addPreference(profilePref);
+            }
+        }
+        for (LocalBluetoothProfile removedProfile : getCachedDevice().getRemovedProfiles()) {
+            Preference prefToRemove = preferenceGroup.findPreference(removedProfile.toString());
+            if (prefToRemove != null) {
+                preferenceGroup.removePreference(prefToRemove);
+            }
+        }
+        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 0);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceController.java
new file mode 100644
index 0000000..8548821
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceController.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.annotation.CallSuper;
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.bluetooth.BluetoothCallback;
+import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Manages a group of Bluetooth devices by adding preferences for devices that pass a subclass
+ * defined filter and removing preferences for devices that no longer pass. Subclasses are
+ * dispatched click events on individual preferences to customize the behavior.
+ *
+ * <p>Note: {@link #refreshUi()} is called whenever a device is added or removed with {@link
+ * #onDeviceAdded(CachedBluetoothDevice)} or {@link #onDeviceDeleted(CachedBluetoothDevice)}.
+ * Subclasses should listen to state changes (and possibly override additional {@link
+ * BluetoothCallback} methods) and call {@link #refreshUi()} for changes which affect their
+ * implementation of {@link #getDeviceFilter()}.
+ */
+public abstract class BluetoothDevicesGroupPreferenceController extends
+        BluetoothPreferenceController<PreferenceGroup> {
+
+    private final Map<CachedBluetoothDevice, BluetoothDevicePreference> mPreferenceMap =
+            new HashMap<>();
+    private final Preference.OnPreferenceClickListener mDevicePreferenceClickListener =
+            preference -> {
+                onDeviceClicked(((BluetoothDevicePreference) preference).getCachedDevice());
+                return true;
+            };
+
+    public BluetoothDevicesGroupPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /**
+     * Returns a filter for which devices should be included in the group. Devices that do not
+     * pass the filter will not be added. Added devices that no longer pass the filter will be
+     * removed.
+     */
+    protected abstract BluetoothDeviceFilter.Filter getDeviceFilter();
+
+    /**
+     * Returns a newly created {@link BluetoothDevicePreference} for the given {@link
+     * CachedBluetoothDevice}. Subclasses may override this method to customize how devices are
+     * represented in the group.
+     */
+    protected BluetoothDevicePreference createDevicePreference(CachedBluetoothDevice cachedDevice) {
+        return new BluetoothDevicePreference(getContext(), cachedDevice);
+    }
+
+    /**
+     * Called when a preference in the group is clicked.
+     *
+     * @param cachedDevice the device represented by the clicked preference.
+     */
+    protected abstract void onDeviceClicked(CachedBluetoothDevice cachedDevice);
+
+    /**
+     * Returns a mapping of all {@link CachedBluetoothDevice} instances represented by this group
+     * and their associated preferences.
+     */
+    protected Map<CachedBluetoothDevice, BluetoothDevicePreference> getPreferenceMap() {
+        return mPreferenceMap;
+    }
+
+    @Override
+    @CallSuper
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        Collection<CachedBluetoothDevice> cachedDevices =
+                getBluetoothManager().getCachedDeviceManager().getCachedDevicesCopy();
+
+        Set<CachedBluetoothDevice> devicesToRemove = new HashSet<>(mPreferenceMap.keySet());
+        devicesToRemove.removeAll(cachedDevices);
+        for (CachedBluetoothDevice deviceToRemove : devicesToRemove) {
+            removePreference(deviceToRemove);
+        }
+
+        for (CachedBluetoothDevice cachedDevice : cachedDevices) {
+            if (getDeviceFilter().matches(cachedDevice.getDevice())) {
+                addPreference(cachedDevice);
+            } else {
+                removePreference(cachedDevice);
+            }
+        }
+
+        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 0);
+    }
+
+    @Override
+    public final void onBluetoothStateChanged(int bluetoothState) {
+        super.onBluetoothStateChanged(bluetoothState);
+        if (bluetoothState == BluetoothAdapter.STATE_TURNING_OFF) {
+            // Cleanup the UI so that we don't have stale representations when the adapter turns
+            // on again. This can happen if Bluetooth crashes and restarts.
+            getPreference().removeAll();
+            mPreferenceMap.clear();
+        }
+    }
+
+    @Override
+    public final void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
+        refreshUi();
+    }
+
+    @Override
+    public final void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
+        refreshUi();
+    }
+
+    private void addPreference(CachedBluetoothDevice cachedDevice) {
+        if (!mPreferenceMap.containsKey(cachedDevice)) {
+            BluetoothDevicePreference devicePreference = createDevicePreference(cachedDevice);
+            devicePreference.setOnPreferenceClickListener(mDevicePreferenceClickListener);
+            mPreferenceMap.put(cachedDevice, devicePreference);
+            getPreference().addPreference(devicePreference);
+        }
+    }
+
+    private void removePreference(CachedBluetoothDevice cachedDevice) {
+        if (mPreferenceMap.containsKey(cachedDevice)) {
+            getPreference().removePreference(mPreferenceMap.get(cachedDevice));
+            mPreferenceMap.remove(cachedDevice);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragment.java b/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragment.java
new file mode 100644
index 0000000..c1caf61
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragment.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+/**
+ * Displays a dialog which prompts the user to confirm disconnecting from a remote Bluetooth device.
+ */
+public class BluetoothDisconnectConfirmDialogFragment extends DialogFragment {
+
+    private static final String KEY_DEVICE_ADDRESS = "device_address";
+
+    private final CachedBluetoothDevice.Callback mDeviceCallback = this::dismissIfNotConnected;
+    private CachedBluetoothDevice mCachedDevice;
+
+    /**
+     * Returns a new {@link BluetoothDisconnectConfirmDialogFragment} for the given {@code device}.
+     */
+    public static BluetoothDisconnectConfirmDialogFragment newInstance(
+            CachedBluetoothDevice device) {
+        Bundle args = new Bundle();
+        args.putString(KEY_DEVICE_ADDRESS, device.getAddress());
+        BluetoothDisconnectConfirmDialogFragment fragment =
+                new BluetoothDisconnectConfirmDialogFragment();
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        String deviceAddress = getArguments().getString(KEY_DEVICE_ADDRESS);
+        LocalBluetoothManager manager = BluetoothUtils.getLocalBtManager(context);
+        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(
+                deviceAddress);
+        mCachedDevice = manager.getCachedDeviceManager().findDevice(device);
+    }
+
+    @NonNull
+    @Override
+    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        Context context = requireContext();
+        String name = mCachedDevice.getName();
+        if (TextUtils.isEmpty(name)) {
+            name = context.getString(R.string.bluetooth_device);
+        }
+        String title = context.getString(R.string.bluetooth_disconnect_title);
+        String message = context.getString(R.string.bluetooth_disconnect_all_profiles, name);
+
+        return new AlertDialog.Builder(context)
+                .setTitle(title)
+                .setMessage(message)
+                .setPositiveButton(android.R.string.ok,
+                        (dialog, which) -> mCachedDevice.disconnect())
+                .setNegativeButton(android.R.string.cancel, /* listener= */ null)
+                .create();
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mCachedDevice.registerCallback(mDeviceCallback);
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mCachedDevice.unregisterCallback(mDeviceCallback);
+    }
+
+    private void dismissIfNotConnected() {
+        // This handles the case where the dialog is showing and the connection is broken via UI
+        // on the remote device. It does not cover the case of the device disconnecting while the
+        // fragment is starting because we cannot begin another transaction for dismiss while in
+        // a transaction to show. That case, however, should be extremely rare, and the action
+        // taken on the dialog will have no effect.
+        if (!mCachedDevice.isConnected() && getDialog().isShowing()) {
+            dismiss();
+        }
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceController.java
new file mode 100644
index 0000000..4136f95
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceController.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller which determines if the top level entry into Bluetooth settings should be displayed
+ * based on device capabilities and user restrictions.
+ */
+public class BluetoothEntryPreferenceController extends PreferenceController<Preference> {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public BluetoothEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        if (!getContext().getPackageManager().hasSystemFeature(FEATURE_BLUETOOTH)) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return mCarUserManagerHelper.isCurrentProcessUserHasRestriction(DISALLOW_BLUETOOTH)
+                ? DISABLED_FOR_USER : AVAILABLE;
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothNamePreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothNamePreferenceController.java
new file mode 100644
index 0000000..efc6387
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothNamePreferenceController.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Displays the name of the local Bluetooth adapter. When the associated preference is clicked, a
+ * dialog is shown to allow the user to update the adapter name. If the user has the {@link
+ * DISALLOW_CONFIG_BLUETOOTH} restriction, interaction with the preference is disabled.
+ */
+public class BluetoothNamePreferenceController extends BluetoothPreferenceController<Preference> {
+
+    private final IntentFilter mIntentFilter = new IntentFilter(
+            BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    public BluetoothNamePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        super.onStartInternal();
+        getContext().registerReceiver(mReceiver, mIntentFilter);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        super.onStopInternal();
+        getContext().unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSelectable(!getCarUserManagerHelper().isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH));
+        preference.setSummary(BluetoothAdapter.getDefaultAdapter().getName());
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        getFragmentController().showDialog(new LocalRenameDialogFragment(),
+                LocalRenameDialogFragment.TAG);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingRequest.java b/src/com/android/car/settings/bluetooth/BluetoothPairingRequest.java
index 7062191..2115998 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPairingRequest.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingRequest.java
@@ -31,31 +31,31 @@
  */
 public final class BluetoothPairingRequest extends BroadcastReceiver {
 
-  @Override
-  public void onReceive(Context context, Intent intent) {
-    String action = intent.getAction();
-    if (!action.equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) {
-      return;
-    }
-    // convert broadcast intent into activity intent (same action string)
-    Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(context, intent);
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        String action = intent.getAction();
+        if (!action.equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) {
+            return;
+        }
+        // convert broadcast intent into activity intent (same action string)
+        Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(context, intent);
 
-    PowerManager powerManager =
-        (PowerManager)context.getSystemService(Context.POWER_SERVICE);
-    BluetoothDevice device =
-        intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
-    String deviceAddress = device != null ? device.getAddress() : null;
-    String deviceName = device != null ? device.getName() : null;
-    boolean shouldShowDialog = BluetoothUtils.shouldShowDialogInForeground(
-        context, deviceAddress, deviceName);
-    if (powerManager.isInteractive() && shouldShowDialog) {
-      // Since the screen is on and the BT-related activity is in the foreground,
-      // just open the dialog
-      context.startActivityAsUser(pairingIntent, UserHandle.CURRENT);
-    } else {
-      // Put up a notification that leads to the dialog
-      intent.setClass(context, BluetoothPairingService.class);
-      context.startServiceAsUser(intent, UserHandle.CURRENT);
+        PowerManager powerManager =
+                (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+        BluetoothDevice device =
+                intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+        String deviceAddress = device != null ? device.getAddress() : null;
+        String deviceName = device != null ? device.getName() : null;
+        boolean shouldShowDialog = BluetoothUtils.shouldShowDialogInForeground(
+                context, deviceAddress, deviceName);
+        if (powerManager.isInteractive() && shouldShowDialog) {
+            // Since the screen is on and the BT-related activity is in the foreground,
+            // just open the dialog
+            context.startActivityAsUser(pairingIntent, UserHandle.CURRENT);
+        } else {
+            // Put up a notification that leads to the dialog
+            intent.setClass(context, BluetoothPairingService.class);
+            context.startServiceAsUser(intent, UserHandle.CURRENT);
+        }
     }
-  }
 }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java b/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java
new file mode 100644
index 0000000..5e19d01
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ProgressBar;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.bluetooth.BluetoothCallback;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+/**
+ * Page which scans for Bluetooth devices so that a user can select a new device to pair. When a
+ * device pairs, this page will finish.
+ */
+public class BluetoothPairingSelectionFragment extends SettingsFragment {
+
+    private final BluetoothCallback mCallback = new BluetoothCallback() {
+        @Override
+        public void onScanningStateChanged(boolean started) {
+        }
+
+        @Override
+        public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
+            if (bondState == BluetoothDevice.BOND_BONDED) {
+                // We are in a dispatch loop from event manager to all listeners. goBack will pop
+                // immediately, stopping this fragment causing an unregister from the event manager
+                // and a ConcurrentModificationException. Wait until the dispatch is done to go
+                // back.
+                requireActivity().getMainThreadHandler().post(
+                        BluetoothPairingSelectionFragment.this::goBack);
+            }
+        }
+    };
+
+    private LocalBluetoothManager mManager;
+    private ProgressBar mProgressBar;
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.bluetooth_pairing_selection_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mManager = BluetoothUtils.getLocalBtManager(context);
+        if (mManager == null) {
+            goBack();
+        }
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        mProgressBar = requireActivity().findViewById(R.id.progress_bar);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mManager.setForegroundActivity(requireActivity());
+        mManager.getEventManager().registerCallback(mCallback);
+        mProgressBar.setVisibility(View.VISIBLE);
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mManager.setForegroundActivity(null);
+        mManager.getEventManager().unregisterCallback(mCallback);
+        mProgressBar.setVisibility(View.GONE);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingService.java b/src/com/android/car/settings/bluetooth/BluetoothPairingService.java
index 848cbba..156a483 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPairingService.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingService.java
@@ -78,7 +78,8 @@
             if (action.equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED)) {
                 int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE,
                         BluetoothDevice.ERROR);
-                if ((bondState != BluetoothDevice.BOND_NONE) && (bondState != BluetoothDevice.BOND_BONDED)) {
+                if ((bondState != BluetoothDevice.BOND_NONE) && (bondState
+                        != BluetoothDevice.BOND_BONDED)) {
                     return;
                 }
             } else if (action.equals(ACTION_DISMISS_PAIRING)) {
@@ -98,13 +99,13 @@
 
     @Override
     public void onCreate() {
-      NotificationManager mgr = (NotificationManager)this
-         .getSystemService(Context.NOTIFICATION_SERVICE);
-      NotificationChannel notificationChannel = new NotificationChannel(
-         BLUETOOTH_NOTIFICATION_CHANNEL,
-         this.getString(R.string.bluetooth),
-         NotificationManager.IMPORTANCE_HIGH);
-      mgr.createNotificationChannel(notificationChannel);
+        NotificationManager mgr = (NotificationManager) this
+                .getSystemService(Context.NOTIFICATION_SERVICE);
+        NotificationChannel notificationChannel = new NotificationChannel(
+                BLUETOOTH_NOTIFICATION_CHANNEL,
+                this.getString(R.string.bluetooth_settings_title),
+                NotificationManager.IMPORTANCE_HIGH);
+        mgr.createNotificationChannel(notificationChannel);
     }
 
     @Override
@@ -117,7 +118,7 @@
 
         Resources res = getResources();
         Notification.Builder builder = new Notification.Builder(this,
-            BLUETOOTH_NOTIFICATION_CHANNEL)
+                BLUETOOTH_NOTIFICATION_CHANNEL)
                 .setSmallIcon(android.R.drawable.stat_sys_data_bluetooth)
                 .setTicker(res.getString(R.string.bluetooth_notif_ticker))
                 .setLocalOnly(true);
@@ -139,7 +140,8 @@
         String name = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
         if (TextUtils.isEmpty(name)) {
             BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
-            name = device != null ? device.getAliasName() : res.getString(android.R.string.unknownName);
+            name = device != null ? device.getAliasName() : res.getString(
+                    android.R.string.unknownName);
         }
 
         LOG.d("Show pairing notification for " + mDevice.getAddress() + " (" + name + ")");
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothPreferenceController.java
new file mode 100644
index 0000000..6c9ce00
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothPreferenceController.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.annotation.CallSuper;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.bluetooth.BluetoothCallback;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+/**
+ * Abstract {@link PreferenceController} that listens to {@link BluetoothCallback} events and
+ * exposes the interface methods for override. It implements a default
+ * {@link #getAvailabilityStatus()} which is {@link #AVAILABLE} when the  system supports
+ * Bluetooth, the current user is not restricted by {@link DISALLOW_BLUETOOTH}, and the default
+ * Bluetooth adapter is enabled.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller expects
+ *         to operate.
+ */
+public abstract class BluetoothPreferenceController<V extends Preference> extends
+        PreferenceController<V> implements BluetoothCallback {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final LocalBluetoothManager mBluetoothManager;
+
+    public BluetoothPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mBluetoothManager = BluetoothUtils.getLocalBtManager(context);
+    }
+
+    /** Returns a {@link CarUserManagerHelper} constructed from the controller context. */
+    protected final CarUserManagerHelper getCarUserManagerHelper() {
+        return mCarUserManagerHelper;
+    }
+
+    /**
+     * Returns a {@link LocalBluetoothManager} retrieved with the controller context. This is
+     * not {@code null} unless {@link #getAvailabilityStatus()} returns
+     * {@link #UNSUPPORTED_ON_DEVICE}.
+     */
+    protected final LocalBluetoothManager getBluetoothManager() {
+        return mBluetoothManager;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        if (mCarUserManagerHelper.isCurrentProcessUserHasRestriction(DISALLOW_BLUETOOTH)) {
+            return DISABLED_FOR_USER;
+        }
+        return BluetoothAdapter.getDefaultAdapter().isEnabled() ? AVAILABLE
+                : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    @CallSuper
+    protected void onStartInternal() {
+        mBluetoothManager.getEventManager().registerCallback(this);
+    }
+
+    @Override
+    @CallSuper
+    protected void onStopInternal() {
+        mBluetoothManager.getEventManager().unregisterCallback(this);
+    }
+
+    @Override
+    @CallSuper
+    public void onBluetoothStateChanged(int bluetoothState) {
+        refreshUi();
+    }
+
+    @Override
+    public void onScanningStateChanged(boolean started) {
+    }
+
+    @Override
+    public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
+    }
+
+    @Override
+    public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
+    }
+
+    @Override
+    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
+    }
+
+    @Override
+    public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {
+    }
+
+    @Override
+    public void onActiveDeviceChanged(CachedBluetoothDevice activeDevice, int bluetoothProfile) {
+    }
+
+    @Override
+    public void onAudioModeChanged() {
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothProfileLineItem.java b/src/com/android/car/settings/bluetooth/BluetoothProfileLineItem.java
deleted file mode 100644
index 51a1119..0000000
--- a/src/com/android/car/settings/bluetooth/BluetoothProfileLineItem.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.bluetooth;
-
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-import android.view.View;
-import android.widget.CheckBox;
-
-import com.android.car.list.CheckBoxLineItem;
-import com.android.car.settings.R;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothProfile;
-import com.android.settingslib.bluetooth.PanProfile;
-
-/**
- * Represents a line item for a Bluetooth mProfile.
- */
-public class BluetoothProfileLineItem extends CheckBoxLineItem {
-    private final LocalBluetoothProfile mProfile;
-    private final CachedBluetoothDevice mCachedDevice;
-    private CheckboxLineItemViewHolder mViewHolder;
-    private DataChangedListener mDataChangedListener;
-    private final Context mContext;
-
-    public interface DataChangedListener {
-        void onDataChanged();
-    }
-
-    public BluetoothProfileLineItem(Context context, LocalBluetoothProfile profile,
-            CachedBluetoothDevice cachedBluetoothDevice, DataChangedListener listener) {
-        super(context.getText(profile.getNameResource(cachedBluetoothDevice.getDevice())));
-        mContext = context;
-        mCachedDevice = cachedBluetoothDevice;
-        mProfile = profile;
-        mDataChangedListener = listener;
-    }
-
-    @Override
-    public void onClick(View view) {
-        if (((CheckBox) view.findViewById(R.id.checkbox)).isChecked()) {
-            mCachedDevice.disconnect(mProfile);
-            mProfile.setPreferred(mCachedDevice.getDevice(), false);
-        } else if (mProfile.isPreferred(mCachedDevice.getDevice())) {
-            if (mProfile instanceof PanProfile) {
-                mCachedDevice.connectProfile(mProfile);
-            } else {
-                mProfile.setPreferred(mCachedDevice.getDevice(), false);
-            }
-        } else {
-            mProfile.setPreferred(mCachedDevice.getDevice(), true);
-            mCachedDevice.connectProfile(mProfile);
-        }
-        mDataChangedListener.onDataChanged();
-    }
-
-    @Override
-    public boolean isExpandable() {
-        return false;
-    }
-
-    @Override
-    public boolean isEnabled() {
-        return true;
-    }
-
-    @Override
-    public void bindViewHolder(CheckboxLineItemViewHolder holder) {
-        super.bindViewHolder(holder);
-        mViewHolder = holder;
-    }
-
-    @Override
-    public boolean isChecked() {
-        BluetoothDevice device = mCachedDevice.getDevice();
-        if (mProfile instanceof PanProfile) {
-            return mProfile.getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED;
-        } else {
-            return mProfile.isPreferred(device);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothRenameDialogFragment.java b/src/com/android/car/settings/bluetooth/BluetoothRenameDialogFragment.java
new file mode 100644
index 0000000..cf5da80
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothRenameDialogFragment.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.text.InputType;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+
+import java.util.Objects;
+
+/** Dialog fragment for renaming a Bluetooth device. */
+public abstract class BluetoothRenameDialogFragment extends DialogFragment implements TextWatcher,
+        TextView.OnEditorActionListener {
+
+    // Keys to save the edited name and edit status for restoring after configuration change.
+    private static final String KEY_NAME = "device_name";
+
+    private static final int BLUETOOTH_NAME_MAX_LENGTH_BYTES = 248;
+
+    private AlertDialog mAlertDialog;
+    private EditText mDeviceNameView;
+    private Button mRenameButton;
+
+    /** Returns the title to use for the dialog. */
+    @StringRes
+    protected abstract int getDialogTitle();
+
+    /** Returns the current name used for this device or {@code null} if a name is not available. */
+    @Nullable
+    protected abstract String getDeviceName();
+
+    /**
+     * Set the device to the given name.
+     *
+     * @param deviceName the name to use.
+     */
+    protected abstract void setDeviceName(String deviceName);
+
+    @Override
+    @NonNull
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        String deviceName = getDeviceName();
+        if (savedInstanceState != null) {
+            deviceName = savedInstanceState.getString(KEY_NAME, deviceName);
+        }
+        AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity())
+                .setTitle(getDialogTitle())
+                .setView(createDialogView(deviceName))
+                .setPositiveButton(R.string.bluetooth_rename_button,
+                        (dialog, which) -> setDeviceName(
+                                mDeviceNameView.getText().toString().trim()))
+                .setNegativeButton(android.R.string.cancel, /* listener= */ null);
+        mAlertDialog = builder.create();
+        mAlertDialog.setOnShowListener(d -> {
+            if (mDeviceNameView.requestFocus()) {
+                InputMethodManager imm = (InputMethodManager) requireContext().getSystemService(
+                        Context.INPUT_METHOD_SERVICE);
+                if (imm != null) {
+                    imm.showSoftInput(mDeviceNameView, InputMethodManager.SHOW_IMPLICIT);
+                }
+            }
+        });
+
+        return mAlertDialog;
+    }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        outState.putString(KEY_NAME, mDeviceNameView.getText().toString());
+    }
+
+    private View createDialogView(String deviceName) {
+        final LayoutInflater layoutInflater = (LayoutInflater) requireActivity().getSystemService(
+                Context.LAYOUT_INFLATER_SERVICE);
+        // TODO: use dialog layout defined in preference theme.
+        View view = layoutInflater.inflate(R.layout.preference_dialog_edittext, /* root= */ null);
+        mDeviceNameView = view.findViewById(android.R.id.edit);
+        mDeviceNameView.setFilters(new InputFilter[]{
+                new Utf8ByteLengthFilter(BLUETOOTH_NAME_MAX_LENGTH_BYTES)
+        });
+        mDeviceNameView.setText(deviceName); // Set initial value before adding listener.
+        if (!TextUtils.isEmpty(deviceName)) {
+            mDeviceNameView.setSelection(deviceName.length());
+        }
+        mDeviceNameView.addTextChangedListener(this);
+        mDeviceNameView.setOnEditorActionListener(this);
+        mDeviceNameView.setRawInputType(InputType.TYPE_CLASS_TEXT);
+        mDeviceNameView.setImeOptions(EditorInfo.IME_ACTION_DONE);
+
+        return view;
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mRenameButton = mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
+        refreshRenameButton();
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mAlertDialog = null;
+        mDeviceNameView = null;
+        mRenameButton = null;
+    }
+
+    /** Refreshes the displayed device name with the latest value from {@link #getDeviceName()}. */
+    protected void updateDeviceName() {
+        String name = getDeviceName();
+        if (name != null) {
+            mDeviceNameView.setText(name);
+        }
+    }
+
+    @Override
+    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+    }
+
+    @Override
+    public void onTextChanged(CharSequence s, int start, int before, int count) {
+    }
+
+    @Override
+    public void afterTextChanged(Editable s) {
+        refreshRenameButton();
+    }
+
+    @Override
+    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+        if (actionId == EditorInfo.IME_ACTION_DONE) {
+            String editedName = getEditedName();
+            if (TextUtils.isEmpty(editedName)) {
+                return false;
+            }
+            setDeviceName(editedName);
+            if (mAlertDialog != null && mAlertDialog.isShowing()) {
+                mAlertDialog.dismiss();
+            }
+            return true;
+        }
+        return false;
+    }
+
+    private void refreshRenameButton() {
+        String editedName = getEditedName();
+        mRenameButton.setEnabled(
+                !TextUtils.isEmpty(editedName) && !Objects.equals(editedName, getDeviceName()));
+    }
+
+    private String getEditedName() {
+        return mDeviceNameView.getText().toString().trim();
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivity.java b/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivity.java
new file mode 100644
index 0000000..d87c4c5
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivity.java
@@ -0,0 +1,421 @@
+/*
+ * Copyright (C) 2019 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.car.settings.bluetooth;
+
+import android.annotation.NonNull;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.UserManager;
+import android.text.TextUtils;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.bluetooth.BluetoothDiscoverableTimeoutReceiver;
+import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+/**
+ * This {@link Activity} handles requests to toggle Bluetooth by collecting user
+ * consent and waiting until the state change is completed. It can also be used to make the device
+ * explicitly discoverable for a given amount of time.
+ */
+public class BluetoothRequestPermissionActivity extends Activity {
+    private static final Logger LOG = new Logger(BluetoothRequestPermissionActivity.class);
+
+    @VisibleForTesting
+    static final int REQUEST_UNKNOWN = 0;
+    @VisibleForTesting
+    static final int REQUEST_ENABLE = 1;
+    @VisibleForTesting
+    static final int REQUEST_DISABLE = 2;
+    @VisibleForTesting
+    static final int REQUEST_ENABLE_DISCOVERABLE = 3;
+
+    private static final int DISCOVERABLE_TIMEOUT_TWO_MINUTES = 120;
+    private static final int DISCOVERABLE_TIMEOUT_ONE_HOUR = 3600;
+
+    @VisibleForTesting
+    static final int DEFAULT_DISCOVERABLE_TIMEOUT = DISCOVERABLE_TIMEOUT_TWO_MINUTES;
+    @VisibleForTesting
+    static final int MAX_DISCOVERABLE_TIMEOUT = DISCOVERABLE_TIMEOUT_ONE_HOUR;
+
+    private AlertDialog mDialog;
+    private int mRequest;
+    private int mTimeout = DEFAULT_DISCOVERABLE_TIMEOUT;
+
+    @NonNull
+    private CharSequence mAppLabel;
+    private LocalBluetoothAdapter mLocalBluetoothAdapter;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private StateChangeReceiver mReceiver;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mRequest = parseIntent();
+        if (mRequest == REQUEST_UNKNOWN) {
+            finishWithResult(RESULT_CANCELED);
+            return;
+        }
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(
+                getApplicationContext(), /* onInitCallback= */ null);
+        if (mLocalBluetoothManager == null) {
+            LOG.e("Bluetooth is not supported on this device");
+            finishWithResult(RESULT_CANCELED);
+        }
+
+        mLocalBluetoothAdapter = mLocalBluetoothManager.getBluetoothAdapter();
+
+        int btState = mLocalBluetoothAdapter.getState();
+        switch (mRequest) {
+            case REQUEST_DISABLE:
+                switch (btState) {
+                    case BluetoothAdapter.STATE_OFF:
+                    case BluetoothAdapter.STATE_TURNING_OFF:
+                        proceedAndFinish();
+                        break;
+
+                    case BluetoothAdapter.STATE_ON:
+                    case BluetoothAdapter.STATE_TURNING_ON:
+                        mDialog = createRequestDisableBluetoothDialog();
+                        mDialog.show();
+                        break;
+
+                    default:
+                        LOG.e("Unknown adapter state: " + btState);
+                        finishWithResult(RESULT_CANCELED);
+                        break;
+                }
+                break;
+            case REQUEST_ENABLE:
+                switch (btState) {
+                    case BluetoothAdapter.STATE_OFF:
+                    case BluetoothAdapter.STATE_TURNING_OFF:
+                        mDialog = createRequestEnableBluetoothDialog();
+                        mDialog.show();
+                        break;
+                    case BluetoothAdapter.STATE_ON:
+                    case BluetoothAdapter.STATE_TURNING_ON:
+                        proceedAndFinish();
+                        break;
+                    default:
+                        LOG.e("Unknown adapter state: " + btState);
+                        finishWithResult(RESULT_CANCELED);
+                        break;
+                }
+                break;
+            case REQUEST_ENABLE_DISCOVERABLE:
+                switch (btState) {
+                    case BluetoothAdapter.STATE_OFF:
+                    case BluetoothAdapter.STATE_TURNING_OFF:
+                    case BluetoothAdapter.STATE_TURNING_ON:
+                        /*
+                         * Strictly speaking STATE_TURNING_ON belong with STATE_ON; however, BT
+                         * may not be ready when the user clicks yes and we would fail to turn on
+                         * discovery mode. We still show the dialog and handle this case via the
+                         * broadcast receiver.
+                         */
+                        mDialog = createRequestEnableBluetoothDialogWithTimeout(mTimeout);
+                        mDialog.show();
+                        break;
+                    case BluetoothAdapter.STATE_ON:
+                        mDialog = createDiscoverableConfirmDialog(mTimeout);
+                        mDialog.show();
+                        break;
+                    default:
+                        LOG.e("Unknown adapter state: " + btState);
+                        finishWithResult(RESULT_CANCELED);
+                        break;
+                }
+                break;
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (mReceiver != null) {
+            unregisterReceiver(mReceiver);
+        }
+    }
+
+    private void proceedAndFinish() {
+        if (mRequest == REQUEST_ENABLE_DISCOVERABLE) {
+            finishWithResult(setDiscoverable(mTimeout));
+        } else {
+            finishWithResult(RESULT_OK);
+        }
+    }
+
+    // Returns the code that should be used to finish the activity.
+    private int setDiscoverable(int timeoutSeconds) {
+        if (!mLocalBluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE,
+                timeoutSeconds)) {
+            return RESULT_CANCELED;
+        }
+
+        // If already in discoverable mode, this will extend the timeout.
+        long endTime = System.currentTimeMillis() + (long) timeoutSeconds * 1000;
+        BluetoothUtils.persistDiscoverableEndTimestamp(/* context= */ this, endTime);
+        if (timeoutSeconds > 0) {
+            BluetoothDiscoverableTimeoutReceiver.setDiscoverableAlarm(/* context= */ this, endTime);
+        }
+
+        int returnCode = timeoutSeconds;
+        return returnCode < RESULT_FIRST_USER ? RESULT_FIRST_USER : returnCode;
+    }
+
+    private void finishWithResult(int result) {
+        if (mDialog != null) {
+            mDialog.dismiss();
+        }
+        setResult(result);
+        finish();
+    }
+
+    private int parseIntent() {
+        int request;
+        Intent intent = getIntent();
+        if (intent == null) {
+            return REQUEST_UNKNOWN;
+        }
+
+        switch (intent.getAction()) {
+            case BluetoothAdapter.ACTION_REQUEST_ENABLE:
+                request = REQUEST_ENABLE;
+                break;
+            case BluetoothAdapter.ACTION_REQUEST_DISABLE:
+                request = REQUEST_DISABLE;
+                break;
+            case BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE:
+                request = REQUEST_ENABLE_DISCOVERABLE;
+                mTimeout = intent.getIntExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
+                        DEFAULT_DISCOVERABLE_TIMEOUT);
+
+                if (mTimeout < 1 || mTimeout > MAX_DISCOVERABLE_TIMEOUT) {
+                    mTimeout = DEFAULT_DISCOVERABLE_TIMEOUT;
+                }
+                break;
+            default:
+                LOG.e("Error: this activity may be started only with intent "
+                        + BluetoothAdapter.ACTION_REQUEST_ENABLE);
+                return REQUEST_UNKNOWN;
+        }
+
+        String packageName = getCallingPackage();
+        if (TextUtils.isEmpty(packageName)) {
+            packageName = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME);
+        }
+        if (!TextUtils.isEmpty(packageName)) {
+            try {
+                ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(
+                        packageName, 0);
+                mAppLabel = applicationInfo.loadLabel(getPackageManager());
+            } catch (PackageManager.NameNotFoundException e) {
+                LOG.e("Couldn't find app with package name " + packageName);
+                return REQUEST_UNKNOWN;
+            }
+        }
+
+        return request;
+    }
+
+    private AlertDialog createWaitingDialog() {
+        int message = mRequest == REQUEST_DISABLE ? R.string.bluetooth_turning_off
+                : R.string.bluetooth_turning_on;
+
+        return new AlertDialog.Builder(/* context= */ this)
+                .setMessage(message)
+                .setCancelable(false).setOnCancelListener(
+                        dialog -> finishWithResult(RESULT_CANCELED))
+                .create();
+    }
+
+    // Assumes {@code timeoutSeconds} > 0.
+    private AlertDialog createDiscoverableConfirmDialog(int timeoutSeconds) {
+        String message = mAppLabel != null
+                ? getString(R.string.bluetooth_ask_discovery, mAppLabel, timeoutSeconds)
+                : getString(R.string.bluetooth_ask_discovery_no_name, timeoutSeconds);
+
+        return new AlertDialog.Builder(/* context= */ this)
+                .setMessage(message)
+                .setPositiveButton(R.string.allow, (dialog, which) -> proceedAndFinish())
+                .setNegativeButton(R.string.deny,
+                        (dialog, which) -> finishWithResult(RESULT_CANCELED))
+                .setOnCancelListener(dialog -> finishWithResult(RESULT_CANCELED))
+                .create();
+    }
+
+    private AlertDialog createRequestEnableBluetoothDialog() {
+        String message = mAppLabel != null
+                ? getString(R.string.bluetooth_ask_enablement, mAppLabel)
+                : getString(R.string.bluetooth_ask_enablement_no_name);
+
+        return new AlertDialog.Builder(/* context= */ this)
+                .setMessage(message)
+                .setPositiveButton(R.string.allow, this::onConfirmEnableBluetooth)
+                .setNegativeButton(R.string.deny,
+                        (dialog, which) -> finishWithResult(RESULT_CANCELED))
+                .setOnCancelListener(dialog -> finishWithResult(RESULT_CANCELED))
+                .create();
+    }
+
+    // Assumes {@code timeoutSeconds} > 0.
+    private AlertDialog createRequestEnableBluetoothDialogWithTimeout(int timeoutSeconds) {
+        String message = mAppLabel != null
+                ? getString(R.string.bluetooth_ask_enablement_and_discovery, mAppLabel,
+                        timeoutSeconds)
+                : getString(R.string.bluetooth_ask_enablement_and_discovery_no_name,
+                        timeoutSeconds);
+
+        return new AlertDialog.Builder(/* context= */ this)
+                .setMessage(message)
+                .setPositiveButton(R.string.allow, this::onConfirmEnableBluetooth)
+                .setNegativeButton(R.string.deny,
+                        (dialog, which) -> finishWithResult(RESULT_CANCELED))
+                .setOnCancelListener(dialog -> finishWithResult(RESULT_CANCELED))
+                .create();
+    }
+
+    private void onConfirmEnableBluetooth(DialogInterface dialog, int which) {
+        UserManager userManager = getSystemService(UserManager.class);
+        if (userManager.hasUserRestriction(UserManager.DISALLOW_BLUETOOTH)) {
+            // If Bluetooth is disallowed, don't try to enable it, show policy
+            // transparency message instead.
+            DevicePolicyManager dpm = getSystemService(DevicePolicyManager.class);
+            Intent intent = dpm.createAdminSupportIntent(
+                    UserManager.DISALLOW_BLUETOOTH);
+            if (intent != null) {
+                startActivity(intent);
+            }
+            return;
+        }
+
+        mLocalBluetoothAdapter.enable();
+
+        int desiredState = BluetoothAdapter.STATE_ON;
+        if (mLocalBluetoothAdapter.getState() == desiredState) {
+            proceedAndFinish();
+        } else {
+            // Register this receiver to listen for state change after the enabling has started.
+            mReceiver = new StateChangeReceiver(desiredState);
+            registerReceiver(mReceiver, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
+
+            if (mRequest == REQUEST_ENABLE) {
+                // Show dialog while waiting for enabling to complete.
+                mDialog = createWaitingDialog();
+            } else {
+                mDialog = createDiscoverableConfirmDialog(mTimeout);
+            }
+            mDialog.show();
+        }
+    }
+
+    private AlertDialog createRequestDisableBluetoothDialog() {
+        String message = mAppLabel != null
+                ? getString(R.string.bluetooth_ask_disablement, mAppLabel)
+                : getString(R.string.bluetooth_ask_disablement_no_name);
+
+        return new AlertDialog.Builder(/* context= */ this)
+                .setMessage(message)
+                .setPositiveButton(R.string.allow, this::onConfirmDisableBluetooth)
+                .setNegativeButton(R.string.deny,
+                        (dialog, which) -> finishWithResult(RESULT_CANCELED))
+                .setOnCancelListener(dialog -> finishWithResult(RESULT_CANCELED))
+                .create();
+    }
+
+    private void onConfirmDisableBluetooth(DialogInterface dialog, int which) {
+        mLocalBluetoothAdapter.disable();
+
+        int desiredState = BluetoothAdapter.STATE_OFF;
+        if (mLocalBluetoothAdapter.getState() == desiredState) {
+            proceedAndFinish();
+        } else {
+            // Register this receiver to listen for state change after the disabling has started.
+            mReceiver = new StateChangeReceiver(desiredState);
+            registerReceiver(mReceiver, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
+
+            // Show dialog while waiting for disabling to complete.
+            mDialog = createWaitingDialog();
+            mDialog.show();
+        }
+    }
+
+    @VisibleForTesting
+    int getRequestType() {
+        return mRequest;
+    }
+
+    @VisibleForTesting
+    int getTimeout() {
+        return mTimeout;
+    }
+
+    @VisibleForTesting
+    AlertDialog getCurrentDialog() {
+        return mDialog;
+    }
+
+    /**
+     * Listens for bluetooth state changes and finishes the activity if changed to the desired
+     * state. If the desired bluetooth state is not received in time, the activity is finished with
+     * {@link Activity#RESULT_CANCELED}.
+     */
+    private final class StateChangeReceiver extends BroadcastReceiver {
+        private static final long TOGGLE_TIMEOUT_MILLIS = 10000; // 10 sec
+        private final int mDesiredState;
+
+        StateChangeReceiver(int desiredState) {
+            mDesiredState = desiredState;
+
+            getWindow().getDecorView().postDelayed(() -> {
+                if (!isFinishing() && !isDestroyed()) {
+                    finishWithResult(RESULT_CANCELED);
+                }
+            }, TOGGLE_TIMEOUT_MILLIS);
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (intent == null) {
+                return;
+            }
+
+            int currentState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
+                    BluetoothDevice.ERROR);
+            if (mDesiredState == currentState) {
+                proceedAndFinish();
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceController.java
new file mode 100644
index 0000000..f39598a
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceController.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright 2019 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.car.settings.bluetooth;
+
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+/**
+ * Controller which sets the Bluetooth adapter to discovery mode and begins scanning for
+ * discoverable devices for as long as the preference group is shown. Discovery
+ * and scanning are halted while any device is pairing. Users with the {@link
+ * DISALLOW_CONFIG_BLUETOOTH} restriction cannot scan for devices, so only cached devices will be
+ * shown.
+ */
+public abstract class BluetoothScanningDevicesGroupPreferenceController extends
+        BluetoothDevicesGroupPreferenceController {
+
+    private static final Logger LOG = new Logger(
+            BluetoothScanningDevicesGroupPreferenceController.class);
+
+    private final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+    private final AlwaysDiscoverable mAlwaysDiscoverable;
+    private boolean mIsScanningEnabled;
+
+    public BluetoothScanningDevicesGroupPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAlwaysDiscoverable = new AlwaysDiscoverable(context, mBluetoothAdapter);
+    }
+
+    @Override
+    protected final void onDeviceClicked(CachedBluetoothDevice cachedDevice) {
+        LOG.d("onDeviceClicked: " + cachedDevice);
+        disableScanning();
+        onDeviceClickedInternal(cachedDevice);
+    }
+
+    /**
+     * Called when the user selects a device in the group.
+     *
+     * @param cachedDevice the device represented by the selected preference.
+     */
+    protected abstract void onDeviceClickedInternal(CachedBluetoothDevice cachedDevice);
+
+    @Override
+    protected void onStopInternal() {
+        super.onStopInternal();
+        disableScanning();
+        getBluetoothManager().getCachedDeviceManager().clearNonBondedDevices();
+        getPreferenceMap().clear();
+        getPreference().removeAll();
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        super.updateState(preferenceGroup);
+        if (shouldEnableScanning()) {
+            enableScanning();
+        } else {
+            disableScanning();
+        }
+    }
+
+    private boolean shouldEnableScanning() {
+        for (CachedBluetoothDevice device : getPreferenceMap().keySet()) {
+            if (device.getBondState() == BluetoothDevice.BOND_BONDING) {
+                return false;
+            }
+        }
+        // Users who cannot configure Bluetooth cannot scan.
+        return !getCarUserManagerHelper().isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH);
+    }
+
+    /**
+     * Starts scanning for devices which will be displayed in the group for a user to select.
+     * Calls are idempotent.
+     */
+    private void enableScanning() {
+        mIsScanningEnabled = true;
+        if (!mBluetoothAdapter.isDiscovering()) {
+            mBluetoothAdapter.startDiscovery();
+        }
+        mAlwaysDiscoverable.start();
+        getPreference().setEnabled(true);
+    }
+
+    /** Stops scanning for devices and disables interaction. Calls are idempotent. */
+    private void disableScanning() {
+        mIsScanningEnabled = false;
+        getPreference().setEnabled(false);
+        mAlwaysDiscoverable.stop();
+        if (mBluetoothAdapter.isDiscovering()) {
+            mBluetoothAdapter.cancelDiscovery();
+        }
+    }
+
+    @Override
+    public void onScanningStateChanged(boolean started) {
+        LOG.d("onScanningStateChanged started: " + started + " mIsScanningEnabled: "
+                + mIsScanningEnabled);
+        if (!started && mIsScanningEnabled) {
+            enableScanning();
+        }
+    }
+
+    @Override
+    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
+        LOG.d("onDeviceBondStateChanged device: " + cachedDevice + " state: " + bondState);
+        refreshUi();
+    }
+
+    /**
+     * Helper class to keep the {@link BluetoothAdapter} in discoverable mode indefinitely. By
+     * default, setting the scan mode to BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE will
+     * timeout, but for pairing, we want to keep the device discoverable as long as the page is
+     * scanning.
+     */
+    private static final class AlwaysDiscoverable extends BroadcastReceiver {
+
+        private final Context mContext;
+        private final BluetoothAdapter mAdapter;
+        private final IntentFilter mIntentFilter = new IntentFilter(
+                BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
+
+        private boolean mStarted;
+
+        AlwaysDiscoverable(Context context, BluetoothAdapter adapter) {
+            mContext = context;
+            mAdapter = adapter;
+        }
+
+        /**
+         * Sets the adapter scan mode to
+         * {@link BluetoothAdapter#SCAN_MODE_CONNECTABLE_DISCOVERABLE}. {@link #start()} calls
+         * should have a matching calls to {@link #stop()} when discover mode is no longer needed.
+         */
+        void start() {
+            if (mStarted) {
+                return;
+            }
+            mContext.registerReceiver(this, mIntentFilter);
+            mStarted = true;
+            setDiscoverable();
+        }
+
+        void stop() {
+            if (!mStarted) {
+                return;
+            }
+            mContext.unregisterReceiver(this);
+            mStarted = false;
+            mAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            setDiscoverable();
+        }
+
+        private void setDiscoverable() {
+            if (mAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
+                mAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothSettingsFragment.java b/src/com/android/car/settings/bluetooth/BluetoothSettingsFragment.java
index d0ef25a..c963bd8 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothSettingsFragment.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothSettingsFragment.java
@@ -13,226 +13,131 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package com.android.car.settings.bluetooth;
 
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+
 import android.bluetooth.BluetoothAdapter;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
-import android.view.View;
-import android.widget.ProgressBar;
+import android.widget.CompoundButton;
 import android.widget.Switch;
-import android.widget.TextView;
-import android.widget.ViewSwitcher;
 
-import androidx.car.widget.PagedListView;
-import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.bluetooth.BluetoothCallback;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
-import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
+import com.android.car.settings.common.SettingsFragment;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
 /**
- * Hosts Bluetooth related preferences.
+ * Main page for Bluetooth settings. It manages the power switch for the Bluetooth adapter. It also
+ * displays paired devices and the entry point for device pairing.
  */
-public class BluetoothSettingsFragment extends BaseFragment implements BluetoothCallback {
-    private static final Logger LOG = new Logger(BluetoothSettingsFragment.class);
+public class BluetoothSettingsFragment extends SettingsFragment {
 
-    private SwipeRefreshLayout mSwipeRefreshLayout;
-    private Switch mBluetoothSwitch;
-    private ProgressBar mProgressBar;
-    private PagedListView mDeviceListView;
-    private ViewSwitcher mViewSwitcher;
-    private TextView mMessageView;
-    private BluetoothDeviceListAdapter mDeviceAdapter;
-    private LocalBluetoothAdapter mLocalAdapter;
-    private LocalBluetoothManager mLocalManager;
-
-    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+    private final BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+    private final IntentFilter mIntentFilter = new IntentFilter(
+            BluetoothAdapter.ACTION_STATE_CHANGED);
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(intent.getAction())) {
-                setProgressBarVisible(true);
-                mBluetoothSwitch.setChecked(true);
-                if (mViewSwitcher.getCurrentView() != mSwipeRefreshLayout) {
-                    mViewSwitcher.showPrevious();
-                }
-            } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(intent.getAction())) {
-                setProgressBarVisible(false);
-            }
+            int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
+            handleStateChanged(state);
         }
     };
+    private final CompoundButton.OnCheckedChangeListener mBluetoothSwitchListener =
+            new CompoundButton.OnCheckedChangeListener() {
+                @Override
+                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                    mBluetoothSwitch.setEnabled(false);
+                    if (isChecked) {
+                        mBluetoothAdapter.enable();
+                    } else {
+                        mBluetoothAdapter.disable();
+                    }
+                }
+            };
 
-    public static BluetoothSettingsFragment getInstance() {
-        BluetoothSettingsFragment bluetoothSettingsFragment = new BluetoothSettingsFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.bluetooth_settings);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.bluetooth_list);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_toggle);
-        bluetoothSettingsFragment.setArguments(bundle);
-        return bluetoothSettingsFragment;
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private Switch mBluetoothSwitch;
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.bluetooth_settings_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_toggle;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mLocalBluetoothManager = BluetoothUtils.getLocalBtManager(context);
+        if (mLocalBluetoothManager == null) {
+            goBack();
+        }
     }
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
-        mBluetoothSwitch = getActivity().findViewById(R.id.toggle_switch);
-        mSwipeRefreshLayout = getActivity().findViewById(R.id.swiperefresh);
-        mSwipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);
-        mSwipeRefreshLayout.setOnRefreshListener(
-                new SwipeRefreshLayout.OnRefreshListener() {
-                    @Override
-                    public void onRefresh() {
-                        mSwipeRefreshLayout.setRefreshing(false);
-                        if (mLocalAdapter.isDiscovering()) {
-                            mLocalAdapter.cancelDiscovery();
-                        }
-                        mDeviceAdapter.reset();
-                    }
-                }
-        );
-
-        mBluetoothSwitch.setOnCheckedChangeListener((v, isChecked) -> {
-                if (mBluetoothSwitch.isChecked()) {
-                    // bt scan was turned on at state listener, when state is on.
-                    mLocalAdapter.setBluetoothEnabled(true);
-                } else {
-                    mLocalAdapter.stopScanning();
-                    mLocalAdapter.setBluetoothEnabled(false);
-                }
-            });
-
-        mProgressBar = getView().findViewById(R.id.bt_search_progress);
-        mDeviceListView = getView().findViewById(R.id.list);
-        mViewSwitcher = getView().findViewById(R.id.view_switcher);
-        mMessageView = getView().findViewById(R.id.bt_message);
-
-        mLocalManager =
-                LocalBluetoothManager.getInstance(getContext(), /* onInitCallback= */ null);
-        if (mLocalManager == null) {
-            LOG.e("Bluetooth is not supported on this device");
-            return;
-        }
-        mLocalAdapter = mLocalManager.getBluetoothAdapter();
+        mBluetoothSwitch = requireActivity().findViewById(R.id.toggle_switch);
+        mBluetoothSwitch.setOnCheckedChangeListener(mBluetoothSwitchListener);
     }
 
     @Override
     public void onStart() {
         super.onStart();
-        if (mLocalManager == null) {
-            return;
-        }
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
-        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
-        getActivity().registerReceiver(mBroadcastReceiver, filter);
-
-        mLocalManager.setForegroundActivity(getActivity());
-        mLocalManager.getEventManager().registerCallback(this);
-        mBluetoothSwitch.setChecked(mLocalAdapter.isEnabled());
-        if (mLocalAdapter.isEnabled()) {
-            setProgressBarVisible(true);
-            mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
-            mLocalAdapter.startScanning(true);
-            if (mViewSwitcher.getCurrentView() != mSwipeRefreshLayout) {
-                mViewSwitcher.showPrevious();
-            }
-        } else {
-            setProgressBarVisible(false);
-            if (mViewSwitcher.getCurrentView() != mMessageView) {
-                mViewSwitcher.showNext();
-            }
-        }
-        mDeviceAdapter = new BluetoothDeviceListAdapter(
-                getContext() , mLocalManager, getFragmentController());
-        mDeviceListView.setAdapter(mDeviceAdapter);
-        mDeviceAdapter.start();
+        requireContext().registerReceiver(mReceiver, mIntentFilter);
+        mLocalBluetoothManager.setForegroundActivity(requireActivity());
+        handleStateChanged(mBluetoothAdapter.getState());
     }
 
     @Override
     public void onStop() {
         super.onStop();
-        if (mLocalManager == null) {
-            return;
-        }
-        getActivity().unregisterReceiver(mBroadcastReceiver);
-        mDeviceAdapter.stop();
-        mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
-        mLocalManager.setForegroundActivity(null);
-        mLocalAdapter.stopScanning();
-        mLocalManager.getEventManager().unregisterCallback(this);
+        requireContext().unregisterReceiver(mReceiver);
+        mLocalBluetoothManager.setForegroundActivity(null);
     }
 
-    @Override
-    public void onBluetoothStateChanged(int bluetoothState) {
-        switch (bluetoothState) {
-            case BluetoothAdapter.STATE_OFF:
-                setProgressBarVisible(false);
-                mBluetoothSwitch.setChecked(false);
-                if (mViewSwitcher.getCurrentView() != mMessageView) {
-                    mViewSwitcher.showNext();
-                }
+    private boolean isUserRestricted() {
+        return mCarUserManagerHelper.isCurrentProcessUserHasRestriction(DISALLOW_BLUETOOTH);
+    }
+
+    private void handleStateChanged(int state) {
+        // Momentarily clear the listener so that we don't update the adapter while trying to
+        // reflect the adapter state.
+        mBluetoothSwitch.setOnCheckedChangeListener(null);
+        switch (state) {
+            case BluetoothAdapter.STATE_TURNING_ON:
+                mBluetoothSwitch.setEnabled(false);
+                mBluetoothSwitch.setChecked(true);
                 break;
             case BluetoothAdapter.STATE_ON:
-            case BluetoothAdapter.STATE_TURNING_ON:
-                setProgressBarVisible(true);
+                mBluetoothSwitch.setEnabled(!isUserRestricted());
                 mBluetoothSwitch.setChecked(true);
-                if (mViewSwitcher.getCurrentView() != mSwipeRefreshLayout) {
-                        mViewSwitcher.showPrevious();
-                }
                 break;
             case BluetoothAdapter.STATE_TURNING_OFF:
-                setProgressBarVisible(true);
+                mBluetoothSwitch.setEnabled(false);
+                mBluetoothSwitch.setChecked(false);
                 break;
+            case BluetoothAdapter.STATE_OFF:
+            default:
+                mBluetoothSwitch.setEnabled(!isUserRestricted());
+                mBluetoothSwitch.setChecked(false);
         }
-    }
-
-    @Override
-    public void onScanningStateChanged(boolean started) {
-        if (!started) {
-            setProgressBarVisible(false);
-        }
-    }
-
-    @Override
-    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
-        // no-op
-    }
-
-    @Override
-    public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
-        // no-op
-    }
-
-    @Override
-    public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
-        // no-op
-    }
-
-    @Override
-    public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {
-        // no-op
-    }
-
-    @Override
-    public void onActiveDeviceChanged(CachedBluetoothDevice activeDevice, int bluetoothProfile) {
-        // no-op
-    }
-
-    @Override
-    public void onAudioModeChanged() {
-        // no-op
-    }
-
-    private  void setProgressBarVisible(boolean visible) {
-        if (mProgressBar != null) {
-            mProgressBar.setVisibility(visible ? View.VISIBLE : View.GONE);
-        }
+        mBluetoothSwitch.setOnCheckedChangeListener(mBluetoothSwitchListener);
     }
 }
diff --git a/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java
new file mode 100644
index 0000000..7f94728
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import android.bluetooth.BluetoothDevice;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+/**
+ * Displays a list of unbonded (unpaired) Bluetooth devices. This controller also sets the
+ * Bluetooth adapter to discovery mode and begins scanning for discoverable devices for as long as
+ * the preference group is shown. Clicking on a device will start the pairing process. Discovery
+ * and scanning are halted while a device is pairing. Users with the {@link
+ * DISALLOW_CONFIG_BLUETOOTH} restriction cannot pair devices.
+ */
+public class BluetoothUnbondedDevicesPreferenceController extends
+        BluetoothScanningDevicesGroupPreferenceController {
+
+    private static final Logger LOG = new Logger(
+            BluetoothUnbondedDevicesPreferenceController.class);
+
+    public BluetoothUnbondedDevicesPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected BluetoothDeviceFilter.Filter getDeviceFilter() {
+        return BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER;
+    }
+
+    @Override
+    protected void onDeviceClickedInternal(CachedBluetoothDevice cachedDevice) {
+        if (cachedDevice.startPairing()) {
+            LOG.d("startPairing");
+            // Indicate that this client (vehicle) would like access to contacts (PBAP) and messages
+            // (MAP) if there is a server which permits it (usually a phone).
+            cachedDevice.getDevice().setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
+            cachedDevice.getDevice().setMessageAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
+        } else {
+            BluetoothUtils.showError(getContext(), cachedDevice.getName(),
+                    R.string.bluetooth_pairing_error_message);
+            refreshUi();
+        }
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        int availabilityStatus = super.getAvailabilityStatus();
+        if (availabilityStatus == AVAILABLE
+                && getCarUserManagerHelper().isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)) {
+            return DISABLED_FOR_USER;
+        }
+        return availabilityStatus;
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothUtils.java b/src/com/android/car/settings/bluetooth/BluetoothUtils.java
index e5531fd..d20e849 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothUtils.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothUtils.java
@@ -16,14 +16,13 @@
 
 package com.android.car.settings.bluetooth;
 
+import android.app.AlertDialog;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.res.Configuration;
 import android.text.TextUtils;
 import android.widget.Toast;
 
-import androidx.car.app.CarAlertDialog;
-
 import com.android.car.settings.R;
 import com.android.car.settings.common.Logger;
 import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
@@ -42,7 +41,8 @@
         @Override
         public void onBluetoothManagerInitialized(Context appContext,
                 LocalBluetoothManager bluetoothManager) {
-            com.android.settingslib.bluetooth.Utils.setErrorListener(BluetoothUtils::showError);
+            com.android.settingslib.bluetooth.BluetoothUtils.setErrorListener(
+                    com.android.car.settings.bluetooth.BluetoothUtils::showError);
         }
     };
 
@@ -69,9 +69,9 @@
         String message = context.getString(messageResId, name);
         Context activity = manager.getForegroundActivity();
         if (manager.isForegroundActivity()) {
-            new CarAlertDialog.Builder(activity)
+            new AlertDialog.Builder(activity)
                     .setTitle(R.string.bluetooth_error_title)
-                    .setBody(message)
+                    .setMessage(message)
                     .setPositiveButton(android.R.string.ok, null)
                     .create()
                     .show();
@@ -127,7 +127,7 @@
                 return true;
             }
             if ((adapter.getDiscoveryEndMillis() +
-                GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND) > currentTimeMillis) {
+                    GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND) > currentTimeMillis) {
                 return true;
             }
         }
@@ -162,6 +162,19 @@
         return false;
     }
 
+    static void persistSelectedDeviceInPicker(Context context, String deviceAddress) {
+        SharedPreferences.Editor editor = getSharedPreferences(context).edit();
+        editor.putString(KEY_LAST_SELECTED_DEVICE, deviceAddress);
+        editor.putLong(KEY_LAST_SELECTED_DEVICE_TIME, System.currentTimeMillis());
+        editor.apply();
+    }
+
+    static void persistDiscoverableEndTimestamp(Context context, long endTimestamp) {
+        SharedPreferences.Editor editor = getSharedPreferences(context).edit();
+        editor.putLong(KEY_DISCOVERABLE_END_TIMESTAMP, endTimestamp);
+        editor.apply();
+    }
+
     public static LocalBluetoothManager getLocalBtManager(Context context) {
         return LocalBluetoothManager.getInstance(context, mOnInitCallback);
     }
diff --git a/src/com/android/car/settings/bluetooth/LocalRenameDialogFragment.java b/src/com/android/car/settings/bluetooth/LocalRenameDialogFragment.java
new file mode 100644
index 0000000..b4288f7
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/LocalRenameDialogFragment.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import androidx.annotation.StringRes;
+
+import com.android.car.settings.R;
+
+/** Dialog for changing the advertised name of the local bluetooth adapter. */
+public class LocalRenameDialogFragment extends BluetoothRenameDialogFragment {
+
+    /** Tag identifying the dialog for changing the name of the local Bluetooth adapter. */
+    public static final String TAG = "LocalBluetoothRename";
+
+    private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+
+    private final IntentFilter mFilter = new IntentFilter(
+            BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
+
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            updateDeviceName();
+        }
+    };
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        requireContext().registerReceiver(mReceiver, mFilter);
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        requireContext().unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    @StringRes
+    protected int getDialogTitle() {
+        return R.string.bluetooth_rename_vehicle;
+    }
+
+    @Override
+    protected String getDeviceName() {
+        if (mBluetoothAdapter.isEnabled()) {
+            return mBluetoothAdapter.getName();
+        }
+        return null;
+    }
+
+    @Override
+    protected void setDeviceName(String deviceName) {
+        mBluetoothAdapter.setName(deviceName);
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceController.java b/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceController.java
new file mode 100644
index 0000000..4b62afb
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceController.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.LifecycleObserver;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controls a preference that, when clicked, launches the page for pairing new Bluetooth devices.
+ * The associated preference for this controller should define the fragment attribute or an intent
+ * to launch for the Bluetooth device pairing page. If the adapter is not enabled, a click will
+ * enable Bluetooth. The summary message is updated to indicate this effect to the user.
+ */
+public class PairNewDevicePreferenceController extends PreferenceController<Preference> implements
+        LifecycleObserver {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final IntentFilter mIntentFilter = new IntentFilter(
+            BluetoothAdapter.ACTION_STATE_CHANGED);
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    public PairNewDevicePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (getPreference().getIntent() == null && getPreference().getFragment() == null) {
+            throw new IllegalStateException(
+                    "Preference should declare fragment or intent for page to pair new devices");
+        }
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return isUserRestricted() ? DISABLED_FOR_USER : AVAILABLE;
+    }
+
+    private boolean isUserRestricted() {
+        return mCarUserManagerHelper.isCurrentProcessUserHasRestriction(DISALLOW_BLUETOOTH)
+                || mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH);
+    }
+
+    @Override
+    protected void onStartInternal() {
+        getContext().registerReceiver(mReceiver, mIntentFilter);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        getContext().unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(
+                BluetoothAdapter.getDefaultAdapter().isEnabled() ? "" : getContext().getString(
+                        R.string.bluetooth_pair_new_device_summary));
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        // Enable the adapter if it is not on (user is notified via summary message).
+        BluetoothAdapter.getDefaultAdapter().enable();
+        return false; // Don't handle so that preference framework will launch pairing fragment.
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/RemoteRenameDialogFragment.java b/src/com/android/car/settings/bluetooth/RemoteRenameDialogFragment.java
new file mode 100644
index 0000000..c220a25
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/RemoteRenameDialogFragment.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.StringRes;
+
+import com.android.car.settings.R;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+/** Dialog for changing the display name of a remote bluetooth device. */
+public class RemoteRenameDialogFragment extends BluetoothRenameDialogFragment {
+
+    /** Tag identifying the dialog for changing the name of a remote Bluetooth device. */
+    public static final String TAG = "RemoteDeviceBluetoothRename";
+
+    private static final String KEY_CACHED_DEVICE_ADDRESS = "cached_device";
+
+    private CachedBluetoothDevice mCachedDevice;
+
+    /** Returns a new {@link RemoteRenameDialogFragment} instance for the given {@code device}. */
+    public static RemoteRenameDialogFragment newInstance(CachedBluetoothDevice device) {
+        Bundle args = new Bundle(1);
+        args.putString(KEY_CACHED_DEVICE_ADDRESS, device.getAddress());
+        RemoteRenameDialogFragment fragment = new RemoteRenameDialogFragment();
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        String deviceAddress = getArguments().getString(KEY_CACHED_DEVICE_ADDRESS);
+        LocalBluetoothManager manager = BluetoothUtils.getLocalBtManager(context);
+        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(
+                deviceAddress);
+        mCachedDevice = manager.getCachedDeviceManager().findDevice(device);
+    }
+
+    @Override
+    @StringRes
+    protected int getDialogTitle() {
+        return R.string.bluetooth_rename_device;
+    }
+
+    @Override
+    protected String getDeviceName() {
+        if (mCachedDevice != null) {
+            return mCachedDevice.getName();
+        }
+        return null;
+    }
+
+    @Override
+    protected void setDeviceName(String deviceName) {
+        if (mCachedDevice != null) {
+            mCachedDevice.setName(deviceName);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/bluetooth/Utf8ByteLengthFilter.java b/src/com/android/car/settings/bluetooth/Utf8ByteLengthFilter.java
new file mode 100644
index 0000000..2b7c3cc
--- /dev/null
+++ b/src/com/android/car/settings/bluetooth/Utf8ByteLengthFilter.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import android.text.InputFilter;
+import android.text.Spanned;
+
+/**
+ * Filter which constrains 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.
+ *
+ * <p>Note: borrowed from com.android.settings.bluetooth.Utf8ByteLengthFilter.
+ */
+class Utf8ByteLengthFilter implements InputFilter {
+    private final int mMaxBytes;
+
+    Utf8ByteLengthFilter(int maxBytes) {
+        mMaxBytes = maxBytes;
+    }
+
+    @Override
+    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 < (char) 0x0080) ? 1 : (c < (char) 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 < (char) 0x0080) ? 1 : (c < (char) 0x0800 ? 2 : 3);
+            }
+        }
+        int keepBytes = mMaxBytes - destByteCount;
+        if (keepBytes <= 0) {
+            return "";
+        } else if (keepBytes >= srcByteCount) {
+            return null; // Use original source 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 < (char) 0x0080) ? 1 : (c < (char) 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, use the original source string.
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/ActivityResultCallback.java b/src/com/android/car/settings/common/ActivityResultCallback.java
new file mode 100644
index 0000000..e94c9b5
--- /dev/null
+++ b/src/com/android/car/settings/common/ActivityResultCallback.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.content.Intent;
+
+import androidx.annotation.Nullable;
+
+/**
+ * Handles activity results after a {@link FragmentController} fires {@link
+ * FragmentController#startActivityForResult(Intent, int, ActivityResultCallback)}
+ * or {@link FragmentController#startIntentSenderForResult}.
+ */
+public interface ActivityResultCallback {
+
+    /**
+     * Callback used when an activity started by
+     * {@link FragmentController#startActivityForResult(Intent,
+     * int, ActivityResultCallback)} or {@link FragmentController#startIntentSenderForResult}
+     * receives a result.
+     */
+    void processActivityResult(int requestCode, int resultCode, @Nullable Intent data);
+}
diff --git a/src/com/android/car/settings/common/AnimationUtil.java b/src/com/android/car/settings/common/AnimationUtil.java
deleted file mode 100644
index 4966c67..0000000
--- a/src/com/android/car/settings/common/AnimationUtil.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.common;
-
-import android.app.ActivityOptions;
-import android.content.Context;
-
-import com.android.car.settings.R;
-
-/**
- * Contains util function for animations.
- */
-public class AnimationUtil {
-    private AnimationUtil() {
-    }
-
-    /**
-     * Animation that slide the new activity in from right.
-     */
-    public static ActivityOptions slideInFromRightOption(Context context) {
-        return ActivityOptions.makeCustomAnimation(
-                context, R.anim.trans_right_in , R.anim.trans_fade_out);
-    }
-}
diff --git a/src/com/android/car/settings/common/BaseCarSettingsActivity.java b/src/com/android/car/settings/common/BaseCarSettingsActivity.java
new file mode 100644
index 0000000..97243af
--- /dev/null
+++ b/src/com/android/car/settings/common/BaseCarSettingsActivity.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager.OnUxRestrictionsChangedListener;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.os.Bundle;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager.OnBackStackChangedListener;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.car.apps.common.util.Themes;
+import com.android.car.settings.R;
+
+/**
+ * Base activity class for car settings, provides a action bar with a back button that goes to
+ * previous activity.
+ */
+public abstract class BaseCarSettingsActivity extends FragmentActivity implements
+        FragmentController, OnUxRestrictionsChangedListener, UxRestrictionsProvider,
+        OnBackStackChangedListener, PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
+    private static final Logger LOG = new Logger(BaseCarSettingsActivity.class);
+
+    private CarUxRestrictionsHelper mUxRestrictionsHelper;
+    private View mRestrictedMessage;
+    // Default to minimum restriction.
+    private CarUxRestrictions mCarUxRestrictions = new CarUxRestrictions.Builder(
+            /* reqOpt= */ true,
+            CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
+            /* timestamp= */ 0
+    ).build();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.car_setting_activity);
+        if (mUxRestrictionsHelper == null) {
+            mUxRestrictionsHelper = new CarUxRestrictionsHelper(/* context= */ this, /* listener= */
+                    this);
+        }
+        mUxRestrictionsHelper.start();
+        getSupportFragmentManager().addOnBackStackChangedListener(this);
+        mRestrictedMessage = findViewById(R.id.restricted_message);
+
+        launchIfDifferent(getInitialFragment());
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mUxRestrictionsHelper.stop();
+        mUxRestrictionsHelper = null;
+    }
+
+    @Override
+    public void onBackPressed() {
+        super.onBackPressed();
+        hideKeyboard();
+        // If the backstack is empty, finish the activity.
+        if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
+            finish();
+        }
+    }
+
+    @Override
+    public void launchFragment(Fragment fragment) {
+        if (fragment instanceof DialogFragment) {
+            throw new IllegalArgumentException(
+                    "cannot launch dialogs with launchFragment() - use showDialog() instead");
+        }
+
+        getSupportFragmentManager()
+                .beginTransaction()
+                .setCustomAnimations(
+                        Themes.getAttrResourceId(/* context= */ this,
+                                android.R.attr.fragmentOpenEnterAnimation),
+                        Themes.getAttrResourceId(/* context= */ this,
+                                android.R.attr.fragmentOpenExitAnimation),
+                        Themes.getAttrResourceId(/* context= */ this,
+                                android.R.attr.fragmentCloseEnterAnimation),
+                        Themes.getAttrResourceId(/* context= */ this,
+                                android.R.attr.fragmentCloseExitAnimation))
+                .replace(R.id.fragment_container, fragment,
+                        Integer.toString(getSupportFragmentManager().getBackStackEntryCount()))
+                .addToBackStack(null)
+                .commit();
+    }
+
+    @Override
+    public void goBack() {
+        onBackPressed();
+    }
+
+    @Override
+    public void showBlockingMessage() {
+        Toast.makeText(this, R.string.restricted_while_driving, Toast.LENGTH_SHORT).show();
+    }
+
+    @Override
+    public void showDialog(DialogFragment dialogFragment, @Nullable String tag) {
+        dialogFragment.show(getSupportFragmentManager(), tag);
+    }
+
+    @Override
+    @Nullable
+    public DialogFragment findDialogByTag(String tag) {
+        Fragment fragment = getSupportFragmentManager().findFragmentByTag(tag);
+        if (fragment instanceof DialogFragment) {
+            return (DialogFragment) fragment;
+        }
+        return null;
+    }
+
+    @Override
+    public void startActivityForResult(Intent intent, int requestCode,
+            ActivityResultCallback callback) {
+        throw new UnsupportedOperationException(
+                "Unimplemented for activities that implement FragmentController");
+    }
+
+    @Override
+    public void startIntentSenderForResult(IntentSender intent, int requestCode,
+            @Nullable Intent fillInIntent, int flagsMask, int flagsValues, Bundle options,
+            ActivityResultCallback callback) {
+        throw new UnsupportedOperationException(
+                "Unimplemented for activities that implement FragmentController");
+    }
+
+    @Override
+    public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
+        mCarUxRestrictions = restrictionInfo;
+        Fragment currentFragment = getCurrentFragment();
+        if (currentFragment instanceof OnUxRestrictionsChangedListener) {
+            ((OnUxRestrictionsChangedListener) currentFragment)
+                    .onUxRestrictionsChanged(restrictionInfo);
+        }
+        updateBlockingView(currentFragment);
+    }
+
+    @Override
+    public CarUxRestrictions getCarUxRestrictions() {
+        return mCarUxRestrictions;
+    }
+
+    @Override
+    public void onBackStackChanged() {
+        onUxRestrictionsChanged(getCarUxRestrictions());
+    }
+
+    @Override
+    public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref) {
+        if (pref.getFragment() != null) {
+            Fragment fragment = Fragment.instantiate(/* context= */ this, pref.getFragment(),
+                    pref.getExtras());
+            launchFragment(fragment);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Gets the fragment to show onCreate. If null, the activity will not perform an initial
+     * fragment transaction.
+     */
+    @Nullable
+    protected abstract Fragment getInitialFragment();
+
+    protected void launchIfDifferent(Fragment newFragment) {
+        Fragment currentFragment = getCurrentFragment();
+        if ((newFragment != null) && differentFragment(newFragment, currentFragment)) {
+            LOG.d("launchIfDifferent: " + newFragment + " replacing " + currentFragment);
+            launchFragment(newFragment);
+        }
+    }
+
+    protected Fragment getCurrentFragment() {
+        return getSupportFragmentManager().findFragmentById(R.id.fragment_container);
+    }
+
+    /**
+     * Returns {code true} if newFragment is different from current fragment.
+     */
+    private boolean differentFragment(Fragment newFragment, Fragment currentFragment) {
+        return (currentFragment == null)
+                || (!currentFragment.getClass().equals(newFragment.getClass()));
+    }
+
+    private void hideKeyboard() {
+        InputMethodManager imm = (InputMethodManager) this.getSystemService(
+                Context.INPUT_METHOD_SERVICE);
+        imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
+    }
+
+    private void updateBlockingView(@Nullable Fragment currentFragment) {
+        if (currentFragment instanceof BaseFragment) {
+            boolean canBeShown = ((BaseFragment) currentFragment).canBeShown(mCarUxRestrictions);
+            mRestrictedMessage.setVisibility(canBeShown ? View.GONE : View.VISIBLE);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/BaseFragment.java b/src/com/android/car/settings/common/BaseFragment.java
index 49981c3..8b00e6b 100644
--- a/src/com/android/car/settings/common/BaseFragment.java
+++ b/src/com/android/car/settings/common/BaseFragment.java
@@ -11,84 +11,33 @@
  * 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
+ * limitations under the License.
  */
 
 package com.android.car.settings.common;
 
-import android.annotation.NonNull;
 import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
 import android.content.Context;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.FrameLayout;
 import android.widget.TextView;
 
 import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
 import androidx.annotation.StringRes;
-import androidx.appcompat.app.ActionBar;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
 import androidx.fragment.app.Fragment;
 
 import com.android.car.settings.R;
 
-import java.util.Set;
-
 /**
  * Base fragment for setting activity.
  */
-public abstract class BaseFragment extends Fragment {
-    public static final String EXTRA_TITLE_ID = "extra_title_id";
-    public static final String EXTRA_LAYOUT = "extra_layout";
-    public static final String EXTRA_ACTION_BAR_LAYOUT = "extra_action_bar_layout";
-    /**
-     * For indicating a fragment is running in Setup Wizard
-     */
-    public static final String EXTRA_RUNNING_IN_SETUP_WIZARD = "extra_running_in_setup_wizard";
-
-    /**
-     * Controls the transition of fragment.
-     */
-    public interface FragmentController {
-        /**
-         * Launches fragment in the main container of current activity.
-         */
-        void launchFragment(BaseFragment fragment);
-
-        /**
-         * Pops the top off the fragment stack.
-         * @return {@code false} if there's no stack to pop, {@code true} otherwise
-         */
-        void goBack();
-
-        /**
-         * Shows a message that current feature is not available when driving.
-         */
-        void showDOBlockingMessage();
-    }
-
-    /**
-     * Provides current CarUxRestrictions.
-     */
-    public interface UXRestrictionsProvider {
-
-        /**
-         * Fetches current CarUxRestrictions
-         */
-        @NonNull
-        CarUxRestrictions getCarUxRestrictions();
-    }
-
-    @LayoutRes
-    protected int mLayout;
-
-    @LayoutRes
-    private int mActionBarLayout;
-
-    @StringRes
-    private int mTitleId;
+public abstract class BaseFragment extends Fragment implements
+        CarUxRestrictionsManager.OnUxRestrictionsChangedListener {
 
     /**
      * Assume The activity holds this fragment also implements the FragmentController.
@@ -99,17 +48,11 @@
     }
 
     /**
-     * Assume The activity holds this fragment also implements the UXRestrictionsProvider.
+     * Assume The activity holds this fragment also implements the UxRestrictionsProvider.
      * This function should be called after onAttach()
      */
     protected final CarUxRestrictions getCurrentRestrictions() {
-        return ((UXRestrictionsProvider) getActivity()).getCarUxRestrictions();
-    }
-
-    protected static Bundle getBundle() {
-        Bundle bundle = new Bundle();
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar);
-        return bundle;
+        return ((UxRestrictionsProvider) getActivity()).getCarUxRestrictions();
     }
 
     /**
@@ -120,60 +63,87 @@
         return !CarUxRestrictionsHelper.isNoSetup(carUxRestrictions);
     }
 
+    @Override
+    public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
+    }
+
     /**
-     * Notifies the fragment with the latest CarUxRestrictions change.
+     * Returns the layout id to use with the {@link ActionBar}. Subclasses should override this
+     * method to customize the action bar layout. The default action bar contains a back button
+     * and the title.
      */
-    protected void onUxRestrictionChanged(@NonNull CarUxRestrictions carUxRestrictions) {
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar;
+    }
+
+    /**
+     * Returns the layout id of the current Fragment.
+     */
+    @LayoutRes
+    protected abstract int getLayoutId();
+
+    /**
+     * Returns the string id for the current Fragment title. Subclasses should override this
+     * method to set the title to display. Use {@link #setTitle(CharSequence)} to update the
+     * displayed title while resumed. The default title is the Settings Activity label.
+     */
+    @StringRes
+    protected int getTitleId() {
+        return R.string.settings_label;
+    }
+
+    /**
+     * Should be used to override fragment's title. This should only be called after
+     * {@link #onActivityCreated(Bundle)}.
+     *
+     * @param title CharSequence to set as the new title.
+     */
+    protected final void setTitle(CharSequence title) {
+        TextView titleView = requireActivity().findViewById(R.id.title);
+        if (titleView != null) {
+            titleView.setText(title);
+        }
     }
 
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
         if (!(getActivity() instanceof FragmentController)) {
-            throw new IllegalArgumentException("Must attach to an FragmentController");
+            throw new IllegalStateException("Must attach to a FragmentController");
         }
-        if (!(getActivity() instanceof UXRestrictionsProvider)) {
-            throw new IllegalArgumentException("Must attach to an UXRestrictionsProvider");
+        if (!(getActivity() instanceof UxRestrictionsProvider)) {
+            throw new IllegalStateException("Must attach to a UxRestrictionsProvider");
         }
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        Set<String> extraKeys = getArguments().keySet();
-        if (extraKeys.contains(EXTRA_ACTION_BAR_LAYOUT)) {
-            mActionBarLayout = getArguments().getInt(EXTRA_ACTION_BAR_LAYOUT);
-        } else {
-            throw new IllegalArgumentException("must specify a actionBar layout");
-        }
-        if (extraKeys.contains(EXTRA_LAYOUT)) {
-            mLayout = getArguments().getInt(EXTRA_LAYOUT);
-        } else {
-            throw new IllegalArgumentException("must specify a layout");
-        }
-        if (extraKeys.contains(EXTRA_TITLE_ID)) {
-            mTitleId = getArguments().getInt(EXTRA_TITLE_ID);
-        } else {
-            throw new IllegalArgumentException("must specify a title");
+    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        @LayoutRes int layoutId = getLayoutId();
+        return inflater.inflate(layoutId, container, false);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        FrameLayout actionBarContainer = requireActivity().findViewById(R.id.action_bar);
+        if (actionBarContainer != null) {
+            actionBarContainer.removeAllViews();
+            getLayoutInflater().inflate(getActionBarLayoutId(), actionBarContainer);
+
+            TextView titleView = actionBarContainer.requireViewById(R.id.title);
+            titleView.setText(getTitleId());
+            actionBarContainer.requireViewById(R.id.action_bar_icon_container).setOnClickListener(
+                    v -> onBackPressed());
         }
     }
 
+
     @Override
     public void onStart() {
         super.onStart();
-        onUxRestrictionChanged(getCurrentRestrictions());
-    }
-
-    /**
-     * Should be used to override fragment's title.
-     * Should be called after {@code super.onActivityCreated}, so that it's called AFTER the default title
-     * setter.
-     *
-     * @param title CharSequence to set as the new title.
-     */
-    protected final void setTitle(CharSequence title) {
-        TextView titleView = getActivity().findViewById(R.id.title);
-        titleView.setText(title);
+        onUxRestrictionsChanged(getCurrentRestrictions());
     }
 
     /**
@@ -182,26 +152,4 @@
     protected void onBackPressed() {
         getFragmentController().goBack();
     }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        return inflater.inflate(mLayout, container, false);
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
-        actionBar.setDisplayHomeAsUpEnabled(false);
-        actionBar.setCustomView(mActionBarLayout);
-        actionBar.setDisplayShowCustomEnabled(true);
-        // make the toolbar take the whole width.
-        Toolbar toolbar = (Toolbar) actionBar.getCustomView().getParent();
-        toolbar.setPadding(0, 0, 0, 0);
-        getActivity().findViewById(R.id.action_bar_icon_container).setOnClickListener(
-                v -> onBackPressed());
-        TextView titleView = getActivity().findViewById(R.id.title);
-        titleView.setText(mTitleId);
-    }
 }
diff --git a/src/com/android/car/settings/common/ButtonPreference.java b/src/com/android/car/settings/common/ButtonPreference.java
new file mode 100644
index 0000000..28e4ad1
--- /dev/null
+++ b/src/com/android/car/settings/common/ButtonPreference.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.preference.Preference;
+
+/**
+ * {@link Preference} with a secondary clickable button on the side.
+ * {@link #setLayoutResource(int)} or the {@code widgetLayout} resource may be used to specify
+ * the icon to display in the button.
+ *
+ * <p>Note: the button is enabled even when {@link #isEnabled()} is {@code false}.
+ */
+public class ButtonPreference extends TwoActionPreference {
+
+    /**
+     * Interface definition for a callback to be invoked when the button is clicked.
+     */
+    public interface OnButtonClickListener {
+        /**
+         * Called when a button has been clicked.
+         *
+         * @param preference the preference whose button was clicked.
+         */
+        void onButtonClick(ButtonPreference preference);
+    }
+
+    private OnButtonClickListener mOnButtonClickListener;
+
+    public ButtonPreference(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    public ButtonPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public ButtonPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ButtonPreference(Context context) {
+        super(context);
+    }
+
+    /**
+     * Sets an {@link OnButtonClickListener} to be invoked when the button is clicked.
+     */
+    public void setOnButtonClickListener(OnButtonClickListener listener) {
+        mOnButtonClickListener = listener;
+    }
+
+    /** Virtually clicks the button contained inside this preference. */
+    public void performButtonClick() {
+        if (isActionShown()) {
+            if (mOnButtonClickListener != null) {
+                mOnButtonClickListener.onButtonClick(this);
+            }
+        }
+    }
+
+    @Override
+    protected void onBindWidgetFrame(View widgetFrame) {
+        widgetFrame.setOnClickListener(v -> performButtonClick());
+    }
+}
diff --git a/src/com/android/car/settings/common/CarSettingActivity.java b/src/com/android/car/settings/common/CarSettingActivity.java
index b79b047..1a33ccc 100644
--- a/src/com/android/car/settings/common/CarSettingActivity.java
+++ b/src/com/android/car/settings/common/CarSettingActivity.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2019 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.
@@ -11,144 +11,90 @@
  * 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
+ * limitations under the License.
  */
+
 package com.android.car.settings.common;
 
-import android.annotation.Nullable;
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.view.View;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.Toast;
 
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-import androidx.fragment.app.FragmentManager.OnBackStackChangedListener;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment.UXRestrictionsProvider;
-import com.android.car.settings.quicksettings.QuickSettingFragment;
 
 /**
- * Base activity class for car settings, provides a action bar with a back button that goes to
- * previous activity.
+ * Root activity used for most of the Settings app. This activity provides additional functionality
+ * which handles intents.
  */
-public class CarSettingActivity extends AppCompatActivity implements
-        BaseFragment.FragmentController, UXRestrictionsProvider, OnBackStackChangedListener{
-    private CarUxRestrictionsHelper mUxRestrictionsHelper;
-    private View mRestrictedMessage;
-    // Default to minimum restriction.
-    private CarUxRestrictions mCarUxRestrictions = new CarUxRestrictions.Builder(
-            /* reqOpt= */ true,
-            CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
-            /* timestamp= */ 0
-    ).build();
+public class CarSettingActivity extends BaseCarSettingsActivity {
+
+    private static final Logger LOG = new Logger(CarSettingActivity.class);
+
+    private static final String KEY_HAS_NEW_INTENT =
+            "com.android.car.settings.common.CarSettingActivity.KEY_HAS_NEW_INTENT";
+
+    private boolean mHasNewIntent = true;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.app_compat_activity);
-        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
-        setSupportActionBar(toolbar);
-        if (mUxRestrictionsHelper == null) {
-            mUxRestrictionsHelper =
-                    new CarUxRestrictionsHelper(this, carUxRestrictions -> {
-                        mCarUxRestrictions = carUxRestrictions;
-                        BaseFragment currentFragment = getCurrentFragment();
-                        if (currentFragment != null) {
-                            currentFragment.onUxRestrictionChanged(carUxRestrictions);
-                            updateBlockingView(currentFragment);
-                        }
-                    });
-        }
-        mUxRestrictionsHelper.start();
-        getSupportFragmentManager().addOnBackStackChangedListener(this);
-        mRestrictedMessage = findViewById(R.id.restricted_message);
-    }
-
-    @Override
-    public void onBackStackChanged() {
-        updateBlockingView(getCurrentFragment());
-    }
-
-    private void updateBlockingView(@Nullable BaseFragment currentFragment) {
-        if (currentFragment == null) {
-            return;
-        }
-        boolean canBeShown = currentFragment.canBeShown(mCarUxRestrictions);
-        mRestrictedMessage.setVisibility(canBeShown ? View.GONE : View.VISIBLE);
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        if (getCurrentFragment() == null) {
-            launchFragment(QuickSettingFragment.newInstance());
+        if (savedInstanceState != null) {
+            mHasNewIntent = savedInstanceState.getBoolean(KEY_HAS_NEW_INTENT, mHasNewIntent);
         }
     }
 
     @Override
-    public CarUxRestrictions getCarUxRestrictions() {
-        return mCarUxRestrictions;
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        mUxRestrictionsHelper.stop();
-        mUxRestrictionsHelper = null;
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(KEY_HAS_NEW_INTENT, mHasNewIntent);
     }
 
     @Override
     public void onNewIntent(Intent intent) {
+        LOG.d("onNewIntent" + intent);
         setIntent(intent);
+        mHasNewIntent = true;
     }
 
     @Override
-    public void launchFragment(BaseFragment fragment) {
-        getSupportFragmentManager()
-                .beginTransaction()
-                .setCustomAnimations(
-                        R.animator.trans_right_in ,
-                        R.animator.trans_left_out,
-                        R.animator.trans_left_in,
-                        R.animator.trans_right_out)
-                .replace(R.id.fragment_container, fragment)
-                .addToBackStack(null)
-                .commit();
-    }
-
-    @Override
-    public void goBack() {
-        onBackPressed();
-    }
-
-    @Override
-    public void showDOBlockingMessage() {
-        Toast.makeText(
-                this, R.string.restricted_while_driving, Toast.LENGTH_SHORT).show();
-    }
-
-    @Override
-    public void onBackPressed() {
-        super.onBackPressed();
-        hideKeyboard();
-        // if the backstack is empty, finish the activity.
-        if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
-            finish();
+    protected void onResume() {
+        super.onResume();
+        if (mHasNewIntent) {
+            Fragment fragment = FragmentResolver.getFragmentForIntent(/* context= */ this,
+                    getIntent());
+            launchIfDifferent(fragment);
+            mHasNewIntent = false;
         }
     }
 
-    private BaseFragment getCurrentFragment() {
-        return (BaseFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_container);
+    @Override
+    public void launchFragment(Fragment fragment) {
+        // Called before super to clear the back stack if necessary before launching the fragment
+        // in question.
+        if (fragment.getClass().getName().equals(
+                getString(R.string.config_settings_hierarchy_root_fragment))
+                && getSupportFragmentManager().getBackStackEntryCount() > 1) {
+            getSupportFragmentManager().popBackStackImmediate(/* name= */ null,
+                    FragmentManager.POP_BACK_STACK_INCLUSIVE);
+        }
+
+        super.launchFragment(fragment);
     }
 
-    private void hideKeyboard() {
-        InputMethodManager imm = (InputMethodManager)this.getSystemService(
-                Context.INPUT_METHOD_SERVICE);
-        imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
+    /**
+     * Gets the fragment to show onCreate. This will only be launched if it is different from the
+     * current fragment shown.
+     */
+    @Override
+    @Nullable
+    protected Fragment getInitialFragment() {
+        if (getCurrentFragment() != null) {
+            return getCurrentFragment();
+        }
+        return Fragment.instantiate(this,
+                getString(R.string.config_settings_hierarchy_root_fragment));
     }
 }
diff --git a/src/com/android/car/settings/common/ConfirmationDialogFragment.java b/src/com/android/car/settings/common/ConfirmationDialogFragment.java
new file mode 100644
index 0000000..a9e9e68
--- /dev/null
+++ b/src/com/android/car/settings/common/ConfirmationDialogFragment.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.fragment.app.DialogFragment;
+
+/**
+ * Common dialog that can be used across the settings app to ask the user to confirm their desired
+ * action.
+ */
+public class ConfirmationDialogFragment extends DialogFragment implements
+        DialogInterface.OnClickListener {
+
+    /** Builder to help construct {@link ConfirmationDialogFragment}. */
+    public static class Builder {
+
+        private final Context mContext;
+        private Bundle mArgs;
+        private String mTitle;
+        private String mMessage;
+        private String mPosLabel;
+        private String mNegLabel;
+        private ConfirmListener mConfirmListener;
+        private RejectListener mRejectListener;
+
+        public Builder(Context context) {
+            mContext = context;
+        }
+
+        /** Sets the title. */
+        public Builder setTitle(String title) {
+            mTitle = title;
+            return this;
+        }
+
+        /** Sets the title. */
+        public Builder setTitle(@StringRes int title) {
+            mTitle = mContext.getString(title);
+            return this;
+        }
+
+        /** Sets the message. */
+        public Builder setMessage(String message) {
+            mMessage = message;
+            return this;
+        }
+
+        /** Sets the message. */
+        public Builder setMessage(@StringRes int message) {
+            mMessage = mContext.getString(message);
+            return this;
+        }
+
+        /** Sets the positive button label. */
+        public Builder setPositiveButton(String label, ConfirmListener confirmListener) {
+            mPosLabel = label;
+            mConfirmListener = confirmListener;
+            return this;
+        }
+
+        /** Sets the positive button label. */
+        public Builder setPositiveButton(@StringRes int label, ConfirmListener confirmListener) {
+            mPosLabel = mContext.getString(label);
+            mConfirmListener = confirmListener;
+            return this;
+        }
+
+        /** Sets the negative button label. */
+        public Builder setNegativeButton(String label, RejectListener rejectListener) {
+            mNegLabel = label;
+            mRejectListener = rejectListener;
+            return this;
+        }
+
+        /** Sets the negative button label. */
+        public Builder setNegativeButton(@StringRes int label, RejectListener rejectListener) {
+            mNegLabel = mContext.getString(label);
+            mRejectListener = rejectListener;
+            return this;
+        }
+
+        /** Adds an argument string to the argument bundle. */
+        public Builder addArgumentString(String argumentKey, String argument) {
+            if (mArgs == null) {
+                mArgs = new Bundle();
+            }
+            mArgs.putString(argumentKey, argument);
+            return this;
+        }
+
+        /** Adds an argument boolean to the argument bundle. */
+        public Builder addArgumentBoolean(String argumentKey, boolean argument) {
+            if (mArgs == null) {
+                mArgs = new Bundle();
+            }
+            mArgs.putBoolean(argumentKey, argument);
+            return this;
+        }
+
+        /** Adds an argument Parcelable to the argument bundle. */
+        public Builder addArgumentParcelable(String argumentKey, Parcelable argument) {
+            if (mArgs == null) {
+                mArgs = new Bundle();
+            }
+            mArgs.putParcelable(argumentKey, argument);
+            return this;
+        }
+
+        /** Constructs the {@link ConfirmationDialogFragment}. */
+        public ConfirmationDialogFragment build() {
+            return ConfirmationDialogFragment.init(this);
+        }
+    }
+
+    /** Identifier used to launch the dialog fragment. */
+    public static final String TAG = "ConfirmationDialogFragment";
+
+    // Argument keys are prefixed with TAG in order to reduce the changes of collision with user
+    // provided arguments.
+    private static final String ALL_ARGUMENTS_KEY = TAG + "_all_arguments";
+    private static final String ARGUMENTS_KEY = TAG + "_arguments";
+    private static final String TITLE_KEY = TAG + "_title";
+    private static final String MESSAGE_KEY = TAG + "_message";
+    private static final String POSITIVE_KEY = TAG + "_positive";
+    private static final String NEGATIVE_KEY = TAG + "_negative";
+
+    private String mTitle;
+    private String mMessage;
+    private String mPosLabel;
+    private String mNegLabel;
+    private ConfirmListener mConfirmListener;
+    private RejectListener mRejectListener;
+
+    /** Constructs the dialog fragment from the arguments provided in the {@link Builder} */
+    private static ConfirmationDialogFragment init(Builder builder) {
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment();
+        Bundle args = new Bundle();
+        args.putBundle(ARGUMENTS_KEY, builder.mArgs);
+        args.putString(TITLE_KEY, builder.mTitle);
+        args.putString(MESSAGE_KEY, builder.mMessage);
+        args.putString(POSITIVE_KEY, builder.mPosLabel);
+        args.putString(NEGATIVE_KEY, builder.mNegLabel);
+        dialogFragment.setArguments(args);
+        dialogFragment.setConfirmListener(builder.mConfirmListener);
+        dialogFragment.setRejectListener(builder.mRejectListener);
+        return dialogFragment;
+    }
+
+    /**
+     * Since it is possible for the listeners to be unregistered on configuration change, provide a
+     * way to reattach the listeners.
+     */
+    public static void resetListeners(@Nullable ConfirmationDialogFragment dialogFragment,
+            @Nullable ConfirmListener confirmListener, @Nullable RejectListener rejectListener) {
+        if (dialogFragment != null) {
+            dialogFragment.setConfirmListener(confirmListener);
+            dialogFragment.setRejectListener(rejectListener);
+        }
+    }
+
+    /** Sets the listener which listens to a click on the positive button. */
+    private void setConfirmListener(ConfirmListener confirmListener) {
+        mConfirmListener = confirmListener;
+    }
+
+    /** Gets the listener which listens to a click on the positive button */
+    @Nullable
+    public ConfirmListener getConfirmListener() {
+        return mConfirmListener;
+    }
+
+    /** Sets the listener which listens to a click on the negative button. */
+    private void setRejectListener(RejectListener rejectListener) {
+        mRejectListener = rejectListener;
+    }
+
+    /** Gets the listener which listens to a click on the negative button. */
+    @Nullable
+    public RejectListener getRejectListener() {
+        return mRejectListener;
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Bundle args = getArguments();
+        if (savedInstanceState != null) {
+            args = savedInstanceState.getBundle(ALL_ARGUMENTS_KEY);
+        }
+
+        if (args != null) {
+            mTitle = getArguments().getString(TITLE_KEY);
+            mMessage = getArguments().getString(MESSAGE_KEY);
+            mPosLabel = getArguments().getString(POSITIVE_KEY);
+            mNegLabel = getArguments().getString(NEGATIVE_KEY);
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBundle(ALL_ARGUMENTS_KEY, getArguments());
+    }
+
+    @NonNull
+    @Override
+    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+        if (!TextUtils.isEmpty(mTitle)) {
+            builder.setTitle(mTitle);
+        }
+        if (!TextUtils.isEmpty(mMessage)) {
+            builder.setMessage(mMessage);
+        }
+        if (!TextUtils.isEmpty(mPosLabel)) {
+            builder.setPositiveButton(mPosLabel, this);
+        }
+        if (!TextUtils.isEmpty(mNegLabel)) {
+            builder.setNegativeButton(mNegLabel, this);
+        }
+        return builder.create();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        if (which == DialogInterface.BUTTON_POSITIVE) {
+            if (mConfirmListener != null) {
+                mConfirmListener.onConfirm(getArguments().getBundle(ARGUMENTS_KEY));
+            }
+        } else if (which == DialogInterface.BUTTON_NEGATIVE) {
+            if (mRejectListener != null) {
+                mRejectListener.onReject(getArguments().getBundle(ARGUMENTS_KEY));
+            }
+        }
+    }
+
+    /** Listens to the confirmation action. */
+    public interface ConfirmListener {
+        /**
+         * Defines the action to take on confirm. The bundle will contain the arguments added when
+         * constructing the dialog through with {@link Builder#addArgumentString(String, String)}.
+         */
+        void onConfirm(@Nullable Bundle arguments);
+    }
+
+    /** Listens to the rejection action. */
+    public interface RejectListener {
+        /**
+         * Defines the action to take on reject. The bundle will contain the arguments added when
+         * constructing the dialog through with {@link Builder#addArgumentString(String, String)}.
+         */
+        void onReject(@Nullable Bundle arguments);
+    }
+}
diff --git a/src/com/android/car/settings/common/DOBlockingDialogFragment.java b/src/com/android/car/settings/common/DOBlockingDialogFragment.java
deleted file mode 100644
index 4023719..0000000
--- a/src/com/android/car/settings/common/DOBlockingDialogFragment.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.common;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.os.Bundle;
-
-import androidx.car.app.CarAlertDialog;
-import androidx.fragment.app.DialogFragment;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment.FragmentController;
-import com.android.car.settings.quicksettings.QuickSettingFragment;
-
-/**
- * A dialog to block non-distraction optimized view when restriction is applied.
- */
-public class DOBlockingDialogFragment extends DialogFragment implements
-        DialogInterface.OnClickListener {
-    public static final String DIALOG_TAG = "block_dialog_tag";
-    private static final String MESSAGE_ARG_KEY = "message";
-    private boolean mShowQuickSettingsMainScreen = true;
-
-    /**
-     * Creates a DOBlockingDialogFragment with a specified message
-     *
-     * @param message
-     * @return an instance of DOBlockingDialogFragment
-     */
-    public static DOBlockingDialogFragment newInstance(String message) {
-        DOBlockingDialogFragment fragment = new DOBlockingDialogFragment();
-
-        Bundle args = new Bundle();
-        args.putString(MESSAGE_ARG_KEY, message);
-        fragment.setArguments(args);
-
-        return fragment;
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        Context context = getContext();
-        // If a message is not set, use the default message.
-        String message = getArguments().getString(MESSAGE_ARG_KEY);
-        if (message == null) {
-            message = getContext().getString(R.string.restricted_while_driving);
-        }
-        Dialog dialog = new CarAlertDialog.Builder(context)
-                .setBody(message)
-                .setPositiveButton(context.getString(R.string.okay),  /* listener= */ this)
-                .setCancelable(false)
-                .create();
-        return dialog;
-    }
-
-    /**
-     * Return to the quick settings main screen after the dialog is dismissed.
-     * @param showQuickSettingsMainScreen whether to return to the quick settings main screen, the
-     * default value is true
-     */
-    public void goBackToQuickSettingsMainScreen(boolean showQuickSettingsMainScreen) {
-        mShowQuickSettingsMainScreen = showQuickSettingsMainScreen;
-    }
-
-    // only one button, no need to check on negative.
-    @Override
-    public void onClick(DialogInterface dialog, int which) {
-        if (mShowQuickSettingsMainScreen) {
-            ((FragmentController) getActivity()).launchFragment(
-                    QuickSettingFragment.newInstance());
-        }
-        dismiss();
-    }
-}
diff --git a/src/com/android/car/settings/common/DefaultRestrictionsPreferenceController.java b/src/com/android/car/settings/common/DefaultRestrictionsPreferenceController.java
new file mode 100644
index 0000000..bf479b0
--- /dev/null
+++ b/src/com/android/car/settings/common/DefaultRestrictionsPreferenceController.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+/**
+ * Concrete implementation of {@link PreferenceController} which allows for applying the default
+ * {@link #getAvailabilityStatus()} and {@link #onApplyUxRestrictions(CarUxRestrictions)}
+ * behavior to preferences which do not require additional controller logic.
+ */
+public final class DefaultRestrictionsPreferenceController extends
+        PreferenceController<Preference> {
+
+    public DefaultRestrictionsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+}
diff --git a/src/com/android/car/settings/common/EditTextPreferenceDialogFragment.java b/src/com/android/car/settings/common/EditTextPreferenceDialogFragment.java
new file mode 100644
index 0000000..4026fd4
--- /dev/null
+++ b/src/com/android/car/settings/common/EditTextPreferenceDialogFragment.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import android.app.AlertDialog;
+import android.os.Bundle;
+import android.text.InputType;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.preference.EditTextPreference;
+
+/**
+ * Presents a dialog with an {@link EditText} associated with an {@link EditTextPreference}.
+ *
+ * <p>Note: CarSettings needs to use custom dialog implementations in order to launch the platform
+ * {@link AlertDialog} instead of the one in the support library.
+ */
+public class EditTextPreferenceDialogFragment extends
+        SettingsPreferenceDialogFragment implements TextView.OnEditorActionListener {
+
+    private static final String SAVE_STATE_TEXT = "EditTextPreferenceDialogFragment.text";
+
+    private EditText mEditText;
+    private CharSequence mText;
+    private boolean mAllowEnterToSubmit = true;
+
+    /**
+     * Returns a new instance of {@link EditTextPreferenceDialogFragment} for the {@link
+     * EditTextPreference} with the given {@code key}.
+     */
+    public static EditTextPreferenceDialogFragment newInstance(String key) {
+        EditTextPreferenceDialogFragment fragment = new EditTextPreferenceDialogFragment();
+        Bundle b = new Bundle(/* capacity= */ 1);
+        b.putString(ARG_KEY, key);
+        fragment.setArguments(b);
+        return fragment;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (savedInstanceState == null) {
+            mText = getEditTextPreference().getText();
+        } else {
+            mText = savedInstanceState.getCharSequence(SAVE_STATE_TEXT);
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putCharSequence(SAVE_STATE_TEXT, mText);
+    }
+
+    @Override
+    protected void onBindDialogView(View view) {
+        super.onBindDialogView(view);
+
+        mEditText = view.findViewById(android.R.id.edit);
+
+        if (mEditText == null) {
+            throw new IllegalStateException(
+                    "Dialog view must contain an EditText with id @android:id/edit");
+        }
+
+        mEditText.requestFocus();
+        mEditText.setText(mText);
+        mEditText.setInputType(InputType.TYPE_CLASS_TEXT);
+        mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
+        mEditText.setOnEditorActionListener(this);
+        // Place cursor at the end
+        mEditText.setSelection(mEditText.getText().length());
+    }
+
+    private EditTextPreference getEditTextPreference() {
+        return (EditTextPreference) getPreference();
+    }
+
+    @Override
+    protected boolean needInputMethod() {
+        return true;
+    }
+
+    @Override
+    protected void onDialogClosed(boolean positiveResult) {
+        if (positiveResult) {
+            String value = mEditText.getText().toString();
+            if (getEditTextPreference().callChangeListener(value)) {
+                getEditTextPreference().setText(value);
+            }
+        }
+    }
+
+    /** Allows enabling and disabling the ability to press enter to dismiss the dialog. */
+    public void setAllowEnterToSubmit(boolean isAllowed) {
+        mAllowEnterToSubmit = isAllowed;
+    }
+
+    /** Allows verifying if enter to submit is currently enabled. */
+    public boolean getAllowEnterToSubmit() {
+        return mAllowEnterToSubmit;
+    }
+
+    @Override
+    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+        if (actionId == EditorInfo.IME_ACTION_DONE && mAllowEnterToSubmit) {
+            CharSequence newValue = v.getText();
+
+            getEditTextPreference().callChangeListener(newValue);
+            dismiss();
+
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/car/settings/common/ErrorDialog.java b/src/com/android/car/settings/common/ErrorDialog.java
new file mode 100644
index 0000000..8872577
--- /dev/null
+++ b/src/com/android/car/settings/common/ErrorDialog.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+
+import androidx.annotation.StringRes;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+
+/**
+ * Dialog to inform that an action failed.
+ */
+public class ErrorDialog extends DialogFragment {
+    private static final String ERROR_DIALOG_TITLE_KEY = "error_dialog_title";
+    private static final String DIALOG_TAG = "ErrorDialogTag";
+
+    /**
+     * Shows the error dialog.
+     *
+     * @param parent Fragment associated with the dialog.
+     * @param title  Title for the error dialog.
+     */
+    public static ErrorDialog show(Fragment parent, @StringRes int title) {
+        ErrorDialog dialog = newInstance(title);
+        dialog.setTargetFragment(parent, 0);
+        dialog.show(parent.getFragmentManager(), DIALOG_TAG);
+        return dialog;
+    }
+
+    /**
+     * Creates an instance of error dialog with the appropriate title. This constructor should be
+     * used when starting an error dialog when we don't have a reference to the parent fragment.
+     */
+    public static ErrorDialog newInstance(@StringRes int title) {
+        ErrorDialog dialog = new ErrorDialog();
+        Bundle bundle = new Bundle();
+        bundle.putInt(ERROR_DIALOG_TITLE_KEY, title);
+        dialog.setArguments(bundle);
+        return dialog;
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        return new AlertDialog.Builder(getContext())
+                .setTitle(getArguments().getInt(ERROR_DIALOG_TITLE_KEY))
+                .setPositiveButton(android.R.string.ok, /* listener =*/ null)
+                .create();
+    }
+}
diff --git a/src/com/android/car/settings/common/ExtraSettingsLoader.java b/src/com/android/car/settings/common/ExtraSettingsLoader.java
index 29fe307..1f51496 100644
--- a/src/com/android/car/settings/common/ExtraSettingsLoader.java
+++ b/src/com/android/car/settings/common/ExtraSettingsLoader.java
@@ -16,7 +16,7 @@
 
 package com.android.car.settings.common;
 
-import static com.android.settingslib.drawer.TileUtils.EXTRA_SETTINGS_ACTION;
+import static com.android.settingslib.drawer.CategoryKey.CATEGORY_DEVICE;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
 import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
@@ -32,49 +32,44 @@
 import android.os.Bundle;
 import android.text.TextUtils;
 
-import androidx.car.widget.ListItem;
-import androidx.car.widget.TextListItem;
+import androidx.preference.Preference;
 
+import com.android.car.apps.common.util.Themes;
 import com.android.car.settings.R;
 
-import java.util.Collection;
 import java.util.HashMap;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
 /**
  * Loads Activity with TileUtils.EXTRA_SETTINGS_ACTION.
  */
+// TODO: investigate using SettingsLib Tiles.
 public class ExtraSettingsLoader {
     private static final Logger LOG = new Logger(ExtraSettingsLoader.class);
     private static final String META_DATA_PREFERENCE_CATEGORY = "com.android.settings.category";
-    public static final String WIRELESS_CATEGORY = "com.android.settings.category.wireless";
-    public static final String DEVICE_CATEGORY = "com.android.settings.category.device";
-    public static final String SYSTEM_CATEGORY = "com.android.settings.category.system";
-    public static final String PERSONAL_CATEGORY = "com.android.settings.category.personal";
+    private Map<Preference, Bundle> mPreferenceBundleMap;
     private final Context mContext;
 
     public ExtraSettingsLoader(Context context) {
         mContext = context;
+        mPreferenceBundleMap = new HashMap<>();
     }
 
     /**
-     * Returns a map of category and setting items pair loaded from 3rd party.
+     * Returns a map of {@link Preference} and {@link Bundle} representing settings injected from
+     * system apps and their metadata. The given intent must specify the action to use for
+     * resolving activities and a category with the key "com.android.settings.category" and one of
+     * the values in {@link com.android.settingslib.drawer.CategoryKey}.
+     *
+     * @param intent intent specifying the extra settings category to load
      */
-    public Map<String, Collection<ListItem>> load() {
+    public Map<Preference, Bundle> loadPreferences(Intent intent) {
         PackageManager pm = mContext.getPackageManager();
-        Intent intent = new Intent(EXTRA_SETTINGS_ACTION);
-        Map<String, Collection<ListItem>> extraSettings = new HashMap<>();
-        // initialize the categories
-        extraSettings.put(WIRELESS_CATEGORY, new LinkedList());
-        extraSettings.put(DEVICE_CATEGORY, new LinkedList());
-        extraSettings.put(SYSTEM_CATEGORY, new LinkedList());
-        extraSettings.put(PERSONAL_CATEGORY, new LinkedList());
-
         List<ResolveInfo> results = pm.queryIntentActivitiesAsUser(intent,
                 PackageManager.GET_META_DATA, ActivityManager.getCurrentUser());
 
+        String extraCategory = intent.getStringExtra(META_DATA_PREFERENCE_CATEGORY);
         for (ResolveInfo resolved : results) {
             if (!resolved.system) {
                 // Do not allow any app to be added to settings, only system ones.
@@ -129,18 +124,25 @@
             }
             Intent extraSettingIntent =
                     new Intent().setClassName(activityInfo.packageName, activityInfo.name);
-            if (category == null || !extraSettings.containsKey(category)) {
+            if (category == null) {
                 // If category is not specified or not supported, default to device.
-                category = DEVICE_CATEGORY;
+                category = CATEGORY_DEVICE;
             }
-            TextListItem item = new TextListItem(mContext);
-            item.setTitle(title);
-            item.setBody(summary);
-            item.setPrimaryActionIcon(icon.loadDrawable(mContext), /* useLargeIcon= */ false);
-            item.setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-            item.setOnClickListener(v -> mContext.startActivity(extraSettingIntent));
-            extraSettings.get(category).add(item);
+
+            if (!TextUtils.equals(extraCategory, category)) {
+                continue;
+            }
+            Preference preference = new Preference(mContext);
+            preference.setTitle(title);
+            preference.setSummary(summary);
+            if (icon != null) {
+                preference.setIcon(icon.loadDrawable(mContext));
+                preference.getIcon().setTintList(
+                        Themes.getAttrColorStateList(mContext, R.attr.iconColor));
+            }
+            preference.setIntent(extraSettingIntent);
+            mPreferenceBundleMap.put(preference, metaData);
         }
-        return extraSettings;
+        return mPreferenceBundleMap;
     }
 }
diff --git a/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java b/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java
new file mode 100644
index 0000000..11db5ab
--- /dev/null
+++ b/src/com/android/car/settings/common/ExtraSettingsPreferenceController.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import java.util.Map;
+
+/**
+ * Injects preferences from other system applications at a placeholder location. The placeholder
+ * should be a {@link PreferenceGroup} which sets the controller attribute to the fully qualified
+ * name of this class. The preference should contain an intent which will be passed to
+ * {@link ExtraSettingsLoader#loadPreferences(Intent)}.
+ *
+ * <p>For example:
+ * <pre>{@code
+ * <PreferenceCategory
+ *     android:key="@string/pk_system_extra_settings"
+ *     android:title="@string/system_extra_settings_title"
+ *     settings:controller="com.android.settings.common.ExtraSettingsPreferenceController">
+ *     <intent android:action="com.android.settings.action.EXTRA_SETTINGS">
+ *         <extra android:name="com.android.settings.category"
+ *                android:value="com.android.settings.category.system"/>
+ *     </intent>
+ * </PreferenceCategory>
+ * }</pre>
+ *
+ * @see ExtraSettingsLoader
+ */
+// TODO: investigate using SettingsLib Tiles.
+public class ExtraSettingsPreferenceController extends PreferenceController<PreferenceGroup> {
+
+    private ExtraSettingsLoader mExtraSettingsLoader;
+    private boolean mSettingsLoaded;
+
+    public ExtraSettingsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions restrictionInfo) {
+        super(context, preferenceKey, fragmentController, restrictionInfo);
+        mExtraSettingsLoader = new ExtraSettingsLoader(context);
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+    public void setExtraSettingsLoader(ExtraSettingsLoader extraSettingsLoader) {
+        mExtraSettingsLoader = extraSettingsLoader;
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preference) {
+        Map<Preference, Bundle> preferenceBundleMap = mExtraSettingsLoader.loadPreferences(
+                preference.getIntent());
+        if (!mSettingsLoaded) {
+            addExtraSettings(preferenceBundleMap);
+            mSettingsLoaded = true;
+        }
+        preference.setVisible(preference.getPreferenceCount() > 0);
+    }
+
+    /**
+     * Adds the extra settings from the system based on the intent that is passed in the preference
+     * group. All the preferences that resolve these intents will be added in the preference group.
+     *
+     * @param preferenceBundleMap a map of {@link Preference} and {@link Bundle} representing
+     * settings injected from system apps and their metadata.
+     */
+    protected void addExtraSettings(Map<Preference, Bundle> preferenceBundleMap) {
+        for (Preference setting : preferenceBundleMap.keySet()) {
+            getPreference().addPreference(setting);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/FragmentController.java b/src/com/android/car/settings/common/FragmentController.java
new file mode 100644
index 0000000..404dac0
--- /dev/null
+++ b/src/com/android/car/settings/common/FragmentController.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.content.Intent;
+import android.content.IntentSender;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+
+/**
+ * Controls launching {@link Fragment} instances and back navigation.
+ */
+public interface FragmentController {
+
+    /**
+     * Launches a Fragment in the main container of the current Activity. This cannot be used to
+     * show dialog fragments and will throw an IllegalArgumentException if attempted. The method
+     * {@link #showDialog} should be used instead.
+     */
+    void launchFragment(Fragment fragment);
+
+    /**
+     * Pops the top off the Fragment stack.
+     */
+    void goBack();
+
+    /**
+     * Shows a message to inform the user that the current feature is not available when driving.
+     */
+    void showBlockingMessage();
+
+    /**
+     * Shows dialog with given tag.
+     */
+    void showDialog(DialogFragment dialogFragment, @Nullable String tag);
+
+    /**
+     * Finds dialog by tag. This is primarily used to reattach listeners to dialogs after
+     * configuration change. This method will return null if the tag references a fragment that
+     * isn't a dialog fragment or no dialog with the given tag exists.
+     */
+    @Nullable
+    DialogFragment findDialogByTag(String tag);
+
+    /**
+     * Starts an activity for a result. When the result is received, the {@link
+     * ActivityResultCallback} is passed the result. Note that the implementer of this interface
+     * must ensure that the callback is valid throughout the lifecycle of the new activity that is
+     * created.
+     *
+     * @param intent      The intent used to start an activity.
+     * @param requestCode User defined code which is passed to the callback when the activity exits.
+     *                    Values must use the first 8 bits of the int (i.e. 0-255).
+     * @param callback    Defines how the result from the started activity should be handled.
+     */
+    void startActivityForResult(Intent intent, int requestCode, ActivityResultCallback callback);
+
+    /**
+     * Starts an intent sender for a result. When the result is received, the {@link
+     * ActivityResultCallback} is passed the result. Note that the implementer of this interface
+     * must ensure that the callback is valid throughout the lifecycle of the new activity that is
+     * created.
+     *
+     * @param intent       The IntentSender to launch.
+     * @param requestCode  User defined code which is passed to the callback when the activity
+     *                     exits. Values must use the first 8 bits of the int (i.e. 0-255).
+     * @param fillInIntent If non-null, this will be provided as the intent parameter to {@link
+     *                     IntentSender#sendIntent}.
+     * @param flagsMask    Intent flags in the original IntentSender that you would like to change.
+     * @param flagsValues  Desired values for any bits set in <var>flagsMask</var>
+     * @param options      Additional options for how the Activity should be started.
+     * @param callback     Defines how the result from the started IntentSender should be handled.
+     */
+    void startIntentSenderForResult(IntentSender intent, int requestCode,
+            @Nullable Intent fillInIntent, int flagsMask, int flagsValues, Bundle options,
+            ActivityResultCallback callback)
+            throws IntentSender.SendIntentException;
+}
diff --git a/src/com/android/car/settings/common/FragmentResolver.java b/src/com/android/car/settings/common/FragmentResolver.java
new file mode 100644
index 0000000..dc8656c
--- /dev/null
+++ b/src/com/android/car/settings/common/FragmentResolver.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.net.wifi.WifiManager;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.R;
+import com.android.car.settings.accounts.AccountSettingsFragment;
+import com.android.car.settings.accounts.ChooseAccountFragment;
+import com.android.car.settings.applications.ApplicationDetailsFragment;
+import com.android.car.settings.applications.ApplicationsSettingsFragment;
+import com.android.car.settings.applications.defaultapps.DefaultAutofillPickerFragment;
+import com.android.car.settings.applications.specialaccess.ModifySystemSettingsFragment;
+import com.android.car.settings.applications.specialaccess.NotificationAccessFragment;
+import com.android.car.settings.applications.specialaccess.UsageAccessFragment;
+import com.android.car.settings.bluetooth.BluetoothSettingsFragment;
+import com.android.car.settings.datausage.DataUsageFragment;
+import com.android.car.settings.datetime.DatetimeSettingsFragment;
+import com.android.car.settings.display.DisplaySettingsFragment;
+import com.android.car.settings.home.HomepageFragment;
+import com.android.car.settings.inputmethod.KeyboardFragment;
+import com.android.car.settings.language.LanguagePickerFragment;
+import com.android.car.settings.location.LocationScanningFragment;
+import com.android.car.settings.network.MobileNetworkFragment;
+import com.android.car.settings.network.NetworkAndInternetFragment;
+import com.android.car.settings.quicksettings.QuickSettingFragment;
+import com.android.car.settings.sound.SoundSettingsFragment;
+import com.android.car.settings.storage.StorageSettingsFragment;
+import com.android.car.settings.system.AboutSettingsFragment;
+import com.android.car.settings.users.UsersListFragment;
+import com.android.car.settings.wifi.WifiSettingsFragment;
+import com.android.car.settings.wifi.preferences.WifiPreferencesFragment;
+
+
+/**
+ * Maps an Action string to a {@link Fragment} that can handle this Action.
+ */
+public class FragmentResolver {
+
+    private static final Logger LOG = new Logger(FragmentResolver.class);
+
+    private FragmentResolver() {
+    }
+
+    /**
+     * Returns a {@link Fragment} that can handle the given action, returns {@code null} if no
+     * {@link Fragment} that can handle this {@link Intent} can be found. Keep the order of intent
+     * actions same as in the manifest.
+     */
+    @Nullable
+    static Fragment getFragmentForIntent(Context context, @Nullable Intent intent) {
+        if (intent == null) {
+            return null;
+        }
+        String action = intent.getAction();
+        if (action == null) {
+            return null;
+        }
+        switch (action) {
+            case Settings.ACTION_SETTINGS:
+                return new HomepageFragment();
+
+            case Settings.ACTION_NIGHT_DISPLAY_SETTINGS:
+                return new QuickSettingFragment();
+
+            case Settings.ACTION_DISPLAY_SETTINGS:
+                return new DisplaySettingsFragment();
+
+            case Settings.ACTION_SOUND_SETTINGS:
+            case Settings.Panel.ACTION_VOLUME:
+                return new SoundSettingsFragment();
+
+            case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:
+                return new NetworkAndInternetFragment();
+
+            case WifiManager.ACTION_PICK_WIFI_NETWORK:
+            case Settings.ACTION_WIFI_SETTINGS:
+            case Settings.ACTION_WIRELESS_SETTINGS:
+            case Settings.Panel.ACTION_WIFI:
+                return new WifiSettingsFragment();
+
+            case Settings.ACTION_WIFI_IP_SETTINGS:
+                return new WifiPreferencesFragment();
+
+            case Settings.ACTION_DATA_USAGE_SETTINGS:
+            case Settings.ACTION_MOBILE_DATA_USAGE:
+                return new DataUsageFragment();
+
+            case Settings.ACTION_DATA_ROAMING_SETTINGS:
+            case Settings.ACTION_NETWORK_OPERATOR_SETTINGS:
+                return new MobileNetworkFragment();
+
+            case Settings.ACTION_BLUETOOTH_SETTINGS:
+                return new BluetoothSettingsFragment();
+
+            case Settings.ACTION_LOCATION_SCANNING_SETTINGS:
+                return new LocationScanningFragment();
+
+            case Settings.ACTION_APPLICATION_SETTINGS:
+            case Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS:
+            case Settings.ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS:
+                return new ApplicationsSettingsFragment();
+
+            case Settings.ACTION_APPLICATION_DETAILS_SETTINGS:
+            case Settings.ACTION_NOTIFICATION_SETTINGS:
+            case Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS:
+            case Settings.ACTION_APP_NOTIFICATION_SETTINGS:
+                String pkg = intent.getStringExtra(Settings.EXTRA_APP_PACKAGE);
+                if (TextUtils.isEmpty(pkg)) {
+                    LOG.w("No package provided for application detailed intent");
+                    Uri uri = intent.getData();
+                    if (uri == null) {
+                        LOG.w("No uri provided for application detailed intent");
+                        return null;
+                    }
+                    pkg = uri.getSchemeSpecificPart();
+                }
+                return ApplicationDetailsFragment.getInstance(pkg);
+
+            case Settings.ACTION_MANAGE_WRITE_SETTINGS:
+                return new ModifySystemSettingsFragment();
+
+            case Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS:
+                return new NotificationAccessFragment();
+
+            case Settings.ACTION_USAGE_ACCESS_SETTINGS:
+                return new UsageAccessFragment();
+
+            case Intent.ACTION_QUICK_CLOCK:
+            case Settings.ACTION_DATE_SETTINGS:
+                return new DatetimeSettingsFragment();
+
+            case Settings.ACTION_USER_SETTINGS:
+                return new UsersListFragment();
+
+            case Settings.ACTION_ADD_ACCOUNT:
+                return new ChooseAccountFragment();
+
+            case Settings.ACTION_SYNC_SETTINGS:
+                return new AccountSettingsFragment();
+
+            case Settings.ACTION_INTERNAL_STORAGE_SETTINGS:
+                return new StorageSettingsFragment();
+
+            case Settings.ACTION_LOCALE_SETTINGS:
+                return new LanguagePickerFragment();
+
+            case Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE:
+                return new DefaultAutofillPickerFragment();
+
+            case Settings.ACTION_INPUT_METHOD_SETTINGS:
+                return new KeyboardFragment();
+
+            case Settings.ACTION_DEVICE_INFO_SETTINGS:
+            case Settings.DEVICE_NAME_SETTINGS:
+                return new AboutSettingsFragment();
+
+            default:
+                return Fragment.instantiate(context,
+                        context.getString(R.string.config_settings_hierarchy_root_fragment));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/ListController.java b/src/com/android/car/settings/common/ListController.java
deleted file mode 100644
index e863f92..0000000
--- a/src/com/android/car/settings/common/ListController.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.common;
-
-/**
- * Interface of list adapter for ListItem.
- */
-public interface ListController {
-    /**
-     * Triggers UI update on the list.
-     */
-    void refreshList();
-}
diff --git a/src/com/android/car/settings/common/ListItemSettingsFragment.java b/src/com/android/car/settings/common/ListItemSettingsFragment.java
deleted file mode 100644
index 829b1c1..0000000
--- a/src/com/android/car/settings/common/ListItemSettingsFragment.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.common;
-
-import android.os.Bundle;
-
-import androidx.car.widget.ListItemAdapter;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.PagedListView;
-
-import com.android.car.settings.R;
-
-/**
- * Settings page that only contain a list of items.
- * <p>
- * Uses support library ListItemAdapter, unlike ListSettingsFragment that uses the car-list
- * lists.
- */
-public abstract class ListItemSettingsFragment extends BaseFragment implements ListController {
-    private ListItemAdapter mListAdapter;
-
-    /**
-     * Gets bundle adding the list_fragment layout to it.
-     */
-    protected static Bundle getBundle() {
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_LAYOUT, R.layout.list_fragment);
-        return bundle;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        mListAdapter = new ListItemAdapter(getContext(), getItemProvider());
-
-        PagedListView listView = getView().findViewById(R.id.list);
-        listView.setAdapter(mListAdapter);
-        listView.setDividerVisibilityManager(mListAdapter);
-    }
-
-    @Override
-    public void refreshList() {
-        mListAdapter.notifyDataSetChanged();
-    }
-
-    /**
-     * Called in onActivityCreated.
-     * Gets ListItemProvider that should provide items to show up in the list.
-     */
-    public abstract ListItemProvider getItemProvider();
-}
diff --git a/src/com/android/car/settings/common/ListSettingsFragment.java b/src/com/android/car/settings/common/ListSettingsFragment.java
deleted file mode 100644
index 0b32735..0000000
--- a/src/com/android/car/settings/common/ListSettingsFragment.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.common;
-
-import android.os.Bundle;
-
-import androidx.car.widget.DayNightStyle;
-import androidx.car.widget.PagedListView;
-
-import com.android.car.list.TypedPagedListAdapter;
-import com.android.car.settings.R;
-
-import java.util.ArrayList;
-
-/**
- * Settings page that only contain a list of items.
- */
-public abstract class ListSettingsFragment extends BaseFragment {
-
-    protected PagedListView mListView;
-    protected TypedPagedListAdapter mPagedListAdapter;
-
-    protected static Bundle getBundle() {
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_LAYOUT, R.layout.list_fragment);
-        return bundle;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        mListView = (PagedListView) getView().findViewById(R.id.list);
-        mListView.setDayNightStyle(DayNightStyle.AUTO);
-        mPagedListAdapter = new TypedPagedListAdapter(getLineItems());
-        mListView.setAdapter(mPagedListAdapter);
-    }
-
-    /**
-     * Gets a List of LineItems to show up in this activity.
-     */
-    public abstract ArrayList<TypedPagedListAdapter.LineItem> getLineItems();
-}
diff --git a/src/com/android/car/settings/common/LogicalPreferenceGroup.java b/src/com/android/car/settings/common/LogicalPreferenceGroup.java
new file mode 100644
index 0000000..a3a2c45
--- /dev/null
+++ b/src/com/android/car/settings/common/LogicalPreferenceGroup.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+
+/**
+ * {@link PreferenceGroup} which does not display a title, icon, or summary. This allows for
+ * logical grouping of preferences without indications in the UI.
+ */
+public class LogicalPreferenceGroup extends PreferenceGroup {
+
+    public LogicalPreferenceGroup(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        setLayoutResource(R.layout.logical_preference_group);
+    }
+
+    public LogicalPreferenceGroup(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public LogicalPreferenceGroup(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public LogicalPreferenceGroup(Context context) {
+        this(context, null);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        holder.setDividerAllowedAbove(false);
+    }
+}
diff --git a/src/com/android/car/settings/common/MasterSwitchPreference.java b/src/com/android/car/settings/common/MasterSwitchPreference.java
new file mode 100644
index 0000000..2156cce
--- /dev/null
+++ b/src/com/android/car/settings/common/MasterSwitchPreference.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.CompoundButton;
+import android.widget.Switch;
+
+import com.android.car.settings.R;
+
+/** A preference that can be clicked on one side and toggled on another. */
+public class MasterSwitchPreference extends TwoActionPreference {
+
+    /**
+     * Interface definition for a callback to be invoked when the switch is toggled.
+     */
+    public interface OnSwitchToggleListener {
+        /**
+         * Called when a switch was toggled.
+         *
+         * @param preference the preference whose switch was toggled.
+         * @param isChecked  the new state of the switch.
+         */
+        void onToggle(MasterSwitchPreference preference, boolean isChecked);
+    }
+
+    private Switch mSwitch;
+    private boolean mIsChecked;
+    private OnSwitchToggleListener mToggleListener;
+
+    private final CompoundButton.OnCheckedChangeListener mCheckedChangeListener =
+            (buttonView, isChecked) -> {
+                if (mToggleListener != null) {
+                    mToggleListener.onToggle(this, isChecked);
+                }
+            };
+
+    public MasterSwitchPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init();
+    }
+
+    public MasterSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init();
+    }
+
+    public MasterSwitchPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public MasterSwitchPreference(Context context) {
+        super(context);
+        init();
+    }
+
+    private void init() {
+        setWidgetLayoutResource(R.layout.master_switch_widget);
+    }
+
+    /** Sets the listener that handles the change in switch state. */
+    public void setSwitchToggleListener(OnSwitchToggleListener listener) {
+        mToggleListener = listener;
+    }
+
+    /** Gets the listener that handles the change in switch state. */
+    public OnSwitchToggleListener getSwitchToggleListener() {
+        return mToggleListener;
+    }
+
+    @Override
+    protected void onBindWidgetFrame(View widgetFrame) {
+        mSwitch = widgetFrame.findViewById(R.id.master_switch);
+        mSwitch.setChecked(mIsChecked);
+        mSwitch.setOnCheckedChangeListener(mCheckedChangeListener);
+        widgetFrame.setOnClickListener(v -> setSwitchChecked(!mIsChecked));
+    }
+
+    /**
+     * Sets the state of the switch. Can be set even when it isn't visible or bound in order to set
+     * the initial state.
+     */
+    public void setSwitchChecked(boolean checked) {
+        mIsChecked = checked;
+        if (!isActionShown()) {
+            return;
+        }
+
+        if (mSwitch != null) {
+            mSwitch.setChecked(checked);
+        }
+    }
+
+    /** Gets the state of the switch. */
+    public boolean isSwitchChecked() {
+        return mIsChecked;
+    }
+}
diff --git a/src/com/android/car/settings/common/PasswordEditTextPreference.java b/src/com/android/car/settings/common/PasswordEditTextPreference.java
new file mode 100644
index 0000000..bd45544
--- /dev/null
+++ b/src/com/android/car/settings/common/PasswordEditTextPreference.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import com.android.car.settings.R;
+
+/**
+ * Extends {@link ValidatedEditTextPreference} for password input. When {@link SettingsFragment}
+ * detects an instance of this class, it creates a new instance of {@link
+ * PasswordEditTextPreferenceDialogFragment} so that the input is obscured on the dialog's TextEdit.
+ */
+public class PasswordEditTextPreference extends ValidatedEditTextPreference {
+
+    public PasswordEditTextPreference(Context context) {
+        super(context);
+        init();
+    }
+
+    public PasswordEditTextPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public PasswordEditTextPreference(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        init();
+    }
+
+    public PasswordEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init();
+    }
+
+    private void init() {
+        setDialogLayoutResource(R.layout.preference_dialog_password_edittext);
+        setPersistent(false);
+    }
+}
diff --git a/src/com/android/car/settings/common/PasswordEditTextPreferenceDialogFragment.java b/src/com/android/car/settings/common/PasswordEditTextPreferenceDialogFragment.java
new file mode 100644
index 0000000..982f2c8
--- /dev/null
+++ b/src/com/android/car/settings/common/PasswordEditTextPreferenceDialogFragment.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import android.os.Bundle;
+import android.text.InputType;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+
+import com.android.car.settings.R;
+
+/**
+ * Extends {@link ValidatedEditTextPreferenceDialogFragment} for entering password input. Obscures
+ * password input by default and reveals a checkbox that toggles the password visibility.
+ */
+public class PasswordEditTextPreferenceDialogFragment extends
+        ValidatedEditTextPreferenceDialogFragment {
+
+    private EditText mEditText;
+
+    /**
+     * Returns a new instance of {@link PasswordEditTextPreferenceDialogFragment} for the {@link
+     * PasswordEditTextPreference} with the given {@code key}.
+     */
+    public static PasswordEditTextPreferenceDialogFragment newInstance(String key) {
+        PasswordEditTextPreferenceDialogFragment fragment =
+                new PasswordEditTextPreferenceDialogFragment();
+        Bundle b = new Bundle(/* capacity= */ 1);
+        b.putString(ARG_KEY, key);
+        fragment.setArguments(b);
+        return fragment;
+    }
+
+
+    @Override
+    protected void onBindDialogView(View view) {
+        super.onBindDialogView(view);
+
+        mEditText = view.findViewById(android.R.id.edit);
+        mEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
+        CheckBox cb = view.findViewById(R.id.checkbox);
+        cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked) {
+                    mEditText.setInputType(InputType.TYPE_CLASS_TEXT
+                            | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
+                } else {
+                    mEditText.setInputType(InputType.TYPE_CLASS_TEXT
+                            | InputType.TYPE_TEXT_VARIATION_PASSWORD);
+                }
+                // Place cursor at the end
+                mEditText.setSelection(mEditText.getText().length());
+            }
+        });
+    }
+}
diff --git a/src/com/android/car/settings/common/PreferenceController.java b/src/com/android/car/settings/common/PreferenceController.java
new file mode 100644
index 0000000..5dfe4ee
--- /dev/null
+++ b/src/com/android/car/settings/common/PreferenceController.java
@@ -0,0 +1,472 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager.OnUxRestrictionsChangedListener;
+import android.content.Context;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.lifecycle.DefaultLifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Controller which encapsulates the business logic associated with a {@link Preference}. All car
+ * settings controllers should extend this class.
+ *
+ * <p>Controllers are responsible for populating and modifying the presentation of an associated
+ * preference while responding to changes in system state. This is enabled via {@link
+ * SettingsFragment} which registers controllers as observers on its lifecycle and dispatches
+ * {@link CarUxRestrictions} change events to the controllers via the {@link
+ * OnUxRestrictionsChangedListener} interface.
+ *
+ * <p>Controllers should be instantiated from XML. To do so, define a preference and include the
+ * {@code controller} attribute in the preference tag and assign the fully qualified class name.
+ *
+ * <p>For example:
+ * <pre>{@code
+ * <Preference
+ *     android:key="my_preference_key"
+ *     android:title="@string/my_preference_title"
+ *     android:icon="@drawable/ic_settings"
+ *     android:fragment="com.android.settings.foo.MyFragment"
+ *     settings:controller="com.android.settings.foo.MyPreferenceController"/>
+ * }</pre>
+ *
+ * <p>Subclasses must implement {@link #getPreferenceType()} to define the upper bound type on the
+ * {@link Preference} that the controller is associated with. For example, a bound of {@link
+ * androidx.preference.PreferenceGroup} indicates that the controller will utilize preference group
+ * methods in its operation. {@link #setPreference(Preference)} will throw an {@link
+ * IllegalArgumentException} if not passed a subclass of the upper bound type.
+ *
+ * <p>Subclasses may implement any or all of the following methods (see method Javadocs for more
+ * information):
+ *
+ * <ul>
+ * <li>{@link #checkInitialized()}
+ * <li>{@link #onCreateInternal()}
+ * <li>{@link #getAvailabilityStatus()}
+ * <li>{@link #onStartInternal()}
+ * <li>{@link #onResumeInternal()}
+ * <li>{@link #onPauseInternal()}
+ * <li>{@link #onStopInternal()}
+ * <li>{@link #onDestroyInternal()}
+ * <li>{@link #updateState(Preference)}
+ * <li>{@link #onApplyUxRestrictions(CarUxRestrictions)}
+ * <li>{@link #handlePreferenceChanged(Preference, Object)}
+ * <li>{@link #handlePreferenceClicked(Preference)}
+ * </ul>
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class PreferenceController<V extends Preference> implements
+        DefaultLifecycleObserver,
+        OnUxRestrictionsChangedListener {
+
+    /**
+     * Denotes the availability of a setting.
+     *
+     * @see #getAvailabilityStatus()
+     */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({AVAILABLE, CONDITIONALLY_UNAVAILABLE, UNSUPPORTED_ON_DEVICE, DISABLED_FOR_USER})
+    public @interface AvailabilityStatus {
+    }
+
+    /**
+     * The setting is available.
+     */
+    public static final int AVAILABLE = 0;
+
+    /**
+     * The setting is currently unavailable but may become available in the future. Use
+     * {@link #DISABLED_FOR_USER} if it describes the condition more accurately.
+     */
+    public static final int CONDITIONALLY_UNAVAILABLE = 1;
+
+    /**
+     * The setting is not and will not be supported by this device.
+     */
+    public static final int UNSUPPORTED_ON_DEVICE = 2;
+
+    /**
+     * The setting cannot be changed by the current user.
+     */
+    public static final int DISABLED_FOR_USER = 3;
+
+    /**
+     * Indicates whether all Preferences are configured to ignore UX Restrictions Event.
+     */
+    private final boolean mAlwaysIgnoreUxRestrictions;
+
+    /**
+     * Set of the keys of Preferences that ignore UX Restrictions. When mAlwaysIgnoreUxRestrictions
+     * is configured to be false, then only the Preferences whose keys are contained in this Set
+     * ignore UX Restrictions.
+     */
+    private final Set<String> mPreferencesIgnoringUxRestrictions;
+
+    private final Context mContext;
+    private final String mPreferenceKey;
+    private final FragmentController mFragmentController;
+
+    private CarUxRestrictions mUxRestrictions;
+    private V mPreference;
+    private boolean mIsCreated;
+
+    /**
+     * Controllers should be instantiated from XML. To pass additional arguments see
+     * {@link SettingsFragment#use(Class, int)}.
+     */
+    public PreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        mContext = context;
+        mPreferenceKey = preferenceKey;
+        mFragmentController = fragmentController;
+        mUxRestrictions = uxRestrictions;
+        mPreferencesIgnoringUxRestrictions = new HashSet<String>(Arrays.asList(
+                mContext.getResources().getStringArray(R.array.config_ignore_ux_restrictions)));
+        mAlwaysIgnoreUxRestrictions =
+                mContext.getResources().getBoolean(R.bool.config_always_ignore_ux_restrictions);
+    }
+
+    /**
+     * Returns the context used to construct the controller.
+     */
+    protected final Context getContext() {
+        return mContext;
+    }
+
+    /**
+     * Returns the key for the preference managed by this controller set at construction.
+     */
+    protected final String getPreferenceKey() {
+        return mPreferenceKey;
+    }
+
+    /**
+     * Returns the {@link FragmentController} used to launch fragments and go back to previous
+     * fragments. This is set at construction.
+     */
+    protected final FragmentController getFragmentController() {
+        return mFragmentController;
+    }
+
+    /**
+     * Returns the current {@link CarUxRestrictions} applied to the controller. Subclasses may use
+     * this to limit which content is displayed in the associated preference. May be called anytime.
+     */
+    protected final CarUxRestrictions getUxRestrictions() {
+        return mUxRestrictions;
+    }
+
+    /**
+     * Returns the preference associated with this controller. This may be used in any of the
+     * lifecycle methods, as the preference is set before they are called..
+     */
+    protected final V getPreference() {
+        return mPreference;
+    }
+
+    /**
+     * Called by {@link SettingsFragment} to associate the controller with its preference after the
+     * screen is created. This is guaranteed to be called before {@link #onCreateInternal()}.
+     *
+     * @throws IllegalArgumentException if the given preference does not match the type
+     *                                  returned by {@link #getPreferenceType()}
+     * @throws IllegalStateException    if subclass defined initialization is not
+     *                                  complete.
+     */
+    final void setPreference(Preference preference) {
+        PreferenceUtil.requirePreferenceType(preference, getPreferenceType());
+        mPreference = getPreferenceType().cast(preference);
+        mPreference.setOnPreferenceChangeListener(
+                (changedPref, newValue) -> handlePreferenceChanged(
+                        getPreferenceType().cast(changedPref), newValue));
+        mPreference.setOnPreferenceClickListener(
+                clickedPref -> handlePreferenceClicked(getPreferenceType().cast(clickedPref)));
+        checkInitialized();
+    }
+
+    /**
+     * Called by {@link SettingsFragment} to notify that the applied ux restrictions have changed.
+     * The controller will refresh its UI accordingly unless it is not yet created. In that case,
+     * the UI will refresh once created.
+     */
+    @Override
+    public final void onUxRestrictionsChanged(CarUxRestrictions uxRestrictions) {
+        mUxRestrictions = uxRestrictions;
+        refreshUi();
+    }
+
+    /**
+     * Updates the preference presentation based on its {@link #getAvailabilityStatus()} status. If
+     * the controller is available, the associated preference is shown and a call to {@link
+     * #updateState(Preference)} and {@link #onApplyUxRestrictions(CarUxRestrictions)} are
+     * dispatched to allow the controller to modify the presentation for the current state. If the
+     * controller is not available, the associated preference is hidden from the screen. This is a
+     * no-op if the controller is not yet created.
+     */
+    public final void refreshUi() {
+        if (!mIsCreated) {
+            return;
+        }
+        if (getAvailabilityStatus() == AVAILABLE) {
+            mPreference.setVisible(true);
+            mPreference.setEnabled(true);
+            updateState(mPreference);
+            onApplyUxRestrictions(mUxRestrictions);
+        } else {
+            mPreference.setVisible(false);
+        }
+    }
+
+    // Controller lifecycle ========================================================================
+
+    /**
+     * Dispatches a call to {@link #onCreateInternal()} and {@link #refreshUi()} to enable
+     * controllers to setup initial state before a preference is visible. If the controller is
+     * {@link #UNSUPPORTED_ON_DEVICE}, the preference is hidden and no further action is taken.
+     */
+    @Override
+    public final void onCreate(@NonNull LifecycleOwner owner) {
+        if (getAvailabilityStatus() == UNSUPPORTED_ON_DEVICE) {
+            mPreference.setVisible(false);
+            return;
+        }
+        onCreateInternal();
+        mIsCreated = true;
+        refreshUi();
+    }
+
+    /**
+     * Dispatches a call to {@link #onStartInternal()} and {@link #refreshUi()} to account for any
+     * state changes that may have occurred while the controller was stopped. Returns immediately
+     * if the controller is {@link #UNSUPPORTED_ON_DEVICE}.
+     */
+    @Override
+    public final void onStart(@NonNull LifecycleOwner owner) {
+        if (getAvailabilityStatus() == UNSUPPORTED_ON_DEVICE) {
+            return;
+        }
+        onStartInternal();
+        refreshUi();
+    }
+
+    /**
+     * Notifies that the controller is resumed by dispatching a call to {@link #onResumeInternal()}.
+     * Returns immediately if the controller is {@link #UNSUPPORTED_ON_DEVICE}.
+     */
+    @Override
+    public final void onResume(@NonNull LifecycleOwner owner) {
+        if (getAvailabilityStatus() == UNSUPPORTED_ON_DEVICE) {
+            return;
+        }
+        onResumeInternal();
+    }
+
+    /**
+     * Notifies that the controller is paused by dispatching a call to {@link #onPauseInternal()}.
+     * Returns immediately if the controller is {@link #UNSUPPORTED_ON_DEVICE}.
+     */
+    @Override
+    public final void onPause(@NonNull LifecycleOwner owner) {
+        if (getAvailabilityStatus() == UNSUPPORTED_ON_DEVICE) {
+            return;
+        }
+        onPauseInternal();
+    }
+
+    /**
+     * Notifies that the controller is stopped by dispatching a call to {@link #onStopInternal()}.
+     * Returns immediately if the controller is {@link #UNSUPPORTED_ON_DEVICE}.
+     */
+    @Override
+    public final void onStop(@NonNull LifecycleOwner owner) {
+        if (getAvailabilityStatus() == UNSUPPORTED_ON_DEVICE) {
+            return;
+        }
+        onStopInternal();
+    }
+
+    /**
+     * Notifies that the controller is destroyed by dispatching a call to {@link
+     * #onDestroyInternal()}. Returns immediately if the controller is
+     * {@link #UNSUPPORTED_ON_DEVICE}.
+     */
+    @Override
+    public final void onDestroy(@NonNull LifecycleOwner owner) {
+        if (getAvailabilityStatus() == UNSUPPORTED_ON_DEVICE) {
+            return;
+        }
+        mIsCreated = false;
+        onDestroyInternal();
+    }
+
+    // Methods for override ========================================================================
+
+    /**
+     * Returns the upper bound type of the preference on which this controller will operate.
+     */
+    protected abstract Class<V> getPreferenceType();
+
+    /**
+     * Subclasses may override this method to throw {@link IllegalStateException} if any expected
+     * post-instantiation setup is not completed using {@link SettingsFragment#use(Class, int)}
+     * prior to associating the controller with its preference. This will be called before the
+     * controller lifecycle begins.
+     */
+    protected void checkInitialized() {
+    }
+
+    /**
+     * Returns the {@link AvailabilityStatus} for the setting. This status is used to determine
+     * if the setting should be shown or hidden. Defaults to {@link #AVAILABLE}. This will be
+     * called before the controller lifecycle begins and on refresh events.
+     */
+    @AvailabilityStatus
+    protected int getAvailabilityStatus() {
+        return AVAILABLE;
+    }
+
+    /**
+     * Subclasses may override this method to complete any operations needed at creation time e.g.
+     * loading static configuration.
+     *
+     * <p>Note: this will not be called on {@link #UNSUPPORTED_ON_DEVICE} controllers.
+     */
+    protected void onCreateInternal() {
+    }
+
+    /**
+     * Subclasses may override this method to complete any operations needed each time the
+     * controller is started e.g. registering broadcast receivers.
+     *
+     * <p>Note: this will not be called on {@link #UNSUPPORTED_ON_DEVICE} controllers.
+     */
+    protected void onStartInternal() {
+    }
+
+    /**
+     * Subclasses may override this method to complete any operations needed each time the
+     * controller is resumed. Prefer to use {@link #onStartInternal()} unless absolutely necessary
+     * as controllers may not be resumed in a multi-display scenario.
+     *
+     * <p>Note: this will not be called on {@link #UNSUPPORTED_ON_DEVICE} controllers.
+     */
+    protected void onResumeInternal() {
+    }
+
+    /**
+     * Subclasses may override this method to complete any operations needed each time the
+     * controller is paused. Prefer to use {@link #onStartInternal()} unless absolutely necessary
+     * as controllers may not be resumed in a multi-display scenario.
+     *
+     * <p>Note: this will not be called on {@link #UNSUPPORTED_ON_DEVICE} controllers.
+     */
+    protected void onPauseInternal() {
+    }
+
+    /**
+     * Subclasses may override this method to complete any operations needed each time the
+     * controller is stopped e.g. unregistering broadcast receivers.
+     *
+     * <p>Note: this will not be called on {@link #UNSUPPORTED_ON_DEVICE} controllers.
+     */
+    protected void onStopInternal() {
+    }
+
+    /**
+     * Subclasses may override this method to complete any operations needed when the controller is
+     * destroyed e.g. freeing up held resources.
+     *
+     * <p>Note: this will not be called on {@link #UNSUPPORTED_ON_DEVICE} controllers.
+     */
+    protected void onDestroyInternal() {
+    }
+
+    /**
+     * Subclasses may override this method to update the presentation of the preference for the
+     * current system state (summary, switch state, etc). If the preference has dynamic content
+     * (such as preferences added to a group), it may be updated here as well.
+     *
+     * <p>Important: Operations should be idempotent as this may be called multiple times.
+     *
+     * <p>Note: this will only be called when the following are true:
+     * <ul>
+     * <li>{@link #getAvailabilityStatus()} returns {@link #AVAILABLE}
+     * <li>{@link #onCreateInternal()} has completed.
+     * </ul>
+     */
+    protected void updateState(V preference) {
+    }
+
+    /**
+     * Updates the preference enabled status given the {@code restrictionInfo}. This will be called
+     * before the controller lifecycle begins and on refresh events. The preference is disabled by
+     * default when {@link CarUxRestrictions#UX_RESTRICTIONS_NO_SETUP} is set in {@code
+     * uxRestrictions}. Subclasses may override this method to modify enabled state based on
+     * additional driving restrictions.
+     */
+    protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) {
+        if (!isUxRestrictionsIgnored(mAlwaysIgnoreUxRestrictions,
+                mPreferencesIgnoringUxRestrictions)
+                && CarUxRestrictionsHelper.isNoSetup(uxRestrictions)) {
+            mPreference.setEnabled(false);
+        }
+    }
+
+    /**
+     * Called when the associated preference is changed by the user. This is called before the state
+     * of the preference is updated and before the state is persisted.
+     *
+     * @param preference the changed preference.
+     * @param newValue   the new value of the preference.
+     * @return {@code true} to update the state of the preference with the new value. Defaults to
+     * {@code true}.
+     */
+    protected boolean handlePreferenceChanged(V preference, Object newValue) {
+        return true;
+    }
+
+    /**
+     * Called when the preference associated with this controller is clicked. Subclasses may
+     * choose to handle the click event.
+     *
+     * @param preference the clicked preference.
+     * @return {@code true} if click is handled and further propagation should cease. Defaults to
+     * {@code false}.
+     */
+    protected boolean handlePreferenceClicked(V preference) {
+        return false;
+    }
+
+    protected boolean isUxRestrictionsIgnored(boolean allIgnores, Set prefsThatIgnore) {
+        return allIgnores || prefsThatIgnore.contains(mPreferenceKey);
+    }
+}
diff --git a/src/com/android/car/settings/common/PreferenceControllerListHelper.java b/src/com/android/car/settings/common/PreferenceControllerListHelper.java
new file mode 100644
index 0000000..2c1360b
--- /dev/null
+++ b/src/com/android/car/settings/common/PreferenceControllerListHelper.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import static com.android.car.settings.common.PreferenceXmlParser.METADATA_CONTROLLER;
+import static com.android.car.settings.common.PreferenceXmlParser.METADATA_KEY;
+
+import android.annotation.NonNull;
+import android.annotation.XmlRes;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Helper to load {@link PreferenceController} instances from XML. Based on com.android
+ * .settings.core.PreferenceControllerListHelper.
+ */
+class PreferenceControllerListHelper {
+    private PreferenceControllerListHelper() {
+    }
+
+    /**
+     * Creates a list of {@link PreferenceController}.
+     *
+     * @param context the {@link Context} used to instantiate the controllers.
+     * @param xmlResId the XML resource containing the metadata of the controllers to
+     *         create.
+     * @param fragmentController a valid {@link FragmentController} the preference
+     *         controllers can use to navigate.
+     * @param uxRestrictions the current {@link CarUxRestrictions}.
+     * @throws IllegalArgumentException if the XML resource cannot be parsed, if the XML
+     *         resource contains elements which declare controllers without preference keys, if the
+     *         XML resource contains controllers which cannot be instantiated successfully.
+     */
+    @NonNull
+    static List<PreferenceController> getPreferenceControllersFromXml(Context context,
+            @XmlRes int xmlResId, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        List<PreferenceController> controllers = new ArrayList<>();
+        List<Bundle> preferenceMetadata;
+        try {
+            preferenceMetadata = PreferenceXmlParser.extractMetadata(context, xmlResId,
+                    PreferenceXmlParser.MetadataFlag.FLAG_NEED_KEY
+                            | PreferenceXmlParser.MetadataFlag.FLAG_NEED_PREF_CONTROLLER);
+        } catch (IOException | XmlPullParserException e) {
+            throw new IllegalArgumentException(
+                    "Failed to parse preference XML for getting controllers", e);
+        }
+
+        for (Bundle metadata : preferenceMetadata) {
+            String controllerName = metadata.getString(METADATA_CONTROLLER);
+            if (TextUtils.isEmpty(controllerName)) {
+                continue; // Preference does not require a controller.
+            }
+            String key = metadata.getString(METADATA_KEY);
+            if (TextUtils.isEmpty(key)) {
+                throw new IllegalArgumentException("Missing key for controller: " + controllerName);
+            }
+            controllers.add(createInstance(controllerName, context, key, fragmentController,
+                    uxRestrictions));
+        }
+
+        return controllers;
+    }
+
+    private static PreferenceController createInstance(String controllerName,
+            Context context, String key, FragmentController fragmentController,
+            CarUxRestrictions restrictionInfo) {
+        try {
+            Class<?> clazz = Class.forName(controllerName);
+            Constructor<?> preferenceConstructor = clazz.getConstructor(Context.class, String.class,
+                    FragmentController.class, CarUxRestrictions.class);
+            Object[] params = new Object[]{context, key, fragmentController, restrictionInfo};
+            return (PreferenceController) preferenceConstructor.newInstance(params);
+        } catch (ClassNotFoundException | NoSuchMethodException | InstantiationException
+                | InvocationTargetException | IllegalAccessException e) {
+            throw new IllegalArgumentException(
+                    "Invalid preference controller: " + controllerName, e);
+        }
+    }
+}
+
diff --git a/src/com/android/car/settings/common/PreferenceUtil.java b/src/com/android/car/settings/common/PreferenceUtil.java
new file mode 100644
index 0000000..6cfb64c
--- /dev/null
+++ b/src/com/android/car/settings/common/PreferenceUtil.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import androidx.preference.Preference;
+
+/** Contains utility function to operate on Preferences. */
+public class PreferenceUtil {
+
+    /** Ensures that the preference of given type. */
+    public static boolean checkPreferenceType(Preference preference, Class expectedType) {
+        return expectedType.isInstance(preference);
+    }
+
+    /**
+     * Requires that the preference is of given type.
+     *
+     * @throws IllegalArgumentException if the preference is not of the given type.
+     */
+    public static void requirePreferenceType(Preference preference, Class expectedType) {
+        if (!checkPreferenceType(preference, expectedType)) {
+            throw new IllegalArgumentException(
+                    "Preference should be of type " + expectedType.getName());
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/PreferenceXmlParser.java b/src/com/android/car/settings/common/PreferenceXmlParser.java
new file mode 100644
index 0000000..3e904d3
--- /dev/null
+++ b/src/com/android/car/settings/common/PreferenceXmlParser.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.annotation.NonNull;
+import android.annotation.XmlRes;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
+import android.os.Bundle;
+import android.util.AttributeSet;
+import android.util.Xml;
+
+import androidx.annotation.IntDef;
+
+import com.android.car.settings.R;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Utility class to parse elements of XML preferences. This is a reduced version of {@code com
+ * .android.settings.core.PreferenceXmlParserUtils}.
+ */
+public class PreferenceXmlParser {
+
+    private static final Logger LOG = new Logger(PreferenceXmlParser.class);
+
+    private static final String PREF_TAG_ENDS_WITH = "Preference";
+    private static final String PREF_GROUP_TAG_ENDS_WITH = "PreferenceGroup";
+    private static final List<String> SUPPORTED_PREF_TYPES = Arrays.asList("Preference",
+            "PreferenceCategory", "PreferenceScreen");
+
+    /**
+     * Flag definition to indicate which metadata should be extracted when
+     * {@link #extractMetadata(Context, int, int)} is called. The flags can be combined by using |
+     * (binary or).
+     */
+    @IntDef(flag = true, value = {
+            MetadataFlag.FLAG_NEED_KEY,
+            MetadataFlag.FLAG_NEED_PREF_CONTROLLER})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface MetadataFlag {
+        int FLAG_NEED_KEY = 1;
+        int FLAG_NEED_PREF_CONTROLLER = 1 << 1;
+    }
+
+    static final String METADATA_KEY = "key";
+    static final String METADATA_CONTROLLER = "controller";
+
+    /**
+     * Extracts metadata from each preference XML and puts them into a {@link Bundle}.
+     *
+     * @param xmlResId xml res id of a preference screen
+     * @param flags one or more of {@link MetadataFlag}
+     * @return a list of Bundles containing the extracted metadata
+     */
+    @NonNull
+    public static List<Bundle> extractMetadata(Context context, @XmlRes int xmlResId, int flags)
+            throws IOException, XmlPullParserException {
+        final List<Bundle> metadata = new ArrayList<>();
+        if (xmlResId <= 0) {
+            LOG.d(xmlResId + " is invalid.");
+            return metadata;
+        }
+        final XmlResourceParser parser = context.getResources().getXml(xmlResId);
+
+        int type;
+        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && type != XmlPullParser.START_TAG) {
+            // Parse next until start tag is found
+        }
+        final int outerDepth = parser.getDepth();
+
+        do {
+            if (type != XmlPullParser.START_TAG) {
+                continue;
+            }
+            final String nodeName = parser.getName();
+            if (!SUPPORTED_PREF_TYPES.contains(nodeName) && !nodeName.endsWith(PREF_TAG_ENDS_WITH)
+                    && !nodeName.endsWith(PREF_GROUP_TAG_ENDS_WITH)) {
+                continue;
+            }
+            final Bundle preferenceMetadata = new Bundle();
+            final AttributeSet attrs = Xml.asAttributeSet(parser);
+            final TypedArray preferenceAttributes = context.obtainStyledAttributes(attrs,
+                    R.styleable.Preference);
+
+            if (hasFlag(flags, MetadataFlag.FLAG_NEED_KEY)) {
+                preferenceMetadata.putString(METADATA_KEY, getKey(preferenceAttributes));
+            }
+            if (hasFlag(flags, MetadataFlag.FLAG_NEED_PREF_CONTROLLER)) {
+                preferenceMetadata.putString(METADATA_CONTROLLER,
+                        getController(preferenceAttributes));
+            }
+            metadata.add(preferenceMetadata);
+
+            preferenceAttributes.recycle();
+        } while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+                && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth));
+        parser.close();
+
+        return metadata;
+    }
+
+    private static boolean hasFlag(int flags, @MetadataFlag int flag) {
+        return (flags & flag) != 0;
+    }
+
+    private static String getKey(TypedArray styledAttributes) {
+        return styledAttributes.getString(com.android.internal.R.styleable.Preference_key);
+    }
+
+    private static String getController(TypedArray styledAttributes) {
+        return styledAttributes.getString(R.styleable.Preference_controller);
+    }
+}
diff --git a/src/com/android/car/settings/common/ProgressBarPreference.java b/src/com/android/car/settings/common/ProgressBarPreference.java
new file mode 100644
index 0000000..98ab9b6
--- /dev/null
+++ b/src/com/android/car/settings/common/ProgressBarPreference.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+
+/**
+ * Preference which shows a progress bar. The progress bar layout shown can be changed by setting
+ * the xml layout attribute. The canonical example can be seen in
+ * {@link R.layout#progress_bar_preference}.
+ */
+public class ProgressBarPreference extends Preference {
+
+    private CharSequence mMinLabel;
+    private CharSequence mMaxLabel;
+
+    private int mMin;
+    private int mMax;
+    private int mProgress;
+
+    public ProgressBarPreference(
+            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init(attrs);
+    }
+
+    public ProgressBarPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(attrs);
+    }
+
+    public ProgressBarPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(attrs);
+    }
+
+    public ProgressBarPreference(Context context) {
+        super(context);
+        init(/* attrs= */ null);
+    }
+
+    private void init(AttributeSet attrs) {
+        TypedArray a = getContext().obtainStyledAttributes(attrs,
+                R.styleable.ProgressBarPreference);
+
+        mMin = a.getInteger(R.styleable.ProgressBarPreference_min, 0);
+        mMax = a.getInteger(R.styleable.ProgressBarPreference_max, 100);
+        mProgress = a.getInteger(R.styleable.ProgressBarPreference_progress, 0);
+        mMinLabel = a.getString(R.styleable.ProgressBarPreference_minLabel);
+        mMaxLabel = a.getString(R.styleable.ProgressBarPreference_maxLabel);
+
+        a.recycle();
+    }
+
+    /** Sets the min label of the progress bar. */
+    public void setMinLabel(CharSequence startLabel) {
+        if (mMinLabel != startLabel) {
+            mMinLabel = startLabel;
+            notifyChanged();
+        }
+    }
+
+    /** Sets the max label of the progress bar. */
+    public void setMaxLabel(CharSequence endLabel) {
+        if (mMaxLabel != endLabel) {
+            mMaxLabel = endLabel;
+            notifyChanged();
+        }
+    }
+
+    /** Sets the minimum possible value of the progress bar. */
+    public void setMin(int min) {
+        if (mMin != min) {
+            mMin = min;
+            notifyChanged();
+        }
+    }
+
+    /** Sets the maximum possible value of the progress bar. */
+    public void setMax(int max) {
+        if (mMax != max) {
+            mMax = max;
+            notifyChanged();
+        }
+    }
+
+    /** Sets the current progress value of the progress bar. */
+    public void setProgress(int progress) {
+        if (mProgress != progress) {
+            mProgress = progress;
+            notifyChanged();
+        }
+    }
+
+    /** Returns the current progress value of the progress bar. */
+    public int getProgress() {
+        return mProgress;
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+
+        ProgressBar progressBar = (ProgressBar) view.findViewById(android.R.id.progress);
+        progressBar.setMin(mMin);
+        progressBar.setMax(mMax);
+        progressBar.setProgress(mProgress);
+
+        View progressBarLabels = view.findViewById(R.id.progress_bar_labels);
+        if (TextUtils.isEmpty(mMinLabel) && TextUtils.isEmpty(mMaxLabel)) {
+            progressBarLabels.setVisibility(View.GONE);
+        } else {
+            progressBarLabels.setVisibility(View.VISIBLE);
+
+            TextView minLabel = (TextView) view.findViewById(android.R.id.text1);
+            if (minLabel != null) {
+                minLabel.setText(mMinLabel);
+            }
+            TextView maxLabel = (TextView) view.findViewById(android.R.id.text2);
+            if (maxLabel != null) {
+                maxLabel.setText(mMaxLabel);
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/common/SeekBarPreference.java b/src/com/android/car/settings/common/SeekBarPreference.java
new file mode 100644
index 0000000..7ebd9a5
--- /dev/null
+++ b/src/com/android/car/settings/common/SeekBarPreference.java
@@ -0,0 +1,399 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+
+/**
+ * Car Setting's own version of SeekBarPreference.
+ *
+ * The code is directly taken from androidx.preference.SeekBarPreference. However it has 1 main
+ * functionality difference. There is a new field which can enable continuous updates while the
+ * seek bar value is changing. This can be set programmatically by using the {@link
+ * #setContinuousUpdate() setContinuousUpdate} method.
+ */
+public class SeekBarPreference extends Preference {
+
+    private int mSeekBarValue;
+    private int mMin;
+    private int mMax;
+    private int mSeekBarIncrement;
+    private boolean mTrackingTouch;
+    private SeekBar mSeekBar;
+    private TextView mSeekBarValueTextView;
+    private boolean mAdjustable; // whether the seekbar should respond to the left/right keys
+    private boolean mShowSeekBarValue; // whether to show the seekbar value TextView next to the bar
+    private boolean mContinuousUpdate; // whether scrolling provides continuous calls to listener
+
+    private static final String TAG = "SeekBarPreference";
+
+    /**
+     * Listener reacting to the SeekBar changing value by the user
+     */
+    private SeekBar.OnSeekBarChangeListener mSeekBarChangeListener =
+            new SeekBar.OnSeekBarChangeListener() {
+                @Override
+                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+                    if (fromUser && (mContinuousUpdate || !mTrackingTouch)) {
+                        syncValueInternal(seekBar);
+                    }
+                }
+
+                @Override
+                public void onStartTrackingTouch(SeekBar seekBar) {
+                    mTrackingTouch = true;
+                }
+
+                @Override
+                public void onStopTrackingTouch(SeekBar seekBar) {
+                    mTrackingTouch = false;
+                    if (seekBar.getProgress() + mMin != mSeekBarValue) {
+                        syncValueInternal(seekBar);
+                    }
+                }
+            };
+
+    /**
+     * Listener reacting to the user pressing DPAD left/right keys if {@code
+     * adjustable} attribute is set to true; it transfers the key presses to the SeekBar
+     * to be handled accordingly.
+     */
+    private View.OnKeyListener mSeekBarKeyListener = new View.OnKeyListener() {
+        @Override
+        public boolean onKey(View v, int keyCode, KeyEvent event) {
+            if (event.getAction() != KeyEvent.ACTION_DOWN) {
+                return false;
+            }
+
+            if (!mAdjustable && (keyCode == KeyEvent.KEYCODE_DPAD_LEFT
+                    || keyCode == KeyEvent.KEYCODE_DPAD_RIGHT)) {
+                // Right or left keys are pressed when in non-adjustable mode; Skip the keys.
+                return false;
+            }
+
+            // We don't want to propagate the click keys down to the seekbar view since it will
+            // create the ripple effect for the thumb.
+            if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_ENTER) {
+                return false;
+            }
+
+            if (mSeekBar == null) {
+                Log.e(TAG, "SeekBar view is null and hence cannot be adjusted.");
+                return false;
+            }
+            return mSeekBar.onKeyDown(keyCode, event);
+        }
+    };
+
+    public SeekBarPreference(
+            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+
+        TypedArray a = context.obtainStyledAttributes(
+                attrs, R.styleable.SeekBarPreference, defStyleAttr, defStyleRes);
+
+        /**
+         * The ordering of these two statements are important. If we want to set max first, we need
+         * to perform the same steps by changing min/max to max/min as following:
+         * mMax = a.getInt(...) and setMin(...).
+         */
+        mMin = a.getInt(R.styleable.SeekBarPreference_min, 0);
+        setMax(a.getInt(R.styleable.SeekBarPreference_android_max, 100));
+        setSeekBarIncrement(a.getInt(R.styleable.SeekBarPreference_seekBarIncrement, 0));
+        mAdjustable = a.getBoolean(R.styleable.SeekBarPreference_adjustable, true);
+        mShowSeekBarValue = a.getBoolean(R.styleable.SeekBarPreference_showSeekBarValue, true);
+        a.recycle();
+    }
+
+    public SeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public SeekBarPreference(Context context, AttributeSet attrs) {
+        this(context, attrs, R.attr.seekBarPreferenceStyle);
+    }
+
+    public SeekBarPreference(Context context) {
+        this(context, null);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+        view.itemView.setOnKeyListener(mSeekBarKeyListener);
+        mSeekBar = (SeekBar) view.findViewById(R.id.seekbar);
+        mSeekBarValueTextView = (TextView) view.findViewById(R.id.seekbar_value);
+        if (mShowSeekBarValue) {
+            mSeekBarValueTextView.setVisibility(View.VISIBLE);
+        } else {
+            mSeekBarValueTextView.setVisibility(View.GONE);
+            mSeekBarValueTextView = null;
+        }
+
+        if (mSeekBar == null) {
+            Log.e(TAG, "SeekBar view is null in onBindViewHolder.");
+            return;
+        }
+        mSeekBar.setOnSeekBarChangeListener(mSeekBarChangeListener);
+        mSeekBar.setMax(mMax - mMin);
+        // If the increment is not zero, use that. Otherwise, use the default mKeyProgressIncrement
+        // in AbsSeekBar when it's zero. This default increment value is set by AbsSeekBar
+        // after calling setMax. That's why it's important to call setKeyProgressIncrement after
+        // calling setMax() since setMax() can change the increment value.
+        if (mSeekBarIncrement != 0) {
+            mSeekBar.setKeyProgressIncrement(mSeekBarIncrement);
+        } else {
+            mSeekBarIncrement = mSeekBar.getKeyProgressIncrement();
+        }
+
+        mSeekBar.setProgress(mSeekBarValue - mMin);
+        if (mSeekBarValueTextView != null) {
+            mSeekBarValueTextView.setText(String.valueOf(mSeekBarValue));
+        }
+        mSeekBar.setEnabled(isEnabled());
+    }
+
+    @Override
+    protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+        setValue(restoreValue ? getPersistedInt(mSeekBarValue)
+                : (Integer) defaultValue);
+    }
+
+    @Override
+    protected Object onGetDefaultValue(TypedArray a, int index) {
+        return a.getInt(index, 0);
+    }
+
+    /** Setter for the minimum value allowed on seek bar. */
+    public void setMin(int min) {
+        if (min > mMax) {
+            min = mMax;
+        }
+        if (min != mMin) {
+            mMin = min;
+            notifyChanged();
+        }
+    }
+
+    /** Getter for the minimum value allowed on seek bar. */
+    public int getMin() {
+        return mMin;
+    }
+
+    /** Setter for the maximum value allowed on seek bar. */
+    public final void setMax(int max) {
+        if (max < mMin) {
+            max = mMin;
+        }
+        if (max != mMax) {
+            mMax = max;
+            notifyChanged();
+        }
+    }
+
+    /**
+     * Returns the amount of increment change via each arrow key click. This value is derived
+     * from
+     * user's specified increment value if it's not zero. Otherwise, the default value is picked
+     * from the default mKeyProgressIncrement value in {@link android.widget.AbsSeekBar}.
+     *
+     * @return The amount of increment on the SeekBar performed after each user's arrow key press.
+     */
+    public final int getSeekBarIncrement() {
+        return mSeekBarIncrement;
+    }
+
+    /**
+     * Sets the increment amount on the SeekBar for each arrow key press.
+     *
+     * @param seekBarIncrement The amount to increment or decrement when the user presses an
+     *                         arrow key.
+     */
+    public final void setSeekBarIncrement(int seekBarIncrement) {
+        if (seekBarIncrement != mSeekBarIncrement) {
+            mSeekBarIncrement = Math.min(mMax - mMin, Math.abs(seekBarIncrement));
+            notifyChanged();
+        }
+    }
+
+    /** Getter for the maximum value allowed on seek bar. */
+    public int getMax() {
+        return mMax;
+    }
+
+    /** Setter for the functionality which allows for changing the values via keyboard arrows. */
+    public void setAdjustable(boolean adjustable) {
+        mAdjustable = adjustable;
+    }
+
+    /** Getter for the functionality which allows for changing the values via keyboard arrows. */
+    public boolean isAdjustable() {
+        return mAdjustable;
+    }
+
+    /** Setter for the functionality which allows for continuous triggering of listener code. */
+    public void setContinuousUpdate(boolean continuousUpdate) {
+        mContinuousUpdate = continuousUpdate;
+    }
+
+    /** Setter for the whether the text should be visible. */
+    public void setShowSeekBarValue(boolean showSeekBarValue) {
+        mShowSeekBarValue = showSeekBarValue;
+    }
+
+    /** Setter for the current value of the seek bar. */
+    public void setValue(int seekBarValue) {
+        setValueInternal(seekBarValue, true);
+    }
+
+    private void setValueInternal(int seekBarValue, boolean notifyChanged) {
+        if (seekBarValue < mMin) {
+            seekBarValue = mMin;
+        }
+        if (seekBarValue > mMax) {
+            seekBarValue = mMax;
+        }
+
+        if (seekBarValue != mSeekBarValue) {
+            mSeekBarValue = seekBarValue;
+            if (mSeekBarValueTextView != null) {
+                mSeekBarValueTextView.setText(String.valueOf(mSeekBarValue));
+            }
+            persistInt(seekBarValue);
+            if (notifyChanged) {
+                notifyChanged();
+            }
+        }
+    }
+
+    /** Getter for the current value of the seek bar. */
+    public int getValue() {
+        return mSeekBarValue;
+    }
+
+    /**
+     * Persist the seekBar's seekbar value if callChangeListener
+     * returns true, otherwise set the seekBar's value to the stored value
+     */
+    private void syncValueInternal(SeekBar seekBar) {
+        int seekBarValue = mMin + seekBar.getProgress();
+        if (seekBarValue != mSeekBarValue) {
+            if (callChangeListener(seekBarValue)) {
+                setValueInternal(seekBarValue, false);
+            } else {
+                seekBar.setProgress(mSeekBarValue - mMin);
+            }
+        }
+    }
+
+    @Override
+    protected Parcelable onSaveInstanceState() {
+        final Parcelable superState = super.onSaveInstanceState();
+        if (isPersistent()) {
+            // No need to save instance state since it's persistent
+            return superState;
+        }
+
+        // Save the instance state
+        final SeekBarPreference.SavedState myState = new SeekBarPreference.SavedState(superState);
+        myState.mSeekBarValue = mSeekBarValue;
+        myState.mMin = mMin;
+        myState.mMax = mMax;
+        return myState;
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Parcelable state) {
+        if (!state.getClass().equals(SeekBarPreference.SavedState.class)) {
+            // Didn't save state for us in onSaveInstanceState
+            super.onRestoreInstanceState(state);
+            return;
+        }
+
+        // Restore the instance state
+        SeekBarPreference.SavedState myState = (SeekBarPreference.SavedState) state;
+        super.onRestoreInstanceState(myState.getSuperState());
+        mSeekBarValue = myState.mSeekBarValue;
+        mMin = myState.mMin;
+        mMax = myState.mMax;
+        notifyChanged();
+    }
+
+    /**
+     * SavedState, a subclass of {@link BaseSavedState}, will store the state
+     * of MyPreference, a subclass of Preference.
+     * <p>
+     * It is important to always call through to super methods.
+     */
+    private static class SavedState extends BaseSavedState {
+        int mSeekBarValue;
+        int mMin;
+        int mMax;
+
+        SavedState(Parcel source) {
+            super(source);
+
+            // Restore the click counter
+            mSeekBarValue = source.readInt();
+            mMin = source.readInt();
+            mMax = source.readInt();
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            super.writeToParcel(dest, flags);
+
+            // Save the click counter
+            dest.writeInt(mSeekBarValue);
+            dest.writeInt(mMin);
+            dest.writeInt(mMax);
+        }
+
+        SavedState(Parcelable superState) {
+            super(superState);
+        }
+
+        @SuppressWarnings("unused")
+        public static final Parcelable.Creator<SeekBarPreference.SavedState> CREATOR =
+                new Parcelable.Creator<SeekBarPreference.SavedState>() {
+                    @Override
+                    public SeekBarPreference.SavedState createFromParcel(Parcel in) {
+                        return new SeekBarPreference.SavedState(in);
+                    }
+
+                    @Override
+                    public SeekBarPreference.SavedState[] newArray(int size) {
+                        return new SeekBarPreference
+                                .SavedState[size];
+                    }
+                };
+    }
+}
diff --git a/src/com/android/car/settings/common/SettingsFragment.java b/src/com/android/car/settings/common/SettingsFragment.java
new file mode 100644
index 0000000..85d8085
--- /dev/null
+++ b/src/com/android/car/settings/common/SettingsFragment.java
@@ -0,0 +1,378 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.os.Bundle;
+import android.util.ArrayMap;
+import android.util.SparseArray;
+import android.util.TypedValue;
+import android.view.ContextThemeWrapper;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.constraintlayout.widget.Guideline;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.EditTextPreference;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
+
+import com.android.car.settings.R;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Base fragment for all settings. Subclasses must provide a resource id via
+ * {@link #getPreferenceScreenResId()} for the XML resource which defines the preferences to
+ * display and controllers to update their state. This class is responsible for displaying the
+ * preferences, creating {@link PreferenceController} instances from the metadata, and
+ * associating the preferences with their corresponding controllers.
+ *
+ * <p>{@code preferenceTheme} must be specified in the application theme, and the parent to which
+ * this fragment attaches must implement {@link UxRestrictionsProvider} and
+ * {@link FragmentController} or an {@link IllegalStateException} will be thrown during
+ * {@link #onAttach(Context)}. Changes to driving state restrictions are propagated to
+ * controllers.
+ */
+public abstract class SettingsFragment extends PreferenceFragmentCompat implements
+        CarUxRestrictionsManager.OnUxRestrictionsChangedListener, FragmentController {
+
+    @VisibleForTesting
+    static final String DIALOG_FRAGMENT_TAG =
+            "com.android.car.settings.common.SettingsFragment.DIALOG";
+
+    private static final int MAX_NUM_PENDING_ACTIVITY_RESULT_CALLBACKS = 0xff - 1;
+
+    private final Map<Class, List<PreferenceController>> mPreferenceControllersLookup =
+            new ArrayMap<>();
+    private final List<PreferenceController> mPreferenceControllers = new ArrayList<>();
+    private final SparseArray<ActivityResultCallback> mActivityResultCallbackMap =
+            new SparseArray<>();
+
+    private CarUxRestrictions mUxRestrictions;
+    private int mCurrentRequestIndex = 0;
+
+    /**
+     * Returns the resource id for the preference XML of this fragment.
+     */
+    @XmlRes
+    protected abstract int getPreferenceScreenResId();
+
+    /**
+     * Returns the layout id to use as the activity action bar. Subclasses should override this
+     * method to customize the action bar layout (e.g. additional buttons, switches, etc.). The
+     * default action bar contains a back button and the title.
+     */
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar;
+    }
+
+    /**
+     * Returns the controller of the given {@code clazz} for the given {@code
+     * preferenceKeyResId}. Subclasses may use this method in {@link #onAttach(Context)} to call
+     * setters on controllers to pass additional arguments after construction.
+     *
+     * <p>For example:
+     * <pre>{@code
+     * @Override
+     * public void onAttach(Context context) {
+     *     super.onAttach(context);
+     *     use(MyPreferenceController.class, R.string.pk_my_key).setMyArg(myArg);
+     * }
+     * }</pre>
+     *
+     * <p>Important: Use judiciously to minimize tight coupling between controllers and fragments.
+     */
+    @SuppressWarnings("unchecked") // Class is used as map key.
+    protected <T extends PreferenceController> T use(Class<T> clazz,
+            @StringRes int preferenceKeyResId) {
+        List<PreferenceController> controllerList = mPreferenceControllersLookup.get(clazz);
+        if (controllerList != null) {
+            String preferenceKey = getString(preferenceKeyResId);
+            for (PreferenceController controller : controllerList) {
+                if (controller.getPreferenceKey().equals(preferenceKey)) {
+                    return (T) controller;
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        if (!(getActivity() instanceof UxRestrictionsProvider)) {
+            throw new IllegalStateException("Must attach to a UxRestrictionsProvider");
+        }
+        if (!(getActivity() instanceof FragmentController)) {
+            throw new IllegalStateException("Must attach to a FragmentController");
+        }
+
+        TypedValue tv = new TypedValue();
+        getActivity().getTheme().resolveAttribute(androidx.preference.R.attr.preferenceTheme, tv,
+                true);
+        int theme = tv.resourceId;
+        if (theme == 0) {
+            throw new IllegalStateException("Must specify preferenceTheme in theme");
+        }
+        // Construct a context with the theme as controllers may create new preferences.
+        Context styledContext = new ContextThemeWrapper(getActivity(), theme);
+
+        mUxRestrictions = ((UxRestrictionsProvider) requireActivity()).getCarUxRestrictions();
+        mPreferenceControllers.clear();
+        mPreferenceControllers.addAll(
+                PreferenceControllerListHelper.getPreferenceControllersFromXml(styledContext,
+                        getPreferenceScreenResId(), /* fragmentController= */ this,
+                        mUxRestrictions));
+
+        Lifecycle lifecycle = getLifecycle();
+        mPreferenceControllers.forEach(controller -> {
+            lifecycle.addObserver(controller);
+            mPreferenceControllersLookup.computeIfAbsent(controller.getClass(),
+                    k -> new ArrayList<>(/* initialCapacity= */ 1)).add(controller);
+        });
+    }
+
+    /**
+     * Inflates the preferences from {@link #getPreferenceScreenResId()} and associates the
+     * preference with their corresponding {@link PreferenceController} instances.
+     */
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        @XmlRes int resId = getPreferenceScreenResId();
+        if (resId <= 0) {
+            throw new IllegalStateException(
+                    "Fragment must specify a preference screen resource ID");
+        }
+        addPreferencesFromResource(resId);
+        PreferenceScreen screen = getPreferenceScreen();
+        for (PreferenceController controller : mPreferenceControllers) {
+            controller.setPreference(screen.findPreference(controller.getPreferenceKey()));
+        }
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        FrameLayout actionBarContainer = requireActivity().findViewById(R.id.action_bar);
+        if (actionBarContainer != null) {
+            actionBarContainer.removeAllViews();
+            getLayoutInflater().inflate(getActionBarLayoutId(), actionBarContainer);
+
+            TextView titleView = actionBarContainer.requireViewById(R.id.title);
+            titleView.setText(getPreferenceScreen().getTitle());
+
+            // If the fragment is root, change the back button to settings icon.
+            ImageView imageView = actionBarContainer.requireViewById(R.id.back_button);
+            FragmentManager fragmentManager = requireActivity().getSupportFragmentManager();
+            if (fragmentManager.getBackStackEntryCount() == 1
+                    && fragmentManager.findFragmentByTag("0") != null
+                    && fragmentManager.findFragmentByTag("0").getClass().getName().equals(
+                    getString(R.string.config_settings_hierarchy_root_fragment))) {
+                if (getContext().getResources()
+                        .getBoolean(R.bool.config_show_settings_root_exit_icon)) {
+                    imageView.setImageResource(R.drawable.ic_launcher_settings);
+                    imageView.setTag(R.id.back_button, R.drawable.ic_launcher_settings);
+                } else {
+                    hideExitIcon();
+                }
+            } else {
+                imageView.setTag(R.id.back_button, R.drawable.ic_arrow_back);
+                actionBarContainer.requireViewById(R.id.action_bar_icon_container)
+                        .setOnClickListener(
+                                v -> requireActivity().onBackPressed());
+            }
+        }
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        Lifecycle lifecycle = getLifecycle();
+        mPreferenceControllers.forEach(lifecycle::removeObserver);
+        mActivityResultCallbackMap.clear();
+    }
+
+    /**
+     * Notifies {@link PreferenceController} instances of changes to {@link CarUxRestrictions}.
+     */
+    @Override
+    public void onUxRestrictionsChanged(CarUxRestrictions uxRestrictions) {
+        if (!uxRestrictions.isSameRestrictions(mUxRestrictions)) {
+            mUxRestrictions = uxRestrictions;
+            for (PreferenceController controller : mPreferenceControllers) {
+                controller.onUxRestrictionsChanged(uxRestrictions);
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * <p>Settings needs to launch custom dialog types in order to extend the Device Default theme.
+     *
+     * @param preference The Preference object requesting the dialog.
+     */
+    @Override
+    public void onDisplayPreferenceDialog(Preference preference) {
+        // check if dialog is already showing
+        if (findDialogByTag(DIALOG_FRAGMENT_TAG) != null) {
+            return;
+        }
+
+        DialogFragment dialogFragment;
+        if (preference instanceof ValidatedEditTextPreference) {
+            if (preference instanceof PasswordEditTextPreference) {
+                dialogFragment = PasswordEditTextPreferenceDialogFragment.newInstance(
+                        preference.getKey());
+            } else {
+                dialogFragment = ValidatedEditTextPreferenceDialogFragment.newInstance(
+                        preference.getKey());
+            }
+        } else if (preference instanceof EditTextPreference) {
+            dialogFragment = EditTextPreferenceDialogFragment.newInstance(preference.getKey());
+        } else if (preference instanceof ListPreference) {
+            dialogFragment = SettingsListPreferenceDialogFragment.newInstance(preference.getKey());
+        } else {
+            throw new IllegalArgumentException(
+                    "Tried to display dialog for unknown preference type. Did you forget to "
+                            + "override onDisplayPreferenceDialog()?");
+        }
+
+        dialogFragment.setTargetFragment(/* fragment= */ this, /* requestCode= */ 0);
+        showDialog(dialogFragment, DIALOG_FRAGMENT_TAG);
+    }
+
+    @Override
+    public void launchFragment(Fragment fragment) {
+        ((FragmentController) requireActivity()).launchFragment(fragment);
+    }
+
+    @Override
+    public void goBack() {
+        requireActivity().onBackPressed();
+    }
+
+    @Override
+    public void showBlockingMessage() {
+        Toast.makeText(getContext(), R.string.restricted_while_driving, Toast.LENGTH_SHORT).show();
+    }
+
+    @Override
+    public void showDialog(DialogFragment dialogFragment, @Nullable String tag) {
+        dialogFragment.show(getFragmentManager(), tag);
+    }
+
+    @Nullable
+    @Override
+    public DialogFragment findDialogByTag(String tag) {
+        Fragment fragment = getFragmentManager().findFragmentByTag(tag);
+        if (fragment instanceof DialogFragment) {
+            return (DialogFragment) fragment;
+        }
+        return null;
+    }
+
+    @Override
+    public void startActivityForResult(Intent intent, int requestCode,
+            ActivityResultCallback callback) {
+        validateRequestCodeForPreferenceController(requestCode);
+        int requestIndex = allocateRequestIndex(callback);
+        super.startActivityForResult(intent, ((requestIndex + 1) << 8) + (requestCode & 0xff));
+    }
+
+    @Override
+    public void startIntentSenderForResult(IntentSender intent, int requestCode,
+            @Nullable Intent fillInIntent, int flagsMask, int flagsValues, Bundle options,
+            ActivityResultCallback callback)
+            throws IntentSender.SendIntentException {
+        validateRequestCodeForPreferenceController(requestCode);
+        int requestIndex = allocateRequestIndex(callback);
+        super.startIntentSenderForResult(intent, ((requestIndex + 1) << 8) + (requestCode & 0xff),
+                fillInIntent, flagsMask, flagsValues, /* extraFlags= */ 0, options);
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        int requestIndex = (requestCode >> 8) & 0xff;
+        if (requestIndex != 0) {
+            requestIndex--;
+            ActivityResultCallback callback = mActivityResultCallbackMap.get(requestIndex);
+            mActivityResultCallbackMap.remove(requestIndex);
+            if (callback != null) {
+                callback.processActivityResult(requestCode & 0xff, resultCode, data);
+            }
+        }
+    }
+
+    // Allocates the next available startActivityForResult request index.
+    private int allocateRequestIndex(ActivityResultCallback callback) {
+        // Sanity check that we haven't exhausted the request index space.
+        if (mActivityResultCallbackMap.size() >= MAX_NUM_PENDING_ACTIVITY_RESULT_CALLBACKS) {
+            throw new IllegalStateException(
+                    "Too many pending activity result callbacks.");
+        }
+
+        // Find an unallocated request index in the mPendingFragmentActivityResults map.
+        while (mActivityResultCallbackMap.indexOfKey(mCurrentRequestIndex) >= 0) {
+            mCurrentRequestIndex =
+                    (mCurrentRequestIndex + 1) % MAX_NUM_PENDING_ACTIVITY_RESULT_CALLBACKS;
+        }
+
+        mActivityResultCallbackMap.put(mCurrentRequestIndex, callback);
+        return mCurrentRequestIndex;
+    }
+
+    /**
+     * Checks whether the given request code is a valid code by masking it with 0xff00. Throws an
+     * {@link IllegalArgumentException} if the code is not valid.
+     */
+    private static void validateRequestCodeForPreferenceController(int requestCode) {
+        if ((requestCode & 0xff00) != 0) {
+            throw new IllegalArgumentException("Can only use lower 8 bits for requestCode");
+        }
+    }
+
+    private void hideExitIcon() {
+        requireActivity().findViewById(R.id.action_bar_icon_container)
+                .setVisibility(FrameLayout.GONE);
+
+        Guideline guideLine = (Guideline) requireActivity().findViewById(R.id.start_margin);
+        guideLine.setGuidelineBegin(getResources()
+                .getDimensionPixelOffset(R.dimen.action_bar_no_icon_start_margin));
+    }
+}
diff --git a/src/com/android/car/settings/common/SettingsListPreferenceDialogFragment.java b/src/com/android/car/settings/common/SettingsListPreferenceDialogFragment.java
new file mode 100644
index 0000000..1e32c59
--- /dev/null
+++ b/src/com/android/car/settings/common/SettingsListPreferenceDialogFragment.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.preference.ListPreference;
+
+/**
+ * Presents a dialog with a list of options associated with a {@link ListPreference}.
+ *
+ * <p>Note: this is borrowed as-is from androidx.preference.EditTextPreferenceDialogFragmentCompat
+ * with updates to formatting to match the project style. CarSettings needs to use custom dialog
+ * implementations in order to launch the platform {@link AlertDialog} instead of the one in the
+ * support library.
+ */
+public class SettingsListPreferenceDialogFragment extends SettingsPreferenceDialogFragment {
+
+    private static final String SAVE_STATE_INDEX = "SettingsListPreferenceDialogFragment.index";
+    private static final String SAVE_STATE_ENTRIES = "SettingsListPreferenceDialogFragment.entries";
+    private static final String SAVE_STATE_ENTRY_VALUES =
+            "SettingsListPreferenceDialogFragment.entryValues";
+
+    private int mClickedDialogEntryIndex;
+    private CharSequence[] mEntries;
+    private CharSequence[] mEntryValues;
+
+    /**
+     * Returns a new instance of {@link SettingsListPreferenceDialogFragment} for the {@link
+     * ListPreference} with the given {@code key}.
+     */
+    public static SettingsListPreferenceDialogFragment newInstance(String key) {
+        SettingsListPreferenceDialogFragment fragment = new SettingsListPreferenceDialogFragment();
+        Bundle b = new Bundle(/* capacity= */ 1);
+        b.putString(ARG_KEY, key);
+        fragment.setArguments(b);
+        return fragment;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (savedInstanceState == null) {
+            ListPreference preference = getListPreference();
+
+            if (preference.getEntries() == null || preference.getEntryValues() == null) {
+                throw new IllegalStateException(
+                        "ListPreference requires an entries array and an entryValues array.");
+            }
+
+            mClickedDialogEntryIndex = preference.findIndexOfValue(preference.getValue());
+            mEntries = preference.getEntries();
+            mEntryValues = preference.getEntryValues();
+        } else {
+            mClickedDialogEntryIndex = savedInstanceState.getInt(SAVE_STATE_INDEX, 0);
+            mEntries = savedInstanceState.getCharSequenceArray(SAVE_STATE_ENTRIES);
+            mEntryValues = savedInstanceState.getCharSequenceArray(SAVE_STATE_ENTRY_VALUES);
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(SAVE_STATE_INDEX, mClickedDialogEntryIndex);
+        outState.putCharSequenceArray(SAVE_STATE_ENTRIES, mEntries);
+        outState.putCharSequenceArray(SAVE_STATE_ENTRY_VALUES, mEntryValues);
+    }
+
+    private ListPreference getListPreference() {
+        return (ListPreference) getPreference();
+    }
+
+    @Override
+    protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
+        super.onPrepareDialogBuilder(builder);
+
+        builder.setSingleChoiceItems(mEntries, mClickedDialogEntryIndex,
+                (dialog, which) -> {
+                    mClickedDialogEntryIndex = which;
+
+                    // Clicking on an item simulates the positive button click, and dismisses the
+                    // dialog.
+                    SettingsListPreferenceDialogFragment.this.onClick(dialog,
+                            DialogInterface.BUTTON_POSITIVE);
+                    dialog.dismiss();
+                });
+
+        // The typical interaction for list-based dialogs is to have click-on-an-item dismiss the
+        // dialog instead of the user having to press 'Ok'.
+        builder.setPositiveButton(null, null);
+    }
+
+    @Override
+    public void onDialogClosed(boolean positiveResult) {
+        if (positiveResult && mClickedDialogEntryIndex >= 0) {
+            String value = mEntryValues[mClickedDialogEntryIndex].toString();
+            ListPreference preference = getListPreference();
+            if (preference.callChangeListener(value)) {
+                preference.setValue(value);
+            }
+        }
+    }
+
+}
diff --git a/src/com/android/car/settings/common/SettingsPreferenceDialogFragment.java b/src/com/android/car/settings/common/SettingsPreferenceDialogFragment.java
new file mode 100644
index 0000000..01ca5c6
--- /dev/null
+++ b/src/com/android/car/settings/common/SettingsPreferenceDialogFragment.java
@@ -0,0 +1,286 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.TextView;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.preference.DialogPreference;
+import androidx.preference.PreferenceFragmentCompat;
+
+/**
+ * Abstract base class which presents a dialog associated with a {@link
+ * androidx.preference.DialogPreference}. Since the preference object may not be available during
+ * fragment re-creation, the necessary information for displaying the dialog is read once during
+ * the initial call to {@link #onCreate(Bundle)} and saved/restored in the saved instance state.
+ * Custom subclasses should also follow this pattern.
+ *
+ * <p>Note: this is borrowed as-is from androidx.preference.PreferenceDialogFragmentCompat with
+ * updates to formatting to match the project style. CarSettings needs to use custom dialog
+ * implementations in order to launch the platform {@link AlertDialog} instead of the one in the
+ * support library.
+ */
+public abstract class SettingsPreferenceDialogFragment extends DialogFragment implements
+        DialogInterface.OnClickListener {
+
+    protected static final String ARG_KEY = "key";
+
+    private static final String SAVE_STATE_TITLE = "SettingsPreferenceDialogFragment.title";
+    private static final String SAVE_STATE_POSITIVE_TEXT =
+            "SettingsPreferenceDialogFragment.positiveText";
+    private static final String SAVE_STATE_NEGATIVE_TEXT =
+            "SettingsPreferenceDialogFragment.negativeText";
+    private static final String SAVE_STATE_MESSAGE = "SettingsPreferenceDialogFragment.message";
+    private static final String SAVE_STATE_LAYOUT = "SettingsPreferenceDialogFragment.layout";
+    private static final String SAVE_STATE_ICON = "SettingsPreferenceDialogFragment.icon";
+
+    private DialogPreference mPreference;
+
+    private CharSequence mDialogTitle;
+    private CharSequence mPositiveButtonText;
+    private CharSequence mNegativeButtonText;
+    private CharSequence mDialogMessage;
+    @LayoutRes
+    private int mDialogLayoutRes;
+
+    private BitmapDrawable mDialogIcon;
+
+    /** Which button was clicked. */
+    private int mWhichButtonClicked;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Fragment rawFragment = getTargetFragment();
+        if (!(rawFragment instanceof DialogPreference.TargetFragment)) {
+            throw new IllegalStateException(
+                    "Target fragment must implement TargetFragment interface");
+        }
+
+        DialogPreference.TargetFragment fragment =
+                (DialogPreference.TargetFragment) rawFragment;
+
+        String key = getArguments().getString(ARG_KEY);
+        if (savedInstanceState == null) {
+            mPreference = (DialogPreference) fragment.findPreference(key);
+            mDialogTitle = mPreference.getDialogTitle();
+            mPositiveButtonText = mPreference.getPositiveButtonText();
+            mNegativeButtonText = mPreference.getNegativeButtonText();
+            mDialogMessage = mPreference.getDialogMessage();
+            mDialogLayoutRes = mPreference.getDialogLayoutResource();
+
+            Drawable icon = mPreference.getDialogIcon();
+            if (icon == null || icon instanceof BitmapDrawable) {
+                mDialogIcon = (BitmapDrawable) icon;
+            } else {
+                Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(),
+                        icon.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
+                Canvas canvas = new Canvas(bitmap);
+                icon.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+                icon.draw(canvas);
+                mDialogIcon = new BitmapDrawable(getResources(), bitmap);
+            }
+        } else {
+            mDialogTitle = savedInstanceState.getCharSequence(SAVE_STATE_TITLE);
+            mPositiveButtonText = savedInstanceState.getCharSequence(SAVE_STATE_POSITIVE_TEXT);
+            mNegativeButtonText = savedInstanceState.getCharSequence(SAVE_STATE_NEGATIVE_TEXT);
+            mDialogMessage = savedInstanceState.getCharSequence(SAVE_STATE_MESSAGE);
+            mDialogLayoutRes = savedInstanceState.getInt(SAVE_STATE_LAYOUT, 0);
+            Bitmap bitmap = savedInstanceState.getParcelable(SAVE_STATE_ICON);
+            if (bitmap != null) {
+                mDialogIcon = new BitmapDrawable(getResources(), bitmap);
+            }
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        super.onSaveInstanceState(outState);
+
+        outState.putCharSequence(SAVE_STATE_TITLE, mDialogTitle);
+        outState.putCharSequence(SAVE_STATE_POSITIVE_TEXT, mPositiveButtonText);
+        outState.putCharSequence(SAVE_STATE_NEGATIVE_TEXT, mNegativeButtonText);
+        outState.putCharSequence(SAVE_STATE_MESSAGE, mDialogMessage);
+        outState.putInt(SAVE_STATE_LAYOUT, mDialogLayoutRes);
+        if (mDialogIcon != null) {
+            outState.putParcelable(SAVE_STATE_ICON, mDialogIcon.getBitmap());
+        }
+    }
+
+    @Override
+    @NonNull
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        Context context = getActivity();
+        mWhichButtonClicked = DialogInterface.BUTTON_NEGATIVE;
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(context)
+                .setTitle(mDialogTitle)
+                .setIcon(mDialogIcon)
+                .setPositiveButton(mPositiveButtonText, this)
+                .setNegativeButton(mNegativeButtonText, this);
+
+        View contentView = onCreateDialogView(context);
+        if (contentView != null) {
+            onBindDialogView(contentView);
+            builder.setView(contentView);
+        } else {
+            builder.setMessage(mDialogMessage);
+        }
+
+        onPrepareDialogBuilder(builder);
+
+        // Create the dialog
+        Dialog dialog = builder.create();
+        if (needInputMethod()) {
+            // Request input only after the dialog is shown. This is to prevent an issue where the
+            // dialog view collapsed the content on small displays.
+            dialog.setOnShowListener(d -> requestInputMethod(dialog));
+        }
+
+        return dialog;
+    }
+
+    /**
+     * Get the preference that requested this dialog. Available after {@link #onCreate(Bundle)} has
+     * been called on the {@link PreferenceFragmentCompat} which launched this dialog.
+     *
+     * @return the {@link DialogPreference} associated with this dialog.
+     */
+    public DialogPreference getPreference() {
+        if (mPreference == null) {
+            String key = getArguments().getString(ARG_KEY);
+            DialogPreference.TargetFragment fragment =
+                    (DialogPreference.TargetFragment) getTargetFragment();
+            mPreference = (DialogPreference) fragment.findPreference(key);
+        }
+        return mPreference;
+    }
+
+    /**
+     * Prepares the dialog builder to be shown when the preference is clicked. Use this to set
+     * custom properties on the dialog.
+     *
+     * <p>Do not {@link AlertDialog.Builder#create()} or {@link AlertDialog.Builder#show()}.
+     */
+    protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
+    }
+
+    /**
+     * Returns whether the preference needs to display a soft input method when the dialog is
+     * displayed. Default is false. Subclasses should override this method if they need the soft
+     * input method brought up automatically.
+     *
+     * <p>Note: Ensure your subclass manually requests focus (ideally in {@link
+     * #onBindDialogView(View)}) for the input field in order to
+     * correctly attach the input method to the field.
+     */
+    protected boolean needInputMethod() {
+        return false;
+    }
+
+    /**
+     * Sets the required flags on the dialog window to enable input method window to show up.
+     */
+    private void requestInputMethod(Dialog dialog) {
+        Window window = dialog.getWindow();
+        window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+    }
+
+    /**
+     * Creates the content view for the dialog (if a custom content view is required). By default,
+     * it inflates the dialog layout resource if it is set.
+     *
+     * @return the content View for the dialog.
+     * @see DialogPreference#setLayoutResource(int)
+     */
+    protected View onCreateDialogView(Context context) {
+        int resId = mDialogLayoutRes;
+        if (resId == 0) {
+            return null;
+        }
+
+        LayoutInflater inflater = LayoutInflater.from(context);
+        return inflater.inflate(resId, null);
+    }
+
+    /**
+     * Binds views in the content View of the dialog to data.
+     *
+     * <p>Make sure to call through to the superclass implementation.
+     *
+     * @param view the content View of the dialog, if it is custom.
+     */
+    @CallSuper
+    protected void onBindDialogView(View view) {
+        View dialogMessageView = view.findViewById(android.R.id.message);
+
+        if (dialogMessageView != null) {
+            CharSequence message = mDialogMessage;
+            int newVisibility = View.GONE;
+
+            if (!TextUtils.isEmpty(message)) {
+                if (dialogMessageView instanceof TextView) {
+                    ((TextView) dialogMessageView).setText(message);
+                }
+
+                newVisibility = View.VISIBLE;
+            }
+
+            if (dialogMessageView.getVisibility() != newVisibility) {
+                dialogMessageView.setVisibility(newVisibility);
+            }
+        }
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        mWhichButtonClicked = which;
+    }
+
+    @Override
+    public void onDismiss(DialogInterface dialog) {
+        super.onDismiss(dialog);
+        onDialogClosed(mWhichButtonClicked == DialogInterface.BUTTON_POSITIVE);
+    }
+
+    /**
+     * Called when the dialog is dismissed.
+     *
+     * @param positiveResult {@code true} if the dialog was dismissed with {@link
+     *                       DialogInterface#BUTTON_POSITIVE}.
+     */
+    protected abstract void onDialogClosed(boolean positiveResult);
+}
diff --git a/src/com/android/car/settings/common/TwoActionPreference.java b/src/com/android/car/settings/common/TwoActionPreference.java
new file mode 100644
index 0000000..73ee0b9
--- /dev/null
+++ b/src/com/android/car/settings/common/TwoActionPreference.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+
+/**
+ * A preference which can perform two actions. The secondary action is shown by default.
+ * {@link #showAction(boolean)} may be used to manually set the visibility of the action.
+ */
+public abstract class TwoActionPreference extends Preference {
+
+    private boolean mIsActionShown;
+
+    public TwoActionPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init(attrs);
+    }
+
+    public TwoActionPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(attrs);
+    }
+
+    public TwoActionPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(attrs);
+    }
+
+    public TwoActionPreference(Context context) {
+        super(context);
+        init(/* attrs= */ null);
+    }
+
+    private void init(AttributeSet attrs) {
+        setLayoutResource(R.layout.two_action_preference);
+        TypedArray preferenceAttributes = getContext().obtainStyledAttributes(attrs,
+                R.styleable.TwoActionPreference);
+        mIsActionShown = preferenceAttributes.getBoolean(
+                R.styleable.TwoActionPreference_actionShown, true);
+    }
+
+    /**
+     * Sets whether the secondary action is visible in the preference.
+     *
+     * @param isShown {@code true} if the secondary action should be shown.
+     */
+    public void showAction(boolean isShown) {
+        mIsActionShown = isShown;
+        notifyChanged();
+    }
+
+    /** Returns {@code true} if action is shown. */
+    public boolean isActionShown() {
+        return mIsActionShown;
+    }
+
+    @Override
+    public final void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        View actionConatiner = holder.findViewById(R.id.action_widget_container);
+        View widgetFrame = holder.findViewById(android.R.id.widget_frame);
+        if (mIsActionShown) {
+            actionConatiner.setVisibility(View.VISIBLE);
+            onBindWidgetFrame(widgetFrame);
+        } else {
+            actionConatiner.setVisibility(View.GONE);
+        }
+    }
+
+    /**
+     * Binds the created View for the second action.
+     *
+     * <p>This is a good place to set properties on any custom view.
+     *
+     * @param widgetFrame The widget frame which controls the 2nd action.
+     */
+    protected abstract void onBindWidgetFrame(View widgetFrame);
+}
diff --git a/src/com/android/car/settings/common/UxRestrictionsProvider.java b/src/com/android/car/settings/common/UxRestrictionsProvider.java
new file mode 100644
index 0000000..65196f9
--- /dev/null
+++ b/src/com/android/car/settings/common/UxRestrictionsProvider.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import android.car.drivingstate.CarUxRestrictions;
+
+/**
+ * Provides current {@link CarUxRestrictions}.
+ */
+public interface UxRestrictionsProvider {
+
+    /**
+     * Returns the current {@link CarUxRestrictions}.
+     */
+    CarUxRestrictions getCarUxRestrictions();
+}
diff --git a/src/com/android/car/settings/common/ValidatedEditTextPreference.java b/src/com/android/car/settings/common/ValidatedEditTextPreference.java
new file mode 100644
index 0000000..3c46b9b
--- /dev/null
+++ b/src/com/android/car/settings/common/ValidatedEditTextPreference.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.TextView;
+
+import androidx.preference.EditTextPreference;
+import androidx.preference.PreferenceViewHolder;
+
+/**
+ * Extends {@link EditTextPreference} to add optional {@link Validator} logic. Validator is passed
+ * on to {@link ValidatedEditTextPreferenceDialogFragment} to be attached to its View.
+ */
+public class ValidatedEditTextPreference extends EditTextPreference {
+
+    /** Defines the validation logic used in this preference. */
+    public interface Validator {
+        /** Returns true only if the value provided meets validation criteria. */
+        boolean isTextValid(String value);
+    }
+
+    private Validator mValidator;
+    private int mInputType;
+
+    public ValidatedEditTextPreference(Context context) {
+        super(context);
+    }
+
+    public ValidatedEditTextPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public ValidatedEditTextPreference(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public ValidatedEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    /** Sets the text input type of the summary field. */
+    public void setSummaryInputType(int inputType) {
+        mInputType = inputType;
+        notifyChanged();
+    }
+
+    /** Gets the text input type of the summary field. */
+    public int getSummaryInputType() {
+        return mInputType;
+    }
+
+    /**
+     * Sets the {@link Validator}. Validator has to be set before the Preference is
+     * clicked for it to be attached to the Dialog's EditText.
+     */
+    public void setValidator(Validator validator) {
+        mValidator = validator;
+    }
+
+    /**
+     * Gets the {@link Validator} for {@link EditTextPreferenceDialogFragment} to attach
+     * to its own View.
+     */
+    public Validator getValidator() {
+        return mValidator;
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+
+        TextView summaryView = (TextView) holder.findViewById(android.R.id.summary);
+        summaryView.setInputType(mInputType);
+    }
+}
diff --git a/src/com/android/car/settings/common/ValidatedEditTextPreferenceDialogFragment.java b/src/com/android/car/settings/common/ValidatedEditTextPreferenceDialogFragment.java
new file mode 100644
index 0000000..8819951
--- /dev/null
+++ b/src/com/android/car/settings/common/ValidatedEditTextPreferenceDialogFragment.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import android.app.AlertDialog;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+
+/**
+ * Adds optional text validation logic to {@link EditTextPreferenceDialogFragment}. Disables
+ * Positive Button and the ability to press Enter to submit the dialog if the input is invalid.
+ * Validator must be provided by {@link ValidatedEditTextPreference} before launching the Dialog
+ * Fragment for it to be attached to its View.
+ */
+public class ValidatedEditTextPreferenceDialogFragment extends
+        EditTextPreferenceDialogFragment implements TextView.OnEditorActionListener {
+
+    private final EditTextWatcher mTextWatcher = new EditTextWatcher();
+
+    private ValidatedEditTextPreference.Validator mValidator;
+    private EditText mEditText;
+
+    /**
+     * Returns a new instance of {@link ValidatedEditTextPreferenceDialogFragment} for the
+     * {@link ValidatedEditTextPreference} with the given {@code key}.
+     */
+    public static ValidatedEditTextPreferenceDialogFragment newInstance(String key) {
+        ValidatedEditTextPreferenceDialogFragment fragment =
+                new ValidatedEditTextPreferenceDialogFragment();
+        Bundle b = new Bundle(/* capacity= */ 1);
+        b.putString(ARG_KEY, key);
+        fragment.setArguments(b);
+        return fragment;
+    }
+
+    @Override
+    protected void onBindDialogView(View view) {
+        super.onBindDialogView(view);
+        mEditText = view.findViewById(android.R.id.edit);
+        if (getPreference() instanceof ValidatedEditTextPreference) {
+            ValidatedEditTextPreference.Validator validator =
+                    ((ValidatedEditTextPreference) getPreference()).getValidator();
+            if (validator != null) {
+                attachValidatorToView(view, validator);
+            }
+        }
+
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        allowDialogSubmissionOnlyIfValidInput((AlertDialog) getDialog());
+    }
+
+    private void attachValidatorToView(View view, ValidatedEditTextPreference.Validator validator) {
+        mValidator = validator;
+        EditText editText = view.findViewById(android.R.id.edit);
+        if (mValidator != null && editText != null) {
+            editText.removeTextChangedListener(mTextWatcher);
+            editText.addTextChangedListener(mTextWatcher);
+        }
+    }
+
+    private class EditTextWatcher implements TextWatcher {
+        @Override
+        public void onTextChanged(CharSequence s, int start, int before, int count) {
+        }
+
+        @Override
+        public void beforeTextChanged(CharSequence s, int start, int before, int count) {
+        }
+
+        @Override
+        public void afterTextChanged(Editable s) {
+            allowDialogSubmissionOnlyIfValidInput((AlertDialog) getDialog());
+        }
+    }
+
+    private void allowDialogSubmissionOnlyIfValidInput(AlertDialog dialog) {
+        if (dialog != null && mValidator != null && mEditText != null) {
+            boolean valid = mValidator.isTextValid(mEditText.getText().toString());
+            dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(valid);
+            setAllowEnterToSubmit(valid);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/datausage/AppDataUsageFragment.java b/src/com/android/car/settings/datausage/AppDataUsageFragment.java
new file mode 100644
index 0000000..2c756e2
--- /dev/null
+++ b/src/com/android/car/settings/datausage/AppDataUsageFragment.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.content.Context;
+import android.net.NetworkPolicy;
+import android.net.NetworkPolicyManager;
+import android.net.NetworkTemplate;
+import android.os.Bundle;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.text.format.DateUtils;
+import android.util.Pair;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.loader.app.LoaderManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.NetworkPolicyEditor;
+
+import java.time.ZonedDateTime;
+import java.util.Iterator;
+
+/**
+ * Screen to display list of applications using the data.
+ */
+public class AppDataUsageFragment extends SettingsFragment {
+
+    private static final Logger LOG = new Logger(AppDataUsageFragment.class);
+
+    private static final String ARG_NETWORK_SUB_ID = "network_sub_id";
+    /** Value to represent that the subscription id hasn't been computed yet. */
+    private static final int SUB_ID_NULL = Integer.MIN_VALUE;
+
+    private AppsNetworkStatsManager mAppsNetworkStatsManager;
+    private NetworkPolicyEditor mPolicyEditor;
+    private NetworkTemplate mNetworkTemplate;
+
+    private Bundle mBundle;
+
+    /**
+     * Creates a new instance of the {@link AppDataUsageFragment}, which shows settings related to
+     * the given {@code subId}.
+     */
+    public static AppDataUsageFragment newInstance(int subId) {
+        AppDataUsageFragment fragment = new AppDataUsageFragment();
+        Bundle args = new Bundle();
+        args.putInt(ARG_NETWORK_SUB_ID, subId);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.app_data_usage_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+        int subId = getArguments() != null
+                ? getArguments().getInt(ARG_NETWORK_SUB_ID, SUB_ID_NULL) : SUB_ID_NULL;
+        if (subId == SUB_ID_NULL) {
+            LOG.d("Cannot get the subscription id from arguments. Switching to default "
+                    + "subscription Id: " + subId);
+            SubscriptionManager subscriptionManager = context.getSystemService(
+                    SubscriptionManager.class);
+            subId = DataUsageUtils.getDefaultSubscriptionId(subscriptionManager);
+        }
+        mNetworkTemplate = DataUsageUtils.getMobileNetworkTemplate(telephonyManager, subId);
+        mPolicyEditor = new NetworkPolicyEditor(NetworkPolicyManager.from(context));
+        mAppsNetworkStatsManager = new AppsNetworkStatsManager(getContext());
+        mAppsNetworkStatsManager.registerListener(
+                use(AppDataUsagePreferenceController.class, R.string.pk_app_data_usage_detail));
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mBundle = getBundleForNetworkStats();
+
+        LoaderManager loaderManager = LoaderManager.getInstance(this);
+        mAppsNetworkStatsManager.startLoading(loaderManager, mBundle);
+    }
+
+    private Bundle getBundleForNetworkStats() {
+        long historyStart = System.currentTimeMillis();
+        long historyEnd = historyStart + 1;
+
+        long start = 0;
+        long end = 0;
+
+        boolean hasCycles = false;
+
+        NetworkPolicy policy = mPolicyEditor.getPolicy(mNetworkTemplate);
+        if (policy != null) {
+            Iterator<Pair<ZonedDateTime, ZonedDateTime>> it = NetworkPolicyManager
+                    .cycleIterator(policy);
+            while (it.hasNext()) {
+                Pair<ZonedDateTime, ZonedDateTime> cycle = it.next();
+                start = cycle.first.toInstant().toEpochMilli();
+                end = cycle.second.toInstant().toEpochMilli();
+                hasCycles = true;
+            }
+        }
+
+        if (!hasCycles) {
+            // no policy defined cycles; show entry for each four-week period
+            long cycleEnd = historyEnd;
+            while (cycleEnd > historyStart) {
+                long cycleStart = cycleEnd - (DateUtils.WEEK_IN_MILLIS * 4);
+
+                start = cycleStart;
+                end = cycleEnd;
+                cycleEnd = cycleStart;
+            }
+        }
+
+        return SummaryForAllUidLoader.buildArgs(mNetworkTemplate, start, end);
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+    Bundle getBundle() {
+        return mBundle;
+    }
+}
diff --git a/src/com/android/car/settings/datausage/AppDataUsagePreferenceController.java b/src/com/android/car/settings/datausage/AppDataUsagePreferenceController.java
new file mode 100644
index 0000000..577a602
--- /dev/null
+++ b/src/com/android/car/settings/datausage/AppDataUsagePreferenceController.java
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static android.net.TrafficStats.UID_REMOVED;
+import static android.net.TrafficStats.UID_TETHERING;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.net.NetworkStats;
+import android.os.UserHandle;
+import android.util.SparseArray;
+
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.ProgressBarPreference;
+import com.android.settingslib.AppItem;
+import com.android.settingslib.net.UidDetail;
+import com.android.settingslib.net.UidDetailProvider;
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+
+import javax.annotation.Nullable;
+
+/**
+ * Controller that adds all the applications using the data sorted by the amount of data used. The
+ * first application that used most amount of data will be at the top with progress 100 percentage.
+ * All other progress are calculated relatively.
+ */
+public class AppDataUsagePreferenceController extends
+        PreferenceController<PreferenceGroup> implements AppsNetworkStatsManager.Callback {
+
+    private final UidDetailProvider mUidDetailProvider;
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public AppDataUsagePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mUidDetailProvider = new UidDetailProvider(getContext());
+        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    public void onDataLoaded(@Nullable NetworkStats stats, @Nullable int[] restrictedUids) {
+        List<AppItem> items = new ArrayList<>();
+        long largest = 0;
+
+        List<UserInfo> profiles = mCarUserManagerHelper.getAllUsers();
+        SparseArray<AppItem> knownItems = new SparseArray<AppItem>();
+
+        NetworkStats.Entry entry = null;
+        if (stats != null) {
+            for (int i = 0; i < stats.size(); i++) {
+                entry = stats.getValues(i, entry);
+                long size = aggregateDataUsage(knownItems, items, entry, profiles);
+                largest = Math.max(size, largest);
+            }
+        }
+
+        updateRestrictedState(restrictedUids, knownItems, items, profiles);
+        sortAndAddPreferences(items, largest);
+    }
+
+    private long aggregateDataUsage(SparseArray<AppItem> knownItems, List<AppItem> items,
+            NetworkStats.Entry entry, List<UserInfo> profiles) {
+        int currentUserId = mCarUserManagerHelper.getCurrentProcessUserId();
+
+        // Decide how to collapse items together.
+        int uid = entry.uid;
+
+        int collapseKey;
+        int category;
+        int userId = UserHandle.getUserId(uid);
+
+        if (isUidValid(uid)) {
+            collapseKey = uid;
+            category = AppItem.CATEGORY_APP;
+            return accumulate(collapseKey, knownItems, entry, category, items);
+        }
+
+        if (!UserHandle.isApp(uid)) {
+            collapseKey = android.os.Process.SYSTEM_UID;
+            category = AppItem.CATEGORY_APP;
+            return accumulate(collapseKey, knownItems, entry, category, items);
+        }
+
+        if (profileContainsUserId(profiles, userId) && userId == currentUserId) {
+            // Add to app item.
+            collapseKey = uid;
+            category = AppItem.CATEGORY_APP;
+            return accumulate(collapseKey, knownItems, entry, category, items);
+        }
+
+        if (profileContainsUserId(profiles, userId) && userId != currentUserId) {
+            // Add to a managed user item.
+            int managedKey = UidDetailProvider.buildKeyForUser(userId);
+            long usersLargest = accumulate(managedKey, knownItems, entry, AppItem.CATEGORY_USER,
+                    items);
+            collapseKey = uid;
+            category = AppItem.CATEGORY_APP;
+            long appLargest = accumulate(collapseKey, knownItems, entry, category, items);
+            return Math.max(usersLargest, appLargest);
+        }
+
+        // If it is a removed user add it to the removed users' key.
+        Optional<UserInfo> info = profiles.stream().filter(
+                userInfo -> userInfo.id == userId).findFirst();
+        if (!info.isPresent()) {
+            collapseKey = UID_REMOVED;
+            category = AppItem.CATEGORY_APP;
+        } else {
+            // Add to other user item.
+            collapseKey = UidDetailProvider.buildKeyForUser(userId);
+            category = AppItem.CATEGORY_USER;
+        }
+
+        return accumulate(collapseKey, knownItems, entry, category, items);
+    }
+
+    /**
+     * UID does not belong to a regular app and maybe belongs to a removed application or
+     * application using for tethering traffic.
+     */
+    private boolean isUidValid(int uid) {
+        return !UserHandle.isApp(uid) && (uid == UID_REMOVED || uid == UID_TETHERING);
+    }
+
+    private boolean profileContainsUserId(List<UserInfo> profiles, int userId) {
+        return profiles.stream().anyMatch(userInfo -> userInfo.id == userId);
+    }
+
+    private void updateRestrictedState(@Nullable int[] restrictedUids,
+            SparseArray<AppItem> knownItems, List<AppItem> items, List<UserInfo> profiles) {
+        if (restrictedUids == null) {
+            return;
+        }
+
+        for (int i = 0; i < restrictedUids.length; ++i) {
+            int uid = restrictedUids[i];
+            // Only splice in restricted state for current user or managed users.
+            if (!profileContainsUserId(profiles, uid)) {
+                continue;
+            }
+
+            AppItem item = knownItems.get(uid);
+            if (item == null) {
+                item = new AppItem(uid);
+                item.total = -1;
+                items.add(item);
+                knownItems.put(item.key, item);
+            }
+            item.restricted = true;
+        }
+    }
+
+    private void sortAndAddPreferences(List<AppItem> items, long largest) {
+        Collections.sort(items);
+        for (int i = 0; i < items.size(); i++) {
+            int percentTotal = largest != 0 ? (int) (items.get(i).total * 100 / largest) : 0;
+            AppDataUsagePreference preference = new AppDataUsagePreference(getContext(),
+                    items.get(i), percentTotal, mUidDetailProvider);
+            getPreference().addPreference(preference);
+        }
+    }
+
+    /**
+     * Accumulate data usage of a network stats entry for the item mapped by the collapse key.
+     * Creates the item if needed.
+     *
+     * @param collapseKey the collapse key used to map the item.
+     * @param knownItems collection of known (already existing) items.
+     * @param entry the network stats entry to extract data usage from.
+     * @param itemCategory the item is categorized on the list view by this category. Must be
+     */
+    private static long accumulate(int collapseKey, SparseArray<AppItem> knownItems,
+            NetworkStats.Entry entry, int itemCategory, List<AppItem> items) {
+        int uid = entry.uid;
+        AppItem item = knownItems.get(collapseKey);
+        if (item == null) {
+            item = new AppItem(collapseKey);
+            item.category = itemCategory;
+            items.add(item);
+            knownItems.put(item.key, item);
+        }
+        item.addUid(uid);
+        item.total += entry.rxBytes + entry.txBytes;
+        return item.total;
+    }
+
+    private class AppDataUsagePreference extends ProgressBarPreference {
+
+        private final AppItem mItem;
+        private final int mPercent;
+        private UidDetail mDetail;
+
+        AppDataUsagePreference(Context context, AppItem item, int percent,
+                UidDetailProvider provider) {
+            super(context);
+            mItem = item;
+            mPercent = percent;
+            setLayoutResource(R.layout.progress_bar_preference);
+            setKey(String.valueOf(item.key));
+            if (item.restricted && item.total <= 0) {
+                setSummary(R.string.data_usage_app_restricted);
+            } else {
+                CharSequence s = DataUsageUtils.bytesToIecUnits(context, item.total);
+                setSummary(s);
+            }
+            mDetail = provider.getUidDetail(item.key, false /* blocking */);
+            if (mDetail != null) {
+                setAppInfo();
+            } else {
+                ThreadUtils.postOnBackgroundThread(() -> {
+                    mDetail = provider.getUidDetail(mItem.key, true /* blocking */);
+                    ThreadUtils.postOnMainThread(() -> setAppInfo());
+                });
+            }
+        }
+
+        private void setAppInfo() {
+            if (mDetail != null) {
+                setIcon(mDetail.icon);
+                setTitle(mDetail.label);
+                setProgress(mPercent);
+            } else {
+                setIcon(null);
+                setTitle(null);
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/datausage/AppsNetworkStatsManager.java b/src/com/android/car/settings/datausage/AppsNetworkStatsManager.java
new file mode 100644
index 0000000..2fc6cbc
--- /dev/null
+++ b/src/com/android/car/settings/datausage/AppsNetworkStatsManager.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
+
+import android.content.Context;
+import android.net.INetworkStatsService;
+import android.net.INetworkStatsSession;
+import android.net.NetworkPolicyManager;
+import android.net.NetworkStats;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+
+import com.android.car.settings.common.Logger;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.Nullable;
+
+/**
+ * Class to manage the callbacks needed to calculate network stats for an application.
+ */
+public class AppsNetworkStatsManager {
+
+    /**
+     * Callback that is called once the AppsNetworkStats is loaded.
+     */
+    public interface Callback {
+        /**
+         * Called when the data is successfully loaded from
+         * {@link AppsNetworkStatsManager.AppsNetworkStatsResult}.
+         */
+        void onDataLoaded(@Nullable NetworkStats stats, @Nullable int[] restrictedUids);
+    }
+
+    private static final Logger LOG = new Logger(AppsNetworkStatsManager.class);
+    private static final int NETWORK_STATS_ID = 1;
+
+    private final Context mContext;
+    private final NetworkPolicyManager mNetworkPolicyManager;
+    private final List<AppsNetworkStatsManager.Callback> mAppsNetworkStatsListeners =
+            new ArrayList<>();
+
+    private INetworkStatsSession mStatsSession;
+
+    AppsNetworkStatsManager(Context context) {
+        mContext = context;
+        mNetworkPolicyManager = NetworkPolicyManager.from(context);
+        try {
+            mStatsSession = INetworkStatsService.Stub.asInterface(
+                    ServiceManager.getService(Context.NETWORK_STATS_SERVICE)).openSession();
+        } catch (RemoteException e) {
+            LOG.e("Could not open a network session", e);
+        }
+    }
+
+    /**
+     * Registers a listener that will be notified once the data is loaded.
+     */
+    public void registerListener(AppsNetworkStatsManager.Callback appsNetworkStatsListener) {
+        if (!mAppsNetworkStatsListeners.contains(appsNetworkStatsListener)) {
+            mAppsNetworkStatsListeners.add(appsNetworkStatsListener);
+        }
+    }
+
+    /**
+     * Unregisters the listener.
+     */
+    public void unregisterListener(AppsNetworkStatsManager.Callback appsNetworkStatsListener) {
+        mAppsNetworkStatsListeners.remove(appsNetworkStatsListener);
+    }
+
+    /**
+     * Start calculating the storage stats.
+     */
+    public void startLoading(LoaderManager loaderManager, Bundle bundle) {
+        loaderManager.restartLoader(NETWORK_STATS_ID, bundle, new AppsNetworkStatsResult());
+    }
+
+    private void onAppsNetworkStatsLoaded(NetworkStats stats, int[] restrictedUids) {
+        for (AppsNetworkStatsManager.Callback listener : mAppsNetworkStatsListeners) {
+            listener.onDataLoaded(stats, restrictedUids);
+        }
+    }
+
+    /**
+     * Callback to calculate applications network stats.
+     */
+    private class AppsNetworkStatsResult implements LoaderManager.LoaderCallbacks<NetworkStats> {
+        @Override
+        public Loader<NetworkStats> onCreateLoader(int id, Bundle args) {
+            return new SummaryForAllUidLoader(mContext, mStatsSession, args);
+        }
+
+        @Override
+        public void onLoadFinished(Loader<NetworkStats> loader, NetworkStats data) {
+            int[] restrictedUids = mNetworkPolicyManager.getUidsWithPolicy(
+                    POLICY_REJECT_METERED_BACKGROUND);
+            onAppsNetworkStatsLoaded(data, restrictedUids);
+        }
+
+        @Override
+        public void onLoaderReset(Loader<NetworkStats> loader) {
+            onAppsNetworkStatsLoaded(/* stats= */ null, /* restrictedUids= */ new int[0]);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/datausage/CycleResetDayOfMonthPickerPreferenceController.java b/src/com/android/car/settings/datausage/CycleResetDayOfMonthPickerPreferenceController.java
new file mode 100644
index 0000000..9d0f96a
--- /dev/null
+++ b/src/com/android/car/settings/datausage/CycleResetDayOfMonthPickerPreferenceController.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.text.format.Time;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Preference which opens a {@link UsageCycleResetDayOfMonthPickerDialog} in order to pick the date
+ * on which the data warning/limit cycle should end.
+ */
+public class CycleResetDayOfMonthPickerPreferenceController extends
+        DataWarningAndLimitBasePreferenceController<Preference> implements
+        UsageCycleResetDayOfMonthPickerDialog.ResetDayOfMonthPickedListener {
+
+    private static final String CYCLE_PICKER_DIALOG_TAG = "cycle_picker_dialog_tag";
+
+    public CycleResetDayOfMonthPickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        UsageCycleResetDayOfMonthPickerDialog dialog =
+                (UsageCycleResetDayOfMonthPickerDialog) getFragmentController().findDialogByTag(
+                        CYCLE_PICKER_DIALOG_TAG);
+        if (dialog != null) {
+            dialog.setResetDayOfMonthPickedListener(/* listener= */ this);
+        }
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+
+        UsageCycleResetDayOfMonthPickerDialog dialog =
+                UsageCycleResetDayOfMonthPickerDialog.newInstance(
+                        getNetworkPolicyEditor().getPolicyCycleDay(getNetworkTemplate()));
+        dialog.setResetDayOfMonthPickedListener(/* listener= */ this);
+        getFragmentController().showDialog(dialog, CYCLE_PICKER_DIALOG_TAG);
+        return true;
+    }
+
+    @Override
+    public void onDayOfMonthPicked(int dayOfMonth) {
+        getNetworkPolicyEditor().setPolicyCycleDay(getNetworkTemplate(), dayOfMonth,
+                new Time().timezone);
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataLimitPreferenceController.java b/src/com/android/car/settings/datausage/DataLimitPreferenceController.java
new file mode 100644
index 0000000..c0f208b
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataLimitPreferenceController.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static android.net.NetworkPolicy.LIMIT_DISABLED;
+import static android.net.NetworkPolicy.WARNING_DISABLED;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.datausage.UsageBytesThresholdPickerDialog.BytesThresholdPickedListener;
+
+/** Controls setting the data limit threshold. */
+public class DataLimitPreferenceController extends
+        DataWarningAndLimitBasePreferenceController<PreferenceGroup> implements
+        Preference.OnPreferenceChangeListener, ConfirmationDialogFragment.ConfirmListener,
+        Preference.OnPreferenceClickListener {
+
+    @VisibleForTesting
+    static final float LIMIT_BYTES_MULTIPLIER = 1.2f;
+    private static final long GIB_IN_BYTES = 1024 * 1024 * 1024;
+
+    private final BytesThresholdPickedListener mThresholdPickedListener = numBytes -> {
+        getNetworkPolicyEditor().setPolicyLimitBytes(getNetworkTemplate(), numBytes);
+        refreshUi();
+    };
+
+    private TwoStatePreference mEnableDataLimitPreference;
+    private Preference mSetDataLimitPreference;
+
+    public DataLimitPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mEnableDataLimitPreference = (TwoStatePreference) getPreference().findPreference(
+                getContext().getString(R.string.pk_data_set_limit));
+        mEnableDataLimitPreference.setOnPreferenceChangeListener(this);
+        mSetDataLimitPreference = getPreference().findPreference(
+                getContext().getString(R.string.pk_data_limit));
+        mSetDataLimitPreference.setOnPreferenceClickListener(this);
+
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG),
+                /* confirmListener= */ this,
+                /* rejectListener= */ null);
+
+        UsageBytesThresholdPickerDialog dialog =
+                (UsageBytesThresholdPickerDialog) getFragmentController().findDialogByTag(
+                        UsageBytesThresholdPickerDialog.TAG);
+        if (dialog != null) {
+            dialog.setBytesThresholdPickedListener(mThresholdPickedListener);
+        }
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preference) {
+        long limitBytes = getNetworkPolicyEditor().getPolicyLimitBytes(getNetworkTemplate());
+
+        if (limitBytes == LIMIT_DISABLED) {
+            mEnableDataLimitPreference.setChecked(false);
+            mSetDataLimitPreference.setSummary(null);
+        } else {
+            mEnableDataLimitPreference.setChecked(true);
+            mSetDataLimitPreference.setSummary(
+                    DataUsageUtils.bytesToIecUnits(getContext(), limitBytes));
+        }
+        mSetDataLimitPreference.setEnabled(mEnableDataLimitPreference.isChecked());
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        boolean enabled = (Boolean) newValue;
+        if (!enabled) {
+            getNetworkPolicyEditor().setPolicyLimitBytes(getNetworkTemplate(), LIMIT_DISABLED);
+            refreshUi();
+            return true;
+        }
+
+        ConfirmationDialogFragment dialogFragment =
+                new ConfirmationDialogFragment.Builder(getContext())
+                        .setTitle(R.string.data_usage_limit_dialog_title)
+                        .setMessage(R.string.data_usage_limit_dialog_mobile)
+                        .setPositiveButton(android.R.string.ok, this)
+                        .setNegativeButton(android.R.string.cancel, null)
+                        .build();
+        getFragmentController().showDialog(dialogFragment, ConfirmationDialogFragment.TAG);
+
+        // This preference is enabled / disabled by ConfirmationDialogFragment.
+        return false;
+    }
+
+    @Override
+    public void onConfirm(@Nullable Bundle arguments) {
+        long warningBytes = getNetworkPolicyEditor().getPolicyWarningBytes(getNetworkTemplate());
+        long minLimitBytes = 0;
+        if (warningBytes != WARNING_DISABLED) {
+            minLimitBytes = (long) (warningBytes * LIMIT_BYTES_MULTIPLIER);
+        }
+
+        long limitBytes = Math.max(5 * GIB_IN_BYTES, minLimitBytes);
+
+        getNetworkPolicyEditor().setPolicyLimitBytes(getNetworkTemplate(), limitBytes);
+        refreshUi();
+    }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference) {
+        UsageBytesThresholdPickerDialog dialog = UsageBytesThresholdPickerDialog.newInstance(
+                R.string.data_usage_limit_editor_title,
+                getNetworkPolicyEditor().getPolicyLimitBytes(getNetworkTemplate()));
+        dialog.setBytesThresholdPickedListener(mThresholdPickedListener);
+        getFragmentController().showDialog(dialog, UsageBytesThresholdPickerDialog.TAG);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataUsageEntryPreferenceController.java b/src/com/android/car/settings/datausage/DataUsageEntryPreferenceController.java
new file mode 100644
index 0000000..be74b3c
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataUsageEntryPreferenceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionPlan;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.network.NetworkUtils;
+
+/** Preference controller which shows how much data has been used so far. */
+public class DataUsageEntryPreferenceController extends PreferenceController<Preference> {
+
+    public DataUsageEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!NetworkUtils.hasMobileNetwork(
+                getContext().getSystemService(ConnectivityManager.class))) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return AVAILABLE;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(formatUsedData());
+    }
+
+    private CharSequence formatUsedData() {
+        SubscriptionManager subscriptionManager = getContext().getSystemService(
+                SubscriptionManager.class);
+        int defaultSubId = subscriptionManager.getDefaultSubscriptionId();
+        if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            return null;
+        }
+        SubscriptionPlan defaultPlan = DataUsageUtils.getPrimaryPlan(subscriptionManager,
+                defaultSubId);
+        if (defaultPlan == null) {
+            return null;
+        }
+
+        return DataUsageUtils.bytesToIecUnits(getContext(), defaultPlan.getDataUsageBytes());
+    }
+
+}
diff --git a/src/com/android/car/settings/datausage/DataUsageFragment.java b/src/com/android/car/settings/datausage/DataUsageFragment.java
new file mode 100644
index 0000000..7eaf80f
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataUsageFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Data usage settings homepage. */
+public class DataUsageFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.data_usage_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataUsagePreferenceController.java b/src/com/android/car/settings/datausage/DataUsagePreferenceController.java
new file mode 100644
index 0000000..b0febdd
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataUsagePreferenceController.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2019 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.car.settings.datausage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.telephony.SubscriptionManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller to handle the business logic for AppDataUsage preference on the data usage screen
+ */
+public class DataUsagePreferenceController extends PreferenceController<Preference> {
+
+    private int mSubId = Integer.MIN_VALUE;
+
+    private SubscriptionManager mSubscriptionManager;
+
+    public DataUsagePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        int subId = mSubId != Integer.MIN_VALUE ? mSubId : getDefaultSubId();
+        AppDataUsageFragment appDataUsageFragment = AppDataUsageFragment.newInstance(subId);
+        getFragmentController().launchFragment(appDataUsageFragment);
+        return true;
+    }
+
+    /**
+     * Sets the subId for which data usage will be loaded. If this is not set then default subId
+     * will be used to load data.
+     */
+    public void setSubId(int subId) {
+        mSubId = subId;
+    }
+
+    private int getDefaultSubId() {
+        return DataUsageUtils.getDefaultSubscriptionId(mSubscriptionManager);
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/car/settings/datausage/DataUsageSummaryPreference.java
new file mode 100644
index 0000000..79f2952
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataUsageSummaryPreference.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.content.Context;
+import android.content.Intent;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.annotation.StyleRes;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ProgressBarPreference;
+
+/** Extends {@link ProgressBarPreference} in order to support multiple text fields. */
+public class DataUsageSummaryPreference extends ProgressBarPreference {
+
+    private CharSequence mDataLimitText;
+    private CharSequence mRemainingBillingCycleText;
+    private CharSequence mCarrierInfoText;
+    private Intent mManageSubscriptionIntent;
+    @StyleRes
+    private int mCarrierInfoTextStyle = R.style.DataUsageSummaryCarrierInfoTextAppearance;
+
+    public DataUsageSummaryPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init();
+    }
+
+    public DataUsageSummaryPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init();
+    }
+
+    public DataUsageSummaryPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public DataUsageSummaryPreference(Context context) {
+        super(context);
+        init();
+    }
+
+    private void init() {
+        setLayoutResource(R.layout.data_usage_summary_preference);
+    }
+
+    /** Sets the data limit text. */
+    public void setDataLimitText(CharSequence text) {
+        if (!TextUtils.equals(mDataLimitText, text)) {
+            mDataLimitText = text;
+            notifyChanged();
+        }
+    }
+
+    /** Gets the data limit text. */
+    public CharSequence getDataLimitText() {
+        return mDataLimitText;
+    }
+
+    /** Sets the remaining billing cycle description. */
+    public void setRemainingBillingCycleText(CharSequence text) {
+        if (!TextUtils.equals(mRemainingBillingCycleText, text)) {
+            mRemainingBillingCycleText = text;
+            notifyChanged();
+        }
+    }
+
+    /** Gets the remaining billing cycle description. */
+    public CharSequence getRemainingBillingCycleText() {
+        return mRemainingBillingCycleText;
+    }
+
+    /** Sets the carrier info text. */
+    public void setCarrierInfoText(CharSequence text) {
+        if (!TextUtils.equals(mCarrierInfoText, text)) {
+            mCarrierInfoText = text;
+            notifyChanged();
+        }
+    }
+
+    /** Gets the carrier info text. */
+    public CharSequence getCarrierInfoText() {
+        return mCarrierInfoText;
+    }
+
+    /** Sets the carrier info text style. */
+    public void setCarrierInfoTextStyle(@StyleRes int styleId) {
+        if (mCarrierInfoTextStyle != styleId) {
+            mCarrierInfoTextStyle = styleId;
+            notifyChanged();
+        }
+    }
+
+    /** Gets the carrier info text style. */
+    @StyleRes
+    public int getCarrierInfoTextStyle() {
+        return mCarrierInfoTextStyle;
+    }
+
+    /** Sets the manage subscription intent. */
+    public void setManageSubscriptionIntent(Intent intent) {
+        mManageSubscriptionIntent = intent;
+        notifyChanged();
+    }
+
+    /** Gets the manage subscription intent. */
+    public Intent getManageSubscriptionIntent() {
+        return mManageSubscriptionIntent;
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+
+        setTextAndVisibility((TextView) view.findViewById(R.id.data_limit_text), mDataLimitText);
+        setTextAndVisibility((TextView) view.findViewById(R.id.remaining_billing_cycle_time_text),
+                mRemainingBillingCycleText);
+        TextView carrierInfo = (TextView) view.findViewById(R.id.carrier_info_text);
+        setTextAndVisibility(carrierInfo, mCarrierInfoText);
+        carrierInfo.setTextAppearance(mCarrierInfoTextStyle);
+
+        Button button = (Button) view.findViewById(R.id.manage_subscription_button);
+        if (mManageSubscriptionIntent != null) {
+            button.setVisibility(View.VISIBLE);
+            button.setOnClickListener(v -> getContext().startActivity(mManageSubscriptionIntent));
+        } else {
+            button.setVisibility(View.GONE);
+        }
+    }
+
+    private void setTextAndVisibility(TextView textView, CharSequence value) {
+        if (!TextUtils.isEmpty(value)) {
+            textView.setText(value);
+            textView.setVisibility(View.VISIBLE);
+        } else {
+            textView.setVisibility(View.GONE);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceController.java
new file mode 100644
index 0000000..aff3089
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceController.java
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.net.NetworkTemplate;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionPlan;
+import android.telephony.TelephonyManager;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.TextUtils;
+import android.text.format.Formatter;
+import android.text.style.AbsoluteSizeSpan;
+import android.util.RecurrenceRule;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.network.NetworkUtils;
+import com.android.settingslib.net.DataUsageController;
+import com.android.settingslib.utils.StringUtil;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Business logic for setting the {@link DataUsageSummaryPreference} with the current data usage and
+ * the appropriate summary text.
+ */
+public class DataUsageSummaryPreferenceController extends
+        PreferenceController<DataUsageSummaryPreference> {
+
+    private static final long MILLIS_IN_A_DAY = TimeUnit.DAYS.toMillis(1);
+    private static final long MILLIS_IN_AN_HOUR = TimeUnit.HOURS.toMillis(1);
+    private static final long MILLIS_IN_A_MINUTE = TimeUnit.MINUTES.toMillis(1);
+    private static final long MILLIS_IN_A_SECOND = TimeUnit.SECONDS.toMillis(1);
+    private static final int MAX_PROGRESS_BAR_VALUE = 1000;
+
+    @VisibleForTesting
+    static final long WARNING_AGE = TimeUnit.HOURS.toMillis(6L);
+
+    private final SubscriptionManager mSubscriptionManager;
+    private final TelephonyManager mTelephonyManager;
+    private final DataUsageController mDataUsageController;
+    private final NetworkTemplate mDefaultTemplate;
+
+    /** Name of the carrier, or null if not available */
+    @Nullable
+    private CharSequence mCarrierName;
+    /** The number of registered plans, [0,N] */
+    private int mDataplanCount;
+    /** The time of the last update in milliseconds since the epoch, or -1 if unknown */
+    private long mSnapshotTime;
+    /** The size of the first registered plan if one exists. -1 if no information is available. */
+    private long mDataplanSize = -1;
+    /**
+     * Limit to track. Size of the first registered plan if one exists. Otherwise size of data limit
+     * or warning.
+     */
+    private long mDataplanTrackingThreshold;
+    /** The number of bytes used since the start of the cycle. */
+    private long mDataplanUse;
+    /** The ending time of the billing cycle in ms since the epoch */
+    private long mCycleEnd;
+    private Intent mManageSubscriptionIntent;
+
+    public DataUsageSummaryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+        mTelephonyManager = context.getSystemService(TelephonyManager.class);
+        mDataUsageController = new DataUsageController(context);
+
+        int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(mSubscriptionManager);
+        mDefaultTemplate = DataUsageUtils.getMobileNetworkTemplate(mTelephonyManager, defaultSubId);
+    }
+
+    @Override
+    protected Class<DataUsageSummaryPreference> getPreferenceType() {
+        return DataUsageSummaryPreference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return NetworkUtils.hasSim(mTelephonyManager) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setMin(0);
+        getPreference().setMax(MAX_PROGRESS_BAR_VALUE);
+    }
+
+    @Override
+    protected void updateState(DataUsageSummaryPreference preference) {
+        DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo(
+                mDefaultTemplate);
+
+        if (mSubscriptionManager != null) {
+            refreshDataplanInfo(info);
+        }
+
+        preference.setTitle(getUsageText());
+        preference.setManageSubscriptionIntent(mManageSubscriptionIntent);
+
+        preference.setDataLimitText(getLimitText(info));
+        preference.setRemainingBillingCycleText(getRemainingBillingCycleTimeText());
+
+        // Carrier Info has special styling based on when it was last updated.
+        preference.setCarrierInfoText(getCarrierInfoText());
+        long updateAgeMillis = calculateTruncatedUpdateAge(mSnapshotTime);
+        if (updateAgeMillis <= WARNING_AGE) {
+            preference.setCarrierInfoTextStyle(R.style.DataUsageSummaryCarrierInfoTextAppearance);
+        } else {
+            preference.setCarrierInfoTextStyle(
+                    R.style.DataUsageSummaryCarrierInfoWarningTextAppearance);
+        }
+
+        // Set the progress bar values.
+        preference.setMinLabel(DataUsageUtils.bytesToIecUnits(getContext(), /* byteValue= */ 0));
+        preference.setMaxLabel(
+                DataUsageUtils.bytesToIecUnits(getContext(), mDataplanTrackingThreshold));
+        preference.setProgress(scaleUsage(mDataplanUse, mDataplanTrackingThreshold));
+    }
+
+    private CharSequence getUsageText() {
+        Formatter.BytesResult usedResult = Formatter.formatBytes(getContext().getResources(),
+                mDataplanUse, Formatter.FLAG_CALCULATE_ROUNDED | Formatter.FLAG_IEC_UNITS);
+        SpannableString usageNumberText = new SpannableString(usedResult.value);
+        int textSize = getContext().getResources().getDimensionPixelSize(
+                R.dimen.usage_number_text_size);
+
+        // Set the usage text (only the number) to the size defined by usage_number_text_size.
+        usageNumberText.setSpan(new AbsoluteSizeSpan(textSize), /* start= */ 0,
+                usageNumberText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+
+        CharSequence template = getContext().getText(R.string.data_used_formatted);
+        CharSequence usageText = TextUtils.expandTemplate(template, usageNumberText,
+                usedResult.units);
+        return usageText;
+    }
+
+
+    private CharSequence getLimitText(DataUsageController.DataUsageInfo info) {
+        if (info.warningLevel > 0 && info.limitLevel > 0) {
+            return TextUtils.expandTemplate(
+                    getContext().getText(R.string.cell_data_warning_and_limit),
+                    DataUsageUtils.bytesToIecUnits(getContext(), info.warningLevel),
+                    DataUsageUtils.bytesToIecUnits(getContext(), info.limitLevel));
+        } else if (info.warningLevel > 0) {
+            return TextUtils.expandTemplate(getContext().getText(R.string.cell_data_warning),
+                    DataUsageUtils.bytesToIecUnits(getContext(), info.warningLevel));
+        } else if (info.limitLevel > 0) {
+            return TextUtils.expandTemplate(getContext().getText(R.string.cell_data_limit),
+                    DataUsageUtils.bytesToIecUnits(getContext(), info.limitLevel));
+        }
+
+        return null;
+    }
+
+    private CharSequence getRemainingBillingCycleTimeText() {
+        long millisLeft = mCycleEnd - System.currentTimeMillis();
+        if (millisLeft <= 0) {
+            return getContext().getString(R.string.billing_cycle_none_left);
+        } else {
+            int daysLeft = (int) (millisLeft / MILLIS_IN_A_DAY);
+            return daysLeft < 1
+                    ? getContext().getString(R.string.billing_cycle_less_than_one_day_left)
+                    : getContext().getResources().getQuantityString(
+                            R.plurals.billing_cycle_days_left, daysLeft, daysLeft);
+        }
+    }
+
+    private CharSequence getCarrierInfoText() {
+        if (mDataplanCount > 0 && mSnapshotTime >= 0L) {
+            long updateAgeMillis = calculateTruncatedUpdateAge(mSnapshotTime);
+
+            int textResourceId;
+            CharSequence updateTime = null;
+            if (updateAgeMillis == 0) {
+                if (mCarrierName != null) {
+                    textResourceId = R.string.carrier_and_update_now_text;
+                } else {
+                    textResourceId = R.string.no_carrier_update_now_text;
+                }
+            } else {
+                if (mCarrierName != null) {
+                    textResourceId = R.string.carrier_and_update_text;
+                } else {
+                    textResourceId = R.string.no_carrier_update_text;
+                }
+                updateTime = StringUtil.formatElapsedTime(getContext(),
+                        updateAgeMillis, /* withSeconds= */ false);
+            }
+            return TextUtils.expandTemplate(getContext().getText(textResourceId), mCarrierName,
+                    updateTime);
+        }
+
+        return null;
+    }
+
+    private void refreshDataplanInfo(DataUsageController.DataUsageInfo info) {
+        // Reset data before overwriting.
+        mCarrierName = null;
+        mDataplanCount = 0;
+        mSnapshotTime = -1L;
+        mDataplanSize = -1L;
+        mDataplanTrackingThreshold = getSummaryLimit(info);
+        mDataplanUse = info.usageLevel;
+        mCycleEnd = info.cycleEnd;
+
+        int defaultSubId = SubscriptionManager.getDefaultSubscriptionId();
+        SubscriptionInfo subInfo = mSubscriptionManager.getDefaultDataSubscriptionInfo();
+        if (subInfo != null) {
+            mCarrierName = subInfo.getCarrierName();
+            List<SubscriptionPlan> plans = mSubscriptionManager.getSubscriptionPlans(defaultSubId);
+            SubscriptionPlan primaryPlan = DataUsageUtils.getPrimaryPlan(mSubscriptionManager,
+                    defaultSubId);
+            if (primaryPlan != null) {
+                mDataplanCount = plans.size();
+                mDataplanSize = primaryPlan.getDataLimitBytes();
+                if (mDataplanSize == SubscriptionPlan.BYTES_UNLIMITED) {
+                    mDataplanSize = -1L;
+                }
+                mDataplanTrackingThreshold = mDataplanSize;
+                mDataplanUse = primaryPlan.getDataUsageBytes();
+
+                RecurrenceRule rule = primaryPlan.getCycleRule();
+                if (rule != null && rule.start != null && rule.end != null) {
+                    mCycleEnd = rule.end.toEpochSecond() * MILLIS_IN_A_SECOND;
+                }
+                mSnapshotTime = primaryPlan.getDataUsageTime();
+            }
+        }
+        mManageSubscriptionIntent = mSubscriptionManager.createManageSubscriptionIntent(
+                defaultSubId);
+    }
+
+    /** Scales the current usage to be an integer between 0 and {@link #MAX_PROGRESS_BAR_VALUE}. */
+    private int scaleUsage(long usage, long maxUsage) {
+        if (maxUsage == 0) {
+            return 0;
+        }
+        return (int) ((usage / (float) maxUsage) * MAX_PROGRESS_BAR_VALUE);
+    }
+
+    /**
+     * Gets the max displayed limit based on {@link DataUsageController.DataUsageInfo}.
+     *
+     * @return the most appropriate limit for the data usage summary. Use the total usage when it
+     * is higher than the limit and warning level. Use the limit when it is set and less than usage.
+     * Otherwise use warning level.
+     */
+    private static long getSummaryLimit(DataUsageController.DataUsageInfo info) {
+        long limit = info.limitLevel;
+        if (limit <= 0) {
+            limit = info.warningLevel;
+        }
+        if (info.usageLevel > limit) {
+            limit = info.usageLevel;
+        }
+        return limit;
+    }
+
+    /**
+     * Returns the time since the last carrier update, as defined by {@link #mSnapshotTime},
+     * truncated to the nearest day / hour / minute in milliseconds, or 0 if less than 1 min.
+     */
+    private long calculateTruncatedUpdateAge(long snapshotTime) {
+        long updateAgeMillis = System.currentTimeMillis() - snapshotTime;
+
+        // Round to nearest whole unit
+        if (updateAgeMillis >= MILLIS_IN_A_DAY) {
+            return (updateAgeMillis / MILLIS_IN_A_DAY) * MILLIS_IN_A_DAY;
+        } else if (updateAgeMillis >= MILLIS_IN_AN_HOUR) {
+            return (updateAgeMillis / MILLIS_IN_AN_HOUR) * MILLIS_IN_AN_HOUR;
+        } else if (updateAgeMillis >= MILLIS_IN_A_MINUTE) {
+            return (updateAgeMillis / MILLIS_IN_A_MINUTE) * MILLIS_IN_A_MINUTE;
+        } else {
+            return 0;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataUsageUtils.java b/src/com/android/car/settings/datausage/DataUsageUtils.java
new file mode 100644
index 0000000..ea85ccb
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataUsageUtils.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.content.Context;
+import android.net.NetworkTemplate;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionPlan;
+import android.telephony.TelephonyManager;
+import android.text.BidiFormatter;
+import android.text.format.Formatter;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.internal.util.CollectionUtils;
+
+import java.util.List;
+
+/** Provides helpful utilities related to data usage. */
+public final class DataUsageUtils {
+
+    @VisibleForTesting
+    static final long PETA = 1000000000000000L;
+
+    private DataUsageUtils() {
+    }
+
+    /**
+     * Returns the mobile network template given the subscription id.
+     */
+    public static NetworkTemplate getMobileNetworkTemplate(TelephonyManager telephonyManager,
+            int subscriptionId) {
+        NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
+                telephonyManager.getSubscriberId(subscriptionId));
+        return NetworkTemplate.normalize(mobileAll, telephonyManager.getMergedSubscriberIds());
+    }
+
+    /**
+     * Returns the default subscription if available else returns
+     * {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}.
+     */
+    public static int getDefaultSubscriptionId(SubscriptionManager subscriptionManager) {
+        if (subscriptionManager == null) {
+            return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+        }
+        SubscriptionInfo subscriptionInfo = subscriptionManager.getDefaultDataSubscriptionInfo();
+        if (subscriptionInfo == null) {
+            List<SubscriptionInfo> list = subscriptionManager.getAllSubscriptionInfoList();
+            if (list.size() == 0) {
+                return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+            }
+            subscriptionInfo = list.get(0);
+        }
+        return subscriptionInfo.getSubscriptionId();
+    }
+
+    /**
+     * Format byte value to readable string using IEC units.
+     */
+    public static CharSequence bytesToIecUnits(Context context, long byteValue) {
+        Formatter.BytesResult res = Formatter.formatBytes(context.getResources(), byteValue,
+                Formatter.FLAG_IEC_UNITS);
+        return BidiFormatter.getInstance().unicodeWrap(context.getString(
+                com.android.internal.R.string.fileSizeSuffix, res.value, res.units));
+    }
+
+    /**
+     * Returns the primary subscription plan. Returns {@code null} if {@link SubscriptionPlan}
+     * doesn't exist for a given subscriptionId or if the first {@link SubscriptionPlan} has
+     * invalid properties.
+     */
+    @Nullable
+    public static SubscriptionPlan getPrimaryPlan(SubscriptionManager subManager,
+            int subscriptionId) {
+        List<SubscriptionPlan> plans = subManager.getSubscriptionPlans(subscriptionId);
+        if (CollectionUtils.isEmpty(plans)) {
+            return null;
+        }
+        // First plan in the list is the primary plan
+        SubscriptionPlan plan = plans.get(0);
+        return plan.getDataLimitBytes() > 0
+                && saneSize(plan.getDataUsageBytes())
+                && plan.getCycleRule() != null ? plan : null;
+    }
+
+    private static boolean saneSize(long value) {
+        return value >= 0L && value < PETA;
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataWarningAndLimitActivity.java b/src/com/android/car/settings/datausage/DataWarningAndLimitActivity.java
new file mode 100644
index 0000000..5f0aef2
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataWarningAndLimitActivity.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.net.NetworkPolicyManager;
+import android.net.NetworkTemplate;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/** Separate activity to enter the data warning and limit settings via activity name. */
+public class DataWarningAndLimitActivity extends BaseCarSettingsActivity {
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        NetworkTemplate template = getIntent().getParcelableExtra(
+                NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE);
+        return DataWarningAndLimitFragment.newInstance(template);
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataWarningAndLimitBasePreferenceController.java b/src/com/android/car/settings/datausage/DataWarningAndLimitBasePreferenceController.java
new file mode 100644
index 0000000..b8315b8
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataWarningAndLimitBasePreferenceController.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.NetworkTemplate;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.NetworkPolicyEditor;
+
+/**
+ * Defines the shared getters and setters used by {@link PreferenceController} implementations
+ * related to data usage warning and limit.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class DataWarningAndLimitBasePreferenceController<V extends Preference> extends
+        PreferenceController<V> {
+
+    private NetworkPolicyEditor mNetworkPolicyEditor;
+    private NetworkTemplate mNetworkTemplate;
+
+    public DataWarningAndLimitBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Gets the {@link NetworkPolicyEditor}. */
+    public NetworkPolicyEditor getNetworkPolicyEditor() {
+        return mNetworkPolicyEditor;
+    }
+
+    /** Sets the {@link NetworkPolicyEditor}. */
+    public void setNetworkPolicyEditor(NetworkPolicyEditor networkPolicyEditor) {
+        mNetworkPolicyEditor = networkPolicyEditor;
+    }
+
+    /** Gets the {@link NetworkTemplate}. */
+    public NetworkTemplate getNetworkTemplate() {
+        return mNetworkTemplate;
+    }
+
+    /** Sets the {@link NetworkTemplate}. */
+    public void setNetworkTemplate(NetworkTemplate networkTemplate) {
+        mNetworkTemplate = networkTemplate;
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataWarningAndLimitFragment.java b/src/com/android/car/settings/datausage/DataWarningAndLimitFragment.java
new file mode 100644
index 0000000..c8b172a
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataWarningAndLimitFragment.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.content.Context;
+import android.net.NetworkPolicyManager;
+import android.net.NetworkTemplate;
+import android.os.Bundle;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.NetworkPolicyEditor;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** Screen to set data warning and limit thresholds. */
+public class DataWarningAndLimitFragment extends SettingsFragment {
+
+    private TelephonyManager mTelephonyManager;
+    private SubscriptionManager mSubscriptionManager;
+    private NetworkPolicyEditor mPolicyEditor;
+    private NetworkTemplate mNetworkTemplate;
+
+    /**
+     * Creates a new instance of {@link DataWarningAndLimitFragment} with the given template. If the
+     * template is {@code null}, the fragment will use the default data network template.
+     */
+    public static DataWarningAndLimitFragment newInstance(@Nullable NetworkTemplate template) {
+        DataWarningAndLimitFragment fragment = new DataWarningAndLimitFragment();
+        Bundle args = new Bundle();
+        args.putParcelable(NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE, template);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.data_warning_and_limit_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        mPolicyEditor = new NetworkPolicyEditor(NetworkPolicyManager.from(context));
+        mNetworkTemplate = getArguments().getParcelable(
+                NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE);
+        if (mNetworkTemplate == null) {
+            mTelephonyManager = context.getSystemService(TelephonyManager.class);
+            mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+            mNetworkTemplate = DataUsageUtils.getMobileNetworkTemplate(mTelephonyManager,
+                    DataUsageUtils.getDefaultSubscriptionId(mSubscriptionManager));
+        }
+
+        // Loads the current policies to the policy editor cache.
+        mPolicyEditor.read();
+
+        List<DataWarningAndLimitBasePreferenceController> preferenceControllers =
+                Arrays.asList(
+                        use(CycleResetDayOfMonthPickerPreferenceController.class,
+                                R.string.pk_data_usage_cycle),
+                        use(DataWarningPreferenceController.class, R.string.pk_data_warning_group),
+                        use(DataLimitPreferenceController.class, R.string.pk_data_limit_group));
+
+        for (DataWarningAndLimitBasePreferenceController preferenceController :
+                preferenceControllers) {
+            preferenceController.setNetworkPolicyEditor(mPolicyEditor);
+            preferenceController.setNetworkTemplate(mNetworkTemplate);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/datausage/DataWarningPreferenceController.java b/src/com/android/car/settings/datausage/DataWarningPreferenceController.java
new file mode 100644
index 0000000..b16857a
--- /dev/null
+++ b/src/com/android/car/settings/datausage/DataWarningPreferenceController.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static android.net.NetworkPolicy.WARNING_DISABLED;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.datausage.UsageBytesThresholdPickerDialog.BytesThresholdPickedListener;
+import com.android.settingslib.net.DataUsageController;
+
+/** Controls setting the data warning threshold. */
+public class DataWarningPreferenceController extends
+        DataWarningAndLimitBasePreferenceController<PreferenceGroup> implements
+        Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
+
+    private final DataUsageController mDataUsageController;
+    private final BytesThresholdPickedListener mThresholdPickedListener = numBytes -> {
+        getNetworkPolicyEditor().setPolicyWarningBytes(getNetworkTemplate(), numBytes);
+        refreshUi();
+    };
+
+    private TwoStatePreference mEnableDataWarningPreference;
+    private Preference mSetDataWarningPreference;
+
+    public DataWarningPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mDataUsageController = new DataUsageController(getContext());
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mEnableDataWarningPreference = (TwoStatePreference) getPreference().findPreference(
+                getContext().getString(R.string.pk_data_set_warning));
+        mEnableDataWarningPreference.setOnPreferenceChangeListener(this);
+        mSetDataWarningPreference = getPreference().findPreference(
+                getContext().getString(R.string.pk_data_warning));
+        mSetDataWarningPreference.setOnPreferenceClickListener(this);
+
+        UsageBytesThresholdPickerDialog dialog =
+                (UsageBytesThresholdPickerDialog) getFragmentController().findDialogByTag(
+                        UsageBytesThresholdPickerDialog.TAG);
+        if (dialog != null) {
+            dialog.setBytesThresholdPickedListener(mThresholdPickedListener);
+        }
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preference) {
+        long warningBytes = getNetworkPolicyEditor().getPolicyWarningBytes(getNetworkTemplate());
+        if (warningBytes == WARNING_DISABLED) {
+            mSetDataWarningPreference.setSummary(null);
+            mEnableDataWarningPreference.setChecked(false);
+        } else {
+            mSetDataWarningPreference.setSummary(
+                    DataUsageUtils.bytesToIecUnits(getContext(), warningBytes));
+            mEnableDataWarningPreference.setChecked(true);
+        }
+
+        mSetDataWarningPreference.setEnabled(mEnableDataWarningPreference.isChecked());
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        boolean enabled = (Boolean) newValue;
+        getNetworkPolicyEditor().setPolicyWarningBytes(getNetworkTemplate(),
+                enabled ? mDataUsageController.getDefaultWarningLevel() : WARNING_DISABLED);
+        refreshUi();
+        return true;
+    }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference) {
+        UsageBytesThresholdPickerDialog dialog = UsageBytesThresholdPickerDialog.newInstance(
+                R.string.data_usage_warning_editor_title,
+                getNetworkPolicyEditor().getPolicyWarningBytes(getNetworkTemplate()));
+        dialog.setBytesThresholdPickedListener(mThresholdPickedListener);
+        getFragmentController().showDialog(dialog, UsageBytesThresholdPickerDialog.TAG);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/datausage/SummaryForAllUidLoader.java b/src/com/android/car/settings/datausage/SummaryForAllUidLoader.java
new file mode 100644
index 0000000..f65a978
--- /dev/null
+++ b/src/com/android/car/settings/datausage/SummaryForAllUidLoader.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.content.Context;
+import android.net.INetworkStatsSession;
+import android.net.NetworkStats;
+import android.net.NetworkTemplate;
+import android.os.Bundle;
+import android.os.RemoteException;
+
+import androidx.loader.content.AsyncTaskLoader;
+
+/**
+ * Fetches the network stats using the {@link INetworkStatsSession}.
+ *
+ * <p>Class is taken from {@link com.android.settingslib.net.SummaryForAllUidLoader}. The only
+ * difference is we are using {@link AsyncTaskLoader} instead of {@link
+ * android.content.AsyncTaskLoader}.
+ */
+public class SummaryForAllUidLoader extends AsyncTaskLoader<NetworkStats> {
+    private static final String KEY_TEMPLATE = "template";
+    private static final String KEY_START = "start";
+    private static final String KEY_END = "end";
+
+    private final INetworkStatsSession mSession;
+    private final Bundle mArgs;
+
+    /**
+     * Builds the bundle given the template, start and end.
+     */
+    public static Bundle buildArgs(NetworkTemplate template, long start, long end) {
+        Bundle args = new Bundle();
+        args.putParcelable(KEY_TEMPLATE, template);
+        args.putLong(KEY_START, start);
+        args.putLong(KEY_END, end);
+        return args;
+    }
+
+    public SummaryForAllUidLoader(Context context, INetworkStatsSession session, Bundle args) {
+        super(context);
+        mSession = session;
+        mArgs = args;
+    }
+
+    @Override
+    protected void onStartLoading() {
+        super.onStartLoading();
+        forceLoad();
+    }
+
+    @Override
+    public NetworkStats loadInBackground() {
+        NetworkTemplate template = mArgs.getParcelable(KEY_TEMPLATE);
+        long start = mArgs.getLong(KEY_START);
+        long end = mArgs.getLong(KEY_END);
+
+        try {
+            return mSession.getSummaryForAllUid(template, start, end, /* includeTags= */ false);
+        } catch (RemoteException e) {
+            return null;
+        }
+    }
+
+    @Override
+    protected void onStopLoading() {
+        super.onStopLoading();
+        cancelLoad();
+    }
+
+    @Override
+    protected void onReset() {
+        super.onReset();
+        cancelLoad();
+    }
+}
diff --git a/src/com/android/car/settings/datausage/UsageBytesThresholdPickerDialog.java b/src/com/android/car/settings/datausage/UsageBytesThresholdPickerDialog.java
new file mode 100644
index 0000000..02169d4
--- /dev/null
+++ b/src/com/android/car/settings/datausage/UsageBytesThresholdPickerDialog.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.NumberPicker;
+
+import androidx.annotation.IntegerRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+
+/** Dialog that is used to pick the data usage warning/limit threshold bytes. */
+public class UsageBytesThresholdPickerDialog extends DialogFragment implements
+        DialogInterface.OnClickListener {
+
+    /** Tag used to identify dialog in {@link androidx.fragment.app.FragmentManager}. */
+    public static final String TAG = "UsageBytesThresholdPickerDialog";
+    private static final String ARG_DIALOG_TITLE_RES = "arg_dialog_title_res";
+    private static final String ARG_CURRENT_THRESHOLD = "arg_current_threshold";
+    private static final float MB_GB_SUFFIX_THRESHOLD = 1.5f;
+
+    @VisibleForTesting
+    static final long MIB_IN_BYTES = 1024 * 1024;
+    @VisibleForTesting
+    static final long GIB_IN_BYTES = MIB_IN_BYTES * 1024;
+    @VisibleForTesting
+    static final long MAX_DATA_LIMIT_BYTES = 50000 * GIB_IN_BYTES;
+
+    // Number pickers can be used to pick strings as well.
+    private NumberPicker mBytesUnits;
+    private View mUpArrow;
+    private View mDownArrow;
+    private EditText mThresholdEditor;
+    private BytesThresholdPickedListener mBytesThresholdPickedListener;
+    private long mCurrentThreshold;
+
+    /**
+     * Creates a new instance of the {@link UsageBytesThresholdPickerDialog} with the
+     * {@code currentThreshold} represented with the best units available.
+     */
+    public static UsageBytesThresholdPickerDialog newInstance(@IntegerRes int dialogTitle,
+            long currentThreshold) {
+        UsageBytesThresholdPickerDialog dialog = new UsageBytesThresholdPickerDialog();
+        Bundle args = new Bundle();
+        args.putInt(ARG_DIALOG_TITLE_RES, dialogTitle);
+        args.putLong(ARG_CURRENT_THRESHOLD, currentThreshold);
+        dialog.setArguments(args);
+        return dialog;
+    }
+
+    /** Sets a {@link BytesThresholdPickedListener}. */
+    public void setBytesThresholdPickedListener(
+            BytesThresholdPickedListener bytesThresholdPickedListener) {
+        mBytesThresholdPickedListener = bytesThresholdPickedListener;
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+
+        // Use builder context to keep consistent theme.
+        LayoutInflater inflater = LayoutInflater.from(builder.getContext());
+        View view = inflater.inflate(R.layout.usage_bytes_threshold_picker,
+                /* root= */ null, /* attachToRoot= */ false);
+
+        mCurrentThreshold = getArguments().getLong(ARG_CURRENT_THRESHOLD);
+        if (mCurrentThreshold < 0) {
+            mCurrentThreshold = 0;
+        }
+
+        String[] units = getContext().getResources().getStringArray(R.array.bytes_picker_sizes);
+        mBytesUnits = view.findViewById(R.id.bytes_units);
+        mBytesUnits.setMinValue(0);
+        mBytesUnits.setMaxValue(units.length - 1);
+        mBytesUnits.setDisplayedValues(units);
+
+        mThresholdEditor = view.findViewById(R.id.bytes_threshold);
+
+        mUpArrow = view.findViewById(R.id.up_arrow_container);
+        mUpArrow.setOnClickListener(v -> mBytesUnits.setValue(mBytesUnits.getValue() - 1));
+
+        mDownArrow = view.findViewById(R.id.down_arrow_container);
+        mDownArrow.setOnClickListener(v -> mBytesUnits.setValue(mBytesUnits.getValue() + 1));
+
+        updateCurrentView(mCurrentThreshold);
+
+        return builder
+                .setTitle(getArguments().getInt(ARG_DIALOG_TITLE_RES))
+                .setView(view)
+                .setPositiveButton(R.string.usage_bytes_threshold_picker_positive_button,
+                        /* onClickListener= */ this)
+                .create();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        if (which == DialogInterface.BUTTON_POSITIVE) {
+            long newThreshold = getCurrentThreshold();
+            if (mBytesThresholdPickedListener != null
+                    && mCurrentThreshold != newThreshold) {
+                mBytesThresholdPickedListener.onThresholdPicked(newThreshold);
+            }
+        }
+    }
+
+    /** Gets the threshold currently represented by this {@link UsageBytesThresholdPickerDialog}. */
+    public long getCurrentThreshold() {
+        String bytesString = mThresholdEditor.getText().toString();
+        if (bytesString.isEmpty() || bytesString.equals(".")) {
+            bytesString = "0";
+        }
+
+        long bytes = (long) (Float.valueOf(bytesString) * (mBytesUnits.getValue() == 0
+                ? MIB_IN_BYTES : GIB_IN_BYTES));
+
+        // To fix the overflow problem.
+        long correctedBytes = Math.min(MAX_DATA_LIMIT_BYTES, bytes);
+
+        return correctedBytes;
+    }
+
+    @VisibleForTesting
+    void setThresholdEditor(long threshold) {
+        updateCurrentView(threshold);
+    }
+
+    private void updateCurrentView(long threshold) {
+        String bytesText;
+        if (threshold > MB_GB_SUFFIX_THRESHOLD * GIB_IN_BYTES) {
+            bytesText = formatText(threshold / (float) GIB_IN_BYTES);
+            mBytesUnits.setValue(1);
+        } else {
+            bytesText = formatText(threshold / (float) MIB_IN_BYTES);
+            mBytesUnits.setValue(0);
+        }
+        mThresholdEditor.setText(bytesText);
+        mThresholdEditor.setSelection(0, bytesText.length());
+    }
+
+    private String formatText(float v) {
+        v = Math.round(v * 100) / 100f;
+        return String.valueOf(v);
+    }
+
+    /** A listener that is called when a date is selected. */
+    public interface BytesThresholdPickedListener {
+        /** A method that determines how to process the selected day of month. */
+        void onThresholdPicked(long numBytes);
+    }
+}
diff --git a/src/com/android/car/settings/datausage/UsageCycleResetDayOfMonthPickerDialog.java b/src/com/android/car/settings/datausage/UsageCycleResetDayOfMonthPickerDialog.java
new file mode 100644
index 0000000..17b5ece
--- /dev/null
+++ b/src/com/android/car/settings/datausage/UsageCycleResetDayOfMonthPickerDialog.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.NumberPicker;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+
+/** Dialog that is used to pick the start day of month to track a data usage cycle. */
+public class UsageCycleResetDayOfMonthPickerDialog extends DialogFragment {
+
+    private static final String ARG_SELECTED_DAY_OF_MONTH = "arg_selected_day_of_month";
+
+    /**
+     * Defines the time frequency at which touch listener should be triggered when holding either
+     * arrow button.
+     */
+    @VisibleForTesting
+    static final int TIME_INTERVAL_MILLIS = 250;
+
+    private static final int MIN_DAY = 1;
+    private static final int MAX_DAY = 31;
+    private ResetDayOfMonthPickedListener mResetDayOfMonthPickedListener;
+    private NumberPicker mCycleDayOfMonthPicker;
+    private View mUpArrow;
+    private View mDownArrow;
+
+    /**
+     * Creates a new instance of the {@link UsageCycleResetDayOfMonthPickerDialog} with the {@link
+     * NumberPicker} set to showing the value {@code startDayOfMonth}.
+     */
+    public static UsageCycleResetDayOfMonthPickerDialog newInstance(int startDayOfMonth) {
+        UsageCycleResetDayOfMonthPickerDialog dialog = new UsageCycleResetDayOfMonthPickerDialog();
+        Bundle args = new Bundle();
+        args.putInt(ARG_SELECTED_DAY_OF_MONTH, startDayOfMonth);
+        dialog.setArguments(args);
+        return dialog;
+    }
+
+    /** Sets a {@link ResetDayOfMonthPickedListener}. */
+    public void setResetDayOfMonthPickedListener(
+            ResetDayOfMonthPickedListener resetDayOfMonthPickedListener) {
+        mResetDayOfMonthPickedListener = resetDayOfMonthPickedListener;
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+
+        // Use builder context to keep consistent theme.
+        LayoutInflater inflater = LayoutInflater.from(builder.getContext());
+        View view = inflater.inflate(R.layout.usage_cycle_reset_day_of_month_picker,
+                /* root= */ null, /* attachToRoot= */ false);
+
+        int cycleDayOfMonth = getArguments().getInt(ARG_SELECTED_DAY_OF_MONTH);
+        if (cycleDayOfMonth < MIN_DAY) {
+            cycleDayOfMonth = MIN_DAY;
+        }
+        if (cycleDayOfMonth > MAX_DAY) {
+            cycleDayOfMonth = MAX_DAY;
+        }
+
+        mCycleDayOfMonthPicker = view.findViewById(R.id.cycle_reset_day_of_month);
+        mCycleDayOfMonthPicker.setMinValue(MIN_DAY);
+        mCycleDayOfMonthPicker.setMaxValue(MAX_DAY);
+        mCycleDayOfMonthPicker.setValue(cycleDayOfMonth);
+        mCycleDayOfMonthPicker.setWrapSelectorWheel(true);
+
+        mUpArrow = view.findViewById(R.id.up_arrow_container);
+        mUpArrow.setOnTouchListener(new CycleArrowTouchListener(
+                () -> mCycleDayOfMonthPicker.setValue(mCycleDayOfMonthPicker.getValue() - 1),
+                TIME_INTERVAL_MILLIS));
+
+        mDownArrow = view.findViewById(R.id.down_arrow_container);
+        mDownArrow.setOnTouchListener(new CycleArrowTouchListener(
+                () -> mCycleDayOfMonthPicker.setValue(mCycleDayOfMonthPicker.getValue() + 1),
+                TIME_INTERVAL_MILLIS));
+
+        return builder
+                .setTitle(R.string.cycle_reset_day_of_month_picker_title)
+                .setView(view)
+                .setPositiveButton(R.string.cycle_reset_day_of_month_picker_positive_button,
+                        (dialog, which) -> {
+                            if (which == DialogInterface.BUTTON_POSITIVE) {
+                                if (mResetDayOfMonthPickedListener != null) {
+                                    mResetDayOfMonthPickedListener.onDayOfMonthPicked(
+                                            mCycleDayOfMonthPicker.getValue());
+                                }
+                            }
+                        })
+                .create();
+    }
+
+    /** Gets the current day of month selected by the {@link NumberPicker}. */
+    public int getSelectedDayOfMonth() {
+        return mCycleDayOfMonthPicker.getValue();
+    }
+
+    /** A listener that is called when a date is selected. */
+    public interface ResetDayOfMonthPickedListener {
+        /** A method that determines how to process the selected day of month. */
+        void onDayOfMonthPicked(int dayOfMonth);
+    }
+
+    private static class CycleArrowTouchListener implements View.OnTouchListener {
+
+        private final IntervalActionListener mIntervalActionListener;
+        private final long mTimeIntervalMillis;
+
+        private Handler mHandler = new Handler();
+        private Runnable mAction;
+
+        CycleArrowTouchListener(IntervalActionListener listener, long timeIntervalMillis) {
+            mIntervalActionListener = listener;
+            mTimeIntervalMillis = timeIntervalMillis;
+
+            mAction = () -> {
+                mHandler.postDelayed(this.mAction, mTimeIntervalMillis);
+                maybeTriggerAction();
+            };
+        }
+
+        @Override
+        public boolean onTouch(View v, MotionEvent event) {
+            switch (event.getAction()) {
+                case MotionEvent.ACTION_DOWN:
+                    mHandler.removeCallbacks(mAction);
+                    mHandler.postDelayed(mAction, mTimeIntervalMillis);
+                    maybeTriggerAction();
+                    v.setPressed(true);
+                    return true;
+                case MotionEvent.ACTION_UP:
+                case MotionEvent.ACTION_CANCEL:
+                    mHandler.removeCallbacks(mAction);
+                    v.setPressed(false);
+                    return true;
+            }
+            return false;
+        }
+
+        private void maybeTriggerAction() {
+            if (mIntervalActionListener != null) {
+                mIntervalActionListener.takeAction();
+            }
+        }
+
+        /** Action that should be taken per time interval that the button is held. */
+        interface IntervalActionListener {
+            /** Defines the action to take at each time interval. */
+            void takeAction();
+        }
+    }
+}
diff --git a/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceController.java b/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceController.java
new file mode 100644
index 0000000..f311e6f
--- /dev/null
+++ b/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Business logic which controls the auto datetime toggle.
+ */
+public class AutoDatetimeTogglePreferenceController extends
+        PreferenceController<TwoStatePreference> {
+
+    public AutoDatetimeTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(isEnabled());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean isAutoDatetimeEnabled = (boolean) newValue;
+        Settings.Global.putInt(getContext().getContentResolver(), Settings.Global.AUTO_TIME,
+                isAutoDatetimeEnabled ? 1 : 0);
+
+        getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        return true;
+    }
+
+    private boolean isEnabled() {
+        return Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.AUTO_TIME, 0) > 0;
+    }
+}
diff --git a/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceController.java b/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceController.java
new file mode 100644
index 0000000..2f001cf
--- /dev/null
+++ b/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Business logic for the toggle which chooses to use the network provided time zone.
+ */
+public class AutoTimeZoneTogglePreferenceController extends
+        PreferenceController<TwoStatePreference> {
+
+    public AutoTimeZoneTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean isAutoTimezoneEnabled = (boolean) newValue;
+        Settings.Global.putInt(getContext().getContentResolver(), Settings.Global.AUTO_TIME_ZONE,
+                isAutoTimezoneEnabled ? 1 : 0);
+
+        getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        return true;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(isEnabled());
+    }
+
+    private boolean isEnabled() {
+        return Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.AUTO_TIME_ZONE, 0) > 0;
+    }
+}
diff --git a/src/com/android/car/settings/datetime/DatePickerFragment.java b/src/com/android/car/settings/datetime/DatePickerFragment.java
index 4a2af00..67714c7 100644
--- a/src/com/android/car/settings/datetime/DatePickerFragment.java
+++ b/src/com/android/car/settings/datetime/DatePickerFragment.java
@@ -22,6 +22,9 @@
 import android.widget.Button;
 import android.widget.DatePicker;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
 
@@ -35,14 +38,22 @@
 
     private DatePicker mDatePicker;
 
-    public static DatePickerFragment getInstance() {
-        DatePickerFragment datePickerFragment = new DatePickerFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.date_picker_title);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.date_picker);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        datePickerFragment.setArguments(bundle);
-        return datePickerFragment;
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.date_picker;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.date_picker_title;
     }
 
     @Override
diff --git a/src/com/android/car/settings/datetime/DatePickerPreferenceController.java b/src/com/android/car/settings/datetime/DatePickerPreferenceController.java
new file mode 100644
index 0000000..a4b193c
--- /dev/null
+++ b/src/com/android/car/settings/datetime/DatePickerPreferenceController.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.provider.Settings;
+import android.text.format.DateFormat;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.Calendar;
+
+/**
+ * Business logic for the preference which allows for picking the date.
+ */
+public class DatePickerPreferenceController extends PreferenceController<Preference> {
+
+    private final IntentFilter mIntentFilter;
+    private final BroadcastReceiver mTimeChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    public DatePickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        // Listens to all three actions because they can all affect the date shown on the
+        // screen.
+        mIntentFilter = new IntentFilter();
+        mIntentFilter.addAction(Intent.ACTION_TIME_CHANGED);
+        mIntentFilter.addAction(Intent.ACTION_TIME_TICK);
+        mIntentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /** Starts the broadcast receiver which listens for time changes */
+    @Override
+    protected void onStartInternal() {
+        getContext().registerReceiver(mTimeChangeReceiver, mIntentFilter);
+    }
+
+    /** Stops the broadcast receiver which listens for time changes */
+    @Override
+    protected void onStopInternal() {
+        getContext().unregisterReceiver(mTimeChangeReceiver);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        preference.setSummary(DateFormat.getLongDateFormat(getContext()).format(
+                Calendar.getInstance().getTime()));
+        preference.setEnabled(!autoDatetimeIsEnabled());
+    }
+
+    private boolean autoDatetimeIsEnabled() {
+        return Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.AUTO_TIME, 0) > 0;
+    }
+}
+
diff --git a/src/com/android/car/settings/datetime/DateTimeToggleLineItem.java b/src/com/android/car/settings/datetime/DateTimeToggleLineItem.java
deleted file mode 100644
index 3ade8f5..0000000
--- a/src/com/android/car/settings/datetime/DateTimeToggleLineItem.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.datetime;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-
-import androidx.car.widget.TextListItem;
-
-/**
- * A LineItem that displays and sets system auto date/time.
- */
-class DateTimeToggleLineItem extends TextListItem
-        implements DatetimeSettingsFragment.ListRefreshObserver {
-    private Context mContext;
-    private final String mSettingString;
-
-    public DateTimeToggleLineItem(Context context, String title, String desc,
-            String settingString) {
-        super(context);
-        mContext = context;
-        mSettingString = settingString;
-        setTitle(title);
-        setBody(desc);
-        setSwitch(
-                isChecked(),
-                /* showDivider= */ false,
-                (button, isChecked) -> {
-                    Settings.Global.putInt(
-                            mContext.getContentResolver(),
-                            mSettingString,
-                            isChecked ? 1 : 0);
-                    mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-                });
-    }
-
-    @Override
-    public void onPreRefresh() {
-        setSwitchState(isChecked());
-    }
-
-    private boolean isChecked() {
-        return Settings.Global.getInt(mContext.getContentResolver(), mSettingString, 0) > 0;
-    }
-}
diff --git a/src/com/android/car/settings/datetime/DatetimeSettingsFragment.java b/src/com/android/car/settings/datetime/DatetimeSettingsFragment.java
index 3d5cb97..265c127 100644
--- a/src/com/android/car/settings/datetime/DatetimeSettingsFragment.java
+++ b/src/com/android/car/settings/datetime/DatetimeSettingsFragment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 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.
@@ -13,106 +13,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License
  */
+
 package com.android.car.settings.datetime;
 
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.provider.Settings;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.ListItemProvider.ListProvider;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-
-import java.util.ArrayList;
-import java.util.List;
+import com.android.car.settings.common.SettingsFragment;
 
 /**
  * Configures date and time.
  */
-public class DatetimeSettingsFragment extends ListItemSettingsFragment {
-    private static final IntentFilter TIME_CHANGED_FILTER =
-            new IntentFilter(Intent.ACTION_TIME_CHANGED);
-
+public class DatetimeSettingsFragment extends SettingsFragment {
     // Minimum time is Nov 5, 2007, 0:00.
     public static final long MIN_DATE = 1194220800000L;
 
-    private List<ListItem> mListItems;
-
-    private final TimeChangedBroadCastReceiver mTimeChangedBroadCastReceiver =
-            new TimeChangedBroadCastReceiver();
-
-    /**
-     * Observes list refreshes.
-     */
-    public interface ListRefreshObserver {
-
-        /**
-         * Gets called when the list is about to refresh. Subclass should set the view to ListItem
-         * state, so can be reflected on next fresh.
-         */
-        void onPreRefresh();
-    }
-
-    public static DatetimeSettingsFragment getInstance() {
-        DatetimeSettingsFragment datetimeSettingsFragment = new DatetimeSettingsFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.date_and_time_settings_title);
-        datetimeSettingsFragment.setArguments(bundle);
-        return datetimeSettingsFragment;
-    }
-
     @Override
-    public ListItemProvider getItemProvider() {
-        return new ListProvider(initializeListItems());
-    }
-
-    private List<ListItem> initializeListItems() {
-        mListItems = new ArrayList<>();
-        mListItems.add(new DateTimeToggleLineItem(getContext(),
-                getString(R.string.date_time_auto),
-                getString(R.string.date_time_auto_summary),
-                Settings.Global.AUTO_TIME));
-        mListItems.add(new DateTimeToggleLineItem(getContext(),
-                getString(R.string.zone_auto),
-                getString(R.string.zone_auto_summary),
-                Settings.Global.AUTO_TIME_ZONE));
-        mListItems.add(new SetDateLineItem(getContext(), getFragmentController()));
-        mListItems.add(new SetTimeLineItem(getContext(), getFragmentController()));
-        mListItems.add(new SetTimeZoneLineItem(getContext(), getFragmentController()));
-        mListItems.add(new TimeFormatToggleLineItem(getContext()));
-        return mListItems;
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        getActivity().registerReceiver(mTimeChangedBroadCastReceiver, TIME_CHANGED_FILTER);
-        refreshList();
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        getActivity().unregisterReceiver(mTimeChangedBroadCastReceiver);
-    }
-
-    private class TimeChangedBroadCastReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            for (ListItem listItem : mListItems) {
-                if (!(listItem instanceof ListRefreshObserver)) {
-                    throw new IllegalArgumentException(
-                            "all list items should be ListRefreshObserver");
-                }
-                ((ListRefreshObserver) listItem).onPreRefresh();
-            }
-            refreshList();
-        }
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.datetime_settings_fragment;
     }
 }
diff --git a/src/com/android/car/settings/datetime/SetDateLineItem.java b/src/com/android/car/settings/datetime/SetDateLineItem.java
deleted file mode 100644
index 1705632..0000000
--- a/src/com/android/car/settings/datetime/SetDateLineItem.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.datetime;
-
-import android.content.Context;
-import android.provider.Settings;
-import android.text.format.DateFormat;
-
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.BaseFragment.FragmentController;
-
-import java.util.Calendar;
-
-/**
- * A LineItem that displays and sets system date.
- */
-class SetDateLineItem extends TextListItem implements DatetimeSettingsFragment.ListRefreshObserver {
-
-    private final Context mContext;
-    private final FragmentController mFragmentController;
-
-    public SetDateLineItem(Context context, BaseFragment.FragmentController fragmentController) {
-        super(context);
-        mContext = context;
-        mFragmentController = fragmentController;
-        setTitle(context.getString(R.string.date_time_set_date));
-        updateLineItemData();
-    }
-
-    @Override
-    public void onPreRefresh() {
-        updateLineItemData();
-    }
-
-    private void updateLineItemData() {
-        setBody(DateFormat.getLongDateFormat(mContext).format(Calendar.getInstance().getTime()));
-        if (isEnabled()) {
-            setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-            setOnClickListener(v ->
-                    mFragmentController.launchFragment(DatePickerFragment.getInstance()));
-        } else {
-            setSupplementalIcon(null, /* showDivider= */ false);
-            setOnClickListener(null);
-        }
-    }
-
-    private boolean isEnabled() {
-        return Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.AUTO_TIME, 0) <= 0;
-    }
-}
diff --git a/src/com/android/car/settings/datetime/SetTimeLineItem.java b/src/com/android/car/settings/datetime/SetTimeLineItem.java
deleted file mode 100644
index 9deef6d..0000000
--- a/src/com/android/car/settings/datetime/SetTimeLineItem.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.datetime;
-
-import android.content.Context;
-import android.provider.Settings;
-import android.text.format.DateFormat;
-
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.BaseFragment.FragmentController;
-
-import java.util.Calendar;
-
-/**
- * A LineItem that displays and sets system time.
- */
-class SetTimeLineItem extends TextListItem implements DatetimeSettingsFragment.ListRefreshObserver {
-
-    private final Context mContext;
-    private final FragmentController mFragmentController;
-
-    public SetTimeLineItem(Context context, BaseFragment.FragmentController fragmentController) {
-        super(context);
-        mContext = context;
-        mFragmentController = fragmentController;
-        setTitle(context.getString(R.string.date_time_set_time));
-        updateLineItemData();
-    }
-
-    @Override
-    public void onPreRefresh() {
-        updateLineItemData();
-    }
-
-    private void updateLineItemData() {
-        setBody(DateFormat.getTimeFormat(mContext).format(Calendar.getInstance().getTime()));
-        if (isEnabled()) {
-            setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-            setOnClickListener(v ->
-                    mFragmentController.launchFragment(TimePickerFragment.getInstance()));
-        } else {
-            setSupplementalIcon(null, /* showDivider= */ false);
-            setOnClickListener(null);
-        }
-    }
-
-    private boolean isEnabled() {
-        return Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.AUTO_TIME, 0) <= 0;
-    }
-}
diff --git a/src/com/android/car/settings/datetime/SetTimeZoneLineItem.java b/src/com/android/car/settings/datetime/SetTimeZoneLineItem.java
deleted file mode 100644
index c2ae8d4..0000000
--- a/src/com/android/car/settings/datetime/SetTimeZoneLineItem.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.datetime;
-
-import android.content.Context;
-import android.provider.Settings;
-
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.BaseFragment.FragmentController;
-import com.android.settingslib.datetime.ZoneGetter;
-
-import java.util.Calendar;
-
-/**
- * A LineItem that displays and sets time zone.
- */
-class SetTimeZoneLineItem extends TextListItem
-        implements DatetimeSettingsFragment.ListRefreshObserver {
-
-    private final Context mContext;
-    private final FragmentController mFragmentController;
-
-    public SetTimeZoneLineItem(Context context, BaseFragment.FragmentController fragmentController) {
-        super(context);
-        mContext = context;
-        mFragmentController = fragmentController;
-        setTitle(context.getString(R.string.date_time_set_timezone));
-        setBody(getDesc());
-        updateLineItemData();
-    }
-
-    @Override
-    public void onPreRefresh() {
-        updateLineItemData();
-    }
-
-    private void updateLineItemData() {
-        if (isEnabled()) {
-            setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-            setOnClickListener(v ->
-                    mFragmentController.launchFragment(TimeZonePickerFragment.getInstance()));
-        } else {
-            setSupplementalIcon(null, /* showDivider= */ false);
-            setOnClickListener(null);
-        }
-    }
-
-    private String getDesc() {
-        Calendar now = Calendar.getInstance();
-        return ZoneGetter.getTimeZoneOffsetAndName(mContext, now.getTimeZone(), now.getTime())
-                .toString();
-    }
-
-    private boolean isEnabled() {
-        return Settings.Global.getInt(mContext.getContentResolver(),
-                Settings.Global.AUTO_TIME_ZONE, 0) <= 0;
-    }
-}
diff --git a/src/com/android/car/settings/datetime/TimeFormatToggleLineItem.java b/src/com/android/car/settings/datetime/TimeFormatToggleLineItem.java
deleted file mode 100644
index 8174a4b..0000000
--- a/src/com/android/car/settings/datetime/TimeFormatToggleLineItem.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.datetime;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Settings;
-import android.text.format.DateFormat;
-
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-
-import java.util.Calendar;
-
-/**
- * A LineItem that displays and sets system time format.
- */
-class TimeFormatToggleLineItem extends TextListItem
-        implements DatetimeSettingsFragment.ListRefreshObserver {
-    private static final String HOURS_12 = "12";
-    private static final String HOURS_24 = "24";
-    private static final int DEMO_YEAR = 2017;
-    private static final int DEMO_MONTH = 11;
-    private static final int DEMO_DAY_OF_MONTH = 31;
-    private static final int DEMO_HOUR_OF_DAY = 13;
-    private static final int DEMO_MINUTE = 0;
-    private static final int DEMO_SECOND = 0;
-
-    private final Calendar mTimeFormatDemoDate = Calendar.getInstance();
-
-    private Context mContext;
-
-    public TimeFormatToggleLineItem(Context context) {
-        super(context);
-        setTitle(context.getString(R.string.date_time_24hour));
-        mContext = context;
-        mTimeFormatDemoDate.set(
-                DEMO_YEAR,
-                DEMO_MONTH,
-                DEMO_DAY_OF_MONTH,
-                DEMO_HOUR_OF_DAY,
-                DEMO_MINUTE,
-                DEMO_SECOND);
-        setBody(getDesc());
-        setSwitch(
-                isChecked(),
-                /* showDivider= */ false,
-                (button, is24Hour) -> {
-                    Settings.System.putString(mContext.getContentResolver(),
-                            Settings.System.TIME_12_24,
-                            is24Hour ? HOURS_24 : HOURS_12);
-                    Intent timeChanged = new Intent(Intent.ACTION_TIME_CHANGED);
-                    int timeFormatPreference =
-                            is24Hour ? Intent.EXTRA_TIME_PREF_VALUE_USE_24_HOUR
-                                    : Intent.EXTRA_TIME_PREF_VALUE_USE_12_HOUR;
-                    timeChanged.putExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT,
-                            timeFormatPreference);
-                    mContext.sendBroadcast(timeChanged);
-                });
-    }
-
-    @Override
-    public void onPreRefresh() {
-        setBody(getDesc());
-        setSwitchState(isChecked());
-    }
-
-    private boolean isChecked() {
-        return DateFormat.is24HourFormat(mContext);
-    }
-
-    private String getDesc() {
-        return DateFormat.getTimeFormat(mContext)
-                .format(mTimeFormatDemoDate.getTime());
-    }
-}
diff --git a/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceController.java b/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceController.java
new file mode 100644
index 0000000..74e73a1
--- /dev/null
+++ b/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceController.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.provider.Settings;
+import android.text.format.DateFormat;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.Calendar;
+
+/**
+ * Business logic for toggle which chooses between 12 hour or 24 hour formats.
+ */
+public class TimeFormatTogglePreferenceController extends PreferenceController<TwoStatePreference> {
+    public static final String HOURS_12 = "12";
+    public static final String HOURS_24 = "24";
+
+    private static final int DEMO_MONTH = 11;
+    private static final int DEMO_DAY_OF_MONTH = 31;
+    private static final int DEMO_HOUR_OF_DAY = 13;
+    private static final int DEMO_MINUTE = 0;
+    private static final int DEMO_SECOND = 0;
+    private final Calendar mTimeFormatDemoDate = Calendar.getInstance();
+    private final BroadcastReceiver mTimeChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    public TimeFormatTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    /** Starts the broadcast receiver which listens for time changes */
+    @Override
+    protected void onStartInternal() {
+        // Listens to ACTION_TIME_CHANGED because the description needs to be changed based on
+        // the ACTION_TIME_CHANGED intent that this toggle sends.
+        getContext().registerReceiver(mTimeChangeReceiver,
+                new IntentFilter(Intent.ACTION_TIME_CHANGED));
+    }
+
+    /** Stops the broadcast receiver which listens for time changes */
+    @Override
+    protected void onStopInternal() {
+        getContext().unregisterReceiver(mTimeChangeReceiver);
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        Calendar now = Calendar.getInstance();
+        mTimeFormatDemoDate.setTimeZone(now.getTimeZone());
+        // We use December 31st because it's unambiguous when demonstrating the date format.
+        // We use 13:00 so we can demonstrate the 12/24 hour options.
+        mTimeFormatDemoDate.set(now.get(Calendar.YEAR), DEMO_MONTH, DEMO_DAY_OF_MONTH,
+                DEMO_HOUR_OF_DAY, DEMO_MINUTE, DEMO_SECOND);
+        preference.setSummary(
+                DateFormat.getTimeFormat(getContext()).format(mTimeFormatDemoDate.getTime()));
+        preference.setChecked(is24Hour());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean isUse24HourFormatEnabled = (boolean) newValue;
+        Settings.System.putString(getContext().getContentResolver(),
+                Settings.System.TIME_12_24,
+                isUse24HourFormatEnabled ? HOURS_24 : HOURS_12);
+        Intent timeChanged = new Intent(Intent.ACTION_TIME_CHANGED);
+        int timeFormatPreference =
+                isUse24HourFormatEnabled ? Intent.EXTRA_TIME_PREF_VALUE_USE_24_HOUR
+                        : Intent.EXTRA_TIME_PREF_VALUE_USE_12_HOUR;
+        timeChanged.putExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT,
+                timeFormatPreference);
+        getContext().sendBroadcast(timeChanged);
+        return true;
+    }
+
+    private boolean is24Hour() {
+        return DateFormat.is24HourFormat(getContext());
+    }
+}
diff --git a/src/com/android/car/settings/datetime/TimePickerFragment.java b/src/com/android/car/settings/datetime/TimePickerFragment.java
index 8d971f3..2e0cdcd 100644
--- a/src/com/android/car/settings/datetime/TimePickerFragment.java
+++ b/src/com/android/car/settings/datetime/TimePickerFragment.java
@@ -11,7 +11,7 @@
  * 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
+ * limitations under the License.
  */
 
 package com.android.car.settings.datetime;
@@ -23,6 +23,9 @@
 import android.widget.Button;
 import android.widget.TimePicker;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
 
@@ -36,14 +39,22 @@
 
     private TimePicker mTimePicker;
 
-    public static TimePickerFragment getInstance() {
-        TimePickerFragment timePickerFragment = new TimePickerFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.time_picker_title);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.time_picker);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        timePickerFragment.setArguments(bundle);
-        return timePickerFragment;
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.time_picker;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.time_picker_title;
     }
 
     @Override
diff --git a/src/com/android/car/settings/datetime/TimePickerPreferenceController.java b/src/com/android/car/settings/datetime/TimePickerPreferenceController.java
new file mode 100644
index 0000000..c4bdc97
--- /dev/null
+++ b/src/com/android/car/settings/datetime/TimePickerPreferenceController.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.provider.Settings;
+import android.text.format.DateFormat;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.Calendar;
+
+/**
+ * Business logic for the preference which allows for time selection.
+ */
+public class TimePickerPreferenceController extends PreferenceController<Preference> {
+
+    private final IntentFilter mIntentFilter;
+    private final BroadcastReceiver mTimeChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    public TimePickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        // ACTION_TIME_CHANGED listens to changes to the autoDatetime toggle to update the time.
+        // ACTION_TIME_TICK listens to the minute changes to update the shown time.
+        // ACTION_TIMEZONE_CHANGED listens to time zone changes to update the shown time.
+        mIntentFilter = new IntentFilter();
+        mIntentFilter.addAction(Intent.ACTION_TIME_CHANGED);
+        mIntentFilter.addAction(Intent.ACTION_TIME_TICK);
+        mIntentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /** Starts the broadcast receiver which listens for time changes */
+    @Override
+    protected void onStartInternal() {
+        getContext().registerReceiver(mTimeChangeReceiver, mIntentFilter);
+    }
+
+    /** Stops the broadcast receiver which listens for time changes */
+    @Override
+    protected void onStopInternal() {
+        getContext().unregisterReceiver(mTimeChangeReceiver);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        preference.setSummary(
+                DateFormat.getTimeFormat(getContext()).format(Calendar.getInstance().getTime()));
+        preference.setEnabled(!autoDatetimeIsEnabled());
+    }
+
+    private boolean autoDatetimeIsEnabled() {
+        return Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.AUTO_TIME, 0) > 0;
+    }
+}
diff --git a/src/com/android/car/settings/datetime/TimeZoneLineItem.java b/src/com/android/car/settings/datetime/TimeZoneLineItem.java
deleted file mode 100644
index 5813a09..0000000
--- a/src/com/android/car/settings/datetime/TimeZoneLineItem.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.datetime;
-
-import android.annotation.NonNull;
-import android.app.AlarmManager;
-import android.content.Context;
-
-import androidx.car.widget.TextListItem;
-
-import com.android.settingslib.datetime.ZoneGetter;
-
-import java.util.Map;
-
-/**
- * A LineItem that displays available time zone.
- */
-class TimeZoneLineItem extends TextListItem {
-
-    public interface TimeZoneChangeListener {
-        void onTimeZoneChanged();
-    }
-
-    public TimeZoneLineItem(
-            Context context,
-            @NonNull TimeZoneChangeListener listener,
-            Map<String, Object> timeZone) {
-        super(context);
-        setTitle(timeZone.get(ZoneGetter.KEY_DISPLAYNAME).toString());
-        setBody(timeZone.get(ZoneGetter.KEY_GMT).toString());
-        setOnClickListener(v -> {
-            AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
-            am.setTimeZone((String) timeZone.get(ZoneGetter.KEY_ID));
-            listener.onTimeZoneChanged();
-        });
-    }
-}
diff --git a/src/com/android/car/settings/datetime/TimeZonePickerFragment.java b/src/com/android/car/settings/datetime/TimeZonePickerFragment.java
deleted file mode 100644
index 2bb3ccc..0000000
--- a/src/com/android/car/settings/datetime/TimeZonePickerFragment.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.datetime;
-
-
-import android.content.Intent;
-import android.os.Bundle;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-import com.android.settingslib.datetime.ZoneGetter;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Lists all time zone and its offset from GMT.
- */
-public class TimeZonePickerFragment extends ListItemSettingsFragment implements
-        TimeZoneLineItem.TimeZoneChangeListener {
-    private List<Map<String, Object>> mZoneList;
-
-    public static TimeZonePickerFragment getInstance() {
-        TimeZonePickerFragment timeZonePickerFragment = new TimeZonePickerFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.date_time_set_timezone_title);
-        timeZonePickerFragment.setArguments(bundle);
-        return timeZonePickerFragment;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        mZoneList = ZoneGetter.getZonesList(getContext());
-        super.onActivityCreated(savedInstanceState);
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        return new ListItemProvider.ListProvider(getListItems());
-    }
-
-    private List<ListItem> getListItems() {
-        List<ListItem> lineItems = new ArrayList<>();
-        for (Map<String, Object> zone : mZoneList) {
-            lineItems.add(new TimeZoneLineItem(getContext(), this, zone));
-        }
-        return lineItems;
-    }
-
-    @Override
-    public void onTimeZoneChanged() {
-        getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
-        getFragmentController().goBack();
-    }
-}
diff --git a/src/com/android/car/settings/datetime/TimeZonePickerPreferenceController.java b/src/com/android/car/settings/datetime/TimeZonePickerPreferenceController.java
new file mode 100644
index 0000000..6a45f72
--- /dev/null
+++ b/src/com/android/car/settings/datetime/TimeZonePickerPreferenceController.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.datetime.ZoneGetter;
+
+import java.util.Calendar;
+
+/**
+ * Business logic for the preference that allows for changing the timezone.
+ */
+public class TimeZonePickerPreferenceController extends PreferenceController<Preference> {
+
+    private final IntentFilter mIntentFilter;
+    private final BroadcastReceiver mTimeChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    public TimeZonePickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+
+        // Listen to ACTION_TIME_CHANGED because it could be sent by the autoTimeZone toggle.
+        // Listen to ACTION_TIMEZONE_CHANGED because the change in timezone should update the
+        // description of the preference.
+        mIntentFilter = new IntentFilter();
+        mIntentFilter.addAction(Intent.ACTION_TIME_CHANGED);
+        mIntentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /** Starts the broadcast receiver which listens for time changes */
+    @Override
+    protected void onStartInternal() {
+        getContext().registerReceiver(mTimeChangeReceiver, mIntentFilter);
+    }
+
+    /** Stops the broadcast receiver which listens for time changes */
+    @Override
+    protected void onStopInternal() {
+        getContext().unregisterReceiver(mTimeChangeReceiver);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        Calendar now = Calendar.getInstance();
+        preference.setSummary(ZoneGetter.getTimeZoneOffsetAndName(getContext(), now.getTimeZone(),
+                now.getTime()));
+        preference.setEnabled(!autoTimezoneIsEnabled());
+    }
+
+    private boolean autoTimezoneIsEnabled() {
+        return Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.AUTO_TIME_ZONE, 0) > 0;
+    }
+}
diff --git a/src/com/android/car/settings/datetime/TimeZonePickerScreenFragment.java b/src/com/android/car/settings/datetime/TimeZonePickerScreenFragment.java
new file mode 100644
index 0000000..3b83c9e
--- /dev/null
+++ b/src/com/android/car/settings/datetime/TimeZonePickerScreenFragment.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+import java.util.TimeZone;
+
+/**
+ * Lists all time zone and its offset from GMT.
+ */
+public class TimeZonePickerScreenFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.timezone_picker_screen_fragment;
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        scrollToPreference(TimeZone.getDefault().getID());
+    }
+}
diff --git a/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceController.java b/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceController.java
new file mode 100644
index 0000000..601225c
--- /dev/null
+++ b/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceController.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import android.app.AlarmManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.datetime.ZoneGetter;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Business logic which will populate the timezone options.
+ */
+public class TimeZonePickerScreenPreferenceController extends
+        PreferenceController<PreferenceGroup> {
+
+    private List<Preference> mZonesList;
+    @VisibleForTesting
+    AlarmManager mAlarmManager;
+
+    public TimeZonePickerScreenPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAlarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        if (mZonesList == null) {
+            constructTimeZoneList();
+        }
+        for (Preference zonePreference : mZonesList) {
+            preferenceGroup.addPreference(zonePreference);
+        }
+    }
+
+    private void constructTimeZoneList() {
+        // We load all of the time zones on the UI thread. However it shouldn't be very expensive
+        // and also shouldn't take a long time. We can revisit this to setup background work and
+        // paging, if it becomes an issue.
+        List<Map<String, Object>> zones = ZoneGetter.getZonesList(getContext());
+        setZonesList(zones);
+    }
+
+    @VisibleForTesting
+    void setZonesList(List<Map<String, Object>> zones) {
+        Collections.sort(zones, new TimeZonesComparator());
+        mZonesList = new ArrayList<>();
+        for (Map<String, Object> zone : zones) {
+            mZonesList.add(createTimeZonePreference(zone));
+        }
+    }
+
+    /** Construct a time zone preference based on the Map object given by {@link ZoneGetter}. */
+    private Preference createTimeZonePreference(Map<String, Object> timeZone) {
+        Preference preference = new Preference(getContext());
+        preference.setKey(timeZone.get(ZoneGetter.KEY_ID).toString());
+        preference.setTitle(timeZone.get(ZoneGetter.KEY_DISPLAY_LABEL).toString());
+        preference.setSummary(timeZone.get(ZoneGetter.KEY_OFFSET_LABEL).toString());
+        preference.setOnPreferenceClickListener(pref -> {
+            mAlarmManager.setTimeZone(timeZone.get(ZoneGetter.KEY_ID).toString());
+            getFragmentController().goBack();
+
+            // Note: This is intentionally ACTION_TIME_CHANGED, not ACTION_TIMEZONE_CHANGED.
+            // Timezone change is handled by the alarm manager. This broadcast message is used
+            // to update the clock and other time related displays that the time has changed due
+            // to a change in the timezone.
+            getContext().sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+            return true;
+        });
+        return preference;
+    }
+
+    /** Compares the timezone objects returned by {@link ZoneGetter}. */
+    private static final class TimeZonesComparator implements Comparator<Map<String, Object>> {
+
+        /** Compares timezones based on 1. offset, 2. display label/name. */
+        TimeZonesComparator() {
+        }
+
+        @Override
+        public int compare(Map<String, Object> map1, Map<String, Object> map2) {
+            int timeZoneOffsetCompare = compareWithKey(map1, map2, ZoneGetter.KEY_OFFSET);
+
+            // If equivalent timezone offset, compare based on display label.
+            if (timeZoneOffsetCompare == 0) {
+                return compareWithKey(map1, map2, ZoneGetter.KEY_DISPLAY_LABEL);
+            }
+
+            return timeZoneOffsetCompare;
+        }
+
+        private int compareWithKey(Map<String, Object> map1, Map<String, Object> map2,
+                String comparisonKey) {
+            Object value1 = map1.get(comparisonKey);
+            Object value2 = map2.get(comparisonKey);
+            if (!isComparable(value1) || !isComparable(value2)) {
+                throw new IllegalArgumentException(
+                        "Cannot use Map which has values that are not Comparable");
+            }
+            return ((Comparable) value1).compareTo(value2);
+        }
+
+        private boolean isComparable(Object value) {
+            return (value != null) && (value instanceof Comparable);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/development/DevelopmentSettingsUtil.java b/src/com/android/car/settings/development/DevelopmentSettingsUtil.java
new file mode 100644
index 0000000..63ded44
--- /dev/null
+++ b/src/com/android/car/settings/development/DevelopmentSettingsUtil.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2018 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.car.settings.development;
+
+import android.app.ActivityManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import com.android.car.settings.R;
+import com.android.settingslib.development.DevelopmentSettingsEnabler;
+
+/**
+ * A utility to set/check development settings mode.
+ *
+ * <p>Shared logic with {@link com.android.settingslib.development.DevelopmentSettingsEnabler} with
+ * modifications to use CarUserManagerHelper instead of UserManager.
+ */
+public class DevelopmentSettingsUtil {
+
+    private DevelopmentSettingsUtil() {
+    }
+
+    /**
+     * Sets the global toggle for developer settings and sends out a local broadcast to notify other
+     * of this change.
+     */
+    public static void setDevelopmentSettingsEnabled(Context context, boolean enable) {
+        Settings.Global.putInt(context.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, enable ? 1 : 0);
+
+        // Used to enable developer options module.
+        ComponentName targetName = ComponentName.unflattenFromString(
+                context.getString(R.string.config_dev_options_module));
+        setDeveloperOptionsEnabledState(context, targetName, showDeveloperOptions(context));
+    }
+
+    /**
+     * Checks that the development settings should be enabled. Returns true if global toggle is set,
+     * debugging is allowed for user, and the user is an admin or a demo user.
+     */
+    public static boolean isDevelopmentSettingsEnabled(Context context,
+            CarUserManagerHelper carUserManagerHelper) {
+        boolean settingEnabled = Settings.Global.getInt(context.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, Build.IS_ENG ? 1 : 0) != 0;
+        boolean hasRestriction = carUserManagerHelper.hasUserRestriction(
+                UserManager.DISALLOW_DEBUGGING_FEATURES,
+                carUserManagerHelper.getCurrentProcessUserInfo());
+        boolean isAdminOrDemo = carUserManagerHelper.isCurrentProcessAdminUser()
+                || carUserManagerHelper.isCurrentProcessDemoUser();
+        return isAdminOrDemo && !hasRestriction && settingEnabled;
+    }
+
+    /** Checks whether the device is provisioned or not. */
+    public static boolean isDeviceProvisioned(Context context) {
+        return Settings.Global.getInt(context.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+    }
+
+    private static boolean showDeveloperOptions(Context context) {
+        CarUserManagerHelper carUserManagerHelper = new CarUserManagerHelper(context);
+        boolean showDev = DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(context)
+                && !isMonkeyRunning();
+        boolean isAdminOrDemo = carUserManagerHelper.isCurrentProcessAdminUser()
+                || carUserManagerHelper.isCurrentProcessDemoUser();
+        if (UserHandle.MU_ENABLED && !isAdminOrDemo) {
+            showDev = false;
+        }
+
+        return showDev;
+    }
+
+    private static void setDeveloperOptionsEnabledState(Context context, ComponentName component,
+            boolean enabled) {
+        PackageManager pm = context.getPackageManager();
+        int state = pm.getComponentEnabledSetting(component);
+        boolean isEnabled = state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+        if (isEnabled != enabled || state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
+            pm.setComponentEnabledSetting(component, enabled
+                            ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
+                            : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                    PackageManager.DONT_KILL_APP);
+        }
+    }
+
+    private static boolean isMonkeyRunning() {
+        return ActivityManager.isUserAMonkey();
+    }
+}
diff --git a/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceController.java b/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceController.java
new file mode 100644
index 0000000..5c9cb33
--- /dev/null
+++ b/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceController.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2018 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.car.settings.display;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic for controlling the adaptive brightness setting. */
+public class AdaptiveBrightnessTogglePreferenceController extends
+        PreferenceController<TwoStatePreference> {
+
+    public AdaptiveBrightnessTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(isAdaptiveBrightnessChecked());
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return supportsAdaptiveBrightness() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean enableAdaptiveBrightness = (boolean) newValue;
+        Settings.System.putInt(getContext().getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                enableAdaptiveBrightness ? Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
+                        : Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+        return true;
+    }
+
+    private boolean isAdaptiveBrightnessChecked() {
+        int brightnessMode = Settings.System.getInt(getContext().getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+        return brightnessMode != Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
+    }
+
+    private boolean supportsAdaptiveBrightness() {
+        return getContext().getResources().getBoolean(R.bool.config_automatic_brightness_available);
+    }
+}
diff --git a/src/com/android/car/settings/display/BrightnessLevelPreferenceController.java b/src/com/android/car/settings/display/BrightnessLevelPreferenceController.java
new file mode 100644
index 0000000..02ec623
--- /dev/null
+++ b/src/com/android/car/settings/display/BrightnessLevelPreferenceController.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2018 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.car.settings.display;
+
+import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
+import static com.android.settingslib.display.BrightnessUtils.convertGammaToLinear;
+import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.PowerManager;
+import android.provider.Settings;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.SeekBarPreference;
+
+/** Business logic for changing the brightness of the display. */
+public class BrightnessLevelPreferenceController extends PreferenceController<SeekBarPreference> {
+
+    private static final Logger LOG = new Logger(BrightnessLevelPreferenceController.class);
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final int mMaximumBacklight;
+    private final int mMinimumBacklight;
+
+    public BrightnessLevelPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+        mMaximumBacklight = powerManager.getMaximumScreenBrightnessSetting();
+        mMinimumBacklight = powerManager.getMinimumScreenBrightnessSetting();
+    }
+
+    @Override
+    protected Class<SeekBarPreference> getPreferenceType() {
+        return SeekBarPreference.class;
+    }
+
+    @Override
+    protected void updateState(SeekBarPreference preference) {
+        preference.setMax(GAMMA_SPACE_MAX);
+        preference.setValue(getSeekbarValue());
+        preference.setContinuousUpdate(true);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(SeekBarPreference preference, Object newValue) {
+        int gamma = (Integer) newValue;
+        int linear = convertGammaToLinear(gamma, mMinimumBacklight, mMaximumBacklight);
+        Settings.System.putIntForUser(getContext().getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, linear,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+        return true;
+    }
+
+    private int getSeekbarValue() {
+        int gamma = GAMMA_SPACE_MAX;
+        try {
+            int linear = Settings.System.getIntForUser(getContext().getContentResolver(),
+                    Settings.System.SCREEN_BRIGHTNESS,
+                    mCarUserManagerHelper.getCurrentProcessUserId());
+            gamma = convertLinearToGamma(linear, mMinimumBacklight, mMaximumBacklight);
+        } catch (Settings.SettingNotFoundException e) {
+            LOG.w("Can't find setting for SCREEN_BRIGHTNESS.");
+        }
+        return gamma;
+    }
+}
diff --git a/src/com/android/car/settings/display/BrightnessLineItem.java b/src/com/android/car/settings/display/BrightnessLineItem.java
deleted file mode 100644
index f89527e..0000000
--- a/src/com/android/car/settings/display/BrightnessLineItem.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.display;
-
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS;
-
-import android.content.Context;
-import android.provider.Settings;
-import android.widget.SeekBar;
-import android.widget.SeekBar.OnSeekBarChangeListener;
-
-import androidx.car.widget.SeekbarListItem;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.Logger;
-
-/**
- * A LineItem that displays and sets display brightness.
- */
-public class BrightnessLineItem extends SeekbarListItem {
-    private static final Logger LOG = new Logger(BrightnessLineItem.class);
-    private static final int MAX_BRIGHTNESS = 255;
-    private final Context mContext;
-
-    /**
-     * Handles brightness change from user
-     */
-    private SeekBar.OnSeekBarChangeListener mOnSeekBarChangeListener =
-            new OnSeekBarChangeListener() {
-                @Override
-                public void onStartTrackingTouch(SeekBar seekBar) {
-                    // no-op
-                }
-
-                @Override
-                public void onStopTrackingTouch(SeekBar seekBar) {
-                    // no-op
-                }
-
-                @Override
-                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-                    Settings.System.putInt(
-                            mContext.getContentResolver(), SCREEN_BRIGHTNESS, progress);
-                }
-            };
-
-    public BrightnessLineItem(Context context) {
-        super(context);
-        mContext = context;
-        setMax(MAX_BRIGHTNESS);
-        setProgress(getSeekbarValue(context));
-        setOnSeekBarChangeListener(mOnSeekBarChangeListener);
-        setText(context.getString(R.string.brightness));
-    }
-
-    private static int getSeekbarValue(Context context) {
-        int currentBrightness = 0;
-        try {
-            currentBrightness = Settings.System.getInt(context.getContentResolver(),
-                    SCREEN_BRIGHTNESS);
-        } catch (Settings.SettingNotFoundException e) {
-            LOG.w("Can't find setting for SCREEN_BRIGHTNESS.");
-        }
-        return currentBrightness;
-    }
-}
diff --git a/src/com/android/car/settings/display/DisplaySettingsFragment.java b/src/com/android/car/settings/display/DisplaySettingsFragment.java
index f808906..97e5359 100644
--- a/src/com/android/car/settings/display/DisplaySettingsFragment.java
+++ b/src/com/android/car/settings/display/DisplaySettingsFragment.java
@@ -15,77 +15,19 @@
  */
 package com.android.car.settings.display;
 
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.provider.Settings;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.ListItemProvider.ListProvider;
-import androidx.car.widget.TextListItem;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-
-import java.util.ArrayList;
-import java.util.List;
+import com.android.car.settings.common.SettingsFragment;
 
 /**
- * Activity to host Display related preferences.
+ * Preference fragment to host Display related preferences.
  */
-public class DisplaySettingsFragment extends ListItemSettingsFragment {
-
-    /**
-     * Gets a new instance of this class.
-     */
-    public static DisplaySettingsFragment newInstance() {
-        DisplaySettingsFragment displaySettingsFragment = new DisplaySettingsFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.display_settings);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar);
-        displaySettingsFragment.setArguments(bundle);
-        return displaySettingsFragment;
-    }
+public class DisplaySettingsFragment extends SettingsFragment {
 
     @Override
-    public ListItemProvider getItemProvider() {
-        return new ListProvider(getLineItems());
-    }
-
-    private List<ListItem> getLineItems() {
-        List<ListItem> lineItems = new ArrayList<>();
-        Context context = getContext();
-        if (supportsAdaptiveBrightness()) {
-            TextListItem adaptiveBrightnessItem = new TextListItem(context);
-            adaptiveBrightnessItem.setTitle(context.getString(R.string.auto_brightness_title));
-            adaptiveBrightnessItem.setBody(
-                    context.getString(R.string.auto_brightness_summary));
-            adaptiveBrightnessItem.setSwitch(
-                    isAdaptiveBrightnessChecked(),
-                    /* showDivider= */false,
-                    (button, isChecked) ->
-                            Settings.System.putInt(context.getContentResolver(),
-                                    SCREEN_BRIGHTNESS_MODE,
-                                    isChecked ? SCREEN_BRIGHTNESS_MODE_AUTOMATIC
-                                            : SCREEN_BRIGHTNESS_MODE_MANUAL));
-            lineItems.add(adaptiveBrightnessItem);
-        }
-        lineItems.add(new BrightnessLineItem(context));
-        return lineItems;
-    }
-
-    private boolean isAdaptiveBrightnessChecked() {
-        int brightnessMode = Settings.System.getInt(getContext().getContentResolver(),
-                SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL);
-        return brightnessMode != SCREEN_BRIGHTNESS_MODE_MANUAL;
-    }
-
-    private boolean supportsAdaptiveBrightness() {
-        return getContext().getResources().getBoolean(
-                com.android.internal.R.bool.config_automatic_brightness_available);
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.display_settings_fragment;
     }
 }
diff --git a/src/com/android/car/settings/home/BluetoothLineItem.java b/src/com/android/car/settings/home/BluetoothLineItem.java
deleted file mode 100644
index c9ee22d..0000000
--- a/src/com/android/car/settings/home/BluetoothLineItem.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.home;
-
-import android.annotation.DrawableRes;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothManager;
-import android.content.Context;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.Switch;
-
-import com.android.car.list.IconToggleLineItem;
-import com.android.car.settings.R;
-import com.android.car.settings.bluetooth.BluetoothSettingsFragment;
-import com.android.car.settings.common.BaseFragment;
-
-
-/**
- * Represents the Bluetooth line item on settings home page.
- */
-public class BluetoothLineItem extends IconToggleLineItem {
-    private BluetoothAdapter mBluetoothAdapter;
-    private BaseFragment.FragmentController mFragmentController;
-
-    public BluetoothLineItem(Context context, BaseFragment.FragmentController fragmentController) {
-        super(context.getText(R.string.bluetooth_settings), context);
-        mFragmentController = fragmentController;
-        mBluetoothAdapter =
-                ((BluetoothManager) mContext.getSystemService(Context.BLUETOOTH_SERVICE))
-                        .getAdapter();
-    }
-
-    @Override
-    public boolean onToggleTouched(Switch toggleSwitch, MotionEvent event) {
-        if (!isBluetoothAvailable()) {
-            return true;
-        }
-        // intercept touch event, so we can process the request and update the switch
-        // state accordingly
-        if (event.getAction() == MotionEvent.ACTION_DOWN) {
-            if (isChecked()) {
-                mBluetoothAdapter.disable();
-            } else {
-                mBluetoothAdapter.enable();
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean isExpandable() {
-        return false;
-    }
-
-    @Override
-    public boolean isClickable() {
-        return isBluetoothAvailable();
-    }
-
-    @Override
-    public void onClick(View view) {
-        if (isBluetoothAvailable()) {
-            mFragmentController.launchFragment(BluetoothSettingsFragment.getInstance());
-        }
-    }
-
-    @Override
-    public CharSequence getDesc() {
-        return mContext.getText(R.string.bluetooth_settings_summary);
-    }
-
-    @Override
-    public boolean isChecked() {
-        return isBluetoothAvailable() && mBluetoothAdapter.isEnabled();
-    }
-
-    @Override
-    public @DrawableRes int getIcon() {
-        return getIconRes(isBluetoothAvailable() && mBluetoothAdapter.isEnabled());
-    }
-
-    public void onBluetoothStateChanged(boolean enabled) {
-        if (mIconUpdateListener != null) {
-            mIconUpdateListener.onUpdateIcon(getIconRes(enabled));
-        }
-        if (mSwitchStateUpdateListener != null) {
-            mSwitchStateUpdateListener.onToggleChanged(enabled);
-        }
-    }
-
-    private boolean isBluetoothAvailable() {
-        return mBluetoothAdapter != null;
-    }
-
-    private @DrawableRes int getIconRes(boolean enabled) {
-        return enabled
-                ? R.drawable.ic_settings_bluetooth : R.drawable.ic_settings_bluetooth_disabled;
-    }
-}
diff --git a/src/com/android/car/settings/home/ExtraSettingsLoader.java b/src/com/android/car/settings/home/ExtraSettingsLoader.java
deleted file mode 100644
index ea0ba35..0000000
--- a/src/com/android/car/settings/home/ExtraSettingsLoader.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.android.car.settings.home;
-
-import static com.android.settingslib.drawer.TileUtils.EXTRA_SETTINGS_ACTION;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
-
-import android.app.ActivityManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.res.Resources;
-import android.graphics.drawable.Icon;
-import android.os.Bundle;
-import android.text.TextUtils;
-
-import com.android.car.list.LaunchAppLineItem;
-import com.android.car.list.TypedPagedListAdapter;
-import com.android.car.settings.R;
-import com.android.car.settings.common.Logger;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Loads Activity with TileUtils.EXTRA_SETTINGS_ACTION.
- * TODO: remove after all list new switched to androidx.car.widget
- */
-public class ExtraSettingsLoader {
-    private static final Logger LOG = new Logger(ExtraSettingsLoader.class);
-    private static final String META_DATA_PREFERENCE_CATEGORY = "com.android.settings.category";
-    public static final String WIRELESS_CATEGORY = "com.android.settings.category.wireless";
-    public static final String DEVICE_CATEGORY = "com.android.settings.category.device";
-    public static final String SYSTEM_CATEGORY = "com.android.settings.category.system";
-    public static final String PERSONAL_CATEGORY = "com.android.settings.category.personal";
-    private final Context mContext;
-
-    public ExtraSettingsLoader(Context context) {
-        mContext = context;
-    }
-
-    public Map<String, Collection<TypedPagedListAdapter.LineItem>> load() {
-        PackageManager pm = mContext.getPackageManager();
-        Intent intent = new Intent(EXTRA_SETTINGS_ACTION);
-        Map<String, Collection<TypedPagedListAdapter.LineItem>> extraSettings = new HashMap<>();
-        // initialize the categories
-        extraSettings.put(WIRELESS_CATEGORY, new LinkedList());
-        extraSettings.put(DEVICE_CATEGORY, new LinkedList());
-        extraSettings.put(SYSTEM_CATEGORY, new LinkedList());
-        extraSettings.put(PERSONAL_CATEGORY, new LinkedList());
-
-        List<ResolveInfo> results = pm.queryIntentActivitiesAsUser(intent,
-                PackageManager.GET_META_DATA, ActivityManager.getCurrentUser());
-
-        for (ResolveInfo resolved : results) {
-            if (!resolved.system) {
-                // Do not allow any app to add to settings, only system ones.
-                continue;
-            }
-            String title = null;
-            String summary = null;
-            String category = null;
-            ActivityInfo activityInfo = resolved.activityInfo;
-            Bundle metaData = activityInfo.metaData;
-            try {
-                Resources res = pm.getResourcesForApplication(activityInfo.packageName);
-                if (metaData.containsKey(META_DATA_PREFERENCE_TITLE)) {
-                    if (metaData.get(META_DATA_PREFERENCE_TITLE) instanceof Integer) {
-                        title = res.getString(metaData.getInt(META_DATA_PREFERENCE_TITLE));
-                    } else {
-                        title = metaData.getString(META_DATA_PREFERENCE_TITLE);
-                    }
-                }
-                if (metaData.containsKey(META_DATA_PREFERENCE_SUMMARY)) {
-                    if (metaData.get(META_DATA_PREFERENCE_SUMMARY) instanceof Integer) {
-                        summary = res.getString(metaData.getInt(META_DATA_PREFERENCE_SUMMARY));
-                    } else {
-                        summary = metaData.getString(META_DATA_PREFERENCE_SUMMARY);
-                    }
-                } else {
-                    LOG.d("no description.");
-                }
-                if (metaData.containsKey(META_DATA_PREFERENCE_CATEGORY)) {
-                    if (metaData.get(META_DATA_PREFERENCE_CATEGORY) instanceof Integer) {
-                        category = res.getString(metaData.getInt(META_DATA_PREFERENCE_CATEGORY));
-                    } else {
-                        category = metaData.getString(META_DATA_PREFERENCE_CATEGORY);
-                    }
-                } else {
-                    LOG.d("no category.");
-                }
-            } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) {
-                LOG.d("Couldn't find info", e);
-            }
-            if (TextUtils.isEmpty(title)) {
-                LOG.d("no title.");
-                title = activityInfo.loadLabel(pm).toString();
-            }
-            Integer iconRes = null;
-            Icon icon = null;
-            if (metaData.containsKey(META_DATA_PREFERENCE_ICON)) {
-                iconRes = metaData.getInt(META_DATA_PREFERENCE_ICON);
-                icon = Icon.createWithResource(activityInfo.packageName, iconRes);
-            } else {
-                icon = Icon.createWithResource(mContext, R.drawable.ic_settings_gear);
-                LOG.d("no icon.");
-            }
-            Intent extraSettingIntent =
-                    new Intent().setClassName(activityInfo.packageName, activityInfo.name);
-            if (category == null || !extraSettings.containsKey(category)) {
-                // If category is not specified or not supported, default to device.
-                category = DEVICE_CATEGORY;
-            }
-            extraSettings.get(category).add(new LaunchAppLineItem(
-                    title, icon, mContext, summary, extraSettingIntent));
-        }
-        return extraSettings;
-    }
-}
diff --git a/src/com/android/car/settings/home/HomepageFragment.java b/src/com/android/car/settings/home/HomepageFragment.java
index d7d286b..9ca03ae 100644
--- a/src/com/android/car/settings/home/HomepageFragment.java
+++ b/src/com/android/car/settings/home/HomepageFragment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 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.
@@ -11,244 +11,34 @@
  * 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
+ * limitations under the License.
  */
+
 package com.android.car.settings.home;
 
-
-import static com.android.car.settings.home.ExtraSettingsLoader.DEVICE_CATEGORY;
-import static com.android.car.settings.home.ExtraSettingsLoader.PERSONAL_CATEGORY;
-import static com.android.car.settings.home.ExtraSettingsLoader.WIRELESS_CATEGORY;
-
-import android.bluetooth.BluetoothAdapter;
-import android.car.user.CarUserManagerHelper;
-import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.graphics.drawable.Icon;
-import android.os.Bundle;
 
-import com.android.car.list.LaunchAppLineItem;
-import com.android.car.list.TypedPagedListAdapter;
+import androidx.annotation.XmlRes;
+
 import com.android.car.settings.R;
-import com.android.car.settings.accounts.AccountsListFragment;
-import com.android.car.settings.applications.ApplicationSettingsFragment;
-import com.android.car.settings.common.ListSettingsFragment;
-import com.android.car.settings.common.Logger;
-import com.android.car.settings.datetime.DatetimeSettingsFragment;
-import com.android.car.settings.display.DisplaySettingsFragment;
-import com.android.car.settings.security.SettingsScreenLockActivity;
-import com.android.car.settings.sound.SoundSettingsFragment;
-import com.android.car.settings.suggestions.SettingsSuggestionsController;
-import com.android.car.settings.system.SystemSettingsFragment;
-import com.android.car.settings.users.UsersListFragment;
-import com.android.car.settings.wifi.CarWifiManager;
-import com.android.car.settings.wifi.WifiUtil;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
+import com.android.car.settings.common.SettingsFragment;
 
 /**
  * Homepage for settings for car.
  */
-public class HomepageFragment extends ListSettingsFragment implements
-        CarWifiManager.Listener,
-        SettingsSuggestionsController.Listener {
-    private static final Logger LOG = new Logger(HomepageFragment.class);
+public class HomepageFragment extends SettingsFragment {
 
-    private SettingsSuggestionsController mSettingsSuggestionsController;
-    private CarWifiManager mCarWifiManager;
-    private WifiLineItem mWifiLineItem;
-    private BluetoothLineItem mBluetoothLineItem;
-    private CarUserManagerHelper mCarUserManagerHelper;
-    // This tracks the number of suggestions currently shown in the fragment. This is based off of
-    // the assumption that suggestions are 0 through (num suggestions - 1) in the adapter. Do not
-    // change this assumption without updating the code in onSuggestionLoaded.
-    private int mNumSettingsSuggestions;
-
-    private final BroadcastReceiver mBtStateReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-
-            if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
-                int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
-                        BluetoothAdapter.ERROR);
-                switch (state) {
-                    case BluetoothAdapter.STATE_TURNING_OFF:
-                        // TODO show a different status icon?
-                    case BluetoothAdapter.STATE_OFF:
-                        mBluetoothLineItem.onBluetoothStateChanged(false);
-                        break;
-                    default:
-                        mBluetoothLineItem.onBluetoothStateChanged(true);
-                }
-            }
-        }
-    };
-
-    private final IntentFilter mBtStateChangeFilter =
-            new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
-
-    /**
-     * Gets an instance of this class.
-     */
-    public static HomepageFragment newInstance() {
-        HomepageFragment homepageFragment = new HomepageFragment();
-        Bundle bundle = ListSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.settings_label);
-        homepageFragment.setArguments(bundle);
-        return homepageFragment;
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.homepage_fragment;
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        LOG.v("onActivityCreated: " + savedInstanceState);
-        mSettingsSuggestionsController =
-                new SettingsSuggestionsController(
-                        getContext(),
-                        getLoaderManager(),
-                        /* listener= */ this);
-        mCarWifiManager = new CarWifiManager(getContext(), /* listener= */ this);
-        if (WifiUtil.isWifiAvailable(getContext())) {
-            mWifiLineItem = new WifiLineItem(
-                    getContext(), mCarWifiManager, getFragmentController());
-        }
-        mBluetoothLineItem = new BluetoothLineItem(getContext(), getFragmentController());
-        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
-
-        // reset the suggestion count.
-        mNumSettingsSuggestions = 0;
-
-        // Call super after the wifiLineItem and BluetoothLineItem are setup, because
-        // those are needed in super.onCreate().
-        super.onActivityCreated(savedInstanceState);
-    }
-
-    @Override
-    public void onAccessPointsChanged() {
-        // don't care
-    }
-
-    @Override
-    public void onWifiStateChanged(int state) {
-        mWifiLineItem.onWifiStateChanged(state);
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        mCarWifiManager.start();
-        mSettingsSuggestionsController.start();
-        getActivity().registerReceiver(mBtStateReceiver, mBtStateChangeFilter);
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        mCarWifiManager.stop();
-        mSettingsSuggestionsController.stop();
-        getActivity().unregisterReceiver(mBtStateReceiver);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        mCarWifiManager.destroy();
-    }
-
-    @Override
-    public ArrayList<TypedPagedListAdapter.LineItem> getLineItems() {
-        ExtraSettingsLoader extraSettingsLoader = new ExtraSettingsLoader(getContext());
-        Map<String, Collection<TypedPagedListAdapter.LineItem>> extraSettings =
-                extraSettingsLoader.load();
-        ArrayList<TypedPagedListAdapter.LineItem> lineItems = new ArrayList<>();
-        lineItems.add(new SimpleIconTransitionLineItem(
-                R.string.display_settings,
-                R.drawable.ic_settings_display,
-                getContext(),
-                null,
-                DisplaySettingsFragment.newInstance(),
-                getFragmentController()));
-        lineItems.add(new SimpleIconTransitionLineItem(
-                R.string.sound_settings,
-                R.drawable.ic_settings_sound,
-                getContext(),
-                null,
-                SoundSettingsFragment.newInstance(),
-                getFragmentController()));
-        if (mWifiLineItem != null) {
-            lineItems.add(mWifiLineItem);
-        }
-        lineItems.addAll(extraSettings.get(WIRELESS_CATEGORY));
-        lineItems.add(mBluetoothLineItem);
-        lineItems.add(new SimpleIconTransitionLineItem(
-                R.string.applications_settings,
-                R.drawable.ic_settings_applications,
-                getContext(),
-                null,
-                ApplicationSettingsFragment.newInstance(),
-                getFragmentController()));
-        lineItems.add(new SimpleIconTransitionLineItem(
-                R.string.date_and_time_settings_title,
-                R.drawable.ic_settings_date_time,
-                getContext(),
-                null,
-                DatetimeSettingsFragment.getInstance(),
-                getFragmentController()));
-        lineItems.add(new SimpleIconTransitionLineItem(
-                R.string.users_list_title,
-                R.drawable.ic_user,
-                getContext(),
-                null,
-                UsersListFragment.newInstance(),
-                getFragmentController()));
-
-        // Guest users can't set screen locks or add/remove accounts.
-        if (!mCarUserManagerHelper.isCurrentProcessGuestUser()) {
-            lineItems.add(new SimpleIconTransitionLineItem(
-                    R.string.accounts_settings_title,
-                    R.drawable.ic_account,
-                    getContext(),
-                    null,
-                    AccountsListFragment.newInstance(),
-                    getFragmentController()));
-            lineItems.add(new LaunchAppLineItem(
-                    getString(R.string.security_settings_title),
-                    Icon.createWithResource(getContext(), R.drawable.ic_lock),
-                    getContext(),
-                    null,
-                    new Intent(getContext(), SettingsScreenLockActivity.class)));
-        }
-
-        lineItems.add(new SimpleIconTransitionLineItem(
-                R.string.system_setting_title,
-                R.drawable.ic_settings_about,
-                getContext(),
-                null,
-                SystemSettingsFragment.getInstance(),
-                getFragmentController()));
-
-        lineItems.addAll(extraSettings.get(DEVICE_CATEGORY));
-        lineItems.addAll(extraSettings.get(PERSONAL_CATEGORY));
-        return lineItems;
-    }
-
-    @Override
-    public void onSuggestionsLoaded(ArrayList<TypedPagedListAdapter.LineItem> suggestions) {
-        LOG.v("onDeferredSuggestionsLoaded");
-        for (int index = 0; index < mNumSettingsSuggestions; index++) {
-            mPagedListAdapter.remove(0);
-        }
-        mNumSettingsSuggestions = suggestions.size();
-        mPagedListAdapter.addAll(0, suggestions);
-    }
-
-    @Override
-    public void onSuggestionDismissed(int adapterPosition) {
-        LOG.v("onSuggestionDismissed adapterPosition " + adapterPosition);
-        mPagedListAdapter.remove(adapterPosition);
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        // TODO: Re-enable suggestions once more use cases are supported.
+        // use(SuggestionsPreferenceController.class, R.string.pk_suggestions).setLoaderManager(
+        //        LoaderManager.getInstance(/* owner= */ this));
     }
 }
diff --git a/src/com/android/car/settings/home/SimpleIconTransitionLineItem.java b/src/com/android/car/settings/home/SimpleIconTransitionLineItem.java
deleted file mode 100644
index 6665d22..0000000
--- a/src/com/android/car/settings/home/SimpleIconTransitionLineItem.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.home;
-
-import android.annotation.DrawableRes;
-import android.annotation.StringRes;
-import android.content.Context;
-import android.view.View;
-
-import com.android.car.list.SimpleIconLineItem;
-import com.android.car.settings.common.BaseFragment;
-
-/**
- * This class extends {@link SimpleIconLineItem} and adds the onClick behavior to
- * trigger the fragmentController to launch a new fragment when clicked.
- * The fragment passed in is what will be launched.
- */
-public class SimpleIconTransitionLineItem extends SimpleIconLineItem {
-
-    private BaseFragment.FragmentController mFragmentController;
-    private BaseFragment mFragment;
-
-    public SimpleIconTransitionLineItem(
-            @StringRes int title,
-            @DrawableRes int iconRes,
-            Context context,
-            CharSequence desc,
-            BaseFragment fragment,
-            BaseFragment.FragmentController fragmentController) {
-        super(title, iconRes, context, desc);
-        mFragment = fragment;
-        mFragmentController = fragmentController;
-    }
-
-    public void onClick(View view) {
-        mFragmentController.launchFragment(mFragment);
-    }
-
-}
diff --git a/src/com/android/car/settings/home/WifiLineItem.java b/src/com/android/car/settings/home/WifiLineItem.java
deleted file mode 100644
index ba2f265..0000000
--- a/src/com/android/car/settings/home/WifiLineItem.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.home;
-
-import android.annotation.DrawableRes;
-import android.content.Context;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.Switch;
-
-import com.android.car.list.IconToggleLineItem;
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.wifi.CarWifiManager;
-import com.android.car.settings.wifi.WifiSettingsFragment;
-import com.android.car.settings.wifi.WifiUtil;
-
-
-/**
- * Represents the wifi line item on settings home page.
- */
-public class WifiLineItem extends IconToggleLineItem {
-    private final Context mContext;
-    private final CarWifiManager mCarWifiManager;
-    private BaseFragment.FragmentController mFragmentController;
-
-    public WifiLineItem(
-            Context context,
-            CarWifiManager carWifiManager,
-            BaseFragment.FragmentController fragmentController) {
-        super(context.getText(R.string.wifi_settings), context);
-        mContext = context;
-        mCarWifiManager = carWifiManager;
-        mFragmentController = fragmentController;
-    }
-
-    @Override
-    public boolean onToggleTouched(Switch toggleSwitch, MotionEvent event) {
-        // intercept touch event, so we can process the request and update the switch
-        // state accordingly
-        if (event.getAction() == MotionEvent.ACTION_DOWN) {
-            mCarWifiManager.setWifiEnabled(!isChecked());
-        }
-        return true;
-    }
-
-    @Override
-    public void onClick(View view) {
-        mFragmentController.launchFragment(WifiSettingsFragment.newInstance());
-    }
-
-    @Override
-    public CharSequence getDesc() {
-        return mContext.getText(R.string.wifi_settings_summary);
-    }
-
-    @Override
-    public boolean isChecked() {
-        return mCarWifiManager.isWifiEnabled();
-    }
-
-    @Override
-    public boolean isExpandable() {
-        return true;
-    }
-
-    @Override
-    public @DrawableRes int getIcon() {
-        return WifiUtil.getIconRes(mCarWifiManager.getWifiState());
-    }
-
-    public void onWifiStateChanged(int state) {
-        if (mIconUpdateListener != null) {
-            mIconUpdateListener.onUpdateIcon(WifiUtil.getIconRes(state));
-        }
-        if (mSwitchStateUpdateListener != null) {
-            mSwitchStateUpdateListener.onToggleChanged(WifiUtil.isWifiOn(state));
-        }
-    }
-
-}
diff --git a/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceController.java b/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceController.java
new file mode 100644
index 0000000..8c48a05
--- /dev/null
+++ b/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceController.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.util.ArrayMap;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+/** Updates the enabled keyboard list. */
+public class EnabledKeyboardPreferenceController extends
+        PreferenceController<PreferenceGroup> {
+    private static final Logger LOG = new Logger(EnabledKeyboardPreferenceController.class);
+
+    private final Map<String, Preference> mPreferences = new ArrayMap<>();
+    private final InputMethodManager mInputMethodManager;
+    private final DevicePolicyManager mDevicePolicyManager;
+    private final PackageManager mPackageManager;
+
+    public EnabledKeyboardPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPackageManager = context.getPackageManager();
+        mDevicePolicyManager =
+                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        mInputMethodManager =
+                (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        List<Preference> preferencesToDisplay = new ArrayList<>();
+        Set<String> preferencesToRemove = new HashSet<>(mPreferences.keySet());
+        List<String> permittedList = mDevicePolicyManager.getPermittedInputMethodsForCurrentUser();
+        List<InputMethodInfo> inputMethodInfos = mInputMethodManager.getEnabledInputMethodList();
+        int size = (inputMethodInfos == null) ? 0 : inputMethodInfos.size();
+        for (int i = 0; i < size; ++i) {
+            InputMethodInfo inputMethodInfo = inputMethodInfos.get(i);
+            // permittedList is Null means that all input methods are allowed.
+            boolean isAllowedByOrganization = (permittedList == null)
+                    || permittedList.contains(inputMethodInfo.getPackageName());
+            if (!isAllowedByOrganization) {
+                continue;
+            }
+
+            Preference preference = createPreference(inputMethodInfo);
+            if (mPreferences.containsKey(preference.getKey())) {
+                Preference displayedPreference = mPreferences.get(preference.getKey());
+                if (arePreferencesDifferent(displayedPreference, preference)) {
+                    preferencesToDisplay.add(preference);
+                } else {
+                    preferencesToRemove.remove(preference.getKey());
+                }
+            } else {
+                preferencesToDisplay.add(preference);
+            }
+        }
+        updatePreferenceGroup(preferenceGroup, preferencesToDisplay, preferencesToRemove);
+    }
+
+    private void updatePreferenceGroup(
+            PreferenceGroup preferenceGroup, List<Preference> preferencesToDisplay,
+            Set<String> preferencesToRemove) {
+        Collections.sort(preferencesToDisplay, Comparator.comparing(
+                (Preference a) -> a.getTitle().toString())
+                .thenComparing((Preference a) -> a.getSummary().toString()));
+
+        for (String key : preferencesToRemove) {
+            preferenceGroup.removePreference(mPreferences.get(key));
+            mPreferences.remove(key);
+        }
+
+        for (int i = 0; i < preferencesToDisplay.size(); ++i) {
+            Preference pref = preferencesToDisplay.get(i);
+            pref.setOrder(i);
+            mPreferences.put(pref.getKey(), pref);
+            preferenceGroup.addPreference(pref);
+        }
+    }
+
+    /**
+     * Creates a preference.
+     */
+    private Preference createPreference(InputMethodInfo inputMethodInfo) {
+        Preference preference = new Preference(getContext());
+        preference.setKey(String.valueOf(inputMethodInfo.hashCode()));
+        preference.setIcon(InputMethodUtil.getPackageIcon(mPackageManager, inputMethodInfo));
+        preference.setTitle(InputMethodUtil.getPackageLabel(mPackageManager, inputMethodInfo));
+        preference.setSummary(InputMethodUtil.getSummaryString(
+                getContext(), mInputMethodManager, inputMethodInfo));
+        preference.setOnPreferenceClickListener(pref -> {
+            try {
+                Intent intent = new Intent(Intent.ACTION_MAIN);
+                String settingsActivity = inputMethodInfo.getSettingsActivity();
+                intent.setClassName(inputMethodInfo.getPackageName(), settingsActivity);
+                // Invoke a settings activity of an input method.
+                getContext().startActivity(intent);
+            } catch (final ActivityNotFoundException e) {
+                LOG.d("IME's Settings Activity Not Found. " + e);
+            }
+            return true;
+        });
+        return preference;
+    }
+
+    private boolean arePreferencesDifferent(Preference lhs, Preference rhs) {
+        return !Objects.equals(lhs.getTitle(), rhs.getTitle())
+                || !Objects.equals(lhs.getSummary(), rhs.getSummary());
+    }
+}
diff --git a/src/com/android/car/settings/inputmethod/InputMethodUtil.java b/src/com/android/car/settings/inputmethod/InputMethodUtil.java
new file mode 100644
index 0000000..8100b02
--- /dev/null
+++ b/src/com/android/car/settings/inputmethod/InputMethodUtil.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settingslib.inputmethod.InputMethodAndSubtypeUtil;
+
+import java.util.List;
+
+/** Keyboard utility class. */
+public final class InputMethodUtil {
+    /**
+     * Delimiter for Enabled Input Methods' concatenated string.
+     */
+    public static final char INPUT_METHOD_DELIMITER = ':';
+    /**
+     * Splitter for Enabled Input Methods' concatenated string.
+     */
+    public static final TextUtils.SimpleStringSplitter sInputMethodSplitter =
+            new TextUtils.SimpleStringSplitter(INPUT_METHOD_DELIMITER);
+    @VisibleForTesting
+    static final Drawable NO_ICON = new ColorDrawable(Color.TRANSPARENT);
+
+    private InputMethodUtil() {
+    }
+
+    /** Returns package icon. */
+    public static Drawable getPackageIcon(@NonNull PackageManager packageManager,
+            @NonNull InputMethodInfo inputMethodInfo) {
+        Drawable icon;
+        try {
+            icon = packageManager.getApplicationIcon(inputMethodInfo.getPackageName());
+        } catch (NameNotFoundException e) {
+            icon = NO_ICON;
+        }
+
+        return icon;
+    }
+
+    /** Returns package label. */
+    public static String getPackageLabel(@NonNull PackageManager packageManager,
+            @NonNull InputMethodInfo inputMethodInfo) {
+        return inputMethodInfo.loadLabel(packageManager).toString();
+    }
+
+    /** Returns input method summary. */
+    public static String getSummaryString(@NonNull Context context,
+            @NonNull InputMethodManager inputMethodManager,
+            @NonNull InputMethodInfo inputMethodInfo) {
+        List<InputMethodSubtype> subtypes =
+                inputMethodManager.getEnabledInputMethodSubtypeList(
+                        inputMethodInfo, /* allowsImplicitlySelectedSubtypes= */ true);
+        return InputMethodAndSubtypeUtil.getSubtypeLocaleNameListAsSentence(
+                subtypes, context, inputMethodInfo);
+    }
+
+    /**
+     * Check if input method is enabled.
+     *
+     * @return {@code true} if the input method is enabled.
+     */
+    public static boolean isInputMethodEnabled(ContentResolver resolver,
+            InputMethodInfo inputMethodInfo) {
+        sInputMethodSplitter.setString(getEnabledInputMethodsConcatenatedIds(resolver));
+        while (sInputMethodSplitter.hasNext()) {
+            String inputMethodId = sInputMethodSplitter.next();
+            if (inputMethodId.equals(inputMethodInfo.getId())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Enable an input method using its InputMethodInfo.
+     */
+    public static void enableInputMethod(ContentResolver resolver,
+            InputMethodInfo inputMethodInfo) {
+        if (isInputMethodEnabled(resolver, inputMethodInfo)) {
+            return;
+        }
+
+        StringBuilder builder = new StringBuilder();
+        builder.append(getEnabledInputMethodsConcatenatedIds(resolver));
+
+        if (!builder.toString().isEmpty()) {
+            builder.append(INPUT_METHOD_DELIMITER);
+        }
+
+        builder.append(inputMethodInfo.getId());
+
+        setEnabledInputMethodsConcatenatedIds(resolver, builder.toString());
+    }
+
+    /**
+     * Disable an input method if its not the default system input method or if there exists another
+     * enabled input method that can also be set as the default system input method.
+     */
+    public static void disableInputMethod(Context context, InputMethodManager inputMethodManager,
+            InputMethodInfo inputMethodInfo) {
+        List<InputMethodInfo> enabledInputMethodInfos = inputMethodManager
+                .getEnabledInputMethodList();
+        StringBuilder builder = new StringBuilder();
+
+        boolean foundAnotherEnabledDefaultInputMethod = false;
+        boolean isSystemDefault = isDefaultInputMethod(context.getContentResolver(),
+                inputMethodInfo);
+        for (InputMethodInfo enabledInputMethodInfo : enabledInputMethodInfos) {
+            if (enabledInputMethodInfo.getId().equals(inputMethodInfo.getId())) {
+                continue;
+            }
+
+            if (builder.length() > 0) {
+                builder.append(INPUT_METHOD_DELIMITER);
+            }
+
+            builder.append(enabledInputMethodInfo.getId());
+
+            if (isSystemDefault && enabledInputMethodInfo.isDefault(context)) {
+                foundAnotherEnabledDefaultInputMethod = true;
+                setDefaultInputMethodId(context.getContentResolver(),
+                        enabledInputMethodInfo.getId());
+            }
+        }
+
+        if (isSystemDefault && !foundAnotherEnabledDefaultInputMethod) {
+            return;
+        }
+
+        setEnabledInputMethodsConcatenatedIds(context.getContentResolver(), builder.toString());
+    }
+
+    private static String getEnabledInputMethodsConcatenatedIds(ContentResolver resolver) {
+        return Settings.Secure.getString(resolver, Settings.Secure.ENABLED_INPUT_METHODS);
+    }
+
+    private static String getDefaultInputMethodId(ContentResolver resolver) {
+        return Settings.Secure.getString(resolver, Settings.Secure.DEFAULT_INPUT_METHOD);
+    }
+
+    private static boolean isDefaultInputMethod(ContentResolver resolver,
+            InputMethodInfo inputMethodInfo) {
+        return inputMethodInfo.getId().equals(getDefaultInputMethodId(resolver));
+    }
+
+    private static void setEnabledInputMethodsConcatenatedIds(ContentResolver resolver,
+            String enabledInputMethodIds) {
+        Settings.Secure.putString(resolver, Settings.Secure.ENABLED_INPUT_METHODS,
+                enabledInputMethodIds);
+    }
+
+    private static void setDefaultInputMethodId(ContentResolver resolver,
+            String defaultInputMethodId) {
+        Settings.Secure.putString(resolver, Settings.Secure.DEFAULT_INPUT_METHOD,
+                defaultInputMethodId);
+    }
+}
diff --git a/src/com/android/car/settings/inputmethod/KeyboardFragment.java b/src/com/android/car/settings/inputmethod/KeyboardFragment.java
new file mode 100644
index 0000000..f46c3e1
--- /dev/null
+++ b/src/com/android/car/settings/inputmethod/KeyboardFragment.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Keyboard settings fragment which lists enabled keyboards and a manage keyboard button. */
+public class KeyboardFragment extends SettingsFragment {
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.keyboard_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/inputmethod/KeyboardManagementFragment.java b/src/com/android/car/settings/inputmethod/KeyboardManagementFragment.java
new file mode 100644
index 0000000..9230365
--- /dev/null
+++ b/src/com/android/car/settings/inputmethod/KeyboardManagementFragment.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Keyboard management screen for all available keyboards management. **/
+public class KeyboardManagementFragment extends SettingsFragment {
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.keyboard_management_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceController.java b/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceController.java
new file mode 100644
index 0000000..e643867
--- /dev/null
+++ b/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceController.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/** Updates the available keyboard list. */
+public class KeyboardManagementPreferenceController extends
+        PreferenceController<PreferenceGroup> {
+    @VisibleForTesting
+    static final String DIRECT_BOOT_WARN_DIALOG_TAG = "DirectBootWarnDialog";
+    @VisibleForTesting
+    static final String SECURITY_WARN_DIALOG_TAG = "SecurityWarnDialog";
+    private static final String KEY_INPUT_METHOD_INFO = "INPUT_METHOD_INFO";
+    private final InputMethodManager mInputMethodManager;
+    private final DevicePolicyManager mDevicePolicyManager;
+    private final PackageManager mPackageManager;
+    private final ConfirmationDialogFragment.ConfirmListener mDirectBootWarnConfirmListener =
+            args -> {
+                InputMethodInfo inputMethodInfo = args.getParcelable(KEY_INPUT_METHOD_INFO);
+                InputMethodUtil.enableInputMethod(getContext().getContentResolver(),
+                        inputMethodInfo);
+                refreshUi();
+            };
+    private final ConfirmationDialogFragment.RejectListener mRejectListener = args ->
+            refreshUi();
+    private final ConfirmationDialogFragment.ConfirmListener mSecurityWarnDialogConfirmListener =
+            args -> {
+                InputMethodInfo inputMethodInfo = args.getParcelable(KEY_INPUT_METHOD_INFO);
+                // The user confirmed to enable a 3rd party IME, but we might need to prompt if
+                // it's not
+                // Direct Boot aware.
+                if (inputMethodInfo.getServiceInfo().directBootAware) {
+                    InputMethodUtil.enableInputMethod(getContext().getContentResolver(),
+                            inputMethodInfo);
+                    refreshUi();
+                } else {
+                    showDirectBootWarnDialog(inputMethodInfo);
+                }
+            };
+
+    public KeyboardManagementPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPackageManager = context.getPackageManager();
+        mDevicePolicyManager =
+                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        mInputMethodManager =
+                (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+
+        ConfirmationDialogFragment dialogFragment = (ConfirmationDialogFragment)
+                getFragmentController().findDialogByTag(DIRECT_BOOT_WARN_DIALOG_TAG);
+        ConfirmationDialogFragment.resetListeners(dialogFragment,
+                mDirectBootWarnConfirmListener,
+                mRejectListener);
+
+        dialogFragment = (ConfirmationDialogFragment) getFragmentController()
+                .findDialogByTag(SECURITY_WARN_DIALOG_TAG);
+        ConfirmationDialogFragment.resetListeners(dialogFragment,
+                mSecurityWarnDialogConfirmListener,
+                mRejectListener);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        List<String> permittedInputMethods = mDevicePolicyManager
+                .getPermittedInputMethodsForCurrentUser();
+        Set<String> permittedInputMethodsSet = permittedInputMethods == null ? null : new HashSet<>(
+                permittedInputMethods);
+
+        preferenceGroup.removeAll();
+
+        List<InputMethodInfo> inputMethodInfos = mInputMethodManager.getInputMethodList();
+        if (inputMethodInfos == null || inputMethodInfos.size() == 0) {
+            return;
+        }
+
+        Collections.sort(inputMethodInfos, Comparator.comparing(
+                (InputMethodInfo a) -> InputMethodUtil.getPackageLabel(mPackageManager, a))
+                .thenComparing((InputMethodInfo a) -> InputMethodUtil.getSummaryString(getContext(),
+                        mInputMethodManager, a)));
+
+        for (InputMethodInfo inputMethodInfo : inputMethodInfos) {
+            if (!isInputMethodAllowedByOrganization(permittedInputMethodsSet, inputMethodInfo)) {
+                continue;
+            }
+
+            Preference preference = createSwitchPreference(inputMethodInfo);
+
+            preference.setEnabled(!isOnlyEnabledDefaultInputMethod(inputMethodInfo));
+
+            preferenceGroup.addPreference(preference);
+        }
+    }
+
+    private boolean isInputMethodAllowedByOrganization(Set<String> permittedList,
+            InputMethodInfo inputMethodInfo) {
+        // permittedList is null means that all input methods are allowed.
+        return (permittedList == null) || permittedList.contains(inputMethodInfo.getPackageName());
+    }
+
+    /**
+     * Check if given input method is the only enabled input method that can be a default system
+     * input method.
+     *
+     * @return {@code true} if input method is the only input method that can be a default system
+     * input method.
+     */
+    private boolean isOnlyEnabledDefaultInputMethod(InputMethodInfo inputMethodInfo) {
+        if (!inputMethodInfo.isDefault(getContext())) {
+            return false;
+        }
+
+        List<InputMethodInfo> inputMethodInfos = mInputMethodManager.getEnabledInputMethodList();
+
+        for (InputMethodInfo imi : inputMethodInfos) {
+            if (!imi.isDefault(getContext())) {
+                continue;
+            }
+
+            if (!imi.getId().equals(inputMethodInfo.getId())) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Create a SwitchPreference to enable/disable an input method.
+     *
+     * @return {@code SwitchPreference} which allows a user to enable/disable an input method.
+     */
+    private SwitchPreference createSwitchPreference(InputMethodInfo inputMethodInfo) {
+        SwitchPreference switchPreference = new SwitchPreference(getContext());
+        switchPreference.setKey(String.valueOf(inputMethodInfo.getId()));
+        switchPreference.setIcon(InputMethodUtil.getPackageIcon(mPackageManager, inputMethodInfo));
+        switchPreference.setTitle(InputMethodUtil.getPackageLabel(mPackageManager,
+                inputMethodInfo));
+        switchPreference.setChecked(InputMethodUtil.isInputMethodEnabled(getContext()
+                .getContentResolver(), inputMethodInfo));
+        switchPreference.setSummary(InputMethodUtil.getSummaryString(getContext(),
+                mInputMethodManager, inputMethodInfo));
+
+        switchPreference.setOnPreferenceChangeListener((switchPref, newValue) -> {
+            boolean enable = (boolean) newValue;
+            if (enable) {
+                showSecurityWarnDialog(inputMethodInfo);
+            } else {
+                InputMethodUtil.disableInputMethod(getContext(), mInputMethodManager,
+                        inputMethodInfo);
+                refreshUi();
+            }
+            return false;
+        });
+        return switchPreference;
+    }
+
+    private void showDirectBootWarnDialog(InputMethodInfo inputMethodInfo) {
+        ConfirmationDialogFragment dialog = new ConfirmationDialogFragment.Builder(getContext())
+                .setMessage(getContext().getString(R.string.direct_boot_unaware_dialog_message_car))
+                .setPositiveButton(android.R.string.ok, mDirectBootWarnConfirmListener)
+                .setNegativeButton(android.R.string.cancel, mRejectListener)
+                .addArgumentParcelable(KEY_INPUT_METHOD_INFO, inputMethodInfo)
+                .build();
+
+        getFragmentController().showDialog(dialog, DIRECT_BOOT_WARN_DIALOG_TAG);
+    }
+
+    private void showSecurityWarnDialog(InputMethodInfo inputMethodInfo) {
+        CharSequence label = inputMethodInfo.loadLabel(mPackageManager);
+
+        ConfirmationDialogFragment dialog = new ConfirmationDialogFragment.Builder(getContext())
+                .setTitle(android.R.string.dialog_alert_title)
+                .setMessage(getContext().getString(R.string.ime_security_warning, label))
+                .setPositiveButton(android.R.string.ok, mSecurityWarnDialogConfirmListener)
+                .setNegativeButton(android.R.string.cancel, mRejectListener)
+                .addArgumentParcelable(KEY_INPUT_METHOD_INFO, inputMethodInfo)
+                .build();
+
+        getFragmentController().showDialog(dialog, SECURITY_WARN_DIALOG_TAG);
+    }
+}
diff --git a/src/com/android/car/settings/inputmethod/KeyboardPreferenceController.java b/src/com/android/car/settings/inputmethod/KeyboardPreferenceController.java
new file mode 100644
index 0000000..8c08738
--- /dev/null
+++ b/src/com/android/car/settings/inputmethod/KeyboardPreferenceController.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.icu.text.ListFormatter;
+import android.text.BidiFormatter;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Updates the keyboard settings entry summary with the currently enabled keyboard. */
+public class KeyboardPreferenceController extends PreferenceController<Preference> {
+    private static final String SUMMARY_EMPTY = "";
+
+    private final InputMethodManager mInputMethodManager;
+    private final DevicePolicyManager mDevicePolicyManager;
+    private final PackageManager mPackageManager;
+
+    public KeyboardPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPackageManager = context.getPackageManager();
+        mDevicePolicyManager =
+                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        mInputMethodManager =
+                (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        List<InputMethodInfo> inputMethodInfos =
+                mInputMethodManager.getEnabledInputMethodList();
+        if (inputMethodInfos == null) {
+            preference.setSummary(SUMMARY_EMPTY);
+            return;
+        }
+
+        // permittedList == null means all input methods are allowed.
+        List<String> permittedList =
+                mDevicePolicyManager.getPermittedInputMethodsForCurrentUser();
+        List<String> labels = new ArrayList<>();
+
+        for (InputMethodInfo inputMethodInfo : inputMethodInfos) {
+            boolean isAllowedByOrganization = permittedList == null
+                    || permittedList.contains(inputMethodInfo.getPackageName());
+            if (!isAllowedByOrganization) {
+                continue;
+            }
+            labels.add(InputMethodUtil.getPackageLabel(mPackageManager, inputMethodInfo));
+        }
+        if (labels.isEmpty()) {
+            preference.setSummary(SUMMARY_EMPTY);
+            return;
+        }
+
+        BidiFormatter bidiFormatter = BidiFormatter.getInstance();
+
+        List<String> summaries = new ArrayList<>();
+        for (String label : labels) {
+            summaries.add(bidiFormatter.unicodeWrap(label));
+        }
+        preference.setSummary(ListFormatter.getInstance().format(summaries));
+    }
+}
diff --git a/src/com/android/car/settings/language/ChildLocalePickerFragment.java b/src/com/android/car/settings/language/ChildLocalePickerFragment.java
new file mode 100644
index 0000000..b5fc5ba
--- /dev/null
+++ b/src/com/android/car/settings/language/ChildLocalePickerFragment.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.widget.TextView;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.internal.app.LocaleStore;
+
+import java.util.Locale;
+
+/** Secondary screen for language selection, when a language has multiple locales. */
+public class ChildLocalePickerFragment extends SettingsFragment {
+
+    /**
+     * Creates a ChildLocalePickerFragment with the parent locale info included in the arguments.
+     */
+    public static ChildLocalePickerFragment newInstance(LocaleStore.LocaleInfo parentLocaleInfo) {
+        Bundle bundle = new Bundle();
+        bundle.putSerializable(LocaleUtil.LOCALE_BUNDLE_KEY, parentLocaleInfo.getLocale());
+        ChildLocalePickerFragment fragment = new ChildLocalePickerFragment();
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
+    private LanguageBasePreferenceController.LocaleSelectedListener mLocaleSelectedListener;
+    private LocaleStore.LocaleInfo mParentLocaleInfo;
+
+    /**
+     * Allows the creator of ChildLocalePickerFragment to include a listener for when the child
+     * locale is selected.
+     */
+    public void registerChildLocaleSelectedListener(
+            LanguageBasePreferenceController.LocaleSelectedListener listener) {
+        mLocaleSelectedListener = listener;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        Locale locale = (Locale) getArguments().getSerializable(LocaleUtil.LOCALE_BUNDLE_KEY);
+        mParentLocaleInfo = LocaleStore.getLocaleInfo(locale);
+        use(ChildLocalePickerPreferenceController.class,
+                R.string.pk_child_locale_picker).setParentLocaleInfo(mParentLocaleInfo);
+        use(ChildLocalePickerPreferenceController.class,
+                R.string.pk_child_locale_picker).setLocaleSelectedListener(
+                mLocaleSelectedListener);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        TextView titleView = getActivity().findViewById(R.id.title);
+        titleView.setText(mParentLocaleInfo.getFullNameNative());
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.child_locale_picker_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/language/ChildLocalePickerPreferenceController.java b/src/com/android/car/settings/language/ChildLocalePickerPreferenceController.java
new file mode 100644
index 0000000..55fcfef
--- /dev/null
+++ b/src/com/android/car/settings/language/ChildLocalePickerPreferenceController.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.app.LocaleStore;
+
+import java.util.Set;
+
+/** Business logic for handling a secondary page for languages which have multiple locales. */
+public class ChildLocalePickerPreferenceController extends LanguageBasePreferenceController {
+
+    private LocaleStore.LocaleInfo mParentLocaleInfo;
+
+    public ChildLocalePickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /** Set the parent locale info which should be used to provide options in this second screen. */
+    public void setParentLocaleInfo(LocaleStore.LocaleInfo parentLocaleInfo) {
+        mParentLocaleInfo = parentLocaleInfo;
+    }
+
+    @Override
+    protected LocalePreferenceProvider defineLocaleProvider() {
+        Set<LocaleStore.LocaleInfo> mLocaleInfoSet = LocaleStore.getLevelLocales(
+                getContext(),
+                getExclusionSet(),
+                mParentLocaleInfo,
+                /* translatedOnly= */ true);
+
+        return LocalePreferenceProvider.newInstance(getContext(), mLocaleInfoSet,
+                mParentLocaleInfo);
+    }
+}
diff --git a/src/com/android/car/settings/language/LanguageBasePreferenceController.java b/src/com/android/car/settings/language/LanguageBasePreferenceController.java
new file mode 100644
index 0000000..6e626b8
--- /dev/null
+++ b/src/com/android/car/settings/language/LanguageBasePreferenceController.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.app.LocalePicker;
+import com.android.internal.app.LocaleStore;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Common business logic shared between the primary and secondary screens for language selection.
+ */
+public abstract class LanguageBasePreferenceController extends
+        PreferenceController<PreferenceGroup> implements Preference.OnPreferenceClickListener {
+
+    /** Actions that should be taken on selection of the preference. */
+    public interface LocaleSelectedListener {
+        /** Handle selection of locale. */
+        void onLocaleSelected(LocaleStore.LocaleInfo localeInfo);
+    }
+
+    private Set<String> mExclusionSet = new HashSet<>();
+    private LocaleSelectedListener mLocaleSelectedListener;
+
+    public LanguageBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /** Register a listener for when a locale is selected. */
+    public void setLocaleSelectedListener(LocaleSelectedListener listener) {
+        mLocaleSelectedListener = listener;
+    }
+
+    /** Gets the exclusion set. */
+    public Set<String> getExclusionSet() {
+        return mExclusionSet;
+    }
+
+    /** Defines the locale provider that should be used by the given preference controller. */
+    protected abstract LocalePreferenceProvider defineLocaleProvider();
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        // Only populate if the preference group is empty.
+        if (preferenceGroup.getPreferenceCount() == 0) {
+            defineLocaleProvider().populateBasePreference(preferenceGroup, this);
+        }
+    }
+
+    /**
+     * Defines the action that should be taken when a locale with children is clicked. By default,
+     * does nothing.
+     */
+    protected void handleLocaleWithChildren(LocaleStore.LocaleInfo parentLocaleInfo) {
+    }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference) {
+        LocaleStore.LocaleInfo localeInfo = LocaleUtil.getLocaleArgument(preference);
+
+        // Preferences without a associated locale should not be acted on.
+        if (localeInfo == null) {
+            return false;
+        }
+
+        if (localeInfo.getParent() == null) {
+            // The locale only has the language info. Need to look up the sub-level
+            // locale to get the country/region info as well.
+            Set<LocaleStore.LocaleInfo> subLocales = LocaleStore.getLevelLocales(
+                    getContext(),
+                    getExclusionSet(),
+                    /* parent */ localeInfo,
+                    /* translatedOnly */ true);
+
+            if (subLocales.size() > 1) {
+                handleLocaleWithChildren(localeInfo);
+                return true;
+            }
+
+            if (subLocales.size() < 1) {
+                return false;
+            }
+
+            // If only 1 sublocale, just operate as if there are no sublocales.
+            localeInfo = subLocales.iterator().next();
+        }
+
+        LocalePicker.updateLocale(localeInfo.getLocale());
+        if (mLocaleSelectedListener != null) {
+            mLocaleSelectedListener.onLocaleSelected(localeInfo);
+        }
+        getFragmentController().goBack();
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/language/LanguagePickerFragment.java b/src/com/android/car/settings/language/LanguagePickerFragment.java
new file mode 100644
index 0000000..9d3fd54
--- /dev/null
+++ b/src/com/android/car/settings/language/LanguagePickerFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Fragment for showing the list of languages. */
+public class LanguagePickerFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.language_picker_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/language/LanguagePickerPreferenceController.java b/src/com/android/car/settings/language/LanguagePickerPreferenceController.java
new file mode 100644
index 0000000..fd6d9d4
--- /dev/null
+++ b/src/com/android/car/settings/language/LanguagePickerPreferenceController.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.app.LocaleStore;
+
+import java.util.Locale;
+import java.util.Set;
+
+/** Business logic for showing and acting on languages in the language settings screen. */
+public class LanguagePickerPreferenceController extends LanguageBasePreferenceController {
+
+    public LanguagePickerPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected LocalePreferenceProvider defineLocaleProvider() {
+        Set<LocaleStore.LocaleInfo> localeInfoSet = LocaleStore.getLevelLocales(
+                getContext(),
+                getExclusionSet(),
+                /* parent= */ null,
+                /* translatedOnly= */ true);
+        maybeAddPseudoLocale(localeInfoSet);
+
+        return LocalePreferenceProvider.newInstance(getContext(), localeInfoSet,
+                /* parentLocale= */ null);
+    }
+
+    @Override
+    protected void handleLocaleWithChildren(LocaleStore.LocaleInfo parentLocaleInfo) {
+        ChildLocalePickerFragment fragment = ChildLocalePickerFragment.newInstance(
+                parentLocaleInfo);
+        fragment.registerChildLocaleSelectedListener(
+                localeInfo -> getFragmentController().goBack());
+        getFragmentController().launchFragment(fragment);
+    }
+
+    /**
+     * Add a pseudo locale in debug build for testing RTL.
+     *
+     * @param localeInfos the set of {@link LocaleStore.LocaleInfo} to which the locale is added.
+     */
+    private void maybeAddPseudoLocale(Set<LocaleStore.LocaleInfo> localeInfos) {
+        if (Build.IS_USERDEBUG) {
+            // The ar-XB pseudo-locale is RTL.
+            localeInfos.add(LocaleStore.getLocaleInfo(new Locale("ar", "XB")));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java b/src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java
new file mode 100644
index 0000000..a363ad9
--- /dev/null
+++ b/src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settingslib.language.LanguagePickerUtils;
+import com.android.internal.app.LocaleHelper;
+
+import java.util.Locale;
+
+/** Updates the language settings entry summary with the currently configured locale. */
+public class LanguageSettingsEntryPreferenceController extends PreferenceController<Preference> {
+
+    public LanguageSettingsEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        Locale locale = LanguagePickerUtils.getConfiguredLocale();
+        preference.setSummary(
+                LocaleHelper.getDisplayName(locale, locale, /* sentenceCase= */ true));
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+}
diff --git a/src/com/android/car/settings/language/LanguagesAndInputFragment.java b/src/com/android/car/settings/language/LanguagesAndInputFragment.java
new file mode 100644
index 0000000..d815da0
--- /dev/null
+++ b/src/com/android/car/settings/language/LanguagesAndInputFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Groups together settings related to languages and input. */
+public class LanguagesAndInputFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.languages_and_input_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/language/LocalePreferenceProvider.java b/src/com/android/car/settings/language/LocalePreferenceProvider.java
new file mode 100644
index 0000000..7fd21aa
--- /dev/null
+++ b/src/com/android/car/settings/language/LocalePreferenceProvider.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import android.content.Context;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceUtil;
+import com.android.car.settingslib.R;
+import com.android.car.settingslib.language.LanguagePickerUtils;
+import com.android.internal.app.LocaleStore;
+import com.android.internal.app.SuggestedLocaleAdapter;
+
+import java.util.Set;
+
+/**
+ * Provides a wrapper around the {@link SuggestedLocaleAdapter} to create Preferences to populate
+ * the Language Settings screen.
+ */
+public class LocalePreferenceProvider {
+
+    private static final Logger LOG = new Logger(LanguagePickerPreferenceController.class);
+
+    /** Creates a new instance of the preference provider. */
+    public static LocalePreferenceProvider newInstance(Context context,
+            Set<LocaleStore.LocaleInfo> localeInfoSet,
+            @Nullable LocaleStore.LocaleInfo parentLocale) {
+        SuggestedLocaleAdapter adapter = LanguagePickerUtils.createSuggestedLocaleAdapter(context,
+                localeInfoSet, parentLocale);
+        return new LocalePreferenceProvider(context, adapter);
+    }
+
+    /**
+     * Header types are copied from {@link SuggestedLocaleAdapter} in order to be able to
+     * determine the header rows.
+     */
+    @VisibleForTesting
+    static final int TYPE_HEADER_SUGGESTED = 0;
+    @VisibleForTesting
+    static final int TYPE_HEADER_ALL_OTHERS = 1;
+    @VisibleForTesting
+    static final int TYPE_LOCALE = 2;
+
+    private final Context mContext;
+    private SuggestedLocaleAdapter mSuggestedLocaleAdapter;
+
+    @VisibleForTesting
+    LocalePreferenceProvider(Context context, SuggestedLocaleAdapter localeAdapter) {
+        mContext = context;
+        mSuggestedLocaleAdapter = localeAdapter;
+    }
+
+    /**
+     * Populates the base preference group based on the hierarchy provided by this provider.
+     *
+     * @param base     the preference container which will hold the language preferences created by
+     *                 this provider
+     * @param listener the click listener registered to the language/locale preferences contained in
+     *                 the base preference group
+     */
+    public void populateBasePreference(PreferenceGroup base,
+            Preference.OnPreferenceClickListener listener) {
+        /*
+         * LocalePreferenceProvider can give elements to be represented in 2 ways. In the first
+         * way, it simply provides the LocalePreferences which lists the available options. In the
+         * second way, this provider may also provide PreferenceCategories to break up the
+         * options into "Suggested" and "All others". The screen is constructed by taking a look
+         * at the type of Preference that is provided through LocalePreferenceProvider.
+         *
+         * In the first case (no subcategories), preferences are added directly to the base
+         * container. Otherwise, elements are added to the last category that was provided
+         * (stored in "category").
+         */
+        PreferenceCategory category = null;
+        for (int position = 0; position < mSuggestedLocaleAdapter.getCount(); position++) {
+            Preference preference = getPreference(position);
+            if (PreferenceUtil.checkPreferenceType(preference, PreferenceCategory.class)) {
+                category = (PreferenceCategory) preference;
+                base.addPreference(category);
+            } else {
+                preference.setOnPreferenceClickListener(listener);
+                if (category == null) {
+                    base.addPreference(preference);
+                } else {
+                    category.addPreference(preference);
+                }
+            }
+        }
+    }
+
+    /**
+     * Constructs a PreferenceCategory or Preference with locale arguments based on the type of item
+     * provided.
+     */
+    private Preference getPreference(int position) {
+        int type = mSuggestedLocaleAdapter.getItemViewType(position);
+        switch (type) {
+            case TYPE_HEADER_SUGGESTED:
+            case TYPE_HEADER_ALL_OTHERS:
+                PreferenceCategory category = new PreferenceCategory(mContext);
+                category.setTitle(type == TYPE_HEADER_SUGGESTED
+                        ? R.string.language_picker_list_suggested_header
+                        : R.string.language_picker_list_all_header);
+                return category;
+            case TYPE_LOCALE:
+                LocaleStore.LocaleInfo info =
+                        (LocaleStore.LocaleInfo) mSuggestedLocaleAdapter.getItem(position);
+                Preference preference = new Preference(mContext);
+                preference.setTitle(info.getFullNameNative());
+                LocaleUtil.setLocaleArgument(preference, info);
+                return preference;
+            default:
+                LOG.d("Attempting to get unknown type: " + type);
+                throw new IllegalStateException("Unknown locale list item type");
+        }
+    }
+}
diff --git a/src/com/android/car/settings/language/LocaleUtil.java b/src/com/android/car/settings/language/LocaleUtil.java
new file mode 100644
index 0000000..dc29b54
--- /dev/null
+++ b/src/com/android/car/settings/language/LocaleUtil.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.internal.app.LocaleStore;
+
+import java.util.Locale;
+
+/** Utilities to get/set LocaleInfo from preferences. */
+public class LocaleUtil {
+    /** This key is also used to add Locale to the bundle for {@link ChildLocalePickerFragment}. */
+    public static final String LOCALE_BUNDLE_KEY = "locale_key";
+
+    /** Private constructor to prevent others from instantiating this class. */
+    private LocaleUtil() {
+    }
+
+    /** Extract the locale from the given locale info and add to preference arguments. */
+    public static void setLocaleArgument(Preference preference, LocaleStore.LocaleInfo localeInfo) {
+        preference.getExtras().putSerializable(LOCALE_BUNDLE_KEY, localeInfo.getLocale());
+    }
+
+    /** Extract the localeInfo from the preference, if it exists. */
+    @Nullable
+    public static LocaleStore.LocaleInfo getLocaleArgument(Preference preference) {
+        Locale locale = (Locale) preference.getExtras().getSerializable(LOCALE_BUNDLE_KEY);
+        if (locale == null) {
+            return null;
+        }
+        return LocaleStore.getLocaleInfo(locale);
+    }
+}
diff --git a/src/com/android/car/settings/location/BluetoothScanningPreferenceController.java b/src/com/android/car/settings/location/BluetoothScanningPreferenceController.java
new file mode 100644
index 0000000..1427bfd
--- /dev/null
+++ b/src/com/android/car/settings/location/BluetoothScanningPreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Handles Bluetooth location scanning settings.
+ */
+public class BluetoothScanningPreferenceController extends
+        PreferenceController<TwoStatePreference> {
+
+    public BluetoothScanningPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_BLUETOOTH_LE) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean isBluetoothScanningEnabled = (boolean) newValue;
+        Settings.Global.putInt(getContext().getContentResolver(),
+                Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, isBluetoothScanningEnabled ? 1 : 0);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/location/LocationFooterPreferenceController.java b/src/com/android/car/settings/location/LocationFooterPreferenceController.java
new file mode 100644
index 0000000..d2a1631
--- /dev/null
+++ b/src/com/android/car/settings/location/LocationFooterPreferenceController.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.location.LocationManager;
+
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Injects Location Footers into a {@link PreferenceGroup} with a matching key.
+ */
+public class LocationFooterPreferenceController extends PreferenceController<PreferenceGroup> {
+    private static final Logger LOG = new Logger(LocationFooterPreferenceController.class);
+    private static final Intent INJECT_INTENT =
+            new Intent(LocationManager.SETTINGS_FOOTER_DISPLAYED_ACTION);
+
+    private List<LocationFooter> mLocationFooters;
+    // List of Location Footer Injectors that will be used to broadcast a
+    // LocationManager.SETTINGS_FOOTER_REMOVED_ACTION intent on controller stop.
+    private final List<ComponentName> mFooterInjectors = new ArrayList<>();
+    private PackageManager mPackageManager;
+
+    public LocationFooterPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPackageManager = context.getPackageManager();
+    }
+
+    @VisibleForTesting
+    void setPackageManager(PackageManager packageManager) {
+        mPackageManager = packageManager;
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mLocationFooters = getInjectedLocationFooters();
+        for (LocationFooter footer : mLocationFooters) {
+            String footerString;
+            try {
+                footerString = mPackageManager
+                        .getResourcesForApplication(footer.mApplicationInfo)
+                        .getString(footer.mFooterStringRes);
+            } catch (PackageManager.NameNotFoundException exception) {
+                LOG.w("Resources not found for application "
+                        + footer.mApplicationInfo.packageName);
+                continue;
+            }
+
+            // For each injected footer: Create a new preference, set the summary
+            // and icon, then inject under the footer preference group.
+            Preference newPreference = new Preference(getContext());
+            newPreference.setSummary(footerString);
+            newPreference.setIcon(R.drawable.ic_settings_about);
+            getPreference().addPreference(newPreference);
+
+            // Send broadcast to the injector announcing a footer has been injected
+            sendBroadcast(footer.mComponentName,
+                    LocationManager.SETTINGS_FOOTER_DISPLAYED_ACTION);
+            // Add the component to the list of injectors so that
+            // it receives a broadcast when the footer is removed.
+            mFooterInjectors.add(footer.mComponentName);
+        }
+    }
+
+    /**
+     * Send a {@link LocationManager#SETTINGS_FOOTER_REMOVED_ACTION} broadcast to footer injectors
+     * when LocationSettingsFragment is stopped.
+     */
+    @Override
+    protected void onStopInternal() {
+        // Send broadcast to the footer injectors. Notify them the footer is not visible.
+        for (ComponentName componentName : mFooterInjectors) {
+            sendBroadcast(componentName, LocationManager.SETTINGS_FOOTER_REMOVED_ACTION);
+        }
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mLocationFooters = null;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 0);
+    }
+
+    /**
+     * Return a list of strings provided by ACTION_INJECT_FOOTER broadcast receivers. If there
+     * are no injectors, an immutable emptry list is returned.
+     */
+    private List<LocationFooter> getInjectedLocationFooters() {
+        List<ResolveInfo> resolveInfos = mPackageManager.queryBroadcastReceivers(
+                INJECT_INTENT, PackageManager.GET_META_DATA);
+        if (resolveInfos == null) {
+            LOG.e("Unable to resolve intent " + INJECT_INTENT);
+            return Collections.emptyList();
+        } else {
+            LOG.d("Found broadcast receivers: " + resolveInfos);
+        }
+
+        List<LocationFooter> locationFooters = new ArrayList<>(resolveInfos.size());
+        for (ResolveInfo resolveInfo : resolveInfos) {
+            ActivityInfo activityInfo = resolveInfo.activityInfo;
+            ApplicationInfo appInfo = activityInfo.applicationInfo;
+
+            // If a non-system app tries to inject footer, ignore it
+            if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
+                LOG.w("Ignoring attempt to inject footer from a non-system app: " + resolveInfo);
+                continue;
+            }
+
+            // If the injector does not have valid METADATA, ignore it
+            if (activityInfo.metaData == null) {
+                LOG.d("No METADATA in broadcast receiver " + activityInfo.name);
+                continue;
+            }
+
+            // Get the footer text resource id from broadcast receiver's metadata
+            int footerTextRes =
+                    activityInfo.metaData.getInt(LocationManager.METADATA_SETTINGS_FOOTER_STRING);
+            if (footerTextRes == 0) {
+                LOG.w("No mapping of integer exists for "
+                        + LocationManager.METADATA_SETTINGS_FOOTER_STRING);
+                continue;
+            }
+            locationFooters.add(new LocationFooter(footerTextRes, appInfo,
+                    new ComponentName(activityInfo.packageName, activityInfo.name)));
+        }
+        return locationFooters;
+    }
+
+    private void sendBroadcast(ComponentName componentName, String action) {
+        Intent intent = new Intent(action);
+        intent.setComponent(componentName);
+        getContext().sendBroadcast(intent);
+    }
+
+    /**
+     * Contains information related to a footer.
+     */
+    private static class LocationFooter {
+        // The string resource of the footer.
+        @StringRes
+        private final int mFooterStringRes;
+        // Application info of the receiver injecting this footer.
+        private final ApplicationInfo mApplicationInfo;
+        // The component that injected the footer. It must be a receiver of
+        // LocationManager.SETTINGS_FOOTER_DISPLAYED_ACTION broadcast.
+        private final ComponentName mComponentName;
+
+        LocationFooter(@StringRes int footerRes, ApplicationInfo appInfo,
+                ComponentName componentName) {
+            mFooterStringRes = footerRes;
+            mApplicationInfo = appInfo;
+            mComponentName = componentName;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/location/LocationScanningFragment.java b/src/com/android/car/settings/location/LocationScanningFragment.java
new file mode 100644
index 0000000..7b7fa5d
--- /dev/null
+++ b/src/com/android/car/settings/location/LocationScanningFragment.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Fragment that hosts Location Scanning settings.
+ */
+public class LocationScanningFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.location_scanning_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/location/LocationScanningPreferenceController.java b/src/com/android/car/settings/location/LocationScanningPreferenceController.java
new file mode 100644
index 0000000..9b7a259
--- /dev/null
+++ b/src/com/android/car/settings/location/LocationScanningPreferenceController.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Hides the Scanning entry if neither Wi-Fi nor Bluetooth are supported.
+ */
+public class LocationScanningPreferenceController extends PreferenceController<Preference> {
+
+    public LocationScanningPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        PackageManager packageManager = getContext().getPackageManager();
+        return (packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)
+                || packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE))
+                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+}
diff --git a/src/com/android/car/settings/location/LocationServicesPreferenceController.java b/src/com/android/car/settings/location/LocationServicesPreferenceController.java
new file mode 100644
index 0000000..b17fb20
--- /dev/null
+++ b/src/com/android/car/settings/location/LocationServicesPreferenceController.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.location.SettingInjectorService;
+import android.os.UserHandle;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.location.SettingsInjector;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Injects Location Services into a {@link PreferenceGroup} with a matching key.
+ */
+public class LocationServicesPreferenceController extends PreferenceController<PreferenceGroup> {
+    private static final Logger LOG = new Logger(LocationServicesPreferenceController.class);
+    private static final IntentFilter INTENT_FILTER_INJECTED_SETTING_CHANGED = new IntentFilter(
+            SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED);
+    private SettingsInjector mSettingsInjector;
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            LOG.i("Received injected settings change intent: " + intent);
+            mSettingsInjector.reloadStatusMessages();
+        }
+    };
+
+    public LocationServicesPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSettingsInjector = new SettingsInjector(context);
+    }
+
+    @VisibleForTesting
+    void setSettingsInjector(SettingsInjector injector) {
+        mSettingsInjector = injector;
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        int profileId = UserHandle.USER_CURRENT;
+        List<Preference> injectedSettings = getSortedInjectedPreferences(profileId);
+        for (Preference preference : injectedSettings) {
+            getPreference().addPreference(preference);
+        }
+    }
+
+    /**
+     * Called when the controller is started.
+     */
+    @Override
+    protected void onStartInternal() {
+        getContext().registerReceiver(mReceiver, INTENT_FILTER_INJECTED_SETTING_CHANGED);
+    }
+
+    /**
+     * Called when the controller is stopped.
+     */
+    @Override
+    protected void onStopInternal() {
+        getContext().unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+
+        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 0);
+    }
+
+    private List<Preference> getSortedInjectedPreferences(int profileId) {
+        List<Preference> sortedInjections = new ArrayList<>();
+        Map<Integer, List<Preference>> injections =
+                mSettingsInjector.getInjectedSettings(getContext(), profileId);
+        for (Map.Entry<Integer, List<Preference>> entry : injections.entrySet()) {
+            sortedInjections.addAll(entry.getValue());
+        }
+        Collections.sort(sortedInjections);
+        return sortedInjections;
+    }
+}
diff --git a/src/com/android/car/settings/location/LocationSettingsActivity.java b/src/com/android/car/settings/location/LocationSettingsActivity.java
new file mode 100644
index 0000000..732ab29
--- /dev/null
+++ b/src/com/android/car/settings/location/LocationSettingsActivity.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2019 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.car.settings.location;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * Starts {@link LocationSettingsFragment} in a separate activity to help with back navigation flow.
+ */
+public class LocationSettingsActivity extends BaseCarSettingsActivity {
+
+    @Nullable
+    @Override
+    protected Fragment getInitialFragment() {
+        return new LocationSettingsFragment();
+    }
+}
diff --git a/src/com/android/car/settings/location/LocationSettingsFragment.java b/src/com/android/car/settings/location/LocationSettingsFragment.java
new file mode 100644
index 0000000..91591e9
--- /dev/null
+++ b/src/com/android/car/settings/location/LocationSettingsFragment.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.widget.Switch;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.Utils;
+
+/**
+ * Main page that hosts Location related preferences.
+ */
+public class LocationSettingsFragment extends SettingsFragment {
+    private static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
+            new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
+
+    private LocationManager mLocationManager;
+    private Switch mLocationSwitch;
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            mLocationSwitch.setChecked(mLocationManager.isLocationEnabled());
+        }
+    };
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.location_settings_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_toggle;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        mLocationSwitch = requireActivity().findViewById(R.id.toggle_switch);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        requireContext().registerReceiver(mReceiver, INTENT_FILTER_LOCATION_MODE_CHANGED);
+        updateLocationSwitch();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        requireContext().unregisterReceiver(mReceiver);
+    }
+
+    // Update the location master switch's state upon starting the fragment.
+    private void updateLocationSwitch() {
+        mLocationSwitch.setChecked(mLocationManager.isLocationEnabled());
+        mLocationSwitch.setOnCheckedChangeListener((buttonView, isChecked) ->
+                Utils.updateLocationEnabled(requireContext(), isChecked, UserHandle.myUserId(),
+                        Settings.Secure.LOCATION_CHANGER_SYSTEM_SETTINGS));
+    }
+}
diff --git a/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceController.java b/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceController.java
new file mode 100644
index 0000000..882517c
--- /dev/null
+++ b/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceController.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import android.app.Service;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.location.LocationManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Disables Recent Location Requests entry when location is off.
+ */
+public class RecentLocationRequestsEntryPreferenceController extends
+        PreferenceController<Preference> {
+
+    private static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
+            new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
+
+    private final LocationManager mLocationManager;
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            refreshUi();
+        }
+    };
+
+    public RecentLocationRequestsEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mLocationManager = (LocationManager) getContext().getSystemService(
+                Service.LOCATION_SERVICE);
+    }
+
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setEnabled(mLocationManager.isLocationEnabled());
+    }
+
+    @Override
+    protected void onStartInternal() {
+        getContext().registerReceiver(mReceiver, INTENT_FILTER_LOCATION_MODE_CHANGED);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        getContext().unregisterReceiver(mReceiver);
+    }
+}
diff --git a/src/com/android/car/settings/location/RecentLocationRequestsFragment.java b/src/com/android/car/settings/location/RecentLocationRequestsFragment.java
new file mode 100644
index 0000000..592225a
--- /dev/null
+++ b/src/com/android/car/settings/location/RecentLocationRequestsFragment.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Shows a list of applications that have requested location recently.
+ */
+public class RecentLocationRequestsFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.location_recent_requests_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java b/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java
new file mode 100644
index 0000000..8253dec
--- /dev/null
+++ b/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.ApplicationDetailsFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.location.RecentLocationApps;
+import com.android.settingslib.location.RecentLocationApps.Request;
+
+import java.util.List;
+
+/**
+ * Displays all apps that have requested location recently.
+ */
+public class RecentLocationRequestsPreferenceController extends
+        PreferenceController<PreferenceGroup> {
+    private RecentLocationApps mRecentLocationApps;
+    // This list will always be sorted by most recent first.
+    private List<Request> mRecentLocationRequests;
+
+    public RecentLocationRequestsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mRecentLocationApps = new RecentLocationApps(context);
+    }
+
+    @VisibleForTesting
+    void setRecentLocationApps(RecentLocationApps apps) {
+        mRecentLocationApps = apps;
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup group) {
+        if (mRecentLocationRequests == null) {
+            // First time displaying a list.
+            mRecentLocationRequests =
+                    mRecentLocationApps.getAppListSorted(/* showSystemApps= */ true);
+        } else {
+            // If preferences were already added to the screen, get a new list
+            // and only update the displayed app-list if there is a difference.
+            List<Request> newRequests = mRecentLocationApps.getAppListSorted(true);
+            // listsEqual compares by elements' package names only, using List.equals() will
+            // not work because it will always return false since it also compares the time.
+            if (listsEqual(newRequests, mRecentLocationRequests)) {
+                return;
+            }
+            mRecentLocationRequests = newRequests;
+        }
+        if (mRecentLocationRequests.isEmpty()) {
+            Preference emptyMessagePref = new Preference(getContext());
+            emptyMessagePref.setTitle(R.string.location_settings_recent_requests_empty_message);
+            group.addPreference(emptyMessagePref);
+        } else {
+            group.removeAll();
+            for (Request request : mRecentLocationRequests) {
+                Preference appPref = createPreference(request);
+                group.addPreference(appPref);
+            }
+        }
+    }
+
+    private Preference createPreference(Request request) {
+        Preference pref = new Preference(getContext());
+        pref.setSummary(request.contentDescription);
+        pref.setIcon(request.icon);
+        pref.setTitle(request.label);
+        Intent intent = new Intent();
+        intent.setPackage(request.packageName);
+        ResolveInfo resolveInfo = getContext().getPackageManager().resolveActivity(intent,
+                PackageManager.MATCH_DEFAULT_ONLY);
+        pref.setOnPreferenceClickListener(p -> {
+            getFragmentController().launchFragment(
+                    ApplicationDetailsFragment.getInstance(resolveInfo.activityInfo.packageName));
+            return true;
+        });
+        return pref;
+    }
+
+    /**
+     * Compares two {@link Request} lists by the elements' package names.
+     *
+     * @param a The first list.
+     * @param b The second list.
+     * @return {@code true} if both lists have the same elements (by package name) and order.
+     */
+    private boolean listsEqual(List<Request> a, List<Request> b) {
+        if (a.size() != b.size()) {
+            return false;
+        }
+        for (int i = 0; i < a.size(); i++) {
+            if (!a.get(i).packageName.equals(b.get(i).packageName)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/location/WifiScanningPreferenceController.java b/src/com/android/car/settings/location/WifiScanningPreferenceController.java
new file mode 100644
index 0000000..6a8031a
--- /dev/null
+++ b/src/com/android/car/settings/location/WifiScanningPreferenceController.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Handles Wi-Fi location scanning settings.
+ */
+public class WifiScanningPreferenceController extends PreferenceController<TwoStatePreference> {
+
+    public WifiScanningPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI)
+                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean isWifiScanningEnabled = (boolean) newValue;
+        Settings.Global.putInt(getContext().getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, isWifiScanningEnabled ? 1 : 0);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/network/AddMobileNetworkPreferenceController.java b/src/com/android/car/settings/network/AddMobileNetworkPreferenceController.java
new file mode 100644
index 0000000..22d5d83
--- /dev/null
+++ b/src/com/android/car/settings/network/AddMobileNetworkPreferenceController.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static android.telephony.euicc.EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION;
+import static android.telephony.euicc.EuiccManager.EXTRA_FORCE_PROVISION;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.telephony.euicc.EuiccManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/**
+ * Controls the visibility of the preference to add another mobile network based on if there is an
+ * activity to handle that intent.
+ */
+public class AddMobileNetworkPreferenceController extends PreferenceController<Preference> {
+
+    @VisibleForTesting
+    static final Intent ADD_NETWORK_INTENT = new Intent(
+            ACTION_PROVISION_EMBEDDED_SUBSCRIPTION).putExtra(EXTRA_FORCE_PROVISION, true);
+
+    public AddMobileNetworkPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        EuiccManager euiccManager = getContext().getSystemService(EuiccManager.class);
+        if (!euiccManager.isEnabled()) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+
+        List<ResolveInfo> resolveInfos = getContext().getPackageManager().queryIntentActivities(
+                ADD_NETWORK_INTENT, /* flags= */ 0);
+        if (resolveInfos.isEmpty()) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+
+        return AVAILABLE;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        getContext().startActivity(ADD_NETWORK_INTENT);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/network/MobileDataTogglePreferenceController.java b/src/com/android/car/settings/network/MobileDataTogglePreferenceController.java
new file mode 100644
index 0000000..e0e8e3e
--- /dev/null
+++ b/src/com/android/car/settings/network/MobileDataTogglePreferenceController.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Business logic to control the toggle that enables/disables usage of mobile data. Does not have
+ * support for multi-sim.
+ */
+public class MobileDataTogglePreferenceController extends
+        PreferenceController<TwoStatePreference> implements
+        MobileNetworkUpdateManager.MobileNetworkUpdateListener {
+
+    @VisibleForTesting
+    static final String DISABLE_DIALOG_TAG = ConfirmationDialogFragment.TAG + "_DisableData";
+    @VisibleForTesting
+    static final String ENABLE_MULTISIM_DIALOG_TAG =
+            ConfirmationDialogFragment.TAG + "_EnableMultisim";
+
+    private final SubscriptionManager mSubscriptionManager;
+    private TelephonyManager mTelephonyManager;
+    private int mSubId;
+
+    private final ContentObserver mMobileDataChangeObserver = new ContentObserver(
+            new Handler(Looper.getMainLooper())) {
+        @Override
+        public void onChange(boolean selfChange) {
+            super.onChange(selfChange);
+            refreshUi();
+        }
+    };
+
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmDisableListener =
+            arguments -> setMobileDataEnabled(
+                    /* enabled= */ false, /* disableOtherSubscriptions= */ false);
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmMultiSimListener =
+            arguments -> setMobileDataEnabled(
+                    /* enabled= */ true, /* disableOtherSubscriptions= */ true);
+    private final ConfirmationDialogFragment.RejectListener mRejectRefreshListener =
+            arguments -> refreshUi();
+
+    public MobileDataTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSubscriptionManager = getContext().getSystemService(SubscriptionManager.class);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    /** Sets the subscription id to be controlled by this controller. */
+    public void setSubId(int subId) {
+        mSubId = subId;
+        mTelephonyManager = TelephonyManager.from(getContext()).createForSubscriptionId(mSubId);
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID ? AVAILABLE
+                : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        DISABLE_DIALOG_TAG), mConfirmDisableListener, mRejectRefreshListener);
+
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ENABLE_MULTISIM_DIALOG_TAG), mConfirmMultiSimListener,
+                mRejectRefreshListener);
+    }
+
+    @Override
+    protected void onStartInternal() {
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            getContext().getContentResolver().registerContentObserver(getObservableUri(mSubId),
+                    /* notifyForDescendants= */ false, mMobileDataChangeObserver);
+        }
+    }
+
+    @Override
+    protected void onStopInternal() {
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            getContext().getContentResolver().unregisterContentObserver(mMobileDataChangeObserver);
+        }
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setEnabled(!isOpportunistic());
+        preference.setChecked(
+                mTelephonyManager != null ? mTelephonyManager.isDataEnabled() : false);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean newToggleValue = (boolean) newValue;
+        boolean isMultiSim = (mTelephonyManager.getSimCount() > 1);
+        int defaultSubId = mSubscriptionManager.getDefaultDataSubscriptionId();
+        boolean needToDisableOthers = mSubscriptionManager.isActiveSubscriptionId(defaultSubId)
+                && mSubId != defaultSubId;
+
+        if (!newToggleValue && !isMultiSim) {
+            getFragmentController().showDialog(getConfirmDataDisableDialog(), DISABLE_DIALOG_TAG);
+        } else if (newToggleValue && isMultiSim && needToDisableOthers) {
+            getFragmentController().showDialog(getConfirmMultisimEnableDialog(),
+                    ENABLE_MULTISIM_DIALOG_TAG);
+        } else {
+            setMobileDataEnabled(newToggleValue, /* disableOtherSubscriptions= */ false);
+        }
+        return false;
+    }
+
+    @Override
+    public void onMobileNetworkUpdated(int subId) {
+        setSubId(subId);
+        refreshUi();
+    }
+
+    private void setMobileDataEnabled(boolean enabled, boolean disableOtherSubscriptions) {
+        NetworkUtils.setMobileDataEnabled(getContext(), mSubId, enabled, disableOtherSubscriptions);
+        refreshUi();
+    }
+
+    private boolean isOpportunistic() {
+        SubscriptionInfo info = mSubscriptionManager.getActiveSubscriptionInfo(mSubId);
+        return info != null && info.isOpportunistic();
+    }
+
+    private Uri getObservableUri(int subId) {
+        Uri uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA);
+        if (TelephonyManager.from(getContext()).getSimCount() != 1) {
+            uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + subId);
+        }
+        return uri;
+    }
+
+    private ConfirmationDialogFragment getConfirmDataDisableDialog() {
+        return new ConfirmationDialogFragment.Builder(getContext())
+                .setMessage(R.string.confirm_mobile_data_disable)
+                .setPositiveButton(android.R.string.ok, mConfirmDisableListener)
+                .setNegativeButton(android.R.string.cancel, mRejectRefreshListener)
+                .build();
+    }
+
+    private ConfirmationDialogFragment getConfirmMultisimEnableDialog() {
+        SubscriptionInfo previousSubInfo =
+                mSubscriptionManager.getDefaultDataSubscriptionInfo();
+        SubscriptionInfo newSubInfo =
+                mSubscriptionManager.getActiveSubscriptionInfo(mSubId);
+
+        String previousName = (previousSubInfo == null)
+                ? getContext().getResources().getString(R.string.sim_selection_required_pref)
+                : previousSubInfo.getDisplayName().toString();
+
+        String newName = (newSubInfo == null)
+                ? getContext().getResources().getString(R.string.sim_selection_required_pref)
+                : newSubInfo.getDisplayName().toString();
+
+        return new ConfirmationDialogFragment.Builder(getContext())
+                .setTitle(getContext().getString(R.string.sim_change_data_title, newName))
+                .setMessage(getContext().getString(R.string.sim_change_data_message,
+                        newName, previousName))
+                .setPositiveButton(getContext().getString(R.string.sim_change_data_ok, newName),
+                        mConfirmMultiSimListener)
+                .setNegativeButton(android.R.string.cancel, mRejectRefreshListener)
+                .build();
+    }
+}
diff --git a/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java b/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java
new file mode 100644
index 0000000..534024b
--- /dev/null
+++ b/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.os.UserManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/** Controls the preference for accessing mobile network settings. */
+public class MobileNetworkEntryPreferenceController extends
+        PreferenceController<Preference> implements
+        SubscriptionsChangeListener.SubscriptionsChangeAction {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final SubscriptionsChangeListener mChangeListener;
+    private final SubscriptionManager mSubscriptionManager;
+    private final ConnectivityManager mConnectivityManager;
+    private final TelephonyManager mTelephonyManager;
+
+    public MobileNetworkEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mChangeListener = new SubscriptionsChangeListener(context, /* action= */ this);
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+        mConnectivityManager = context.getSystemService(ConnectivityManager.class);
+        mTelephonyManager = context.getSystemService(TelephonyManager.class);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mChangeListener.start();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mChangeListener.stop();
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!NetworkUtils.hasMobileNetwork(mConnectivityManager)) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+
+        boolean isNotAdmin = !mCarUserManagerHelper.getCurrentProcessUserInfo().isAdmin();
+        boolean hasRestriction = mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
+        if (isNotAdmin || hasRestriction) {
+            return DISABLED_FOR_USER;
+        }
+        return AVAILABLE;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        List<SubscriptionInfo> subs = SubscriptionUtils.getAvailableSubscriptions(
+                mSubscriptionManager, mTelephonyManager);
+        preference.setEnabled(!subs.isEmpty());
+        preference.setSummary(getSummary(subs));
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        List<SubscriptionInfo> subs = SubscriptionUtils.getAvailableSubscriptions(
+                mSubscriptionManager, mTelephonyManager);
+        if (subs.isEmpty()) {
+            return true;
+        }
+
+        if (subs.size() == 1) {
+            getFragmentController().launchFragment(
+                    MobileNetworkFragment.newInstance(subs.get(0).getSubscriptionId()));
+        } else {
+            getFragmentController().launchFragment(new MobileNetworkListFragment());
+        }
+        return true;
+    }
+
+    @Override
+    public void onSubscriptionsChanged() {
+        refreshUi();
+    }
+
+    private CharSequence getSummary(List<SubscriptionInfo> subs) {
+        int count = subs.size();
+        if (subs.isEmpty()) {
+            return null;
+        } else if (count == 1) {
+            return subs.get(0).getDisplayName();
+        } else {
+            return getContext().getResources().getQuantityString(
+                    R.plurals.mobile_network_summary_count, count, count);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/network/MobileNetworkFragment.java b/src/com/android/car/settings/network/MobileNetworkFragment.java
new file mode 100644
index 0000000..7411886
--- /dev/null
+++ b/src/com/android/car/settings/network/MobileNetworkFragment.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.widget.TextView;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.internal.util.CollectionUtils;
+
+import com.google.android.collect.Lists;
+
+import java.util.List;
+
+/** Mobile network settings homepage. */
+public class MobileNetworkFragment extends SettingsFragment implements
+        MobileNetworkUpdateManager.MobileNetworkUpdateListener {
+
+    @VisibleForTesting
+    static final String ARG_NETWORK_SUB_ID = "network_sub_id";
+
+    private SubscriptionManager mSubscriptionManager;
+    private MobileNetworkUpdateManager mMobileNetworkUpdateManager;
+    private CharSequence mTitle;
+
+    /**
+     * Creates a new instance of the {@link MobileNetworkFragment}, which shows settings related to
+     * the given {@code subId}.
+     */
+    public static MobileNetworkFragment newInstance(int subId) {
+        MobileNetworkFragment fragment = new MobileNetworkFragment();
+        Bundle args = new Bundle();
+        args.putInt(ARG_NETWORK_SUB_ID, subId);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.mobile_network_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+
+        int subId = getArguments() != null
+                ? getArguments().getInt(ARG_NETWORK_SUB_ID, MobileNetworkUpdateManager.SUB_ID_NULL)
+                : MobileNetworkUpdateManager.SUB_ID_NULL;
+        mMobileNetworkUpdateManager = new MobileNetworkUpdateManager(context, subId);
+        getLifecycle().addObserver(mMobileNetworkUpdateManager);
+
+        List<MobileNetworkUpdateManager.MobileNetworkUpdateListener> listeners =
+                Lists.newArrayList(
+                        this,
+                        use(MobileDataTogglePreferenceController.class,
+                                R.string.pk_mobile_data_toggle),
+                        use(RoamingPreferenceController.class, R.string.pk_mobile_roaming_toggle));
+        for (MobileNetworkUpdateManager.MobileNetworkUpdateListener listener : listeners) {
+            mMobileNetworkUpdateManager.registerListener(listener);
+        }
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        if (mTitle != null) {
+            TextView titleView = requireActivity().findViewById(R.id.title);
+            titleView.setText(mTitle);
+        }
+    }
+
+    @Override
+    public void onMobileNetworkUpdated(int subId) {
+        SubscriptionInfo info = null;
+
+        if (subId != MobileNetworkUpdateManager.SUB_ID_NULL) {
+            for (SubscriptionInfo subscriptionInfo :
+                    mSubscriptionManager.getSelectableSubscriptionInfoList()) {
+                if (subscriptionInfo.getSubscriptionId() == subId) {
+                    info = subscriptionInfo;
+                }
+            }
+        }
+
+        if (info == null && !CollectionUtils.isEmpty(
+                mSubscriptionManager.getActiveSubscriptionInfoList())) {
+            info = mSubscriptionManager.getActiveSubscriptionInfoList().get(0);
+        }
+
+        if (info != null) {
+            TextView titleView = requireActivity().findViewById(R.id.title);
+
+            // It is possible for this to be called before the activity is fully created. If so,
+            // cache the value so that it can be constructed onActivityCreated.
+            mTitle = info.getDisplayName();
+            if (titleView != null) {
+                titleView.setText(mTitle);
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/network/MobileNetworkListFragment.java b/src/com/android/car/settings/network/MobileNetworkListFragment.java
new file mode 100644
index 0000000..4ec94fd
--- /dev/null
+++ b/src/com/android/car/settings/network/MobileNetworkListFragment.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Shows the list of mobile networks if there are multiple. Clicking into any one of these mobile
+ * networks shows {@link MobileNetworkFragment} for that specific mobile network.
+ */
+public class MobileNetworkListFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.mobile_network_list_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/network/MobileNetworkListPreferenceController.java b/src/com/android/car/settings/network/MobileNetworkListPreferenceController.java
new file mode 100644
index 0000000..c4fb438
--- /dev/null
+++ b/src/com/android/car/settings/network/MobileNetworkListPreferenceController.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/** Business logic to populate the list of available mobile networks. */
+public class MobileNetworkListPreferenceController extends
+        PreferenceController<PreferenceGroup> implements
+        SubscriptionsChangeListener.SubscriptionsChangeAction {
+
+    private final SubscriptionsChangeListener mSubscriptionsChangeListener;
+    private final SubscriptionManager mSubscriptionManager;
+    private final TelephonyManager mTelephonyManager;
+
+    public MobileNetworkListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+
+        mSubscriptionsChangeListener = new SubscriptionsChangeListener(context, /* action= */ this);
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+        mTelephonyManager = context.getSystemService(TelephonyManager.class);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mSubscriptionsChangeListener.start();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mSubscriptionsChangeListener.stop();
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        preferenceGroup.removeAll();
+
+        List<SubscriptionInfo> subscriptions = SubscriptionUtils.getAvailableSubscriptions(
+                mSubscriptionManager, mTelephonyManager);
+        for (SubscriptionInfo info : subscriptions) {
+            preferenceGroup.addPreference(createPreference(info));
+        }
+    }
+
+    @Override
+    public void onSubscriptionsChanged() {
+        refreshUi();
+    }
+
+    private Preference createPreference(SubscriptionInfo info) {
+        Preference preference = new Preference(getContext());
+        preference.setTitle(info.getDisplayName());
+        preference.setKey(Integer.toString(info.getSubscriptionId()));
+
+        boolean isEsim = info.isEmbedded();
+        if (mSubscriptionManager.isActiveSubscriptionId(info.getSubscriptionId())) {
+            preference.setSummary(isEsim ? R.string.mobile_network_active_esim
+                    : R.string.mobile_network_active_sim);
+        } else {
+            preference.setSummary(isEsim ? R.string.mobile_network_inactive_esim
+                    : R.string.mobile_network_inactive_sim);
+        }
+
+        preference.setOnPreferenceClickListener(pref -> {
+            MobileNetworkFragment fragment = MobileNetworkFragment.newInstance(
+                    info.getSubscriptionId());
+            getFragmentController().launchFragment(fragment);
+            return true;
+        });
+
+        return preference;
+    }
+}
diff --git a/src/com/android/car/settings/network/MobileNetworkUpdateManager.java b/src/com/android/car/settings/network/MobileNetworkUpdateManager.java
new file mode 100644
index 0000000..4b9a688
--- /dev/null
+++ b/src/com/android/car/settings/network/MobileNetworkUpdateManager.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.DefaultLifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
+
+import com.android.car.settings.common.Logger;
+import com.android.internal.telephony.TelephonyIntents;
+import com.android.internal.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Listens to potential changes in subscription id and updates registered {@link
+ * MobileNetworkUpdateManager.MobileNetworkUpdateListener} with the new subscription id.
+ */
+public class MobileNetworkUpdateManager implements DefaultLifecycleObserver {
+
+    /** Value to represent that the subscription id hasn't been computed yet. */
+    static final int SUB_ID_NULL = Integer.MIN_VALUE;
+    private static final Logger LOG = new Logger(MobileNetworkUpdateManager.class);
+
+    private final List<MobileNetworkUpdateListener> mListeners = new ArrayList<>();
+    private final PhoneChangeReceiver mPhoneChangeReceiver;
+    private final SubscriptionManager mSubscriptionManager;
+    private List<SubscriptionInfo> mSubscriptionInfos;
+    private int mCurSubscriptionId;
+
+    private final SubscriptionManager.OnSubscriptionsChangedListener
+            mOnSubscriptionsChangeListener =
+            new SubscriptionManager.OnSubscriptionsChangedListener() {
+                @Override
+                public void onSubscriptionsChanged() {
+                    if (!Objects.equals(mSubscriptionInfos,
+                            mSubscriptionManager.getActiveSubscriptionInfoList(
+                                    /* userVisibleOnly= */ true))) {
+                        updateSubscriptions(/* forceRefresh= */ false);
+                    }
+                }
+            };
+
+    public MobileNetworkUpdateManager(Context context, int subId) {
+        mCurSubscriptionId = subId;
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+        mSubscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
+
+        mPhoneChangeReceiver = new PhoneChangeReceiver(context, () -> {
+            if (mCurSubscriptionId != SUB_ID_NULL) {
+                // When the radio changes (ex: CDMA->GSM), refresh the fragment.
+                // This is very rare.
+                LOG.d("Radio change (i.e. CDMA->GSM) received for valid subscription id: "
+                        + mCurSubscriptionId);
+                updateReceived(mCurSubscriptionId);
+            }
+        });
+    }
+
+    /**
+     * Registers a listener that will receive necessary updates to changes in the mobile network.
+     */
+    public void registerListener(MobileNetworkUpdateListener listener) {
+        mListeners.add(listener);
+    }
+
+    /**
+     * Unregisters a listener that was previously added via
+     * {@link MobileNetworkUpdateManager#registerListener(MobileNetworkUpdateListener)}. The
+     * provided argument must refer to the same object that was registered in order to securely be
+     * unregistered.
+     */
+    public void unregisterListener(MobileNetworkUpdateListener listener) {
+        mListeners.remove(listener);
+    }
+
+    @Override
+    public void onCreate(@NonNull LifecycleOwner owner) {
+        updateSubscriptions(/* forceRefresh= */ true);
+    }
+
+    @Override
+    public final void onStart(@NonNull LifecycleOwner owner) {
+        mPhoneChangeReceiver.register();
+        mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+    }
+
+    @Override
+    public final void onStop(@NonNull LifecycleOwner owner) {
+        mPhoneChangeReceiver.unregister();
+        mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+    }
+
+    private void updateSubscriptions(boolean forceRefresh) {
+        LOG.d("updateSubscriptions called");
+        mSubscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
+        int subId = getSubscriptionId();
+        if (forceRefresh || mCurSubscriptionId != subId) {
+            LOG.d("updateSubscriptions updated subscription id! prev: " + mCurSubscriptionId
+                    + " new: " + subId);
+            mCurSubscriptionId = subId;
+            updateReceived(mCurSubscriptionId);
+        }
+    }
+
+    private void updateReceived(int subId) {
+        for (MobileNetworkUpdateListener listener : mListeners) {
+            listener.onMobileNetworkUpdated(subId);
+        }
+    }
+
+    private int getSubscriptionId() {
+        SubscriptionInfo subscription = getSubscription();
+        return subscription != null ? subscription.getSubscriptionId()
+                : SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+    }
+
+    /**
+     * First, find a subscription with the id provided at construction if it exists. If not, just
+     * return the first one in the mSubscriptionInfos list since it is already sorted by sim slot.
+     */
+    private SubscriptionInfo getSubscription() {
+        if (mCurSubscriptionId != SUB_ID_NULL) {
+            for (SubscriptionInfo subscriptionInfo :
+                    mSubscriptionManager.getSelectableSubscriptionInfoList()) {
+                if (subscriptionInfo.getSubscriptionId() == mCurSubscriptionId) {
+                    return subscriptionInfo;
+                }
+            }
+        }
+
+        return CollectionUtils.isEmpty(mSubscriptionInfos) ? null : mSubscriptionInfos.get(0);
+    }
+
+    /**
+     * Interface used by components listening to subscription id updates from {@link
+     * MobileNetworkUpdateManager}.
+     */
+    public interface MobileNetworkUpdateListener {
+        /** Called when there is a new subscription id that other components should be aware of. */
+        void onMobileNetworkUpdated(int subId);
+    }
+
+    /** Broadcast receiver which observes changes in radio technology (i.e. CDMA vs GSM). */
+    private static class PhoneChangeReceiver extends BroadcastReceiver {
+        private static final IntentFilter RADIO_TECHNOLOGY_CHANGED_FILTER = new IntentFilter(
+                TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+
+        private Context mContext;
+        private PhoneChangeReceiver.OnChangeAction mOnChangeAction;
+
+        /** Action to take when receiver receives a non sticky broadcast intent. */
+        private interface OnChangeAction {
+            void onReceive();
+        }
+
+        PhoneChangeReceiver(Context context, PhoneChangeReceiver.OnChangeAction onChangeAction) {
+            mContext = context;
+            mOnChangeAction = onChangeAction;
+        }
+
+        void register() {
+            mContext.registerReceiver(this, RADIO_TECHNOLOGY_CHANGED_FILTER);
+        }
+
+        void unregister() {
+            mContext.unregisterReceiver(this);
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (!isInitialStickyBroadcast()) {
+                mOnChangeAction.onReceive();
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/network/NetworkAndInternetFragment.java b/src/com/android/car/settings/network/NetworkAndInternetFragment.java
new file mode 100644
index 0000000..8dc5e8a
--- /dev/null
+++ b/src/com/android/car/settings/network/NetworkAndInternetFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2018 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.car.settings.network;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Fragment for all wifi/mobile data connectivity preferences. */
+public class NetworkAndInternetFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.network_and_internet_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/network/NetworkUtils.java b/src/com/android/car/settings/network/NetworkUtils.java
new file mode 100644
index 0000000..f8aa104
--- /dev/null
+++ b/src/com/android/car/settings/network/NetworkUtils.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import java.util.List;
+
+/** Provides helpful utilities surrounding network related tasks. */
+public final class NetworkUtils {
+
+    private NetworkUtils() {
+    }
+
+    /** Returns {@code true} if device has a mobile network. */
+    public static boolean hasMobileNetwork(ConnectivityManager connectivityManager) {
+        Network[] networks = connectivityManager.getAllNetworks();
+        for (Network network : networks) {
+            NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
+            if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /** Returns {@code true} if device has a sim card. */
+    public static boolean hasSim(TelephonyManager telephonyManager) {
+        int simState = telephonyManager.getSimState();
+
+        // Note that pulling out the SIM card returns UNKNOWN, not ABSENT.
+        return simState != TelephonyManager.SIM_STATE_ABSENT
+                && simState != TelephonyManager.SIM_STATE_UNKNOWN;
+    }
+
+    /**
+     * Sets the mobile data enabled state based on {@code enabled} for the subscription defined by
+     * {@code subId}. If {@code disableOtherSubscriptions} is set, other subscriptions will be
+     * disabled unless they are opportunistic.
+     */
+    public static void setMobileDataEnabled(Context context, int subId, boolean enabled,
+            boolean disableOtherSubscriptions) {
+        TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(subId);
+        SubscriptionManager subscriptionManager = context.getSystemService(
+                SubscriptionManager.class);
+        telephonyManager.setDataEnabled(enabled);
+
+        if (disableOtherSubscriptions) {
+            List<SubscriptionInfo> subInfoList =
+                    subscriptionManager.getActiveSubscriptionInfoList();
+            if (subInfoList != null) {
+                for (SubscriptionInfo subInfo : subInfoList) {
+                    // We never disable mobile data for opportunistic subscriptions.
+                    if (subInfo.getSubscriptionId() != subId && !subInfo.isOpportunistic()) {
+                        context.getSystemService(TelephonyManager.class).createForSubscriptionId(
+                                subInfo.getSubscriptionId()).setDataEnabled(false);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/network/RoamingPreferenceController.java b/src/com/android/car/settings/network/RoamingPreferenceController.java
new file mode 100644
index 0000000..8fba750
--- /dev/null
+++ b/src/com/android/car/settings/network/RoamingPreferenceController.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.PersistableBundle;
+import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic for toggling the roaming state. */
+// TODO: This preference should be available but unsearchable if subscription id is invalid.
+public class RoamingPreferenceController extends PreferenceController<TwoStatePreference> implements
+        MobileNetworkUpdateManager.MobileNetworkUpdateListener {
+
+    private final CarrierConfigManager mCarrierConfigManager;
+    private final RoamingStateChangeObserver mRoamingStateChangeObserver;
+    private TelephonyManager mTelephonyManager;
+    private int mSubId;
+
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmListener =
+            arguments -> setRoamingEnabled(true);
+
+    public RoamingPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
+        mRoamingStateChangeObserver = new RoamingStateChangeObserver(
+                new Handler(Looper.getMainLooper()), this::refreshUi);
+        mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    /** Set the subscription id for which the roaming toggle should take effect. */
+    public void setSubId(int subId) {
+        mSubId = subId;
+        mTelephonyManager = TelephonyManager.from(getContext()).createForSubscriptionId(mSubId);
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mRoamingStateChangeObserver.register(getContext(), mSubId);
+
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG),
+                mConfirmListener,
+                /* rejectListener= */ null);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mRoamingStateChangeObserver.unregister(getContext());
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setEnabled(mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+        preference.setChecked(
+                mTelephonyManager != null ? mTelephonyManager.isDataRoamingEnabled() : false);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean isEnabled = (boolean) newValue;
+        if (isEnabled && isDialogNeeded()) {
+            getFragmentController().showDialog(getRoamingAlertDialog(),
+                    ConfirmationDialogFragment.TAG);
+            return false;
+        }
+
+        setRoamingEnabled(isEnabled);
+        return true;
+    }
+
+    @Override
+    public void onMobileNetworkUpdated(int subId) {
+        setSubId(subId);
+        refreshUi();
+    }
+
+    private void setRoamingEnabled(boolean enabled) {
+        mTelephonyManager.setDataRoamingEnabled(enabled);
+        refreshUi();
+    }
+
+    private boolean isDialogNeeded() {
+        boolean isRoamingEnabled = mTelephonyManager.isDataRoamingEnabled();
+        PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
+
+        // Need dialog if we need to turn on roaming and the roaming charge indication is allowed.
+        if (!isRoamingEnabled && (carrierConfig == null || !carrierConfig.getBoolean(
+                CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL))) {
+            return true;
+        }
+        return false;
+    }
+
+    private ConfirmationDialogFragment getRoamingAlertDialog() {
+        return new ConfirmationDialogFragment.Builder(getContext())
+                .setTitle(R.string.roaming_alert_title)
+                .setMessage(R.string.roaming_warning)
+                .setPositiveButton(android.R.string.yes, mConfirmListener)
+                .setNegativeButton(android.R.string.no, /* rejectListener= */ null)
+                .build();
+    }
+
+    /** Observer that listens to data roaming change. */
+    private static class RoamingStateChangeObserver extends ContentObserver {
+
+        private Runnable mChangeListener;
+
+        RoamingStateChangeObserver(Handler handler, Runnable changeListener) {
+            super(handler);
+            mChangeListener = changeListener;
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            super.onChange(selfChange);
+            mChangeListener.run();
+        }
+
+        /** Register this observer to listen for updates to {@link Settings.Global#DATA_ROAMING}. */
+        public void register(Context context, int subId) {
+            Uri uri = Settings.Global.getUriFor(Settings.Global.DATA_ROAMING);
+            if (TelephonyManager.from(context).getSimCount() != 1) {
+                uri = Settings.Global.getUriFor(Settings.Global.DATA_ROAMING + subId);
+            }
+            context.getContentResolver().registerContentObserver(uri,
+                    /* notifyForDescendants= */ false, /* observer= */ this);
+        }
+
+        /** Unregister this observer. */
+        public void unregister(Context context) {
+            context.getContentResolver().unregisterContentObserver(/* observer= */ this);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/network/SubscriptionUtils.java b/src/com/android/car/settings/network/SubscriptionUtils.java
new file mode 100644
index 0000000..cf1eba9
--- /dev/null
+++ b/src/com/android/car/settings/network/SubscriptionUtils.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT;
+
+import static com.android.internal.util.CollectionUtils.emptyIfNull;
+
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.telephony.UiccSlotInfo;
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/** Shared logic related to dealing with multiple subscriptions. */
+public final class SubscriptionUtils {
+
+    private SubscriptionUtils() {
+    }
+
+    /**
+     * Returns the list of available subscriptions, accounting for duplicates possible through a
+     * virtual network provider.
+     */
+    public static List<SubscriptionInfo> getAvailableSubscriptions(
+            SubscriptionManager subscriptionManager, TelephonyManager telephonyManager) {
+        List<SubscriptionInfo> subscriptions = new ArrayList<>(
+                emptyIfNull(subscriptionManager.getSelectableSubscriptionInfoList()));
+
+        // Look for inactive but present physical SIMs that are missing from the selectable list.
+        List<UiccSlotInfo> missing = new ArrayList<>();
+        UiccSlotInfo[] slotsInfo = telephonyManager.getUiccSlotsInfo();
+        for (int i = 0; slotsInfo != null && i < slotsInfo.length; i++) {
+            UiccSlotInfo slotInfo = slotsInfo[i];
+            if (isInactiveInsertedPSim(slotInfo)) {
+                int index = slotInfo.getLogicalSlotIdx();
+                String cardId = slotInfo.getCardId();
+
+                boolean found = subscriptions.stream().anyMatch(
+                        info -> index == info.getSimSlotIndex() && cardId.equals(
+                                info.getCardString()));
+                if (!found) {
+                    missing.add(slotInfo);
+                }
+            }
+        }
+        if (!missing.isEmpty()) {
+            for (SubscriptionInfo info : subscriptionManager.getAllSubscriptionInfoList()) {
+                for (UiccSlotInfo slotInfo : missing) {
+                    if (info.getSimSlotIndex() == slotInfo.getLogicalSlotIdx()
+                            && info.getCardString().equals(slotInfo.getCardId())) {
+                        subscriptions.add(info);
+                        break;
+                    }
+                }
+            }
+        }
+
+        // With some carriers such as Google Fi which provide a sort of virtual service that spans
+        // across multiple underlying networks, we end up with subscription entries for the
+        // underlying networks that need to be hidden from the user in the UI.
+        for (Iterator<SubscriptionInfo> iter = subscriptions.iterator(); iter.hasNext(); ) {
+            SubscriptionInfo info = iter.next();
+            if (TextUtils.isEmpty(info.getMncString())) {
+                iter.remove();
+            }
+        }
+        return subscriptions;
+    }
+
+    private static boolean isInactiveInsertedPSim(UiccSlotInfo slotInfo) {
+        return !slotInfo.getIsEuicc() && !slotInfo.getIsActive()
+                && slotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT;
+    }
+}
diff --git a/src/com/android/car/settings/network/SubscriptionsChangeListener.java b/src/com/android/car/settings/network/SubscriptionsChangeListener.java
new file mode 100644
index 0000000..dc77fe9
--- /dev/null
+++ b/src/com/android/car/settings/network/SubscriptionsChangeListener.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.telephony.SubscriptionManager;
+
+import com.android.internal.telephony.TelephonyIntents;
+
+/** Listens to changes in availability of telephony subscriptions. */
+public class SubscriptionsChangeListener {
+
+    /** Client defined action to trigger when there are subscription changes. */
+    public interface SubscriptionsChangeAction {
+        /** Action taken when subscriptions changed. */
+        void onSubscriptionsChanged();
+    }
+
+    private static final IntentFilter RADIO_TECH_CHANGED_FILTER = new IntentFilter(
+            TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+
+    private final Context mContext;
+    private final SubscriptionManager mSubscriptionManager;
+    private final SubscriptionsChangeAction mSubscriptionsChangeAction;
+
+    private final SubscriptionManager.OnSubscriptionsChangedListener mSubscriptionsChangedListener =
+            new SubscriptionManager.OnSubscriptionsChangedListener() {
+                @Override
+                public void onSubscriptionsChanged() {
+                    subscriptionsChangedCallback();
+                }
+            };
+
+    private final BroadcastReceiver mRadioTechChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (!isInitialStickyBroadcast()) {
+                subscriptionsChangedCallback();
+            }
+        }
+    };
+
+    public SubscriptionsChangeListener(Context context, SubscriptionsChangeAction action) {
+        mContext = context;
+        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+        mSubscriptionsChangeAction = action;
+    }
+
+    /** Starts the various listeners necessary to track changes in telephony subscriptions. */
+    public void start() {
+        mSubscriptionManager.addOnSubscriptionsChangedListener(mSubscriptionsChangedListener);
+        mContext.registerReceiver(mRadioTechChangeReceiver, RADIO_TECH_CHANGED_FILTER);
+    }
+
+    /** Stops the various listeners necessary to track changes in telephony subscriptions. */
+    public void stop() {
+        mSubscriptionManager.removeOnSubscriptionsChangedListener(mSubscriptionsChangedListener);
+        mContext.unregisterReceiver(mRadioTechChangeReceiver);
+    }
+
+    private void subscriptionsChangedCallback() {
+        if (mSubscriptionsChangeAction != null) {
+            mSubscriptionsChangeAction.onSubscriptionsChanged();
+        }
+    }
+}
diff --git a/src/com/android/car/settings/quicksettings/BluetoothTile.java b/src/com/android/car/settings/quicksettings/BluetoothTile.java
index d82fe10..889e525 100644
--- a/src/com/android/car/settings/quicksettings/BluetoothTile.java
+++ b/src/com/android/car/settings/quicksettings/BluetoothTile.java
@@ -11,10 +11,10 @@
  * 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
+ * limitations under the License.
  */
-package com.android.car.settings.quicksettings;
 
+package com.android.car.settings.quicksettings;
 
 import android.annotation.DrawableRes;
 import android.annotation.Nullable;
@@ -27,6 +27,8 @@
 import android.view.View;
 
 import com.android.car.settings.R;
+import com.android.car.settings.bluetooth.BluetoothSettingsFragment;
+import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.common.Logger;
 import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -40,6 +42,7 @@
     private final StateChangedListener mStateChangedListener;
     private LocalBluetoothAdapter mLocalAdapter;
     private LocalBluetoothManager mLocalManager;
+    private View.OnLongClickListener mLaunchBluetoothSettings;
 
     @DrawableRes
     private int mIconRes = R.drawable.ic_settings_bluetooth;
@@ -65,7 +68,7 @@
                         break;
                     default:
                         mIconRes = R.drawable.ic_settings_bluetooth;
-                        mText = mContext.getString(R.string.bluetooth_settings);
+                        mText = mContext.getString(R.string.bluetooth_settings_title);
                         mState = State.ON;
                 }
             } else if (action.equals(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)) {
@@ -84,20 +87,19 @@
         }
     };
 
-    BluetoothTile(Context context, StateChangedListener stateChangedListener) {
+    BluetoothTile(
+            Context context,
+            StateChangedListener stateChangedListener,
+            FragmentController fragmentController) {
         mStateChangedListener = stateChangedListener;
         mContext = context;
-        IntentFilter mBtStateChangeFilter = new IntentFilter();
-        mBtStateChangeFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
-        mBtStateChangeFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
-        mContext.registerReceiver(mBtStateReceiver, mBtStateChangeFilter);
         mLocalManager = LocalBluetoothManager.getInstance(
                 mContext, /* onInitCallback= */ null);
         if (mLocalManager == null) {
             LOG.e("Bluetooth is not supported on this device");
             return;
         }
-        mText = mContext.getString(R.string.bluetooth_settings);
+        mText = mContext.getString(R.string.bluetooth_settings_title);
         mLocalAdapter = mLocalManager.getBluetoothAdapter();
         if (mLocalAdapter.isEnabled()) {
             mIconRes = R.drawable.ic_settings_bluetooth;
@@ -106,11 +108,15 @@
             mIconRes = R.drawable.ic_settings_bluetooth_disabled;
             mState = State.OFF;
         }
+        mLaunchBluetoothSettings = v -> {
+            fragmentController.launchFragment(new BluetoothSettingsFragment());
+            return true;
+        };
     }
 
     @Nullable
-    public View.OnClickListener getDeepDiveListener() {
-        return null;
+    public View.OnLongClickListener getOnLongClickListener() {
+        return mLaunchBluetoothSettings;
     }
 
     @Override
@@ -136,6 +142,14 @@
     }
 
     @Override
+    public void start() {
+        IntentFilter mBtStateChangeFilter = new IntentFilter();
+        mBtStateChangeFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+        mBtStateChangeFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
+        mContext.registerReceiver(mBtStateReceiver, mBtStateChangeFilter);
+    }
+
+    @Override
     public void stop() {
         mContext.unregisterReceiver(mBtStateReceiver);
     }
@@ -145,6 +159,6 @@
         if (mLocalAdapter == null) {
             return;
         }
-        mLocalAdapter.setBluetoothEnabled(mLocalAdapter.isEnabled() ? false : true);
+        mLocalAdapter.setBluetoothEnabled(!mLocalAdapter.isEnabled());
     }
 }
diff --git a/src/com/android/car/settings/quicksettings/BrightnessTile.java b/src/com/android/car/settings/quicksettings/BrightnessTile.java
index c98c70f..2ffab9f 100644
--- a/src/com/android/car/settings/quicksettings/BrightnessTile.java
+++ b/src/com/android/car/settings/quicksettings/BrightnessTile.java
@@ -17,8 +17,15 @@
 
 import static android.provider.Settings.System.SCREEN_BRIGHTNESS;
 
+import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
+import static com.android.settingslib.display.BrightnessUtils.convertGammaToLinear;
+import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma;
+
+import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
-import android.provider.Settings;
+import android.os.PowerManager;
+import android.provider.Settings.SettingNotFoundException;
+import android.provider.Settings.System;
 import android.widget.SeekBar;
 
 import com.android.car.settings.common.Logger;
@@ -28,11 +35,17 @@
  */
 public class BrightnessTile implements QuickSettingGridAdapter.SeekbarTile {
     private static final Logger LOG = new Logger(BrightnessTile.class);
-    private static final int MAX_BRIGHTNESS = 255;
+    private CarUserManagerHelper mCarUserManagerHelper;
     private final Context mContext;
+    private final int mMaximumBacklight;
+    private final int mMinimumBacklight;
 
     public BrightnessTile(Context context) {
         mContext = context;
+        mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+        PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+        mMaximumBacklight = powerManager.getMaximumScreenBrightnessSetting();
+        mMinimumBacklight = powerManager.getMinimumScreenBrightnessSetting();
     }
 
     @Override
@@ -46,29 +59,35 @@
     }
 
     @Override
-    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-        Settings.System.putInt(mContext.getContentResolver(), SCREEN_BRIGHTNESS, progress);
+    public void onProgressChanged(SeekBar seekBar, int gamma, boolean fromUser) {
+        int linear = convertGammaToLinear(gamma, mMinimumBacklight, mMaximumBacklight);
+        System.putIntForUser(mContext.getContentResolver(), SCREEN_BRIGHTNESS, linear,
+                             mCarUserManagerHelper.getCurrentForegroundUserId());
     }
 
     @Override
     public int getMax() {
-        return MAX_BRIGHTNESS;
+        return GAMMA_SPACE_MAX;
+    }
+
+    @Override
+    public void start() {
     }
 
     @Override
     public void stop() {
-        // nothing to do.
     }
 
     @Override
     public int getCurrent() {
-        int currentBrightness = 0;
+        int gamma = GAMMA_SPACE_MAX;
         try {
-            currentBrightness = Settings.System.getInt(mContext.getContentResolver(),
-                    SCREEN_BRIGHTNESS);
-        } catch (Settings.SettingNotFoundException e) {
+            int linear = System.getIntForUser(mContext.getContentResolver(), SCREEN_BRIGHTNESS,
+                                              mCarUserManagerHelper.getCurrentForegroundUserId());
+            gamma = convertLinearToGamma(linear, mMinimumBacklight, mMaximumBacklight);
+        } catch (SettingNotFoundException e) {
             LOG.w("Can't find setting for SCREEN_BRIGHTNESS.");
         }
-        return currentBrightness;
+        return gamma;
     }
 }
diff --git a/src/com/android/car/settings/quicksettings/CelluarTile.java b/src/com/android/car/settings/quicksettings/CelluarTile.java
index e1cafba..907a5a3 100644
--- a/src/com/android/car/settings/quicksettings/CelluarTile.java
+++ b/src/com/android/car/settings/quicksettings/CelluarTile.java
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.car.settings.quicksettings;
 
+package com.android.car.settings.quicksettings;
 
 import android.annotation.Nullable;
 import android.content.Context;
@@ -56,7 +56,7 @@
     }
 
     @Nullable
-    public View.OnClickListener getDeepDiveListener() {
+    public View.OnLongClickListener getOnLongClickListener() {
         return null;
     }
 
@@ -82,6 +82,10 @@
     }
 
     @Override
+    public void start() {
+    }
+
+    @Override
     public void stop() {
     }
 
diff --git a/src/com/android/car/settings/quicksettings/DayNightTile.java b/src/com/android/car/settings/quicksettings/DayNightTile.java
index e4c599c..4e05fd8 100644
--- a/src/com/android/car/settings/quicksettings/DayNightTile.java
+++ b/src/com/android/car/settings/quicksettings/DayNightTile.java
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.car.settings.quicksettings;
 
+package com.android.car.settings.quicksettings;
 
 import android.annotation.DrawableRes;
 import android.annotation.Nullable;
@@ -22,17 +22,19 @@
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.view.View;
-import android.view.View.OnClickListener;
 
 import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.display.DisplaySettingsFragment;
 
 /**
- * Controls Day night mode tile on quick setting page.
+ * Toggles auto or night mode tile on quick setting page.
  */
 public class DayNightTile implements QuickSettingGridAdapter.Tile {
     private final Context mContext;
     private final StateChangedListener mStateChangedListener;
     private final UiModeManager mUiModeManager;
+    private final View.OnLongClickListener mLaunchDisplaySettings;
 
     @DrawableRes
     private int mIconRes = R.drawable.ic_settings_night_display;
@@ -41,7 +43,10 @@
 
     private State mState = State.ON;
 
-    DayNightTile(Context context, StateChangedListener stateChangedListener) {
+    DayNightTile(
+            Context context,
+            StateChangedListener stateChangedListener,
+            FragmentController fragmentController) {
         mStateChangedListener = stateChangedListener;
         mContext = context;
         mUiModeManager = (UiModeManager) mContext.getSystemService(Context.UI_MODE_SERVICE);
@@ -51,11 +56,15 @@
             mState = State.OFF;
         }
         mText = mContext.getString(R.string.night_mode_tile_label);
+        mLaunchDisplaySettings = v -> {
+            fragmentController.launchFragment(new DisplaySettingsFragment());
+            return true;
+        };
     }
 
     @Nullable
-    public OnClickListener getDeepDiveListener() {
-        return null;
+    public View.OnLongClickListener getOnLongClickListener() {
+        return mLaunchDisplaySettings;
     }
 
     @Override
@@ -80,13 +89,17 @@
     }
 
     @Override
+    public void start() {
+    }
+
+    @Override
     public void stop() {
     }
 
     @Override
     public void onClick(View v) {
         if (mUiModeManager.getNightMode() == UiModeManager.MODE_NIGHT_YES) {
-            mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
+            mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_AUTO);
         } else {
             mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
         }
diff --git a/src/com/android/car/settings/quicksettings/QuickSettingFragment.java b/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
index 9e177c6..1001e87 100644
--- a/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
+++ b/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
@@ -13,18 +13,31 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package com.android.car.settings.quicksettings;
 
+import android.app.Activity;
 import android.car.drivingstate.CarUxRestrictions;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
 import android.content.pm.UserInfo;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.os.Bundle;
+import android.os.SystemProperties;
+import android.os.UserManager;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.widget.ImageView;
+import android.widget.Button;
+import android.widget.FrameLayout;
 import android.widget.TextView;
 
-import androidx.car.widget.PagedListView;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.Guideline;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
@@ -33,65 +46,145 @@
 import com.android.car.settings.users.UserIconProvider;
 import com.android.car.settings.users.UserSwitcherFragment;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
 /**
  * Shows a page to access frequently used settings.
  */
 public class QuickSettingFragment extends BaseFragment {
-    private CarUserManagerHelper  mCarUserManagerHelper;
+    // Time to delay refreshing the build info, if the clock is not correct.
+    private static final long BUILD_INFO_REFRESH_TIME_MS = TimeUnit.SECONDS.toMillis(5);
+    /**
+     * Indicates whether all Preferences are configured to ignore UX Restrictions Event.
+     */
+    private boolean mAllIgnoresUxRestrictions;
+
+    /**
+     * Set of the keys of Preferences that ignore UX Restrictions. When mAlwaysIgnoreUxRestrictions
+     * is configured to be false, then only the Preferences whose keys are contained in this Set
+     * ignore UX Restrictions.
+     */
+    private Set<String> mPreferencesIgnoringUxRestrictions;
+
+    private CarUserManagerHelper mCarUserManagerHelper;
     private UserIconProvider mUserIconProvider;
     private QuickSettingGridAdapter mGridAdapter;
-    private PagedListView mListView;
-    private View mFullSettingBtn;
+    private RecyclerView mListView;
+    private View mFullSettingsBtn;
     private View mUserSwitcherBtn;
     private HomeFragmentLauncher mHomeFragmentLauncher;
     private float mOpacityDisabled;
     private float mOpacityEnabled;
+    private TextView mBuildInfo;
 
-    /**
-     * Returns an instance of this class.
-     */
-    public static QuickSettingFragment newInstance() {
-        QuickSettingFragment quickSettingFragment = new QuickSettingFragment();
-        Bundle bundle = quickSettingFragment.getBundle();
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_quick_settings);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.quick_settings);
-        bundle.putInt(EXTRA_TITLE_ID, R.string.settings_label);
-        quickSettingFragment.setArguments(bundle);
-        return quickSettingFragment;
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_quick_settings;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.quick_settings;
     }
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         mHomeFragmentLauncher = new HomeFragmentLauncher();
-        getActivity().findViewById(R.id.action_bar_icon_container).setOnClickListener(
-                v -> getActivity().finish());
+        Activity activity = requireActivity();
 
-        mOpacityDisabled = getContext().getResources().getFloat(R.dimen.opacity_disabled);
-        mOpacityEnabled = getContext().getResources().getFloat(R.dimen.opacity_enabled);
-        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
+        FragmentManager fragmentManager = ((FragmentActivity) activity).getSupportFragmentManager();
+        if (fragmentManager.getBackStackEntryCount() == 1
+                && fragmentManager.findFragmentByTag("0") != null
+                && fragmentManager.findFragmentByTag("0").getClass().getName().equals(
+                getString(R.string.config_settings_hierarchy_root_fragment))
+                && !getContext().getResources()
+                .getBoolean(R.bool.config_show_settings_root_exit_icon)) {
+            hideExitIcon();
+        }
+
+        activity.findViewById(R.id.action_bar_icon_container).setOnClickListener(
+                v -> activity.finish());
+
+        mOpacityDisabled = activity.getResources().getFloat(R.dimen.opacity_disabled);
+        mOpacityEnabled = activity.getResources().getFloat(R.dimen.opacity_enabled);
+        mCarUserManagerHelper = new CarUserManagerHelper(activity);
         mUserIconProvider = new UserIconProvider(mCarUserManagerHelper);
-        mListView = (PagedListView) getActivity().findViewById(R.id.list);
-        mGridAdapter = new QuickSettingGridAdapter(getContext());
-        mListView.getRecyclerView().setLayoutManager(mGridAdapter.getGridLayoutManager());
+        mListView = activity.findViewById(R.id.list);
+        mGridAdapter = new QuickSettingGridAdapter(activity);
+        mListView.setLayoutManager(mGridAdapter.getGridLayoutManager());
 
-        mFullSettingBtn = getActivity().findViewById(R.id.full_setting_btn);
-        mFullSettingBtn.setOnClickListener(mHomeFragmentLauncher);
-        mUserSwitcherBtn = getActivity().findViewById(R.id.user_switcher_btn);
+        mFullSettingsBtn = activity.findViewById(R.id.full_settings_btn);
+        mFullSettingsBtn.setOnClickListener(mHomeFragmentLauncher);
+        mUserSwitcherBtn = activity.findViewById(R.id.user_switcher_btn);
         mUserSwitcherBtn.setOnClickListener(v -> {
-            getFragmentController().launchFragment(UserSwitcherFragment.newInstance());
+            getFragmentController().launchFragment(new UserSwitcherFragment());
         });
+        setupUserButton(activity);
 
-        View exitBtn = getActivity().findViewById(R.id.exit_button);
+        View exitBtn = activity.findViewById(R.id.action_bar_icon_container);
         exitBtn.setOnClickListener(v -> getFragmentController().goBack());
 
         mGridAdapter
-                .addTile(new WifiTile(getContext(), mGridAdapter, getFragmentController()))
-                .addTile(new BluetoothTile(getContext(), mGridAdapter))
-                .addTile(new DayNightTile(getContext(), mGridAdapter))
-                .addTile(new CelluarTile(getContext(), mGridAdapter))
-                .addSeekbarTile(new BrightnessTile(getContext()));
+                .addTile(new WifiTile(activity, mGridAdapter, getFragmentController()))
+                .addTile(new BluetoothTile(activity, mGridAdapter, getFragmentController()))
+                .addTile(new DayNightTile(activity, mGridAdapter, getFragmentController()))
+                .addTile(new CelluarTile(activity, mGridAdapter))
+                .addSeekbarTile(new BrightnessTile(activity));
         mListView.setAdapter(mGridAdapter);
+
+        mPreferencesIgnoringUxRestrictions = new HashSet<String>(Arrays.asList(
+                getContext().getResources().getStringArray(R.array.config_ignore_ux_restrictions)));
+        mAllIgnoresUxRestrictions =
+                getContext().getResources().getBoolean(R.bool.config_always_ignore_ux_restrictions);
+    }
+
+    @Override
+    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        mBuildInfo = view.requireViewById(R.id.build_info);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        mGridAdapter.start();
+        mUserSwitcherBtn.setVisibility(showUserSwitcher() ? View.VISIBLE : View.INVISIBLE);
+        // In non-user builds (that is, user-debug, eng, etc), display some version information.
+        if (!Build.IS_USER) {
+            refreshBuildInfo();
+        }
+    }
+
+    private void refreshBuildInfo() {
+        if (!isAdded()) {
+            // This can happen if the delayed post happens before we're stopped. Just give up
+            // trying to get the right clock.
+            return;
+        }
+
+        long buildTimeDiffDays =
+                TimeUnit.MILLISECONDS.toDays(System.currentTimeMillis() - Build.TIME);
+        if (buildTimeDiffDays < 0) {
+            // If it's in the past, that likely means the current time is wrong (or the build time
+            // could be wrong, but that's less likely). Reschedule this to run in a few seconds to
+            // see whether the clock's been fixed.
+            mBuildInfo.postDelayed(this::refreshBuildInfo, BUILD_INFO_REFRESH_TIME_MS);
+        }
+
+        String str = String.format(getResources().getString(R.string.build_info_fmt),
+                Build.FINGERPRINT, SystemProperties.get("ro.build.date", "<unknown>"),
+                buildTimeDiffDays < 0 ? "--" : Long.toString(buildTimeDiffDays));
+
+        mBuildInfo.setVisibility(View.VISIBLE);
+        mBuildInfo.setText(str);
     }
 
     @Override
@@ -100,49 +193,71 @@
         mGridAdapter.stop();
     }
 
-    private void setupAccountButton() {
-        ImageView userIcon = (ImageView) getActivity().findViewById(R.id.user_icon);
+    private void setupUserButton(Context context) {
+        Button userButton = requireActivity().findViewById(R.id.user_switcher_btn);
         UserInfo currentUserInfo = mCarUserManagerHelper.getCurrentForegroundUserInfo();
-        userIcon.setImageDrawable(mUserIconProvider.getUserIcon(currentUserInfo, getContext()));
-        userIcon.clearColorFilter();
+        Drawable userIcon = mUserIconProvider.getUserIcon(currentUserInfo, context);
+        userButton.setCompoundDrawablesRelativeWithIntrinsicBounds(userIcon, /* top= */
+                null, /* end= */ null, /* bottom= */ null);
+        userButton.setText(currentUserInfo.name);
+    }
 
-        TextView userSwitcherText = (TextView) getActivity().findViewById(R.id.user_switcher_text);
-        userSwitcherText.setText(currentUserInfo.name);
+    private boolean showUserSwitcher() {
+        return !UserManager.isDeviceInDemoMode(getContext())
+                && UserManager.supportsMultipleUsers()
+                && !UserManager.get(getContext()).hasUserRestriction(
+                UserManager.DISALLOW_USER_SWITCH);
     }
 
     /**
      * Quick setting fragment is distraction optimized, so is allowed at all times.
      */
     @Override
-    public boolean canBeShown(CarUxRestrictions carUxRestrictions) {
+    public boolean canBeShown(@NonNull CarUxRestrictions carUxRestrictions) {
         return true;
     }
 
     @Override
-    public void onUxRestrictionChanged(CarUxRestrictions carUxRestrictions) {
+    public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
         // TODO: update tiles
-        applyRestriction(CarUxRestrictionsHelper.isNoSetup(carUxRestrictions));
+        if (!hasPreferenceIgnoringUxRestrictions(mAllIgnoresUxRestrictions,
+                mPreferencesIgnoringUxRestrictions)) {
+            applyRestriction(CarUxRestrictionsHelper.isNoSetup(restrictionInfo));
+        }
     }
 
     private void applyRestriction(boolean restricted) {
-        mHomeFragmentLauncher.showDOBlockingMessage(restricted);
-        mFullSettingBtn.setAlpha(restricted ? mOpacityDisabled : mOpacityEnabled);
+        mHomeFragmentLauncher.showBlockingMessage(restricted);
+        mFullSettingsBtn.setAlpha(restricted ? mOpacityDisabled : mOpacityEnabled);
     }
 
     private class HomeFragmentLauncher implements OnClickListener {
-        private boolean mShowDOBlockingMessage;
+        private boolean mShowBlockingMessage;
 
-        private void showDOBlockingMessage(boolean show) {
-            mShowDOBlockingMessage = show;
+        private void showBlockingMessage(boolean show) {
+            mShowBlockingMessage = show;
         }
 
         @Override
         public void onClick(View v) {
-            if (mShowDOBlockingMessage) {
-                getFragmentController().showDOBlockingMessage();
+            if (mShowBlockingMessage) {
+                getFragmentController().showBlockingMessage();
             } else {
-                getFragmentController().launchFragment(HomepageFragment.newInstance());
+                getFragmentController().launchFragment(new HomepageFragment());
             }
         }
     }
+
+    private boolean hasPreferenceIgnoringUxRestrictions(boolean allIgnores, Set prefsThatIgnore) {
+        return allIgnores || prefsThatIgnore.size() > 0;
+    }
+
+    private void hideExitIcon() {
+        requireActivity().findViewById(R.id.action_bar_icon_container)
+                .setVisibility(FrameLayout.GONE);
+
+        Guideline guideLine = (Guideline) requireActivity().findViewById(R.id.start_margin);
+        guideLine.setGuidelineBegin(getResources()
+                .getDimensionPixelOffset(R.dimen.action_bar_no_icon_start_margin));
+    }
 }
diff --git a/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java b/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
index 19b380d..412c3bd 100644
--- a/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
+++ b/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 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.
@@ -13,6 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License
  */
+
 package com.android.car.settings.quicksettings;
 
 import android.annotation.Nullable;
@@ -21,7 +22,6 @@
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.SeekBar;
@@ -71,7 +71,14 @@
          * A state to indicate how we want to render icon, this is independent of what to show
          * in text.
          */
-        enum State {OFF, ON}
+        enum State {
+            OFF, ON
+        }
+
+        /**
+         * Called when activity owning this tile's onStart() gets called.
+         */
+        void start();
 
         /**
          * Called when activity owning this tile's onStop() gets called.
@@ -91,15 +98,20 @@
         boolean isAvailable();
 
         /**
-         * Returns a listener for launching a setting fragment for advanced configuration for this
-         * tile, A.K.A deep dive, if available. {@code null} if deep dive is not available.
+         * Returns a listener to call when this tile is clicked and held. Returns {@code null} if
+         * no action should be performed.
          */
         @Nullable
-        OnClickListener getDeepDiveListener();
+        View.OnLongClickListener getOnLongClickListener();
     }
 
     interface SeekbarTile extends SeekBar.OnSeekBarChangeListener {
         /**
+         * Called when activity owning this tile's onStart() gets called.
+         */
+        void start();
+
+        /**
          * Called when activity owning this tile's onStop() gets called.
          */
         void stop();
@@ -121,6 +133,15 @@
         return this;
     }
 
+    void start() {
+        for (SeekbarTile tile : mSeekbarTiles) {
+            tile.start();
+        }
+        for (Tile tile : mTiles) {
+            tile.start();
+        }
+    }
+
     void stop() {
         for (SeekbarTile tile : mSeekbarTiles) {
             tile.stop();
@@ -159,15 +180,12 @@
             case TILE_VIEWTYPE:
                 Tile tile = mTiles.get(position - mSeekbarTiles.size());
                 TileViewHolder vh = (TileViewHolder) holder;
-                OnClickListener deepDiveListener = tile.getDeepDiveListener();
                 vh.itemView.setOnClickListener(tile);
-                if (deepDiveListener != null) {
-                    vh.mDeepDiveIcon.setVisibility(View.VISIBLE);
-                    vh.mTextContainer.setOnClickListener(deepDiveListener);
+                View.OnLongClickListener onLongClickListener = tile.getOnLongClickListener();
+                if (onLongClickListener != null) {
+                    vh.itemView.setOnLongClickListener(onLongClickListener);
                 } else {
-                    vh.mDeepDiveIcon.setVisibility(View.GONE);
-                    vh.mTextContainer.setClickable(false);
-                    vh.mTextContainer.setOnClickListener(null);
+                    vh.itemView.setOnLongClickListener(null);
                 }
                 vh.mIcon.setImageDrawable(tile.getIcon());
                 switch (tile.getState()) {
@@ -200,28 +218,22 @@
     }
 
     private class TileViewHolder extends RecyclerView.ViewHolder {
-        private final View mIconContainer;
-        private final View mTextContainer;
         private final View mIconBackground;
         private final ImageView mIcon;
-        private final ImageView mDeepDiveIcon;
         private final TextView mText;
 
         TileViewHolder(View view) {
             super(view);
-            mIconContainer = view.findViewById(R.id.icon_container);
-            mTextContainer = view.findViewById(R.id.text_container);
             mIconBackground = view.findViewById(R.id.icon_background);
-            mIcon = (ImageView) view.findViewById(R.id.tile_icon);
-            mDeepDiveIcon = (ImageView) view.findViewById(R.id.deep_dive_icon);
-            mText = (TextView) view.findViewById(R.id.tile_text);
+            mIcon = view.findViewById(R.id.tile_icon);
+            mText = view.findViewById(R.id.tile_text);
         }
     }
 
     class QsSpanSizeLookup extends GridLayoutManager.SpanSizeLookup {
 
         /**
-         * Each line item takes a full row, and each tile takes only 1 span.
+         * Each list item takes a full row, and each tile takes only 1 span.
          */
         @Override
         public int getSpanSize(int position) {
diff --git a/src/com/android/car/settings/quicksettings/WifiTile.java b/src/com/android/car/settings/quicksettings/WifiTile.java
index 592f255..304f6e9 100644
--- a/src/com/android/car/settings/quicksettings/WifiTile.java
+++ b/src/com/android/car/settings/quicksettings/WifiTile.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 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.
@@ -13,18 +13,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License
  */
-package com.android.car.settings.quicksettings;
 
+package com.android.car.settings.quicksettings;
 
 import android.annotation.DrawableRes;
 import android.annotation.Nullable;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.view.View;
-import android.view.View.OnClickListener;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment.FragmentController;
+import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.wifi.CarWifiManager;
 import com.android.car.settings.wifi.WifiSettingsFragment;
 import com.android.car.settings.wifi.WifiUtil;
@@ -37,9 +36,8 @@
     private final StateChangedListener mStateChangedListener;
     private final CarWifiManager mCarWifiManager;
     private final Context mContext;
-    private final FragmentController mFragmentController;
 
-    private final OnClickListener mSwitchSavedWifiListener;
+    private final View.OnLongClickListener mLaunchWifiSettings;
 
     @DrawableRes
     private int mIconRes = R.drawable.ic_settings_wifi;
@@ -48,16 +46,16 @@
 
     private State mState = State.OFF;
 
-    WifiTile(Context context, StateChangedListener stateChangedListener,
+    WifiTile(
+            Context context,
+            StateChangedListener stateChangedListener,
             FragmentController fragmentController) {
         mContext = context;
-        mFragmentController = fragmentController;
-        mSwitchSavedWifiListener = v -> {
-            mFragmentController.launchFragment(
-                    WifiSettingsFragment.newInstance().showSavedApOnly(true));
+        mLaunchWifiSettings = v -> {
+            fragmentController.launchFragment(new WifiSettingsFragment());
+            return true;
         };
-        mCarWifiManager = new CarWifiManager(context, /* listener= */ this);
-        mCarWifiManager.start();
+        mCarWifiManager = new CarWifiManager(context);
         mStateChangedListener = stateChangedListener;
         // init icon and text etc.
         updateAccessPointSsid();
@@ -65,9 +63,8 @@
     }
 
     @Nullable
-    public OnClickListener getDeepDiveListener() {
-        return !mCarWifiManager.getSavedAccessPoints().isEmpty()
-                ? mSwitchSavedWifiListener : null;
+    public View.OnLongClickListener getOnLongClickListener() {
+        return mLaunchWifiSettings;
     }
 
     @Override
@@ -92,7 +89,14 @@
     }
 
     @Override
+    public void start() {
+        mCarWifiManager.addListener(this);
+        mCarWifiManager.start();
+    }
+
+    @Override
     public void stop() {
+        mCarWifiManager.removeListener(this);
         mCarWifiManager.stop();
         mCarWifiManager.destroy();
     }
@@ -130,6 +134,7 @@
 
     /**
      * Updates the text with access point connected, if any
+     *
      * @return {@code true} if the text is updated, {@code false} other wise.
      */
     private boolean updateAccessPointSsid() {
diff --git a/src/com/android/car/settings/security/AddTrustedDeviceActivity.java b/src/com/android/car/settings/security/AddTrustedDeviceActivity.java
new file mode 100644
index 0000000..b00595e
--- /dev/null
+++ b/src/com/android/car/settings/security/AddTrustedDeviceActivity.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import android.bluetooth.BluetoothDevice;
+import android.car.Car;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.os.Bundle;
+import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.BaseCarSettingsActivity;
+import com.android.car.settings.common.Logger;
+
+/**
+ * Activity which manages the enrollment process and communicates between
+ * CarTrustAgentEnrollmentService and fragments.
+ *
+ * <p>The flow when user want to enroll a trusted device should be as follows:
+ * <ol>
+ * <li> {@link CarTrustAgentEnrollmentManager#setEnrollmentCallback(
+ *CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback)}
+ * <li> {@link CarTrustAgentEnrollmentManager#setBleCallback(
+ *CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback)}
+ * <li> {@link CarTrustAgentEnrollmentManager#startEnrollmentAdvertising()}
+ * <li> wait for {@link CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback#
+ * onBleEnrollmentDeviceDisconnected(BluetoothDevice)}
+ * <li>  {@link CarTrustAgentEnrollmentManager#stopEnrollmentAdvertising()}
+ * <li> wait for
+ * {@link CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback#onAuthStringAvailable(
+ *BluetoothDevice, String)} to show the pairing code dialog to user
+ * <li> {@link CarTrustAgentEnrollmentManager#enrollmentHandshakeAccepted(BluetoothDevice)} after
+ * user confirms the pairing code
+ * <li> wait for
+ * {@link CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback#onEscrowTokenAdded(long)}
+ * <li> {@link #getCheckLockFragment()}, wait user to input the password
+ * <li> After user enter the correct password, wait for
+ * {@link CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback#
+ * onEscrowTokenActiveStateChanged(long, boolean)}
+ * <li> After get the results, finish the activity
+ * </ol>
+ */
+public class AddTrustedDeviceActivity extends BaseCarSettingsActivity implements CheckLockListener {
+    private static final Logger LOG = new Logger(AddTrustedDeviceActivity.class);
+    private static final String BLUETOOTH_DEVICE_KEY = "bluetoothDevice";
+    private static final String CURRENT_HANDLE_KEY = "currentHandle";
+    private Car mCar;
+    private BluetoothDevice mBluetoothDevice;
+    private long mHandle;
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Nullable
+    private CarTrustAgentEnrollmentManager mCarTrustAgentEnrollmentManager;
+
+    private final CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback
+            mCarTrustAgentEnrollmentCallback =
+            new CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback() {
+
+                @Override
+                public void onEnrollmentHandshakeFailure(BluetoothDevice device, int errorCode) {
+                    LOG.e("Trust agent service time out");
+                }
+
+                @Override
+                public void onAuthStringAvailable(BluetoothDevice device, String authString) {
+                    ConfirmPairingCodeDialog dialog = ConfirmPairingCodeDialog.newInstance(
+                            authString);
+                    dialog.setConfirmPairingCodeListener(mConfirmParingCodeListener);
+                    showDialog(dialog, ConfirmPairingCodeDialog.TAG);
+                }
+
+                @Override
+                public void onEscrowTokenAdded(long handle) {
+                    // User need to enter the correct authentication of the car to activate the
+                    // added token.
+                    mHandle = handle;
+                    launchFragment(getCheckLockFragment());
+                }
+
+                @Override
+                public void onEscrowTokenRemoved(long handle) {
+                }
+
+                @Override
+                public void onEscrowTokenActiveStateChanged(long handle, boolean active) {
+                    if (active) {
+                        onDeviceAddedSuccessfully();
+                    } else {
+                        LOG.d(handle + " has not been activated");
+                    }
+                    finish();
+                }
+            };
+
+    private final CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback
+            mCarTrustAgentBleCallback =
+            new CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback() {
+                @Override
+                public void onBleEnrollmentDeviceConnected(BluetoothDevice device) {
+                    mBluetoothDevice = device;
+                    mCarTrustAgentEnrollmentManager.stopEnrollmentAdvertising();
+                }
+
+                @Override
+                public void onBleEnrollmentDeviceDisconnected(BluetoothDevice device) {
+                    Toast.makeText(AddTrustedDeviceActivity.this, getResources().getString(
+                            R.string.trusted_device_disconnected_toast),
+                            Toast.LENGTH_SHORT).show();
+                    mBluetoothDevice = null;
+                    finish();
+                }
+
+                @Override
+                public void onEnrollmentAdvertisingStarted() {
+                }
+
+                @Override
+                public void onEnrollmentAdvertisingFailed() {
+                    finish();
+                }
+            };
+
+    @VisibleForTesting
+    final ConfirmPairingCodeDialog.ConfirmPairingCodeListener mConfirmParingCodeListener =
+            new ConfirmPairingCodeDialog.ConfirmPairingCodeListener() {
+                public void onConfirmPairingCode() {
+                    mCarTrustAgentEnrollmentManager.enrollmentHandshakeAccepted(mBluetoothDevice);
+                }
+
+                public void onDialogCancelled() {
+                    finish();
+                }
+            };
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mCar = Car.createCar(this);
+        mCarTrustAgentEnrollmentManager = (CarTrustAgentEnrollmentManager) mCar.getCarManager(
+                Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
+        if (mCarTrustAgentEnrollmentManager == null) {
+            LOG.e("CarTrustAgentEnrollmentManager is null");
+            finish();
+        }
+        mCarUserManagerHelper = new CarUserManagerHelper(this);
+        if (savedInstanceState != null) {
+            mBluetoothDevice = savedInstanceState.getParcelable(BLUETOOTH_DEVICE_KEY);
+            mHandle = savedInstanceState.getLong(CURRENT_HANDLE_KEY);
+        }
+        ConfirmPairingCodeDialog dialog =
+                (ConfirmPairingCodeDialog) findDialogByTag(ConfirmPairingCodeDialog.TAG);
+        if (dialog != null) {
+            dialog.setConfirmPairingCodeListener(mConfirmParingCodeListener);
+        }
+    }
+
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        if (mHandle != 0) {
+            if (mCarTrustAgentEnrollmentManager.isEscrowTokenActive(mHandle,
+                    mCarUserManagerHelper.getCurrentProcessUserId())) {
+                onDeviceAddedSuccessfully();
+                finish();
+            }
+        }
+        if (mBluetoothDevice == null) {
+            mCarTrustAgentEnrollmentManager.startEnrollmentAdvertising();
+        }
+        mCarTrustAgentEnrollmentManager.setEnrollmentCallback(mCarTrustAgentEnrollmentCallback);
+        mCarTrustAgentEnrollmentManager.setBleCallback(mCarTrustAgentBleCallback);
+
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        // When activity is pausing not because of a configuration change
+        if (getChangingConfigurations() == 0) {
+            mCarTrustAgentEnrollmentManager.terminateEnrollmentHandshake();
+        }
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        mCarTrustAgentEnrollmentManager.setBleCallback(null);
+        mCarTrustAgentEnrollmentManager.setEnrollmentCallback(null);
+        mCarTrustAgentEnrollmentManager.stopEnrollmentAdvertising();
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle savedInstanceState) {
+        super.onSaveInstanceState(savedInstanceState);
+        savedInstanceState.putParcelable(BLUETOOTH_DEVICE_KEY, mBluetoothDevice);
+        savedInstanceState.putLong(CURRENT_HANDLE_KEY, mHandle);
+    }
+
+
+    @Override
+    @Nullable
+    protected Fragment getInitialFragment() {
+        Fragment currentFragment = getSupportFragmentManager().findFragmentById(
+                R.id.fragment_container);
+        return currentFragment == null ? new AddTrustedDeviceProgressFragment() : currentFragment;
+    }
+
+    private Fragment getCheckLockFragment() {
+        return ConfirmPasswordFragmentFactory.getFragment(/* context= */ this);
+    }
+
+    @Override
+    public void onLockVerified(byte[] lock) {
+        getSupportFragmentManager().popBackStack();
+    }
+
+    @Override
+    public void onBackPressed() {
+        finish();
+    }
+
+    private void onDeviceAddedSuccessfully() {
+        Toast.makeText(this,
+                getResources().getString(R.string.trusted_device_success_enrollment_toast),
+                Toast.LENGTH_LONG).show();
+    }
+}
diff --git a/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java b/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java
new file mode 100644
index 0000000..b41764e
--- /dev/null
+++ b/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.widget.LockPatternUtils;
+
+/**
+ * Business logic which controls whether the preference is clickeble according to the password
+ * quality of current user.
+ */
+public class AddTrustedDevicePreferenceController extends PreferenceController<Preference> {
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private LockPatternUtils mLockPatternUtils;
+
+    public AddTrustedDevicePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mLockPatternUtils = new LockPatternUtils(context);
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return isUserRestricted() ? DISABLED_FOR_USER : AVAILABLE;
+    }
+
+    private boolean isUserRestricted() {
+        return mCarUserManagerHelper.isCurrentProcessUserHasRestriction(DISALLOW_BLUETOOTH)
+                || mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(
+                BluetoothAdapter.getDefaultAdapter().isEnabled() ? "" : getContext().getString(
+                        R.string.add_device_summary));
+        preference.setEnabled(hasPassword());
+    }
+
+    private boolean hasPassword() {
+        return mLockPatternUtils.getKeyguardStoredPasswordQuality(
+                mCarUserManagerHelper.getCurrentProcessUserId())
+                != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public boolean handlePreferenceClicked(Preference preference) {
+        // Enable the adapter if it is not on (user is notified via summary message).
+        BluetoothAdapter.getDefaultAdapter().enable();
+        /** Need to start {@link AddTrustedDeviceActivity} after the click. */
+        return false;
+    }
+}
diff --git a/src/com/android/car/settings/security/AddTrustedDeviceProgressFragment.java b/src/com/android/car/settings/security/AddTrustedDeviceProgressFragment.java
new file mode 100644
index 0000000..ae4eaf0
--- /dev/null
+++ b/src/com/android/car/settings/security/AddTrustedDeviceProgressFragment.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ProgressBar;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Add trusted device fragment which displays the progress and show the companion app information
+ * to user.
+ */
+public class AddTrustedDeviceProgressFragment extends SettingsFragment {
+    private ProgressBar mProgressBar;
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.add_trusted_device_progress_fragment;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        mProgressBar = requireActivity().findViewById(R.id.progress_bar);
+        mProgressBar.setVisibility(View.VISIBLE);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mProgressBar.setVisibility(View.VISIBLE);
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mProgressBar.setVisibility(View.GONE);
+    }
+}
+
diff --git a/src/com/android/car/settings/security/CheckLockActivity.java b/src/com/android/car/settings/security/CheckLockActivity.java
new file mode 100644
index 0000000..66c3914
--- /dev/null
+++ b/src/com/android/car/settings/security/CheckLockActivity.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * Prompts the user to enter their pin, password, or pattern lock (if set) and returns
+ * {@link #RESULT_OK} on a successful entry or immediately if the user has no lock setup.
+ */
+public class CheckLockActivity extends BaseCarSettingsActivity implements CheckLockListener {
+    @Override
+    @Nullable
+    protected Fragment getInitialFragment() {
+        Fragment lockFragment = ConfirmPasswordFragmentFactory.getFragment(/* context= */ this);
+        if (lockFragment == null) {
+            // User has not set a password
+            setResult(RESULT_OK);
+            finish();
+        }
+        return lockFragment;
+    }
+
+    @Override
+    public void onLockVerified(byte[] lock) {
+        setResult(RESULT_OK);
+        finish();
+    }
+}
diff --git a/src/com/android/car/settings/security/CheckLockListener.java b/src/com/android/car/settings/security/CheckLockListener.java
index cde5e35..45289e3 100644
--- a/src/com/android/car/settings/security/CheckLockListener.java
+++ b/src/com/android/car/settings/security/CheckLockListener.java
@@ -25,5 +25,5 @@
      *
      * @param lock The verified credential
      */
-    void onLockVerified(String lock);
+    void onLockVerified(byte[] lock);
 }
diff --git a/src/com/android/car/settings/security/CheckLockWorker.java b/src/com/android/car/settings/security/CheckLockWorker.java
index ce1832d..856218f 100644
--- a/src/com/android/car/settings/security/CheckLockWorker.java
+++ b/src/com/android/car/settings/security/CheckLockWorker.java
@@ -94,7 +94,7 @@
      * Checks lock PIN/password asynchronously.  To receive callback when check is completed,
      * implement {@link Listener} and call {@link #setListener(Listener)}.
      */
-    public final void checkPinPassword(int userId, String password) {
+    public final void checkPinPassword(int userId, byte[] password) {
         if (mCheckInProgress) {
             LOG.w("Check pin/password request issued while one is still running");
             return;
diff --git a/src/com/android/car/settings/security/ChooseDeviceInstructionPreferenceController.java b/src/com/android/car/settings/security/ChooseDeviceInstructionPreferenceController.java
new file mode 100644
index 0000000..62d5b66
--- /dev/null
+++ b/src/com/android/car/settings/security/ChooseDeviceInstructionPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Displays the name of the local Bluetooth adapter.
+ */
+public class ChooseDeviceInstructionPreferenceController extends PreferenceController<Preference> {
+
+    public ChooseDeviceInstructionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setTitle(getContext().getString(R.string.trusted_device_select_device,
+                BluetoothAdapter.getDefaultAdapter().getName()));
+    }
+}
diff --git a/src/com/android/car/settings/security/ChooseLockPatternFragment.java b/src/com/android/car/settings/security/ChooseLockPatternFragment.java
index f837ebd..0e954ac 100644
--- a/src/com/android/car/settings/security/ChooseLockPatternFragment.java
+++ b/src/com/android/car/settings/security/ChooseLockPatternFragment.java
@@ -16,13 +16,15 @@
 
 package com.android.car.settings.security;
 
-import android.annotation.StringRes;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.view.View;
 import android.widget.Button;
+import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.car.settings.R;
@@ -36,6 +38,7 @@
 import com.google.android.collect.Lists;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -45,178 +48,119 @@
 public class ChooseLockPatternFragment extends BaseFragment {
 
     private static final Logger LOG = new Logger(ChooseLockPatternFragment.class);
-    private static final String LOCK_OPTIONS_DIALOG_TAG = "lock_options_dialog_tag";
     private static final String FRAGMENT_TAG_SAVE_PATTERN_WORKER = "save_pattern_worker";
+    private static final String STATE_UI_STAGE = "state_ui_stage";
+    private static final String STATE_CHOSEN_PATTERN = "state_chosen_pattern";
     private static final int ID_EMPTY_MESSAGE = -1;
-
+    /**
+     * The patten used during the help screen to show how to draw a pattern.
+     */
+    private final List<LockPatternView.Cell> mAnimatePattern =
+            Collections.unmodifiableList(Lists.newArrayList(
+                    LockPatternView.Cell.of(0, 0),
+                    LockPatternView.Cell.of(0, 1),
+                    LockPatternView.Cell.of(1, 1),
+                    LockPatternView.Cell.of(2, 1)
+            ));
     // How long we wait to clear a wrong pattern
     private int mWrongPatternClearTimeOut;
     private int mUserId;
-    private boolean mIsInSetupWizard;
-
     private Stage mUiStage = Stage.Introduction;
     private LockPatternView mLockPatternView;
     private TextView mMessageText;
     private Button mSecondaryButton;
     private Button mPrimaryButton;
+    private ProgressBar mProgressBar;
     private List<LockPatternView.Cell> mChosenPattern;
-    private String mCurrentPattern;
+    // Existing pattern that user previously set
+    private byte[] mCurrentPattern;
     private SavePatternWorker mSavePatternWorker;
+    private Runnable mClearPatternRunnable = () -> mLockPatternView.clearPattern();
+    // The pattern listener that responds according to a user choosing a new
+    // lock pattern.
+    private final LockPatternView.OnPatternListener mChooseNewLockPatternListener =
+            new LockPatternView.OnPatternListener() {
+                @Override
+                public void onPatternStart() {
+                    mLockPatternView.removeCallbacks(mClearPatternRunnable);
+                    updateUIWhenPatternInProgress();
+                }
 
-    /**
-     * Keep track internally of where the user is in choosing a pattern.
-     */
-    enum Stage {
-        /**
-         * Initial stage when first launching choose a lock pattern.
-         * Pattern mEnabled, secondary button allow for Cancel, primary button disabled.
-         */
-        Introduction(
-                R.string.lockpattern_recording_intro_header,
-                SecondaryButtonState.Cancel, PrimaryButtonState.ContinueDisabled,
-                /* patternEnabled= */ true),
-        /**
-         * Help screen to show how a valid pattern looks like.
-         * Pattern disabled, primary button shows Ok. No secondary button.
-         */
-        HelpScreen(
-                R.string.lockpattern_settings_help_how_to_record,
-                SecondaryButtonState.Gone, PrimaryButtonState.Ok,
-                /* patternEnabled= */ false),
-        /**
-         * Invalid pattern is entered, hint message show required number of dots.
-         * Secondary button allows for Retry, primary button disabled.
-         */
-        ChoiceTooShort(
-                R.string.lockpattern_recording_incorrect_too_short,
-                SecondaryButtonState.Retry, PrimaryButtonState.ContinueDisabled,
-                /* patternEnabled= */ true),
-        /**
-         * First drawing on the pattern is valid, primary button shows Continue,
-         * can proceed to next screen.
-         */
-        FirstChoiceValid(
-                R.string.lockpattern_recording_intro_header,
-                SecondaryButtonState.Retry, PrimaryButtonState.Continue,
-                /* patternEnabled= */ false),
-        /**
-         * Need to draw pattern again to confirm.
-         * Secondary button allows for Cancel, primary button disabled.
-         */
-        NeedToConfirm(
-                R.string.lockpattern_need_to_confirm,
-                SecondaryButtonState.Cancel, PrimaryButtonState.ConfirmDisabled,
-                /* patternEnabled= */ true),
-        /**
-         * Confirmation of previous drawn pattern failed, didn't enter the same pattern.
-         * Need to re-draw the pattern to match the fist pattern.
-         */
-        ConfirmWrong(
-                R.string.lockpattern_pattern_wrong,
-                SecondaryButtonState.Cancel, PrimaryButtonState.ConfirmDisabled,
-                /* patternEnabled= */ true),
-        /**
-         * Pattern is confirmed after drawing the same pattern twice.
-         * Pattern disabled.
-         */
-        ChoiceConfirmed(
-                R.string.lockpattern_pattern_confirmed,
-                SecondaryButtonState.Cancel, PrimaryButtonState.Confirm,
-                /* patternEnabled= */ false),
+                @Override
+                public void onPatternCleared() {
+                    mLockPatternView.removeCallbacks(mClearPatternRunnable);
+                }
 
-        /**
-         * Error saving pattern.
-         * Pattern disabled, primary button shows Retry, secondary button allows for cancel
-         */
-        SaveFailure(
-                R.string.error_saving_lockpattern,
-                SecondaryButtonState.Cancel, PrimaryButtonState.Retry,
-                /* patternEnabled= */ false);
+                @Override
+                public void onPatternDetected(List<LockPatternView.Cell> pattern) {
+                    switch (mUiStage) {
+                        case Introduction:
+                        case ChoiceTooShort:
+                            handlePatternEntered(pattern);
+                            break;
+                        case ConfirmWrong:
+                        case NeedToConfirm:
+                            handleConfirmPattern(pattern);
+                            break;
+                        default:
+                            throw new IllegalStateException("Unexpected stage " + mUiStage
+                                    + " when entering the pattern.");
+                    }
+                }
 
-        final int mMessageId;
-        final SecondaryButtonState mSecondaryButtonState;
-        final PrimaryButtonState mPrimaryButtonState;
-        final boolean mPatternEnabled;
+                @Override
+                public void onPatternCellAdded(List<Cell> pattern) {
+                }
 
-        /**
-         * @param message The message displayed as instruction.
-         * @param secondaryButtonState The state of the secondary button.
-         * @param primaryButtonState The state of the primary button.
-         * @param patternEnabled Whether the pattern widget is mEnabled.
-         */
-        Stage(int messageId,
-                SecondaryButtonState secondaryButtonState,
-                PrimaryButtonState primaryButtonState,
-                boolean patternEnabled) {
-            this.mMessageId = messageId;
-            this.mSecondaryButtonState = secondaryButtonState;
-            this.mPrimaryButtonState = primaryButtonState;
-            this.mPatternEnabled = patternEnabled;
-        }
-    }
+                private void handleConfirmPattern(List<LockPatternView.Cell> pattern) {
+                    if (mChosenPattern == null) {
+                        throw new IllegalStateException(
+                                "null chosen pattern in stage 'need to confirm");
+                    }
+                    if (mChosenPattern.equals(pattern)) {
+                        updateStage(Stage.ChoiceConfirmed);
+                    } else {
+                        updateStage(Stage.ConfirmWrong);
+                    }
+                }
 
-    /**
-     * The states of the primary footer button.
-     */
-    enum PrimaryButtonState {
-        Continue(R.string.continue_button_text, true),
-        ContinueDisabled(R.string.continue_button_text, false),
-        Confirm(R.string.lockpattern_confirm_button_text, true),
-        ConfirmDisabled(R.string.lockpattern_confirm_button_text, false),
-        Retry(R.string.lockscreen_retry_button_text, true),
-        Ok(R.string.okay, true);
-
-        /**
-         * @param text The displayed mText for this mode.
-         * @param enabled Whether the button should be mEnabled.
-         */
-        PrimaryButtonState(int text, boolean enabled) {
-            this.mText = text;
-            this.mEnabled = enabled;
-        }
-
-        final int mText;
-        final boolean mEnabled;
-    }
-
-    /**
-     * The states of the secondary footer button.
-     */
-    enum SecondaryButtonState {
-        Cancel(R.string.lockpattern_cancel_button_text, true),
-        CancelDisabled(R.string.lockpattern_cancel_button_text, false),
-        Retry(R.string.lockpattern_retry_button_text, true),
-        RetryDisabled(R.string.lockpattern_retry_button_text, false),
-        Gone(ID_EMPTY_MESSAGE, false);
-
-        /**
-         * @param text The displayed mText for this mode.
-         * @param enabled Whether the button should be mEnabled.
-         */
-        SecondaryButtonState(int textId, boolean enabled) {
-            this.mTextResId = textId;
-            this.mEnabled = enabled;
-        }
-
-        final int mTextResId;
-        final boolean mEnabled;
-    }
+                private void handlePatternEntered(List<LockPatternView.Cell> pattern) {
+                    if (pattern.size() < LockPatternUtils.MIN_LOCK_PATTERN_SIZE) {
+                        updateStage(Stage.ChoiceTooShort);
+                    } else {
+                        mChosenPattern = new ArrayList<LockPatternView.Cell>(pattern);
+                        updateStage(Stage.FirstChoiceValid);
+                    }
+                }
+            };
 
     /**
      * Factory method for creating ChooseLockPatternFragment
      */
-    public static ChooseLockPatternFragment newInstance(boolean isInSetupWizard) {
+    public static ChooseLockPatternFragment newInstance() {
         ChooseLockPatternFragment patternFragment = new ChooseLockPatternFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.security_lock_pattern);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, isInSetupWizard
-                ? R.layout.suw_action_bar_with_button : R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.choose_lock_pattern);
-        patternFragment.setArguments(bundle);
         return patternFragment;
     }
 
     @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.choose_lock_pattern;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.security_lock_pattern;
+    }
+
+    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mWrongPatternClearTimeOut = getResources().getInteger(R.integer.clear_content_timeout_ms);
@@ -224,8 +168,13 @@
 
         Bundle args = getArguments();
         if (args != null) {
-            mIsInSetupWizard = args.getBoolean(BaseFragment.EXTRA_RUNNING_IN_SETUP_WIZARD);
-            mCurrentPattern = args.getString(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK);
+            mCurrentPattern = args.getByteArray(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK);
+        }
+
+        if (savedInstanceState != null) {
+            mUiStage = Stage.values()[savedInstanceState.getInt(STATE_UI_STAGE)];
+            mChosenPattern = LockPatternUtils.byteArrayToPattern(
+                    savedInstanceState.getByteArray(STATE_CHOSEN_PATTERN));
         }
     }
 
@@ -243,14 +192,6 @@
         mLockPatternView.clearPattern();
         mLockPatternView.setOnPatternListener(mChooseNewLockPatternListener);
 
-        if (mIsInSetupWizard) {
-            View screenLockOptions = view.findViewById(R.id.screen_lock_options);
-            screenLockOptions.setVisibility(View.VISIBLE);
-            screenLockOptions.setOnClickListener(v -> {
-                new LockTypeDialogFragment().show(getFragmentManager(), LOCK_OPTIONS_DIALOG_TAG);
-            });
-        }
-
         // Re-attach to the exiting worker if there is one.
         if (savedInstanceState != null) {
             mSavePatternWorker = (SavePatternWorker) getFragmentManager().findFragmentByTag(
@@ -261,15 +202,11 @@
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
+        mProgressBar = requireActivity().findViewById(R.id.progress_bar);
 
-        // Don't show toolbar title in Setup Wizard
-        if (mIsInSetupWizard) {
-            ((TextView) getActivity().findViewById(R.id.title)).setText("");
-        }
-
-        mPrimaryButton = getActivity().findViewById(R.id.action_button1);
+        mPrimaryButton = requireActivity().findViewById(R.id.action_button1);
         mPrimaryButton.setOnClickListener(view -> handlePrimaryButtonClick());
-        mSecondaryButton = getActivity().findViewById(R.id.action_button2);
+        mSecondaryButton = requireActivity().findViewById(R.id.action_button2);
         mSecondaryButton.setVisibility(View.VISIBLE);
         mSecondaryButton.setOnClickListener(view -> handleSecondaryButtonClick());
     }
@@ -286,17 +223,27 @@
     }
 
     @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(STATE_UI_STAGE, mUiStage.ordinal());
+        outState.putByteArray(STATE_CHOSEN_PATTERN,
+                LockPatternUtils.patternToByteArray(mChosenPattern));
+    }
+
+    @Override
     public void onStop() {
         super.onStop();
         if (mSavePatternWorker != null) {
             mSavePatternWorker.setListener(null);
         }
+        mProgressBar.setVisibility(View.GONE);
     }
 
     /**
      * Updates the messages and buttons appropriate to what stage the user
      * is at in choosing a pattern. This doesn't handle clearing out the pattern;
      * the pattern is expected to be in the right state.
+     *
      * @param stage The stage UI should be updated to match with.
      */
     protected void updateStage(Stage stage) {
@@ -310,13 +257,7 @@
             setSecondaryButtonVisible(false);
         } else {
             setSecondaryButtonVisible(true);
-            // In Setup Wizard, the Cancel button text is replaced with Skip
-            if (mIsInSetupWizard && stage.mSecondaryButtonState.mTextResId
-                    == R.string.lockpattern_cancel_button_text) {
-                setSecondaryButtonText(R.string.lockscreen_skip_button_text);
-            } else {
-                setSecondaryButtonText(stage.mSecondaryButtonState.mTextResId);
-            }
+            setSecondaryButtonText(stage.mSecondaryButtonState.mTextResId);
             setSecondaryButtonEnabled(stage.mSecondaryButtonState.mEnabled);
         }
 
@@ -361,63 +302,6 @@
         }
     }
 
-    // The pattern listener that responds according to a user choosing a new
-    // lock pattern.
-    private final LockPatternView.OnPatternListener mChooseNewLockPatternListener =
-            new LockPatternView.OnPatternListener() {
-                @Override
-                public void onPatternStart() {
-                    mLockPatternView.removeCallbacks(mClearPatternRunnable);
-                    updateUIWhenPatternInProgress();
-                }
-
-                @Override
-                public void onPatternCleared() {
-                    mLockPatternView.removeCallbacks(mClearPatternRunnable);
-                }
-
-                @Override
-                public void onPatternDetected(List<LockPatternView.Cell> pattern) {
-                    switch(mUiStage) {
-                        case Introduction:
-                        case ChoiceTooShort:
-                            handlePatternEntered(pattern);
-                            break;
-                        case ConfirmWrong:
-                        case NeedToConfirm:
-                            handleConfirmPattern(pattern);
-                            break;
-                        default:
-                            throw new IllegalStateException("Unexpected stage " + mUiStage
-                                    + " when entering the pattern.");
-                    }
-                }
-
-                @Override
-                public void onPatternCellAdded(List<Cell> pattern) {}
-
-                private void handleConfirmPattern(List<LockPatternView.Cell> pattern) {
-                    if (mChosenPattern == null) {
-                        throw new IllegalStateException(
-                                "null chosen pattern in stage 'need to confirm");
-                    }
-                    if (mChosenPattern.equals(pattern)) {
-                        updateStage(Stage.ChoiceConfirmed);
-                    } else {
-                        updateStage(Stage.ConfirmWrong);
-                    }
-                }
-
-                private void handlePatternEntered(List<LockPatternView.Cell> pattern) {
-                    if (pattern.size() < LockPatternUtils.MIN_LOCK_PATTERN_SIZE) {
-                        updateStage(Stage.ChoiceTooShort);
-                    } else {
-                        mChosenPattern = new ArrayList<LockPatternView.Cell>(pattern);
-                        updateStage(Stage.FirstChoiceValid);
-                    }
-                }
-            };
-
     private void updateUIWhenPatternInProgress() {
         mMessageText.setText(R.string.lockpattern_recording_inprogress);
         setPrimaryButtonEnabled(false);
@@ -451,23 +335,10 @@
         mSecondaryButton.setText(textId);
     }
 
-    /**
-     * The patten used during the help screen to show how to draw a pattern.
-     */
-    private final List<LockPatternView.Cell> mAnimatePattern =
-            Collections.unmodifiableList(Lists.newArrayList(
-                    LockPatternView.Cell.of(0, 0),
-                    LockPatternView.Cell.of(0, 1),
-                    LockPatternView.Cell.of(1, 1),
-                    LockPatternView.Cell.of(2, 1)
-            ));
-
-    private Runnable mClearPatternRunnable = () -> mLockPatternView.clearPattern();
-
     // Update display message and decide on next step according to the different mText
     // on the primary button
     private void handlePrimaryButtonClick() {
-        switch(mUiStage.mPrimaryButtonState) {
+        switch (mUiStage.mPrimaryButtonState) {
             case Continue:
                 if (mUiStage != Stage.FirstChoiceValid) {
                     throw new IllegalStateException("expected ui stage "
@@ -507,18 +378,14 @@
     // Update display message and proceed to next step according to the different mText on
     // the secondary button.
     private void handleSecondaryButtonClick() {
-        switch(mUiStage.mSecondaryButtonState) {
+        switch (mUiStage.mSecondaryButtonState) {
             case Retry:
                 mChosenPattern = null;
                 mLockPatternView.clearPattern();
                 updateStage(Stage.Introduction);
                 break;
             case Cancel:
-                if (mIsInSetupWizard) {
-                    ((SetupWizardScreenLockActivity) getActivity()).onCancel();
-                } else {
-                    getFragmentController().goBack();
-                }
+                getFragmentController().goBack();
                 break;
             default:
                 throw new IllegalStateException("secondary footer button pressed, but stage of "
@@ -526,8 +393,10 @@
         }
     }
 
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     void onChosenLockSaveFinished(boolean isSaveSuccessful) {
+        mProgressBar.setVisibility(View.GONE);
+
         if (isSaveSuccessful) {
             onComplete();
         } else {
@@ -555,14 +424,162 @@
         }
 
         mSavePatternWorker.start(mUserId, mChosenPattern, mCurrentPattern);
+        mProgressBar.setVisibility(View.VISIBLE);
     }
 
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     void onComplete() {
-        if (mIsInSetupWizard) {
-            ((SetupWizardScreenLockActivity) getActivity()).onComplete();
-        } else {
-            getActivity().finish();
+        if (mCurrentPattern != null) {
+            Arrays.fill(mCurrentPattern, (byte) 0);
+        }
+
+        getActivity().finish();
+    }
+
+    /**
+     * Keep track internally of where the user is in choosing a pattern.
+     */
+    enum Stage {
+        /**
+         * Initial stage when first launching choose a lock pattern.
+         * Pattern mEnabled, secondary button allow for Cancel, primary button disabled.
+         */
+        Introduction(
+                R.string.lockpattern_recording_intro_header,
+                SecondaryButtonState.Cancel,
+                PrimaryButtonState.ContinueDisabled,
+                /* patternEnabled= */ true),
+        /**
+         * Help screen to show how a valid pattern looks like.
+         * Pattern disabled, primary button shows Ok. No secondary button.
+         */
+        HelpScreen(
+                R.string.lockpattern_settings_help_how_to_record,
+                SecondaryButtonState.Gone,
+                PrimaryButtonState.Ok,
+                /* patternEnabled= */ false),
+        /**
+         * Invalid pattern is entered, hint message show required number of dots.
+         * Secondary button allows for Retry, primary button disabled.
+         */
+        ChoiceTooShort(
+                R.string.lockpattern_recording_incorrect_too_short,
+                SecondaryButtonState.Retry,
+                PrimaryButtonState.ContinueDisabled,
+                /* patternEnabled= */ true),
+        /**
+         * First drawing on the pattern is valid, primary button shows Continue,
+         * can proceed to next screen.
+         */
+        FirstChoiceValid(
+                R.string.lockpattern_recording_intro_header,
+                SecondaryButtonState.Retry,
+                PrimaryButtonState.Continue,
+                /* patternEnabled= */ false),
+        /**
+         * Need to draw pattern again to confirm.
+         * Secondary button allows for Cancel, primary button disabled.
+         */
+        NeedToConfirm(
+                R.string.lockpattern_need_to_confirm,
+                SecondaryButtonState.Cancel,
+                PrimaryButtonState.ConfirmDisabled,
+                /* patternEnabled= */ true),
+        /**
+         * Confirmation of previous drawn pattern failed, didn't enter the same pattern.
+         * Need to re-draw the pattern to match the fist pattern.
+         */
+        ConfirmWrong(
+                R.string.lockpattern_pattern_wrong,
+                SecondaryButtonState.Cancel,
+                PrimaryButtonState.ConfirmDisabled,
+                /* patternEnabled= */ true),
+        /**
+         * Pattern is confirmed after drawing the same pattern twice.
+         * Pattern disabled.
+         */
+        ChoiceConfirmed(
+                R.string.lockpattern_pattern_confirmed,
+                SecondaryButtonState.Cancel,
+                PrimaryButtonState.Confirm,
+                /* patternEnabled= */ false),
+
+        /**
+         * Error saving pattern.
+         * Pattern disabled, primary button shows Retry, secondary button allows for cancel
+         */
+        SaveFailure(
+                R.string.error_saving_lockpattern,
+                SecondaryButtonState.Cancel,
+                PrimaryButtonState.Retry,
+                /* patternEnabled= */ false);
+
+        final int mMessageId;
+        final SecondaryButtonState mSecondaryButtonState;
+        final PrimaryButtonState mPrimaryButtonState;
+        final boolean mPatternEnabled;
+
+        /**
+         * @param messageId            The message displayed as instruction.
+         * @param secondaryButtonState The state of the secondary button.
+         * @param primaryButtonState   The state of the primary button.
+         * @param patternEnabled       Whether the pattern widget is mEnabled.
+         */
+        Stage(@StringRes int messageId,
+                SecondaryButtonState secondaryButtonState,
+                PrimaryButtonState primaryButtonState,
+                boolean patternEnabled) {
+            this.mMessageId = messageId;
+            this.mSecondaryButtonState = secondaryButtonState;
+            this.mPrimaryButtonState = primaryButtonState;
+            this.mPatternEnabled = patternEnabled;
+        }
+    }
+
+    /**
+     * The states of the primary footer button.
+     */
+    enum PrimaryButtonState {
+        Continue(R.string.continue_button_text, true),
+        ContinueDisabled(R.string.continue_button_text, false),
+        Confirm(R.string.lockpattern_confirm_button_text, true),
+        ConfirmDisabled(R.string.lockpattern_confirm_button_text, false),
+        Retry(R.string.lockscreen_retry_button_text, true),
+        Ok(R.string.okay, true);
+
+        final int mText;
+        final boolean mEnabled;
+
+        /**
+         * @param text    The displayed mText for this mode.
+         * @param enabled Whether the button should be mEnabled.
+         */
+        PrimaryButtonState(@StringRes int text, boolean enabled) {
+            this.mText = text;
+            this.mEnabled = enabled;
+        }
+    }
+
+    /**
+     * The states of the secondary footer button.
+     */
+    enum SecondaryButtonState {
+        Cancel(R.string.lockpattern_cancel_button_text, true),
+        CancelDisabled(R.string.lockpattern_cancel_button_text, false),
+        Retry(R.string.lockpattern_retry_button_text, true),
+        RetryDisabled(R.string.lockpattern_retry_button_text, false),
+        Gone(ID_EMPTY_MESSAGE, false);
+
+        final int mTextResId;
+        final boolean mEnabled;
+
+        /**
+         * @param textId  The displayed mText for this mode.
+         * @param enabled Whether the button should be mEnabled.
+         */
+        SecondaryButtonState(@StringRes int textId, boolean enabled) {
+            this.mTextResId = textId;
+            this.mEnabled = enabled;
         }
     }
 }
diff --git a/src/com/android/car/settings/security/ChooseLockPinPasswordFragment.java b/src/com/android/car/settings/security/ChooseLockPinPasswordFragment.java
index e720849..793ea58 100644
--- a/src/com/android/car/settings/security/ChooseLockPinPasswordFragment.java
+++ b/src/com/android/car/settings/security/ChooseLockPinPasswordFragment.java
@@ -16,8 +16,6 @@
 
 package com.android.car.settings.security;
 
-import android.annotation.DrawableRes;
-import android.annotation.StringRes;
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
 import android.os.Bundle;
@@ -33,15 +31,22 @@
 import android.view.inputmethod.InputMethodManager;
 import android.widget.Button;
 import android.widget.EditText;
+import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import androidx.annotation.DrawableRes;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
 import com.android.car.settings.common.Logger;
+import com.android.internal.widget.LockPatternUtils;
 import com.android.internal.widget.TextViewInputDisabler;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -51,6 +56,8 @@
 
     private static final String LOCK_OPTIONS_DIALOG_TAG = "lock_options_dialog_tag";
     private static final String FRAGMENT_TAG_SAVE_PASSWORD_WORKER = "save_password_worker";
+    private static final String STATE_UI_STAGE = "state_ui_stage";
+    private static final String STATE_FIRST_ENTRY = "state_first_entry";
     private static final Logger LOG = new Logger(ChooseLockPinPasswordFragment.class);
     private static final String EXTRA_IS_PIN = "extra_is_pin";
 
@@ -59,104 +66,34 @@
     private int mUserId;
     private int mErrorCode = PasswordHelper.NO_ERROR;
 
-    private boolean mIsInSetupWizard;
     private boolean mIsPin;
     private boolean mIsAlphaMode;
 
     // Password currently in the input field
-    private String mCurrentEntry;
+    private byte[] mCurrentEntry;
     // Existing password that user previously set
-    private String mExistingPassword;
+    private byte[] mExistingPassword;
     // Password must be entered twice.  This is what user entered the first time.
-    private String mFirstEntry;
+    private byte[] mFirstEntry;
 
     private PinPadView mPinPad;
     private TextView mHintMessage;
     private Button mSecondaryButton;
     private Button mPrimaryButton;
     private EditText mPasswordField;
+    private ProgressBar mProgressBar;
 
     private TextChangedHandler mTextChangedHandler = new TextChangedHandler();
     private TextViewInputDisabler mPasswordEntryInputDisabler;
     private SavePasswordWorker mSavePasswordWorker;
     private PasswordHelper mPasswordHelper;
 
-    // Keep track internally of where the user is in choosing a password.
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-    enum Stage {
-        Introduction(
-                R.string.choose_lock_password_hints,
-                R.string.choose_lock_pin_hints,
-                R.string.continue_button_text,
-                R.string.lockpassword_cancel_label,
-                R.drawable.ic_arrow_forward_on_disc),
-
-        PasswordInvalid(
-                R.string.lockpassword_invalid_password,
-                R.string.lockpin_invalid_pin,
-                R.string.continue_button_text,
-                R.string.lockpassword_clear_label,
-                R.drawable.ic_arrow_forward_on_disc),
-
-        NeedToConfirm(
-                R.string.confirm_your_password_header,
-                R.string.confirm_your_pin_header,
-                R.string.lockpassword_confirm_label,
-                R.string.lockpassword_cancel_label,
-                R.drawable.ic_check_on_disc),
-
-        ConfirmWrong(
-                R.string.confirm_passwords_dont_match,
-                R.string.confirm_pins_dont_match,
-                R.string.continue_button_text,
-                R.string.lockpassword_cancel_label,
-                R.drawable.ic_check_on_disc),
-
-        SaveFailure(
-                R.string.error_saving_password,
-                R.string.error_saving_lockpin,
-                R.string.lockscreen_retry_button_text,
-                R.string.lockpassword_cancel_label,
-                R.drawable.ic_check_on_disc);
-
-        public final int alphaHint;
-        public final int numericHint;
-        public final int primaryButtonText;
-        public final int secondaryButtonText;
-        public final int enterKeyIcon;
-
-        Stage(@StringRes int hintInAlpha,
-                @StringRes int hintInNumeric,
-                @StringRes int primaryButtonText,
-                @StringRes int secondaryButtonText,
-                @DrawableRes int enterKeyIcon) {
-            this.alphaHint = hintInAlpha;
-            this.numericHint = hintInNumeric;
-            this.primaryButtonText = primaryButtonText;
-            this.secondaryButtonText = secondaryButtonText;
-            this.enterKeyIcon = enterKeyIcon;
-        }
-
-        @StringRes
-        public int getHint(boolean isAlpha) {
-            if (isAlpha) {
-                return alphaHint;
-            } else {
-                return numericHint;
-            }
-        }
-    }
-
     /**
      * Factory method for creating fragment in password mode
      */
-    public static ChooseLockPinPasswordFragment newPasswordInstance(boolean isInSetupWizard) {
+    public static ChooseLockPinPasswordFragment newPasswordInstance() {
         ChooseLockPinPasswordFragment passwordFragment = new ChooseLockPinPasswordFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.security_lock_password);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, isInSetupWizard
-                ? R.layout.suw_action_bar_with_button : R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.choose_lock_password);
+        Bundle bundle = new Bundle();
         bundle.putBoolean(EXTRA_IS_PIN, false);
         passwordFragment.setArguments(bundle);
         return passwordFragment;
@@ -165,28 +102,41 @@
     /**
      * Factory method for creating fragment in Pin mode
      */
-    public static ChooseLockPinPasswordFragment newPinInstance(boolean isInSetupWizard) {
+    public static ChooseLockPinPasswordFragment newPinInstance() {
         ChooseLockPinPasswordFragment passwordFragment = new ChooseLockPinPasswordFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.security_lock_pin);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, isInSetupWizard
-                ? R.layout.suw_action_bar_with_button : R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.choose_lock_pin);
+        Bundle bundle = new Bundle();
         bundle.putBoolean(EXTRA_IS_PIN, true);
         passwordFragment.setArguments(bundle);
         return passwordFragment;
     }
 
     @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return mIsPin ? R.layout.choose_lock_pin : R.layout.choose_lock_password;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return mIsPin ? R.string.security_lock_pin : R.string.security_lock_password;
+    }
+
+    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mUserId = UserHandle.myUserId();
 
         Bundle args = getArguments();
         if (args != null) {
-            mIsInSetupWizard = args.getBoolean(BaseFragment.EXTRA_RUNNING_IN_SETUP_WIZARD);
             mIsPin = args.getBoolean(EXTRA_IS_PIN);
-            mExistingPassword = args.getString(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK);
+            mExistingPassword = args.getByteArray(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK);
         }
 
         mPasswordHelper = new PasswordHelper(mIsPin);
@@ -195,6 +145,11 @@
         mIsAlphaMode = DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC == passwordQuality
                 || DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC == passwordQuality
                 || DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == passwordQuality;
+
+        if (savedInstanceState != null) {
+            mUiStage = Stage.values()[savedInstanceState.getInt(STATE_UI_STAGE)];
+            mFirstEntry = savedInstanceState.getByteArray(STATE_FIRST_ENTRY);
+        }
     }
 
     @Override
@@ -240,14 +195,6 @@
 
         mHintMessage = view.findViewById(R.id.hint_text);
 
-        if (mIsInSetupWizard) {
-            View screenLockOptions = view.findViewById(R.id.screen_lock_options);
-            screenLockOptions.setVisibility(View.VISIBLE);
-            screenLockOptions.setOnClickListener(v -> {
-                new LockTypeDialogFragment().show(getFragmentManager(), LOCK_OPTIONS_DIALOG_TAG);
-            });
-        }
-
         if (mIsPin) {
             initPinView(view);
         } else {
@@ -269,13 +216,9 @@
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
+        mProgressBar = requireActivity().findViewById(R.id.progress_bar);
 
-        // Don't show toolbar title in Setup Wizard
-        if (mIsInSetupWizard) {
-            ((TextView) getActivity().findViewById(R.id.title)).setText("");
-        }
-
-        mPrimaryButton = getActivity().findViewById(R.id.action_button1);
+        mPrimaryButton = requireActivity().findViewById(R.id.action_button1);
         mPrimaryButton.setOnClickListener(view -> handlePrimaryButtonClick());
         mSecondaryButton = getActivity().findViewById(R.id.action_button2);
         mSecondaryButton.setVisibility(View.VISIBLE);
@@ -293,11 +236,19 @@
     }
 
     @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(STATE_UI_STAGE, mUiStage.ordinal());
+        outState.putByteArray(STATE_FIRST_ENTRY, mFirstEntry);
+    }
+
+    @Override
     public void onStop() {
         super.onStop();
         if (mSavePasswordWorker != null) {
             mSavePasswordWorker.setListener(null);
         }
+        mProgressBar.setVisibility(View.GONE);
     }
 
     /**
@@ -308,23 +259,15 @@
     }
 
     /**
-     * Populate the password entry field with the argument
-     */
-    private void setPasswordField(String text) {
-        mPasswordField.setText(text);
-    }
-
-    /**
      * Returns the string in the password entry field
      */
-    private String getEnteredPassword() {
-        return mPasswordField.getText().toString();
+    @Nullable
+    private byte[] getEnteredPassword() {
+        return LockPatternUtils.charSequenceToByteArray(mPasswordField.getText());
     }
 
     private void initPinView(View view) {
-        mPinPad = (PinPadView) view.findViewById(R.id.pin_pad);
-        // ChooseLockPin fragment sets the icon dynamically and doesn't use the default tint.
-        mPinPad.setEnterKeyImageTint(null);
+        mPinPad = view.findViewById(R.id.pin_pad);
 
         PinPadView.PinPadClickListener pinPadClickListener = new PinPadView.PinPadClickListener() {
             @Override
@@ -334,9 +277,13 @@
 
             @Override
             public void onBackspaceClick() {
-                String pin = getEnteredPassword();
-                if (pin.length() > 0) {
-                    setPasswordField(pin.substring(0, pin.length() - 1));
+                byte[] pin = getEnteredPassword();
+                if (pin != null && pin.length > 0) {
+                    mPasswordField.getText().delete(mPasswordField.getSelectionEnd() - 1,
+                            mPasswordField.getSelectionEnd());
+                }
+                if (pin != null) {
+                    Arrays.fill(pin, (byte) 0);
                 }
             }
 
@@ -350,7 +297,8 @@
     }
 
     private boolean shouldEnableSubmit() {
-        return getEnteredPassword().length() >= PasswordHelper.MIN_LENGTH
+        return getEnteredPassword() != null
+                && getEnteredPassword().length >= PasswordHelper.MIN_LENGTH
                 && (mSavePasswordWorker == null || mSavePasswordWorker.isFinished());
     }
 
@@ -385,7 +333,7 @@
 
         mCurrentEntry = getEnteredPassword();
 
-        switch(mUiStage) {
+        switch (mUiStage) {
             case Introduction:
                 mErrorCode = mPasswordHelper.validate(mCurrentEntry);
                 if (mErrorCode == PasswordHelper.NO_ERROR) {
@@ -394,13 +342,14 @@
                     updateStage(Stage.NeedToConfirm);
                 } else {
                     updateStage(Stage.PasswordInvalid);
+                    Arrays.fill(mCurrentEntry, (byte) 0);
                 }
                 break;
             case NeedToConfirm:
             case SaveFailure:
                 // Password must be entered twice. mFirstEntry is the one the user entered
                 // the first time.  mCurrentEntry is what's currently in the input field
-                if (mFirstEntry.equals(mCurrentEntry)) {
+                if (Arrays.equals(mFirstEntry, mCurrentEntry)) {
                     startSaveAndFinish();
                 } else {
                     CharSequence tmp = mPasswordField.getText();
@@ -408,6 +357,7 @@
                         Selection.setSelection((Spannable) tmp, 0, tmp.length());
                     }
                     updateStage(Stage.ConfirmWrong);
+                    Arrays.fill(mCurrentEntry, (byte) 0);
                 }
                 break;
             default:
@@ -425,23 +375,15 @@
         if (mUiStage.secondaryButtonText == R.string.lockpassword_clear_label) {
             mPasswordField.setText("");
             mUiStage = Stage.Introduction;
-            if (mIsInSetupWizard && mUiStage.secondaryButtonText
-                    == R.string.lockpassword_cancel_label) {
-                setSecondaryButtonText(R.string.lockscreen_skip_button_text);
-            } else {
-                setSecondaryButtonText(mUiStage.secondaryButtonText);
-            }
+            setSecondaryButtonText(mUiStage.secondaryButtonText);
         } else {
-            if (mIsInSetupWizard) {
-                ((SetupWizardScreenLockActivity) getActivity()).onCancel();
-            } else {
-                getFragmentController().goBack();
-            }
+            getFragmentController().goBack();
         }
     }
 
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     void onChosenLockSaveFinished(boolean isSaveSuccessful) {
+        mProgressBar.setVisibility(View.GONE);
         if (isSaveSuccessful) {
             onComplete();
         } else {
@@ -471,6 +413,7 @@
         mSavePasswordWorker.start(mUserId, mCurrentEntry, mExistingPassword,
                 mPasswordHelper.getPasswordQuality());
 
+        mProgressBar.setVisibility(View.VISIBLE);
         updateSubmitButtonsState();
     }
 
@@ -488,7 +431,7 @@
             mPinPad.setEnterKeyIcon(mUiStage.enterKeyIcon);
         }
 
-        switch(mUiStage) {
+        switch (mUiStage) {
             case Introduction:
             case NeedToConfirm:
                 mPasswordField.setError(null);
@@ -508,12 +451,7 @@
         }
 
         setPrimaryButtonText(mUiStage.primaryButtonText);
-        if (mIsInSetupWizard && mUiStage.secondaryButtonText
-                == R.string.lockpassword_cancel_label) {
-            setSecondaryButtonText(R.string.lockscreen_skip_button_text);
-        } else {
-            setSecondaryButtonText(mUiStage.secondaryButtonText);
-        }
+        setSecondaryButtonText(mUiStage.secondaryButtonText);
         mPasswordEntryInputDisabler.setInputEnabled(inputAllowed);
     }
 
@@ -526,18 +464,94 @@
         mHintMessage.setText(message);
     }
 
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     void updateStage(Stage stage) {
         mUiStage = stage;
         updateUi();
     }
 
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     void onComplete() {
-        if (mIsInSetupWizard) {
-            ((SetupWizardScreenLockActivity) getActivity()).onComplete();
-        } else {
-            getActivity().finish();
+        if (mCurrentEntry != null) {
+            Arrays.fill(mCurrentEntry, (byte) 0);
+        }
+
+        if (mExistingPassword != null) {
+            Arrays.fill(mExistingPassword, (byte) 0);
+        }
+
+        if (mFirstEntry != null) {
+            Arrays.fill(mFirstEntry, (byte) 0);
+        }
+
+        mPasswordField.setText("");
+
+        getActivity().finish();
+    }
+
+    // Keep track internally of where the user is in choosing a password.
+    @VisibleForTesting
+    enum Stage {
+        Introduction(
+                R.string.choose_lock_password_hints,
+                R.string.choose_lock_pin_hints,
+                R.string.continue_button_text,
+                R.string.lockpassword_cancel_label,
+                R.drawable.ic_arrow_forward),
+
+        PasswordInvalid(
+                R.string.lockpassword_invalid_password,
+                R.string.lockpin_invalid_pin,
+                R.string.continue_button_text,
+                R.string.lockpassword_clear_label,
+                R.drawable.ic_arrow_forward),
+
+        NeedToConfirm(
+                R.string.confirm_your_password_header,
+                R.string.confirm_your_pin_header,
+                R.string.lockpassword_confirm_label,
+                R.string.lockpassword_cancel_label,
+                R.drawable.ic_check),
+
+        ConfirmWrong(
+                R.string.confirm_passwords_dont_match,
+                R.string.confirm_pins_dont_match,
+                R.string.continue_button_text,
+                R.string.lockpassword_cancel_label,
+                R.drawable.ic_check),
+
+        SaveFailure(
+                R.string.error_saving_password,
+                R.string.error_saving_lockpin,
+                R.string.lockscreen_retry_button_text,
+                R.string.lockpassword_cancel_label,
+                R.drawable.ic_check);
+
+        public final int alphaHint;
+        public final int numericHint;
+        public final int primaryButtonText;
+        public final int secondaryButtonText;
+        public final int enterKeyIcon;
+
+        Stage(@StringRes int hintInAlpha,
+                @StringRes int hintInNumeric,
+                @StringRes int primaryButtonText,
+                @StringRes int secondaryButtonText,
+                @DrawableRes int enterKeyIcon) {
+            this.alphaHint = hintInAlpha;
+            this.numericHint = hintInNumeric;
+            this.primaryButtonText = primaryButtonText;
+            this.secondaryButtonText = secondaryButtonText;
+            this.enterKeyIcon = enterKeyIcon;
+        }
+
+        @StringRes
+        public int getHint(boolean isAlpha) {
+            if (isAlpha) {
+                return alphaHint;
+            } else {
+                return numericHint;
+            }
         }
     }
 
diff --git a/src/com/android/car/settings/security/ChooseLockTypeFragment.java b/src/com/android/car/settings/security/ChooseLockTypeFragment.java
index 91793fa..b9959a1 100644
--- a/src/com/android/car/settings/security/ChooseLockTypeFragment.java
+++ b/src/com/android/car/settings/security/ChooseLockTypeFragment.java
@@ -16,19 +16,13 @@
 
 package com.android.car.settings.security;
 
-import android.app.admin.DevicePolicyManager;
+import android.content.Context;
 import android.os.Bundle;
-import android.os.UserHandle;
-import android.text.TextUtils;
 
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.ListItemSettingsFragment;
-import com.android.internal.widget.LockPatternUtils;
+import com.android.car.settings.common.SettingsFragment;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -36,126 +30,37 @@
 /**
  * Give user choices of lock screen type: Pin/Pattern/Password or None.
  */
-public class ChooseLockTypeFragment extends ListItemSettingsFragment {
+public class ChooseLockTypeFragment extends SettingsFragment {
 
     public static final String EXTRA_CURRENT_PASSWORD_QUALITY = "extra_current_password_quality";
-    private static final String DIALOG_TAG = "ConfirmRemoveScreenLockDialog";
 
-    private ListItemProvider mItemProvider;
-    private String mCurrPassword;
+    private byte[] mCurrPassword;
     private int mPasswordQuality;
 
-    private final ConfirmRemoveScreenLockDialog.ConfirmRemoveLockListener mConfirmListener = () -> {
-        int userId = UserHandle.myUserId();
-        new LockPatternUtils(getContext()).clearLock(mCurrPassword, userId);
-        getFragmentController().goBack();
-    };
-
-    public static ChooseLockTypeFragment newInstance() {
-        ChooseLockTypeFragment chooseLockTypeFragment = new ChooseLockTypeFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.lock_settings_picker_title);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        chooseLockTypeFragment.setArguments(bundle);
-        return chooseLockTypeFragment;
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.choose_lock_type_fragment;
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
+    public void onAttach(Context context) {
+        super.onAttach(context);
         Bundle args = getArguments();
         if (args != null) {
-            mCurrPassword = args.getString(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK);
+            mCurrPassword = args.getByteArray(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK);
             mPasswordQuality = args.getInt(EXTRA_CURRENT_PASSWORD_QUALITY);
         }
 
-        if (savedInstanceState != null) {
-            ConfirmRemoveScreenLockDialog dialog = (ConfirmRemoveScreenLockDialog)
-                    getFragmentManager().findFragmentByTag(DIALOG_TAG);
-            if (dialog != null) {
-                dialog.setConfirmRemoveLockListener(mConfirmListener);
-            }
+        List<LockTypeBasePreferenceController> controllers = new ArrayList<>();
+        controllers.add(use(NoLockPreferenceController.class, R.string.pk_no_lock));
+        controllers.add(use(PatternLockPreferenceController.class, R.string.pk_pattern_lock));
+        controllers.add(use(PasswordLockPreferenceController.class, R.string.pk_password_lock));
+        controllers.add(use(PinLockPreferenceController.class, R.string.pk_pin_lock));
+
+        for (LockTypeBasePreferenceController controller : controllers) {
+            controller.setCurrentPassword(mCurrPassword);
+            controller.setCurrentPasswordQuality(mPasswordQuality);
         }
     }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        if (mItemProvider == null) {
-            mItemProvider = new ListItemProvider.ListProvider(getListItems());
-        }
-        return mItemProvider;
-    }
-
-    private List<ListItem> getListItems() {
-        List<ListItem> items = new ArrayList<>();
-        items.add(createNoneLineItem());
-        items.add(createLockPatternLineItem());
-        items.add(createLockPasswordLineItem());
-        items.add(createLockPinLineItem());
-        return items;
-    }
-
-    private ListItem createNoneLineItem() {
-        TextListItem item = new TextListItem(getContext());
-        item.setTitle(getString(R.string.security_lock_none));
-        if (mPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
-            item.setBody(getString(R.string.current_screen_lock));
-            // TODO set item disabled after b/78784323 is fixed
-        } else {
-            item.setOnClickListener(view -> {
-                ConfirmRemoveScreenLockDialog dialog = new ConfirmRemoveScreenLockDialog();
-                dialog.setConfirmRemoveLockListener(mConfirmListener);
-                dialog.show(getFragmentManager(), DIALOG_TAG);
-            });
-        }
-        return item;
-    }
-
-    private ListItem createLockPatternLineItem() {
-        TextListItem item = new TextListItem(getContext());
-        item.setTitle(getString(R.string.security_lock_pattern));
-        if (mPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
-            item.setBody(getString(R.string.current_screen_lock));
-        }
-        item.setOnClickListener(view -> launchFragment(
-                ChooseLockPatternFragment.newInstance(/* isInSetupWizard= */ false)));
-        return item;
-    }
-
-    private ListItem createLockPasswordLineItem() {
-        TextListItem item = new TextListItem(getContext());
-        item.setTitle(getString(R.string.security_lock_password));
-        if (mPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC
-                || mPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC) {
-            item.setBody(getString(R.string.current_screen_lock));
-        }
-        item.setOnClickListener(view -> launchFragment(
-                ChooseLockPinPasswordFragment.newPasswordInstance(/* isInSetupWizard= */ false)));
-        return item;
-    }
-
-    private ListItem createLockPinLineItem() {
-        TextListItem item = new TextListItem(getContext());
-        item.setTitle(getString(R.string.security_lock_pin));
-        if (mPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_NUMERIC
-                || mPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX) {
-            item.setBody(getString(R.string.current_screen_lock));
-        }
-        item.setOnClickListener(view -> launchFragment(
-                ChooseLockPinPasswordFragment.newPinInstance(/* isInSetupWizard= */ false)));
-        return item;
-    }
-
-    private void launchFragment(BaseFragment fragment) {
-        if (!TextUtils.isEmpty(mCurrPassword)) {
-            Bundle args = fragment.getArguments();
-            if (args == null) {
-                args = new Bundle();
-            }
-            args.putString(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, mCurrPassword);
-            fragment.setArguments(args);
-        }
-
-        getFragmentController().launchFragment(fragment);
-    }
 }
diff --git a/src/com/android/car/settings/security/ChooseTrustedDeviceFragment.java b/src/com/android/car/settings/security/ChooseTrustedDeviceFragment.java
new file mode 100644
index 0000000..f5f976e
--- /dev/null
+++ b/src/com/android/car/settings/security/ChooseTrustedDeviceFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Fragment which contains trusted device list and add trusted device button.
+ */
+public class ChooseTrustedDeviceFragment extends SettingsFragment {
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.choose_trusted_device_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/security/ConfirmLockPatternFragment.java b/src/com/android/car/settings/security/ConfirmLockPatternFragment.java
index 58d5e4f..afe3d97 100644
--- a/src/com/android/car/settings/security/ConfirmLockPatternFragment.java
+++ b/src/com/android/car/settings/security/ConfirmLockPatternFragment.java
@@ -20,9 +20,11 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.view.View;
-import android.widget.Button;
 import android.widget.TextView;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
 import com.android.internal.widget.LockPatternUtils;
@@ -47,21 +49,24 @@
     private CheckLockListener mCheckLockListener;
 
     private int mUserId;
-    private boolean mIsInSetupWizard;
     private List<LockPatternView.Cell> mPattern;
 
-    /**
-     * Factory method for creating ConfirmLockPatternFragment
-     */
-    public static ConfirmLockPatternFragment newInstance(boolean isInSetupWizard) {
-        ConfirmLockPatternFragment patternFragment = new ConfirmLockPatternFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.security_settings_title);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, isInSetupWizard
-                ? R.layout.suw_action_bar_with_button : R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.confirm_lock_pattern_fragment);
-        patternFragment.setArguments(bundle);
-        return patternFragment;
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.confirm_lock_pattern;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.security_settings_title;
     }
 
     @Override
@@ -79,11 +84,6 @@
         super.onCreate(savedInstanceState);
         mLockPatternUtils = new LockPatternUtils(getContext());
         mUserId = UserHandle.myUserId();
-
-        Bundle args = getArguments();
-        if (args != null) {
-            mIsInSetupWizard = args.getBoolean(BaseFragment.EXTRA_RUNNING_IN_SETUP_WIZARD);
-        }
     }
 
     @Override
@@ -103,25 +103,6 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        if (!mIsInSetupWizard) {
-            return;
-        }
-
-        // Don't show toolbar title in Setup Wizard.
-        ((TextView) getActivity().findViewById(R.id.title)).setText("");
-
-        Button mPrimaryButton = (Button) getActivity().findViewById(R.id.action_button1);
-        mPrimaryButton.setText(R.string.lockscreen_skip_button_text);
-        mPrimaryButton.setOnClickListener(v -> {
-            SetupWizardScreenLockActivity activity = (SetupWizardScreenLockActivity) getActivity();
-            activity.onCancel();
-        });
-    }
-
-    @Override
     public void onStart() {
         super.onStart();
         if (mCheckLockWorker != null) {
@@ -137,7 +118,7 @@
         }
     }
 
-    private Runnable mClearErrorRunnable = () ->  {
+    private Runnable mClearErrorRunnable = () -> {
         mLockPatternView.clearPattern();
         mMsgView.setText("");
     };
@@ -145,38 +126,40 @@
     private LockPatternView.OnPatternListener mLockPatternListener =
             new LockPatternView.OnPatternListener() {
 
-        public void onPatternStart() {
-            mLockPatternView.removeCallbacks(mClearErrorRunnable);
-            mMsgView.setText("");
-        }
+                public void onPatternStart() {
+                    mLockPatternView.removeCallbacks(mClearErrorRunnable);
+                    mMsgView.setText("");
+                }
 
-        public void onPatternCleared() {
-            mLockPatternView.removeCallbacks(mClearErrorRunnable);
-        }
+                public void onPatternCleared() {
+                    mLockPatternView.removeCallbacks(mClearErrorRunnable);
+                }
 
-        public void onPatternCellAdded(List<LockPatternView.Cell> pattern) {}
+                public void onPatternCellAdded(List<LockPatternView.Cell> pattern) {
+                }
 
-        public void onPatternDetected(List<LockPatternView.Cell> pattern) {
-            mLockPatternView.setEnabled(false);
+                public void onPatternDetected(List<LockPatternView.Cell> pattern) {
+                    mLockPatternView.setEnabled(false);
 
-            if (mCheckLockWorker == null) {
-                mCheckLockWorker = new CheckLockWorker();
-                mCheckLockWorker.setListener(ConfirmLockPatternFragment.this::onCheckCompleted);
+                    if (mCheckLockWorker == null) {
+                        mCheckLockWorker = new CheckLockWorker();
+                        mCheckLockWorker.setListener(
+                                ConfirmLockPatternFragment.this::onCheckCompleted);
 
-                getFragmentManager()
-                        .beginTransaction()
-                        .add(mCheckLockWorker, FRAGMENT_TAG_CHECK_LOCK_WORKER)
-                        .commitNow();
-            }
+                        getFragmentManager()
+                                .beginTransaction()
+                                .add(mCheckLockWorker, FRAGMENT_TAG_CHECK_LOCK_WORKER)
+                                .commitNow();
+                    }
 
-            mPattern = pattern;
-            mCheckLockWorker.checkPattern(mUserId, pattern);
-        }
-    };
+                    mPattern = pattern;
+                    mCheckLockWorker.checkPattern(mUserId, pattern);
+                }
+            };
 
     private void onCheckCompleted(boolean lockMatched) {
         if (lockMatched) {
-            mCheckLockListener.onLockVerified(LockPatternUtils.patternToString(mPattern));
+            mCheckLockListener.onLockVerified(LockPatternUtils.patternToByteArray(mPattern));
         } else {
             mLockPatternView.setEnabled(true);
             mMsgView.setText(R.string.lockpattern_pattern_wrong);
diff --git a/src/com/android/car/settings/security/ConfirmLockPinPasswordFragment.java b/src/com/android/car/settings/security/ConfirmLockPinPasswordFragment.java
index d6d603d..4b35912 100644
--- a/src/com/android/car/settings/security/ConfirmLockPinPasswordFragment.java
+++ b/src/com/android/car/settings/security/ConfirmLockPinPasswordFragment.java
@@ -25,14 +25,18 @@
 import android.view.View;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
-import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
+import com.android.internal.widget.LockPatternUtils;
+
+import java.util.Arrays;
 
 /**
  * Fragment for confirming existing lock PIN or password.  The containing activity must implement
@@ -52,19 +56,14 @@
 
     private int mUserId;
     private boolean mIsPin;
-    private boolean mIsInSetupWizard;
-    private String mEnteredPassword;
+    private byte[] mEnteredPassword;
 
     /**
      * Factory method for creating fragment in PIN mode.
      */
-    public static ConfirmLockPinPasswordFragment newPinInstance(boolean isInSetupWizard) {
+    public static ConfirmLockPinPasswordFragment newPinInstance() {
         ConfirmLockPinPasswordFragment patternFragment = new ConfirmLockPinPasswordFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.security_settings_title);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, isInSetupWizard
-                ? R.layout.suw_action_bar_with_button : R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.confirm_lock_pin_fragment);
+        Bundle bundle = new Bundle();
         bundle.putBoolean(EXTRA_IS_PIN, true);
         patternFragment.setArguments(bundle);
         return patternFragment;
@@ -73,19 +72,33 @@
     /**
      * Factory method for creating fragment in password mode.
      */
-    public static ConfirmLockPinPasswordFragment newPasswordInstance(boolean isInSetupWizard) {
+    public static ConfirmLockPinPasswordFragment newPasswordInstance() {
         ConfirmLockPinPasswordFragment patternFragment = new ConfirmLockPinPasswordFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.security_settings_title);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, isInSetupWizard
-                ? R.layout.suw_action_bar_with_button : R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.confirm_lock_password_fragment);
+        Bundle bundle = new Bundle();
         bundle.putBoolean(EXTRA_IS_PIN, false);
         patternFragment.setArguments(bundle);
         return patternFragment;
     }
 
     @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return mIsPin ? R.layout.confirm_lock_pin : R.layout.confirm_lock_password;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.security_settings_title;
+    }
+
+    @Override
     public void onAttach(Context context) {
         super.onAttach(context);
         if ((getActivity() instanceof CheckLockListener)) {
@@ -101,7 +114,6 @@
         mUserId = UserHandle.myUserId();
         Bundle args = getArguments();
         if (args != null) {
-            mIsInSetupWizard = args.getBoolean(BaseFragment.EXTRA_RUNNING_IN_SETUP_WIZARD);
             mIsPin = args.getBoolean(EXTRA_IS_PIN);
         }
     }
@@ -110,8 +122,8 @@
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
 
-        mPasswordField = (EditText) view.findViewById(R.id.password_entry);
-        mMsgView = (TextView) view.findViewById(R.id.message);
+        mPasswordField = view.findViewById(R.id.password_entry);
+        mMsgView = view.findViewById(R.id.message);
 
         if (mIsPin) {
             initPinView(view);
@@ -126,25 +138,6 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        if (!mIsInSetupWizard) {
-            return;
-        }
-
-        // Don't show toolbar title in Setup Wizard.
-        ((TextView) getActivity().findViewById(R.id.title)).setText("");
-
-        Button mPrimaryButton = (Button) getActivity().findViewById(R.id.action_button1);
-        mPrimaryButton.setText(R.string.lockscreen_skip_button_text);
-        mPrimaryButton.setOnClickListener(v -> {
-            SetupWizardScreenLockActivity activity = (SetupWizardScreenLockActivity) getActivity();
-            activity.onCancel();
-        });
-    }
-
-    @Override
     public void onStart() {
         super.onStart();
         if (mCheckLockWorker != null) {
@@ -173,7 +166,7 @@
     }
 
     private void initPinView(View view) {
-        mPinPad = (PinPadView) view.findViewById(R.id.pin_pad);
+        mPinPad = view.findViewById(R.id.pin_pad);
 
         PinPadView.PinPadClickListener pinPadClickListener = new PinPadView.PinPadClickListener() {
             @Override
@@ -185,16 +178,21 @@
             @Override
             public void onBackspaceClick() {
                 clearError();
-                String pin = mPasswordField.getText().toString();
-                if (pin.length() > 0) {
-                    mPasswordField.setText(pin.substring(0, pin.length() - 1));
+                byte[] pin = LockPatternUtils.charSequenceToByteArray(mPasswordField.getText());
+                if (pin != null && pin.length > 0) {
+                    mPasswordField.getText().delete(mPasswordField.getSelectionEnd() - 1,
+                            mPasswordField.getSelectionEnd());
+                }
+                if (pin != null) {
+                    Arrays.fill(pin, (byte) 0);
                 }
             }
 
             @Override
             public void onEnterKeyClick() {
-                mEnteredPassword = mPasswordField.getText().toString();
-                if (!TextUtils.isEmpty(mEnteredPassword)) {
+                mEnteredPassword = LockPatternUtils.charSequenceToByteArray(
+                        mPasswordField.getText());
+                if (mEnteredPassword != null) {
                     initCheckLockWorker();
                     mPinPad.setEnabled(false);
                     mCheckLockWorker.checkPinPassword(mUserId, mEnteredPassword);
@@ -214,7 +212,8 @@
 
                 initCheckLockWorker();
                 if (!mCheckLockWorker.isCheckInProgress()) {
-                    mEnteredPassword = mPasswordField.getText().toString();
+                    mEnteredPassword = LockPatternUtils.charSequenceToByteArray(
+                            mPasswordField.getText());
                     mCheckLockWorker.checkPinPassword(mUserId, mEnteredPassword);
                 }
                 return true;
@@ -224,10 +223,12 @@
 
         mPasswordField.addTextChangedListener(new TextWatcher() {
             @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
 
             @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {}
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+            }
 
             @Override
             public void afterTextChanged(Editable s) {
@@ -257,7 +258,7 @@
         }
     }
 
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     void onCheckCompleted(boolean lockMatched) {
         if (lockMatched) {
             mCheckLockListener.onLockVerified(mEnteredPassword);
diff --git a/src/com/android/car/settings/security/ConfirmPairingCodeDialog.java b/src/com/android/car/settings/security/ConfirmPairingCodeDialog.java
new file mode 100644
index 0000000..902caf2
--- /dev/null
+++ b/src/com/android/car/settings/security/ConfirmPairingCodeDialog.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+
+/**
+ * Dialog to confirm pairing code.
+ */
+public class ConfirmPairingCodeDialog extends DialogFragment {
+    /** Identifier for the dialog which confirms the pairing code. */
+    public static final String TAG = "confirm_pairing_code_dialog";
+    private static final String PAIRING_CODE_KEY = "pairingCode";
+    private ConfirmPairingCodeListener mConfirmPairingCodeListener;
+
+    /**
+     * Factory method for creating a ConfirmPairingCodeFragment
+     *
+     * @param pairingCode the pairing code sent by the connected device
+     */
+    public static ConfirmPairingCodeDialog newInstance(String pairingCode) {
+        Bundle args = new Bundle();
+        args.putString(PAIRING_CODE_KEY, pairingCode);
+
+        ConfirmPairingCodeDialog dialog = new ConfirmPairingCodeDialog();
+        dialog.setArguments(args);
+        return dialog;
+    }
+
+    /** Sets a listener to act when a user confirms pairing code. */
+    public void setConfirmPairingCodeListener(ConfirmPairingCodeListener listener) {
+        mConfirmPairingCodeListener = listener;
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        Bundle args = getArguments();
+        String pairingCode = args.getString(PAIRING_CODE_KEY);
+        return new AlertDialog.Builder(getContext())
+                .setTitle(getContext().getString(R.string.trusted_device_pairing_code_dialog_title))
+                .setMessage(pairingCode)
+                .setPositiveButton(R.string.trusted_device_confirm_button, (dialog, which) -> {
+                    if (mConfirmPairingCodeListener != null) {
+                        mConfirmPairingCodeListener.onConfirmPairingCode();
+                    }
+                })
+                .setNegativeButton(android.R.string.cancel, (dialog, which) -> {
+                    if (mConfirmPairingCodeListener != null) {
+                        mConfirmPairingCodeListener.onDialogCancelled();
+                    }
+                })
+                .create();
+    }
+
+    /** A listener for when user interacts with this dialog. */
+    public interface ConfirmPairingCodeListener {
+        /** Defines the actions to take when a user confirms the pairing code. */
+        void onConfirmPairingCode();
+
+        /** Defines the actions to take when a user cancel confirming the pairing code. */
+        void onDialogCancelled();
+    }
+
+}
diff --git a/src/com/android/car/settings/security/ConfirmPasswordFragmentFactory.java b/src/com/android/car/settings/security/ConfirmPasswordFragmentFactory.java
new file mode 100644
index 0000000..7cba62e
--- /dev/null
+++ b/src/com/android/car/settings/security/ConfirmPasswordFragmentFactory.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.Logger;
+import com.android.internal.widget.LockPatternUtils;
+
+/**
+ * Factory class which generate password fragment for current user.
+ */
+public class ConfirmPasswordFragmentFactory {
+
+    private static final Logger LOG = new Logger(ConfirmPasswordFragmentFactory.class);
+
+    /**
+     * Gets the correct password fragment of current user, returns the corresponding password
+     * fragment of current user
+     *
+     * @return {@code null} if no password is set for the current user.
+     */
+    @Nullable
+    public static Fragment getFragment(Context context) {
+        Fragment fragment;
+        int passwordQuality = new LockPatternUtils(context).getKeyguardStoredPasswordQuality(
+                new CarUserManagerHelper(context).getCurrentProcessUserId());
+        switch (passwordQuality) {
+            case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:
+                // User has not set a password.
+                return null;
+            case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
+                fragment = new ConfirmLockPatternFragment();
+                break;
+            case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
+            case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
+                fragment = ConfirmLockPinPasswordFragment.newPinInstance();
+                break;
+            case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
+            case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
+                fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
+                break;
+            default:
+                LOG.e("Unexpected password quality: " + passwordQuality);
+                fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
+        }
+
+        Bundle bundle = fragment.getArguments();
+        if (bundle == null) {
+            bundle = new Bundle();
+        }
+        bundle.putInt(ChooseLockTypeFragment.EXTRA_CURRENT_PASSWORD_QUALITY, passwordQuality);
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+}
diff --git a/src/com/android/car/settings/security/ConfirmRemoveDeviceDialog.java b/src/com/android/car/settings/security/ConfirmRemoveDeviceDialog.java
new file mode 100644
index 0000000..38e60bb
--- /dev/null
+++ b/src/com/android/car/settings/security/ConfirmRemoveDeviceDialog.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+
+/**
+ * Dialog to confirm removing a trusted device.
+ */
+public class ConfirmRemoveDeviceDialog extends DialogFragment {
+
+    /** Identifier for the dialog which confirms removing a trusted device. */
+    public static final String TAG = "confirm_remove_device_dialog";
+    private static final String DEVICE_NAME_KEY = "deviceName";
+    private static final String HANDLE_KEY = "handle";
+    private ConfirmRemoveDeviceListener mConfirmRemoveDeviceListener;
+
+    /**
+     * Factory method for creating a {@link ConfirmRemoveDeviceDialog}
+     *
+     * @param deviceName the name of current clicked device
+     * @param handle the handle of current clicked device and is used to identify the device
+     */
+    public static ConfirmRemoveDeviceDialog newInstance(String deviceName, long handle) {
+        Bundle args = new Bundle();
+        args.putString(DEVICE_NAME_KEY, deviceName);
+        args.putLong(HANDLE_KEY, handle);
+
+        ConfirmRemoveDeviceDialog dialog = new ConfirmRemoveDeviceDialog();
+        dialog.setArguments(args);
+        return dialog;
+    }
+
+    /** Sets a listener to act when a user confirms removing the trusted device. */
+    public void setConfirmRemoveDeviceListener(ConfirmRemoveDeviceListener listener) {
+        mConfirmRemoveDeviceListener = listener;
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        Bundle args = getArguments();
+        String name = args.getString(DEVICE_NAME_KEY);
+        long handle = args.getLong(HANDLE_KEY);
+        return new AlertDialog.Builder(getContext())
+                .setTitle(name)
+                .setMessage(getContext().getString(R.string.remove_device_message, name, name))
+                .setPositiveButton(R.string.trusted_device_remove_button, (dialog, which) -> {
+                    if (mConfirmRemoveDeviceListener != null) {
+                        mConfirmRemoveDeviceListener.onConfirmRemoveDevice(handle);
+                    }
+                })
+                .setNegativeButton(R.string.trusted_device_done_button, /* listener= */ null)
+                .create();
+    }
+
+    /** A listener for when user confirms removing a trusted device. */
+    public interface ConfirmRemoveDeviceListener {
+        /** Defines the actions to take when a user confirms removing the trusted device. */
+        void onConfirmRemoveDevice(long handle);
+    }
+
+}
diff --git a/src/com/android/car/settings/security/ConfirmRemoveScreenLockDialog.java b/src/com/android/car/settings/security/ConfirmRemoveScreenLockDialog.java
index 79b97c2..cd64872 100644
--- a/src/com/android/car/settings/security/ConfirmRemoveScreenLockDialog.java
+++ b/src/com/android/car/settings/security/ConfirmRemoveScreenLockDialog.java
@@ -16,11 +16,10 @@
 
 package com.android.car.settings.security;
 
+import android.app.AlertDialog;
 import android.app.Dialog;
-import android.content.DialogInterface;
 import android.os.Bundle;
 
-import androidx.car.app.CarAlertDialog;
 import androidx.fragment.app.DialogFragment;
 
 import com.android.car.settings.R;
@@ -28,45 +27,35 @@
 /**
  * Dialog to confirm screen lock removal.
  */
-public class ConfirmRemoveScreenLockDialog extends DialogFragment implements
-        DialogInterface.OnClickListener {
+public class ConfirmRemoveScreenLockDialog extends DialogFragment {
 
-    private ConfirmRemoveLockListener mListener;
+    /** Identifier for the dialog which confirms the removal of a screen lock. */
+    public static final String TAG = "confirm_remove_lock_dialog";
+    private ConfirmRemoveScreenLockListener mConfirmRemoveScreenLockListener;
 
-    /**
-     * Sets a listener for OnRemoveLockConfirmed that will get called if user confirms the dialog.
-     *
-     * @param listener Instance of {@link ConfirmRemoveLockListener} to call when confirmed.
-     */
-    public void setConfirmRemoveLockListener(ConfirmRemoveLockListener listener) {
-        mListener = listener;
+    /** Sets a listener to act when a user confirms delete. */
+    public void setConfirmRemoveScreenLockListener(ConfirmRemoveScreenLockListener listener) {
+        mConfirmRemoveScreenLockListener = listener;
     }
 
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        return new CarAlertDialog.Builder(getContext())
+        return new AlertDialog.Builder(getContext())
                 .setTitle(R.string.remove_screen_lock_title)
-                .setBody(R.string.remove_screen_lock_message)
-                .setPositiveButton(R.string.remove_button, this)
+                .setMessage(R.string.remove_screen_lock_message)
+                .setPositiveButton(R.string.remove_button, (dialog, which) -> {
+                    if (mConfirmRemoveScreenLockListener != null) {
+                        mConfirmRemoveScreenLockListener.onConfirmRemoveScreenLock();
+                    }
+                    dialog.dismiss();
+                })
                 .setNegativeButton(android.R.string.cancel, null)
                 .create();
     }
 
-    @Override
-    public void onClick(DialogInterface dialog, int which) {
-        if (mListener != null) {
-            mListener.onRemoveLockConfirmed();
-        }
-    }
-
-    /**
-     * Interface for listeners that want to receive a callback when user confirms lock removal in
-     * the dialog.
-     */
-    public interface ConfirmRemoveLockListener {
-        /**
-         * Callback when user confirms locks removal.
-         */
-        void onRemoveLockConfirmed();
+    /** A listener for when user confirms lock removal for the current user. */
+    public interface ConfirmRemoveScreenLockListener {
+        /** Defines the actions to take when a user confirms the removal of a lock. */
+        void onConfirmRemoveScreenLock();
     }
 }
diff --git a/src/com/android/car/settings/security/LockTypeBasePreferenceController.java b/src/com/android/car/settings/security/LockTypeBasePreferenceController.java
new file mode 100644
index 0000000..d4be237
--- /dev/null
+++ b/src/com/android/car/settings/security/LockTypeBasePreferenceController.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Business Logic for security lock preferences. It can be extended to change which fragment should
+ * be opened when clicked.
+ */
+public abstract class LockTypeBasePreferenceController extends PreferenceController<Preference> {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private byte[] mCurrentPassword;
+    private int mCurrentPasswordQuality;
+
+    public LockTypeBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /**
+     * Fragment specified here will be opened when the Preference is clicked. Return null to prevent
+     * navigation.
+     */
+    protected abstract Fragment fragmentToOpen();
+
+    /**
+     * If the current password quality is one of the values returned by this function, the
+     * controller will identify as having the current lock.
+     */
+    protected abstract int[] allowedPasswordQualities();
+
+
+    /** Sets the quality of the current password. */
+    public void setCurrentPasswordQuality(int currentPasswordQuality) {
+        mCurrentPasswordQuality = currentPasswordQuality;
+    }
+
+    /** Gets whether the preference related to this controller is the current lock type. */
+    protected boolean isCurrentLock() {
+        for (int allowedQuality : allowedPasswordQualities()) {
+            if (mCurrentPasswordQuality == allowedQuality) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /** Sets the current password so it can be provided in the bundle in the fragment. */
+    public void setCurrentPassword(byte[] currentPassword) {
+        mCurrentPassword = currentPassword;
+    }
+
+    /** Gets the current password. */
+    protected byte[] getCurrentPassword() {
+        return mCurrentPassword;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(getSummary());
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        Fragment fragment = fragmentToOpen();
+        if (fragment != null) {
+            if (mCurrentPassword != null) {
+                Bundle args = fragment.getArguments();
+                if (args == null) {
+                    args = new Bundle();
+                }
+                args.putByteArray(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, mCurrentPassword);
+                fragment.setArguments(args);
+            }
+            getFragmentController().launchFragment(fragment);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return mCarUserManagerHelper.isCurrentProcessGuestUser() ? DISABLED_FOR_USER : AVAILABLE;
+    }
+
+    private CharSequence getSummary() {
+        return isCurrentLock() ? getContext().getString(R.string.current_screen_lock) : "";
+    }
+}
diff --git a/src/com/android/car/settings/security/LockTypeDialogFragment.java b/src/com/android/car/settings/security/LockTypeDialogFragment.java
deleted file mode 100644
index 5d664b0..0000000
--- a/src/com/android/car/settings/security/LockTypeDialogFragment.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.security;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.car.app.CarListDialog;
-import androidx.fragment.app.DialogFragment;
-
-import com.android.car.settings.R;
-
-/**
- * Dialog that allows user to switch lock type.  The containing Activity must implement the
- * OnLockSelectListener interface
- */
-public class LockTypeDialogFragment extends DialogFragment {
-    // Please make sure the order is sync with LOCK_TYPES array
-    public static final int POSITION_NONE = 0;
-    public static final int POSITION_PIN = 1;
-    public static final int POSITION_PATTERN = 2;
-    public static final int POSITION_PASSWORD = 3;
-
-    private static final int[] LOCK_TYPES = {
-            R.string.security_lock_none,
-            R.string.security_lock_pin,
-            R.string.security_lock_pattern,
-            R.string.security_lock_password };
-
-    private OnLockSelectListener mOnLockSelectListener;
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-
-        if (!(getActivity() instanceof OnLockSelectListener)) {
-            throw new RuntimeException("Parent must implement OnLockSelectListener");
-        }
-
-        mOnLockSelectListener = (OnLockSelectListener) getActivity();
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        String[] items = new String[LOCK_TYPES.length];
-        for (int i = 0; i < LOCK_TYPES.length; ++i) {
-            items[i] = getResources().getString(LOCK_TYPES[i]);
-        }
-
-        return new CarListDialog.Builder(getContext())
-                .setItems(items, (dialog, pos) -> mOnLockSelectListener.onLockTypeSelected(pos))
-                .create();
-    }
-
-    /**
-     * Handles when a lock type is selected
-     */
-    interface OnLockSelectListener {
-        void onLockTypeSelected(int position);
-    }
-}
diff --git a/src/com/android/car/settings/security/NoLockPreferenceController.java b/src/com/android/car/settings/security/NoLockPreferenceController.java
new file mode 100644
index 0000000..316d43c
--- /dev/null
+++ b/src/com/android/car/settings/security/NoLockPreferenceController.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.internal.widget.LockPatternUtils;
+
+/** Business logic for the no lock preference. */
+public class NoLockPreferenceController extends LockTypeBasePreferenceController {
+
+    private static final int[] ALLOWED_PASSWORD_QUALITIES =
+            new int[]{DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED};
+
+    @VisibleForTesting
+    final ConfirmRemoveScreenLockDialog.ConfirmRemoveScreenLockListener mRemoveLockListener =
+            () -> {
+                int userId = new CarUserManagerHelper(getContext()).getCurrentProcessUserId();
+                new LockPatternUtils(getContext()).clearLock(getCurrentPassword(), userId);
+                getFragmentController().goBack();
+            };
+
+    public NoLockPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+
+    /**
+     * If the dialog to confirm removal of lock was open previously, make sure the listener is
+     * restored.
+     */
+    @Override
+    protected void onCreateInternal() {
+        ConfirmRemoveScreenLockDialog dialog =
+                (ConfirmRemoveScreenLockDialog) getFragmentController().findDialogByTag(
+                        ConfirmRemoveScreenLockDialog.TAG);
+        if (dialog != null) {
+            dialog.setConfirmRemoveScreenLockListener(mRemoveLockListener);
+        }
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        ConfirmRemoveScreenLockDialog dialog = new ConfirmRemoveScreenLockDialog();
+        dialog.setConfirmRemoveScreenLockListener(mRemoveLockListener);
+        getFragmentController().showDialog(dialog,
+                ConfirmRemoveScreenLockDialog.TAG);
+        return true;
+    }
+
+    @Override
+    protected Fragment fragmentToOpen() {
+        // Selecting this preference does not open a new fragment. Instead it opens a dialog to
+        // confirm the removal of the existing lock screen.
+        return null;
+    }
+
+    @Override
+    protected int[] allowedPasswordQualities() {
+        return ALLOWED_PASSWORD_QUALITIES;
+    }
+}
diff --git a/src/com/android/car/settings/security/PasswordHelper.java b/src/com/android/car/settings/security/PasswordHelper.java
index 1182bcc..daefc84 100644
--- a/src/com/android/car/settings/security/PasswordHelper.java
+++ b/src/com/android/car/settings/security/PasswordHelper.java
@@ -21,6 +21,8 @@
 import android.content.Context;
 
 import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.car.setupwizardlib.InitialLockSetupConstants.ValidateLockFlags;
 
 import java.util.LinkedList;
 import java.util.List;
@@ -30,27 +32,20 @@
  */
 public class PasswordHelper {
     public static final String EXTRA_CURRENT_SCREEN_LOCK = "extra_current_screen_lock";
-
-    /**
-     * Allow non-control Latin-1 characters only.
-     */
-    private static final String VALID_CHAR_PATTERN = "^[\\x20-\\x7F ]*$";
-
     /**
      * Required minimum length of PIN or password.
      */
-    static final int MIN_LENGTH = 4;
-
+    public static final int MIN_LENGTH = 4;
     // Error code returned from validate(String).
     static final int NO_ERROR = 0;
     static final int CONTAINS_INVALID_CHARACTERS = 1;
     static final int TOO_SHORT = 1 << 1;
     static final int CONTAINS_NON_DIGITS = 1 << 2;
     static final int CONTAINS_SEQUENTIAL_DIGITS = 1 << 3;
-
+    private static final Logger LOG = new Logger(PasswordHelper.class);
     private final boolean mIsPin;
 
-    PasswordHelper(boolean isPin) {
+    public PasswordHelper(boolean isPin) {
         mIsPin = isPin;
     }
 
@@ -66,42 +61,79 @@
     /**
      * Validates PIN/Password and returns the validation result.
      *
-     * @param password the raw password the user typed in
+     * @param password the raw bytes for the password the user typed in
      * @return the error code which should be non-zero where there is error. Otherwise
      * {@link #NO_ERROR} should be returned.
      */
-    public int validate(String password) {
+    public int validate(byte[] password) {
         return mIsPin ? validatePin(password) : validatePassword(password);
     }
 
     /**
+     * Validates PIN/Password using the setup wizard {@link ValidateLockFlags}.
+     *
+     * @param password The password to validate.
+     * @return The error code where 0 is no error.
+     */
+    public int validateSetupWizard(byte[] password) {
+        return mIsPin ? translateSettingsToSuwError(validatePin(password))
+                : translateSettingsToSuwError(validatePassword(password));
+    }
+
+    /**
      * Converts error code from validatePassword to an array of messages describing the errors with
      * important message comes first.  The messages are concatenated with a space in between.
      * Please make sure each message ends with a period.
-     * @param errorCode the code returned by {@link #validatePassword(String) validatePassword}
+     *
+     * @param errorCode the code returned by {@link #validatePassword(byte[]) validatePassword}
      */
     public List<String> convertErrorCodeToMessages(Context context, int errorCode) {
         return mIsPin ? convertPinErrorCodeToMessages(context, errorCode) :
                 convertPasswordErrorCodeToMessages(context, errorCode);
     }
 
-    private int validatePassword(String password) {
+    private int validatePassword(byte[] password) {
         int errorCode = NO_ERROR;
 
-        if (password.length() < MIN_LENGTH) {
+        if (password.length < MIN_LENGTH) {
             errorCode |= TOO_SHORT;
         }
 
-        if (!password.matches(VALID_CHAR_PATTERN)) {
-            errorCode |= CONTAINS_INVALID_CHARACTERS;
+        // Allow non-control Latin-1 characters only.
+        for (int i = 0; i < password.length; i++) {
+            char c = (char) password[i];
+            if (c < 32 || c > 127) {
+                errorCode |= CONTAINS_INVALID_CHARACTERS;
+                break;
+            }
         }
 
         return errorCode;
     }
 
-    private int validatePin(String pin) {
-        int errorCode = NO_ERROR;
+    private int translateSettingsToSuwError(int error) {
+        int output = 0;
+        if ((error & CONTAINS_NON_DIGITS) > 0) {
+            LOG.v("CONTAINS_NON_DIGITS");
+            output |= ValidateLockFlags.INVALID_BAD_SYMBOLS;
+        }
+        if ((error & CONTAINS_INVALID_CHARACTERS) > 0) {
+            LOG.v("INVALID_CHAR");
+            output |= ValidateLockFlags.INVALID_BAD_SYMBOLS;
+        }
+        if ((error & TOO_SHORT) > 0) {
+            LOG.v("TOO_SHORT");
+            output |= ValidateLockFlags.INVALID_LENGTH;
+        }
+        if ((error & CONTAINS_SEQUENTIAL_DIGITS) > 0) {
+            LOG.v("SEQUENTIAL_DIGITS");
+            output |= ValidateLockFlags.INVALID_LACKS_COMPLEXITY;
+        }
+        return output;
+    }
 
+    private int validatePin(byte[] pin) {
+        int errorCode = NO_ERROR;
         PasswordMetrics metrics = PasswordMetrics.computeForPassword(pin);
         int passwordQuality = getPasswordQuality();
 
diff --git a/src/com/android/car/settings/security/PasswordLockPreferenceController.java b/src/com/android/car/settings/security/PasswordLockPreferenceController.java
new file mode 100644
index 0000000..77d105c
--- /dev/null
+++ b/src/com/android/car/settings/security/PasswordLockPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Business logic for the lock password picker preference. */
+public class PasswordLockPreferenceController extends LockTypeBasePreferenceController {
+
+    private static final int[] ALLOWED_PASSWORD_QUALITIES = new int[]{
+            DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC,
+            DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC
+    };
+
+    public PasswordLockPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Fragment fragmentToOpen() {
+        return ChooseLockPinPasswordFragment.newPasswordInstance();
+    }
+
+    @Override
+    protected int[] allowedPasswordQualities() {
+        return ALLOWED_PASSWORD_QUALITIES;
+    }
+}
diff --git a/src/com/android/car/settings/security/PatternLockPreferenceController.java b/src/com/android/car/settings/security/PatternLockPreferenceController.java
new file mode 100644
index 0000000..1266bd7
--- /dev/null
+++ b/src/com/android/car/settings/security/PatternLockPreferenceController.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Business logic for the lock pattern picker preference. */
+public class PatternLockPreferenceController extends LockTypeBasePreferenceController {
+
+    private static final int[] ALLOWED_PASSWORD_QUALITIES =
+            new int[]{DevicePolicyManager.PASSWORD_QUALITY_SOMETHING};
+
+    public PatternLockPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Fragment fragmentToOpen() {
+        return ChooseLockPatternFragment.newInstance();
+    }
+
+    @Override
+    protected int[] allowedPasswordQualities() {
+        return ALLOWED_PASSWORD_QUALITIES;
+    }
+}
diff --git a/src/com/android/car/settings/security/PinLockPreferenceController.java b/src/com/android/car/settings/security/PinLockPreferenceController.java
new file mode 100644
index 0000000..d8169c0
--- /dev/null
+++ b/src/com/android/car/settings/security/PinLockPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Business logic for the lock pin picker preference. */
+public class PinLockPreferenceController extends LockTypeBasePreferenceController {
+
+    private static final int[] ALLOWED_PASSWORD_QUALITIES = new int[]{
+            DevicePolicyManager.PASSWORD_QUALITY_NUMERIC,
+            DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX
+    };
+
+    public PinLockPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Fragment fragmentToOpen() {
+        return ChooseLockPinPasswordFragment.newPinInstance();
+    }
+
+    @Override
+    protected int[] allowedPasswordQualities() {
+        return ALLOWED_PASSWORD_QUALITIES;
+    }
+}
diff --git a/src/com/android/car/settings/security/PinPadView.java b/src/com/android/car/settings/security/PinPadView.java
index 96eb438..ee7b5b1 100644
--- a/src/com/android/car/settings/security/PinPadView.java
+++ b/src/com/android/car/settings/security/PinPadView.java
@@ -16,12 +16,9 @@
 
 package com.android.car.settings.security;
 
-import android.annotation.DrawableRes;
-import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
-import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -30,6 +27,8 @@
 import android.widget.ImageButton;
 import android.widget.TextView;
 
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.car.settings.R;
@@ -42,12 +41,12 @@
  */
 public class PinPadView extends GridLayout {
     // Number of keys in the pin pad, 0-9 plus backspace and enter keys.
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     static final int NUM_KEYS = 12;
 
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-    static final int[] PIN_PAD_DIGIT_KEYS = { R.id.key0, R.id.key1, R.id.key2, R.id.key3,
-            R.id.key4, R.id.key5, R.id.key6, R.id.key7, R.id.key8, R.id.key9 };
+    @VisibleForTesting
+    static final int[] PIN_PAD_DIGIT_KEYS = {R.id.key0, R.id.key1, R.id.key2, R.id.key3,
+            R.id.key4, R.id.key5, R.id.key6, R.id.key7, R.id.key8, R.id.key9};
 
     /**
      * The delay in milliseconds between character deletion when the user continuously holds the
@@ -56,15 +55,18 @@
     private static final int LONG_CLICK_DELAY_MILLS = 100;
 
     private final List<View> mPinKeys = new ArrayList<>(NUM_KEYS);
-    private PinPadClickListener mOnClickListener;
-    private ImageButton mEnterKey;
-    private Runnable mOnBackspaceLongClick = new Runnable() {
+    private final Runnable mOnBackspaceLongClick = new Runnable() {
         public void run() {
-            mOnClickListener.onBackspaceClick();
-            getHandler().postDelayed(this, LONG_CLICK_DELAY_MILLS);
+            if (mOnClickListener != null) {
+                mOnClickListener.onBackspaceClick();
+                getHandler().postDelayed(this, LONG_CLICK_DELAY_MILLS);
+            }
         }
     };
 
+    private PinPadClickListener mOnClickListener;
+    private ImageButton mEnterKey;
+
     public PinPadView(Context context) {
         super(context);
         init(null, 0, 0);
@@ -98,7 +100,7 @@
     @Override
     public void setEnabled(boolean enabled) {
         super.setEnabled(enabled);
-        for (View key: mPinKeys) {
+        for (View key : mPinKeys) {
             key.setEnabled(enabled);
         }
     }
@@ -106,7 +108,7 @@
     /**
      * Set the resource Id of the enter key icon.
      *
-     * @param drawableId  The resource Id of the drawable.
+     * @param drawableId The resource Id of the drawable.
      */
     public void setEnterKeyIcon(@DrawableRes int drawableId) {
         mEnterKey.setImageResource(drawableId);
@@ -130,42 +132,40 @@
 
     private void init(AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         LayoutInflater inflater = LayoutInflater.from(getContext());
-        inflater.inflate(R.layout.pin_pad_view, this, true);
+        TypedArray typedArray = getContext().obtainStyledAttributes(
+                attrs, R.styleable.PinPadView, defStyleAttr, defStyleRes);
+        inflater.inflate(
+                typedArray.getResourceId(R.styleable.PinPadView_layout, R.layout.pin_pad_view),
+                this, true);
+        typedArray.recycle();
 
         for (int keyId : PIN_PAD_DIGIT_KEYS) {
-            TextView key = (TextView) findViewById(keyId);
+            TextView key = findViewById(keyId);
             String digit = key.getTag().toString();
             key.setOnClickListener(v -> mOnClickListener.onDigitKeyClick(digit));
             mPinKeys.add(key);
         }
 
-        View backspace = findViewById(R.id.key_backspace);
+        ImageButton backspace = findViewById(R.id.key_backspace);
         backspace.setOnTouchListener((v, event) -> {
             switch (event.getAction()) {
                 case MotionEvent.ACTION_DOWN:
                     getHandler().post(mOnBackspaceLongClick);
-                    return true;
+                    // Must return false so that ripple can show
+                    return false;
                 case MotionEvent.ACTION_UP:
                     getHandler().removeCallbacks(mOnBackspaceLongClick);
-                    return true;
+                    // Must return false so that ripple can show
+                    return false;
                 default:
                     return false;
             }
         });
         mPinKeys.add(backspace);
 
-        mEnterKey = (ImageButton) findViewById(R.id.key_enter);
-
-        TypedArray typedArray = getContext().obtainStyledAttributes(
-                attrs, R.styleable.PinPadView, defStyleAttr, defStyleRes);
-        Drawable enterKeyDrawable = typedArray.getDrawable(R.styleable.PinPadView_enterKeyDrawable);
-        typedArray.recycle();
-
-        if (enterKeyDrawable != null) {
-            mEnterKey.setImageDrawable(enterKeyDrawable);
-        }
-
+        mEnterKey = findViewById(R.id.key_enter);
         mEnterKey.setOnClickListener(v -> mOnClickListener.onEnterKeyClick());
+
         mPinKeys.add(mEnterKey);
     }
 
diff --git a/src/com/android/car/settings/security/SaveLockWorkerBase.java b/src/com/android/car/settings/security/SaveLockWorkerBase.java
index 1d9db8b..da267ea 100644
--- a/src/com/android/car/settings/security/SaveLockWorkerBase.java
+++ b/src/com/android/car/settings/security/SaveLockWorkerBase.java
@@ -89,7 +89,7 @@
         }
     }
 
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @VisibleForTesting
     boolean saveAndVerifyInBackground(Void... params) {
         boolean isSaveSuccessful = true;
 
diff --git a/src/com/android/car/settings/security/SavePasswordWorker.java b/src/com/android/car/settings/security/SavePasswordWorker.java
index 06886fa..61862fd 100644
--- a/src/com/android/car/settings/security/SavePasswordWorker.java
+++ b/src/com/android/car/settings/security/SavePasswordWorker.java
@@ -23,11 +23,11 @@
 
 public class SavePasswordWorker extends SaveLockWorkerBase {
 
-    private String mEnteredPassword;
-    private String mCurrentPassword;
+    private byte[] mEnteredPassword;
+    private byte[] mCurrentPassword;
     private int mRequestedQuality;
 
-    void start(int userId, String enteredPassword, String currentPassword, int requestedQuality) {
+    void start(int userId, byte[] enteredPassword, byte[] currentPassword, int requestedQuality) {
         init(userId);
         mEnteredPassword = enteredPassword;
         mCurrentPassword = currentPassword;
diff --git a/src/com/android/car/settings/security/SavePatternWorker.java b/src/com/android/car/settings/security/SavePatternWorker.java
index 6904702..bfd7b27 100644
--- a/src/com/android/car/settings/security/SavePatternWorker.java
+++ b/src/com/android/car/settings/security/SavePatternWorker.java
@@ -26,9 +26,9 @@
 public class SavePatternWorker extends SaveLockWorkerBase {
 
     private List<LockPatternView.Cell> mChosenPattern;
-    private String mCurrentPattern;
+    private byte[] mCurrentPattern;
 
-    void start(int userId, List<LockPatternView.Cell> chosenPattern, String currentPattern) {
+    void start(int userId, List<LockPatternView.Cell> chosenPattern, byte[] currentPattern) {
         init(userId);
         mCurrentPattern = currentPattern;
         mChosenPattern = chosenPattern;
diff --git a/src/com/android/car/settings/security/SecurityEntryPreferenceController.java b/src/com/android/car/settings/security/SecurityEntryPreferenceController.java
new file mode 100644
index 0000000..b39c1f7
--- /dev/null
+++ b/src/com/android/car/settings/security/SecurityEntryPreferenceController.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller which determines if the top level entry into Security settings should be displayed
+ * based on the user status.
+ */
+public class SecurityEntryPreferenceController extends PreferenceController<Preference> {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public SecurityEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return mCarUserManagerHelper.isCurrentProcessGuestUser() ? DISABLED_FOR_USER : AVAILABLE;
+    }
+}
diff --git a/src/com/android/car/settings/security/SecuritySettingsFragment.java b/src/com/android/car/settings/security/SecuritySettingsFragment.java
new file mode 100644
index 0000000..ddb314e
--- /dev/null
+++ b/src/com/android/car/settings/security/SecuritySettingsFragment.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Security home page which includes "choose lock type" and "trusted device"
+ */
+public class SecuritySettingsFragment extends SettingsFragment {
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.security_settings_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/security/SettingsScreenLockActivity.java b/src/com/android/car/settings/security/SettingsScreenLockActivity.java
index a608545..d995ed3 100644
--- a/src/com/android/car/settings/security/SettingsScreenLockActivity.java
+++ b/src/com/android/car/settings/security/SettingsScreenLockActivity.java
@@ -20,80 +20,72 @@
 import android.os.Bundle;
 import android.os.UserHandle;
 
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.CarSettingActivity;
+import com.android.car.settings.common.BaseCarSettingsActivity;
 import com.android.car.settings.common.Logger;
 import com.android.internal.widget.LockPatternUtils;
 
 /**
  * Activity for setting screen locks
  */
-public class SettingsScreenLockActivity extends CarSettingActivity implements CheckLockListener {
+public class SettingsScreenLockActivity extends BaseCarSettingsActivity implements
+        CheckLockListener {
 
     private static final Logger LOG = new Logger(SettingsScreenLockActivity.class);
 
     private int mPasswordQuality;
 
     @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
+    @Nullable
+    protected Fragment getInitialFragment() {
         mPasswordQuality = new LockPatternUtils(this).getKeyguardStoredPasswordQuality(
                 UserHandle.myUserId());
 
-        if (savedInstanceState == null) {
-            BaseFragment fragment;
-            switch (mPasswordQuality) {
-                case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:
-                    fragment = ChooseLockTypeFragment.newInstance();
-                    break;
-                case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
-                    fragment = ConfirmLockPatternFragment.newInstance(
-                            /* isInSetupWizard= */ false);
-                    break;
-                case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
-                case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
-                    fragment = ConfirmLockPinPasswordFragment.newPinInstance(
-                            /* isInSetupWizard= */ false);
-                    break;
-                case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
-                case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
-                    fragment = ConfirmLockPinPasswordFragment.newPasswordInstance(
-                            /* isInSetupWizard= */ false);
-                    break;
-                default:
-                    LOG.e("Unexpected password quality: " + String.valueOf(mPasswordQuality));
-                    fragment = ConfirmLockPinPasswordFragment.newPasswordInstance(
-                            /* isInSetupWizard= */ false);
-            }
-
-            Bundle bundle = fragment.getArguments();
-            if (bundle == null) {
-                bundle = new Bundle();
-            }
-            bundle.putInt(ChooseLockTypeFragment.EXTRA_CURRENT_PASSWORD_QUALITY, mPasswordQuality);
-            fragment.setArguments(bundle);
-
-            getSupportFragmentManager()
-                    .beginTransaction()
-                    .add(R.id.fragment_container, fragment)
-                    .addToBackStack(null)
-                    .commit();
+        Fragment fragment;
+        switch (mPasswordQuality) {
+            case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:
+                fragment = new ChooseLockTypeFragment();
+                break;
+            case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
+                fragment = new ConfirmLockPatternFragment();
+                break;
+            case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
+            case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
+                fragment = ConfirmLockPinPasswordFragment.newPinInstance();
+                break;
+            case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
+            case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
+                fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
+                break;
+            default:
+                LOG.e("Unexpected password quality: " + String.valueOf(mPasswordQuality));
+                fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
         }
-    }
 
-    @Override
-    public void onLockVerified(String lock) {
-        BaseFragment fragment = ChooseLockTypeFragment.newInstance();
         Bundle bundle = fragment.getArguments();
         if (bundle == null) {
             bundle = new Bundle();
         }
-        bundle.putString(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, lock);
+        bundle.putInt(ChooseLockTypeFragment.EXTRA_CURRENT_PASSWORD_QUALITY, mPasswordQuality);
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
+    @Override
+    public void onLockVerified(byte[] lock) {
+        Fragment fragment = new ChooseLockTypeFragment();
+        Bundle bundle = fragment.getArguments();
+        if (bundle == null) {
+            bundle = new Bundle();
+        }
+        bundle.putByteArray(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, lock);
         bundle.putInt(ChooseLockTypeFragment.EXTRA_CURRENT_PASSWORD_QUALITY, mPasswordQuality);
         fragment.setArguments(bundle);
 
+        // Intentionally not using launchFragment(), since we do not want to add to the back stack.
         getSupportFragmentManager()
                 .beginTransaction()
                 .replace(R.id.fragment_container, fragment)
diff --git a/src/com/android/car/settings/security/SetupWizardScreenLockActivity.java b/src/com/android/car/settings/security/SetupWizardScreenLockActivity.java
deleted file mode 100644
index 7f41158..0000000
--- a/src/com/android/car/settings/security/SetupWizardScreenLockActivity.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.security;
-
-import android.app.admin.DevicePolicyManager;
-import android.os.Bundle;
-import android.os.UserHandle;
-import android.text.TextUtils;
-
-import androidx.appcompat.widget.Toolbar;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.CarSettingActivity;
-import com.android.car.settings.common.Logger;
-import com.android.car.settingslib.util.ResultCodes;
-import com.android.internal.widget.LockPatternUtils;
-
-/**
- * Entry point Activity for Setup Wizard to set screen lock.
- */
-public class SetupWizardScreenLockActivity extends CarSettingActivity implements
-        CheckLockListener,
-        LockTypeDialogFragment.OnLockSelectListener {
-
-    private static final Logger LOG = new Logger(SetupWizardScreenLockActivity.class);
-
-    private String mCurrLock;
-    private int mPasswordQuality;
-
-    @Override
-    public void launchFragment(BaseFragment fragment) {
-        Bundle args = fragment.getArguments();
-        if (args == null) {
-            args = new Bundle();
-        }
-        args.putBoolean(BaseFragment.EXTRA_RUNNING_IN_SETUP_WIZARD, true);
-        if (!TextUtils.isEmpty(mCurrLock)) {
-            args.putString(PasswordHelper.EXTRA_CURRENT_SCREEN_LOCK, mCurrLock);
-        }
-        fragment.setArguments(args);
-
-        getSupportFragmentManager()
-                .beginTransaction()
-                .replace(R.id.fragment_container, fragment)
-                .commit();
-    }
-
-    @Override
-    public void goBack() {
-        setResult(RESULT_CANCELED);
-        finish();
-    }
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setContentView(R.layout.suw_activity);
-        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
-        setSupportActionBar(toolbar);
-
-        mPasswordQuality = new LockPatternUtils(this).getKeyguardStoredPasswordQuality(
-                UserHandle.myUserId());
-
-        if (savedInstanceState == null) {
-            BaseFragment fragment;
-            switch (mPasswordQuality) {
-                case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:
-                    // In Setup Wizard, the landing page is always the Pin screen
-                    fragment = ChooseLockPinPasswordFragment.newPinInstance(
-                            /* isInSetupWizard= */ true);
-                    break;
-                case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
-                    fragment = ConfirmLockPatternFragment.newInstance(
-                            /* isInSetupWizard= */ true);
-                    break;
-                case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: // Fall through
-                case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
-                    fragment = ConfirmLockPinPasswordFragment.newPinInstance(
-                            /* isInSetupWizard= */ true);
-                    break;
-                case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC: // Fall through
-                case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
-                    fragment = ConfirmLockPinPasswordFragment.newPasswordInstance(
-                            /* isInSetupWizard= */ true);
-                    break;
-                default:
-                    LOG.e("Unexpected password quality: " + String.valueOf(mPasswordQuality));
-                    fragment = ConfirmLockPinPasswordFragment.newPasswordInstance(
-                            /* isInSetupWizard= */ true);
-            }
-
-            launchFragment(fragment);
-        }
-    }
-
-    /**
-     * Handler that will be invoked when Cancel button is clicked in the fragment.
-     */
-    public void onCancel() {
-        setResult(ResultCodes.RESULT_SKIP);
-        finish();
-    }
-
-    /**
-     * Handler that will be invoked when lock save is completed.
-     */
-    public void onComplete() {
-        setResult(RESULT_OK);
-        finish();
-    }
-
-    @Override
-    public void onLockVerified(String lock) {
-        mCurrLock = lock;
-        // In Setup Wizard, the landing page is always the Pin screen
-        BaseFragment fragment = ChooseLockPinPasswordFragment.newPinInstance(
-                /* isInSetupWizard= */ true);
-        launchFragment(fragment);
-    }
-
-    @Override
-    public void onLockTypeSelected(int position) {
-        BaseFragment fragment = null;
-
-        switch(position) {
-            case LockTypeDialogFragment.POSITION_NONE:
-                if (mPasswordQuality != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
-                    new LockPatternUtils(this).clearLock(mCurrLock, UserHandle.myUserId());
-                }
-                setResult(ResultCodes.RESULT_NONE);
-                finish();
-                break;
-            case LockTypeDialogFragment.POSITION_PIN:
-                fragment = ChooseLockPinPasswordFragment.newPinInstance(
-                        /* isInSetupWizard= */ true);
-                break;
-            case LockTypeDialogFragment.POSITION_PATTERN:
-                fragment = ChooseLockPatternFragment.newInstance(/* isInSetupWizard= */ true);
-                break;
-            case LockTypeDialogFragment.POSITION_PASSWORD:
-                fragment = ChooseLockPinPasswordFragment.newPasswordInstance(
-                        /* isInSetupWizard= */ true);
-                break;
-            default:
-                LOG.e("Lock type position out of bounds");
-        }
-        if (fragment != null) {
-            launchFragment(fragment);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java b/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java
new file mode 100644
index 0000000..7efd671
--- /dev/null
+++ b/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+
+import android.annotation.Nullable;
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Business logic for trusted device preference.
+ */
+public class TrustedDeviceEntryPreferenceController extends PreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(TrustedDeviceEntryPreferenceController.class);
+    private final Car mCar;
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    @Nullable
+    private CarTrustAgentEnrollmentManager mCarTrustAgentEnrollmentManager;
+
+    public TrustedDeviceEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCar = Car.createCar(context);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        try {
+            mCarTrustAgentEnrollmentManager = (CarTrustAgentEnrollmentManager) mCar.getCarManager(
+                    Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
+        } catch (CarNotConnectedException e) {
+            LOG.e(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        int listSize = 0;
+        try {
+            listSize = mCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                    mCarUserManagerHelper.getCurrentProcessUserId()).size();
+        } catch (CarNotConnectedException e) {
+            LOG.e(e.getMessage(), e);
+        }
+        preference.setSummary(
+                getContext().getResources().getQuantityString(R.plurals.trusted_device_subtitle,
+                        listSize, listSize));
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        getFragmentController().launchFragment(new ChooseTrustedDeviceFragment());
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java b/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java
new file mode 100644
index 0000000..bab47ed
--- /dev/null
+++ b/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import android.annotation.Nullable;
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothDevice;
+import android.car.Car;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.widget.LockPatternUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Business logic of trusted device list page
+ */
+public class TrustedDeviceListPreferenceController extends PreferenceController<PreferenceGroup> {
+    private static final Logger LOG = new Logger(TrustedDeviceListPreferenceController.class);
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final LockPatternUtils mLockPatternUtils;
+    private final Car mCar;
+    @Nullable
+    private CarTrustAgentEnrollmentManager mCarTrustAgentEnrollmentManager;
+    private final CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback
+            mCarTrustAgentEnrollmentCallback =
+            new CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback() {
+
+                @Override
+                public void onEnrollmentHandshakeFailure(BluetoothDevice device, int errorCode) {
+                }
+
+                @Override
+                public void onAuthStringAvailable(BluetoothDevice device, String authString) {
+                }
+
+                @Override
+                public void onEscrowTokenAdded(long handle) {
+                }
+
+                @Override
+                public void onEscrowTokenRemoved(long handle) {
+                    refreshUi();
+                }
+
+                @Override
+                public void onEscrowTokenActiveStateChanged(long handle, boolean active) {
+                    if (active) {
+                        refreshUi();
+                    }
+                }
+            };
+
+    @VisibleForTesting
+    final ConfirmRemoveDeviceDialog.ConfirmRemoveDeviceListener mConfirmRemoveDeviceListener =
+            new ConfirmRemoveDeviceDialog.ConfirmRemoveDeviceListener() {
+                public void onConfirmRemoveDevice(long handle) {
+                    mCarTrustAgentEnrollmentManager.removeEscrowToken(handle,
+                            mCarUserManagerHelper.getCurrentProcessUserId());
+                }
+            };
+
+    public TrustedDeviceListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mLockPatternUtils = new LockPatternUtils(context);
+        mCar = Car.createCar(context);
+        mCarTrustAgentEnrollmentManager = (CarTrustAgentEnrollmentManager) mCar.getCarManager(
+                Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
+
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mCarTrustAgentEnrollmentManager == null) {
+            throw new IllegalStateException("mCarTrustAgentEnrollmentManager is null.");
+        }
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        if (!hasPassword()) {
+            preferenceGroup.removeAll();
+            preferenceGroup.addPreference(createAuthenticationReminderPreference());
+            return;
+        }
+        List<Preference> updatedList = createTrustDevicePreferenceList();
+        if (!isEqual(preferenceGroup, updatedList)) {
+            preferenceGroup.removeAll();
+            for (Preference trustedDevice : updatedList) {
+                preferenceGroup.addPreference(trustedDevice);
+            }
+        }
+        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 0);
+    }
+
+    private boolean hasPassword() {
+        return mLockPatternUtils.getKeyguardStoredPasswordQuality(
+                mCarUserManagerHelper.getCurrentProcessUserId())
+                != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mCarTrustAgentEnrollmentManager.setEnrollmentCallback(mCarTrustAgentEnrollmentCallback);
+
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mCarTrustAgentEnrollmentManager.setEnrollmentCallback(null);
+    }
+
+    /**
+     * Method to compare two lists of preferences, used only by updateState method.
+     *
+     * @param preferenceGroup   current preference group
+     * @param trustedDeviceList updated preference list
+     * @return {@code true} when two lists are the same
+     */
+    private boolean isEqual(PreferenceGroup preferenceGroup, List<Preference> trustedDeviceList) {
+        if (preferenceGroup.getPreferenceCount() != trustedDeviceList.size()) {
+            return false;
+        }
+        for (Preference p : trustedDeviceList) {
+            if (preferenceGroup.findPreference(p.getKey()) == null) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private List<Preference> createTrustDevicePreferenceList() {
+        List<Preference> trustedDevicesList = new ArrayList<>();
+        List<TrustedDeviceInfo> devices =
+                mCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                        mCarUserManagerHelper.getCurrentProcessUserId());
+        for (TrustedDeviceInfo deviceInfo : devices) {
+            trustedDevicesList.add(
+                    createTrustedDevicePreference(deviceInfo.getName(), deviceInfo.getHandle()));
+        }
+        return trustedDevicesList;
+    }
+
+    private Preference createTrustedDevicePreference(String deviceName, long handle) {
+        Preference preference = new Preference(getContext());
+        preference.setIcon(R.drawable.ic_settings_bluetooth);
+        preference.setTitle(deviceName);
+        preference.setKey(String.valueOf(handle));
+        preference.setOnPreferenceClickListener((Preference pref) -> {
+            ConfirmRemoveDeviceDialog dialog = ConfirmRemoveDeviceDialog.newInstance(deviceName,
+                    handle);
+            dialog.setConfirmRemoveDeviceListener(mConfirmRemoveDeviceListener);
+            getFragmentController().showDialog(dialog, ConfirmRemoveDeviceDialog.TAG);
+            return true;
+        });
+        return preference;
+    }
+
+    private Preference createAuthenticationReminderPreference() {
+        Preference preference = new Preference(getContext());
+        preference.setSummary(R.string.trusted_device_set_authentication_reminder);
+        return preference;
+    }
+}
diff --git a/src/com/android/car/settings/setupservice/InitialLockSetupService.java b/src/com/android/car/settings/setupservice/InitialLockSetupService.java
new file mode 100644
index 0000000..292fbd3
--- /dev/null
+++ b/src/com/android/car/settings/setupservice/InitialLockSetupService.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2019 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.car.settings.setupservice;
+
+
+import android.app.Service;
+import android.app.admin.DevicePolicyManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.IBinder;
+
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.security.PasswordHelper;
+import com.android.car.setupwizardlib.IInitialLockSetupService;
+import com.android.car.setupwizardlib.InitialLockSetupConstants;
+import com.android.car.setupwizardlib.InitialLockSetupConstants.LockTypes;
+import com.android.car.setupwizardlib.InitialLockSetupConstants.SetLockCodes;
+import com.android.car.setupwizardlib.InitialLockSetupConstants.ValidateLockFlags;
+import com.android.car.setupwizardlib.InitialLockSetupHelper;
+import com.android.car.setupwizardlib.LockConfig;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockPatternView;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Service that is used by Setup Wizard (exclusively) to set the initial lock screen.
+ *
+ * <p>This service provides functionality to get the lock config state, check if a password is
+ * valid based on the Settings defined password criteria, and save a lock if there is not one
+ * already saved. The interface for these operations is found in the {@link
+ * IInitialLockSetupService}.
+ */
+public class InitialLockSetupService extends Service {
+
+    private static final Logger LOG = new Logger(InitialLockSetupService.class);
+    private static final String SET_LOCK_PERMISSION = "com.android.car.settings.SET_INITIAL_LOCK";
+
+    private final InitialLockSetupServiceImpl mIInitialLockSetupService =
+            new InitialLockSetupServiceImpl();
+
+    /**
+     * Will return an {@link IBinder} for the service unless either the caller does not have the
+     * appropriate permissions or a lock has already been set on the device. In this case, the
+     * service will return {@code null}.
+     */
+    @Override
+    public IBinder onBind(Intent intent) {
+        LOG.v("onBind");
+        if (checkCallingOrSelfPermission(SET_LOCK_PERMISSION)
+                != PackageManager.PERMISSION_GRANTED) {
+            // Check permission as a failsafe.
+            return null;
+        }
+        int userId = new CarUserManagerHelper(getApplicationContext()).getCurrentProcessUserId();
+        LockPatternUtils lockPatternUtils = new LockPatternUtils(getApplicationContext());
+        // Deny binding if there is an existing lock.
+        if (lockPatternUtils.getKeyguardStoredPasswordQuality(userId)
+                != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
+            LOG.v("Rejecting binding, lock exists");
+            return null;
+        }
+        return mIInitialLockSetupService;
+    }
+
+    // Translates the byte[] pattern received into the List<LockPatternView.Cell> that is
+    // recognized by LockPatternUtils.
+    private List<LockPatternView.Cell> toSettingsPattern(byte[] pattern) {
+        List<LockPatternView.Cell> outputList = new ArrayList<>();
+        for (int i = 0; i < pattern.length; i++) {
+            outputList.add(LockPatternView.Cell.of(
+                    InitialLockSetupHelper.getPatternCellRowFromByte(pattern[i]),
+                    InitialLockSetupHelper.getPatternCellColumnFromByte(pattern[i])));
+        }
+        return outputList;
+    }
+
+    // Implementation of the service binder interface.
+    private class InitialLockSetupServiceImpl extends IInitialLockSetupService.Stub {
+
+        @Override
+        public int getServiceVersion() {
+            return InitialLockSetupConstants.LIBRARY_VERSION;
+        }
+
+        @Override
+        public LockConfig getLockConfig(@LockTypes int lockType) {
+            // All lock types currently are configured the same.
+            switch (lockType) {
+                case LockTypes.PASSWORD:
+                    // fall through
+                case LockTypes.PIN:
+                    // fall through
+                case LockTypes.PATTERN:
+                    return new LockConfig(/* enabled= */true, PasswordHelper.MIN_LENGTH);
+            }
+            return null;
+        }
+
+        @Override
+        @ValidateLockFlags
+        public int checkValidLock(@LockTypes int lockType, byte[] password) {
+            PasswordHelper passwordHelper;
+            switch (lockType) {
+                case LockTypes.PASSWORD:
+                    passwordHelper = new PasswordHelper(/* isPin= */ false);
+                    return passwordHelper.validateSetupWizard(password);
+                case LockTypes.PIN:
+                    passwordHelper = new PasswordHelper(/* isPin= */ true);
+                    return passwordHelper.validateSetupWizard(password);
+                case LockTypes.PATTERN:
+                    return password.length >= LockPatternUtils.MIN_LOCK_PATTERN_SIZE
+                            ? 0 : ValidateLockFlags.INVALID_LENGTH;
+                default:
+                    LOG.e("other lock type, returning generic error");
+                    return ValidateLockFlags.INVALID_GENERIC;
+            }
+        }
+
+        @Override
+        @SetLockCodes
+        public int setLock(@LockTypes int lockType, byte[] password) {
+            int userId = new CarUserManagerHelper(
+                    InitialLockSetupService.this.getApplicationContext())
+                    .getCurrentProcessUserId();
+            LockPatternUtils lockPatternUtils = new LockPatternUtils(
+                    InitialLockSetupService.this.getApplicationContext());
+            int currentPassword = lockPatternUtils.getKeyguardStoredPasswordQuality(userId);
+            if (currentPassword != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
+                LOG.v("Password already set, rejecting call to setLock");
+                return SetLockCodes.FAIL_LOCK_EXISTS;
+            }
+            if (!InitialLockSetupHelper.isValidLockResultCode(checkValidLock(lockType, password))) {
+                LOG.v("Password is not valid, rejecting call to setLock");
+                return SetLockCodes.FAIL_LOCK_INVALID;
+            }
+
+            boolean success = false;
+            try {
+                switch (lockType) {
+                    case LockTypes.PASSWORD:
+                        // Need to remove setup wizard lib byte array encoding and use the
+                        // LockPatternUtils encoding.
+                        byte[] encodedPassword = LockPatternUtils.charSequenceToByteArray(
+                                InitialLockSetupHelper.byteArrayToCharSequence(password));
+                        lockPatternUtils.saveLockPassword(encodedPassword,
+                                /* savedPassword= */ null,
+                                DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC, userId);
+                        success = true;
+                        break;
+                    case LockTypes.PIN:
+                        // Need to remove setup wizard lib byte array encoding and use the
+                        // LockPatternUtils encoding.
+                        byte[] encodedPin = LockPatternUtils.charSequenceToByteArray(
+                                InitialLockSetupHelper.byteArrayToCharSequence(password));
+                        lockPatternUtils.saveLockPassword(encodedPin, /* savedPassword= */ null,
+                                DevicePolicyManager.PASSWORD_QUALITY_NUMERIC, userId);
+                        success = true;
+                        break;
+                    case LockTypes.PATTERN:
+                        // Need to remove the setup wizard lib pattern encoding and use the
+                        // LockPatternUtils pattern format.
+                        List<LockPatternView.Cell> pattern = toSettingsPattern(password);
+                        lockPatternUtils.saveLockPattern(pattern, /* savedPattern =*/ null,
+                                userId, /* allowUntrustedChange =*/ false);
+                        pattern.clear();
+                        success = true;
+                        break;
+                    default:
+                        LOG.e("Unknown lock type, returning a failure");
+                }
+            } catch (Exception e) {
+                LOG.e("Save lock exception", e);
+                success = false;
+            }
+            Arrays.fill(password, (byte) 0);
+            return success ? SetLockCodes.SUCCESS : SetLockCodes.FAIL_LOCK_GENERIC;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/sound/RingtonePreference.java b/src/com/android/car/settings/sound/RingtonePreference.java
new file mode 100644
index 0000000..e021174
--- /dev/null
+++ b/src/com/android/car/settings/sound/RingtonePreference.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2018 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.car.settings.sound;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.TypedArray;
+import android.media.RingtoneManager;
+import android.util.AttributeSet;
+
+import androidx.preference.Preference;
+
+/**
+ * A {@link Preference} which extracts relevant ringtone attributes from XML. When used in
+ * conjunction with {@link RingtonePreferenceController}, it can be used to select a default
+ * ringtone for a given ringtone type.
+ *
+ * @attr ref android.R.styleable#RingtonePreference_ringtoneType
+ * @attr ref android.R.styleable#RingtonePreference_showSilent
+ */
+public class RingtonePreference extends Preference {
+
+    private boolean mShowSilent;
+    private int mRingtoneType;
+
+    public RingtonePreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        TypedArray a = context.obtainStyledAttributes(attrs,
+                com.android.internal.R.styleable.RingtonePreference, 0, 0);
+        mRingtoneType = a.getInt(com.android.internal.R.styleable.RingtonePreference_ringtoneType,
+                RingtoneManager.TYPE_RINGTONE);
+        mShowSilent = a.getBoolean(com.android.internal.R.styleable.RingtonePreference_showSilent,
+                true);
+        setIntent(new Intent(RingtoneManager.ACTION_RINGTONE_PICKER));
+        a.recycle();
+    }
+
+    /**
+     * Returns the sound type(s) that are shown in the picker.
+     *
+     * @see #setRingtoneType(int)
+     */
+    public int getRingtoneType() {
+        return mRingtoneType;
+    }
+
+    /**
+     * Sets the sound type(s) that are shown in the picker.
+     *
+     * @param type The sound type(s) that are shown in the picker.
+     * @see RingtoneManager#EXTRA_RINGTONE_TYPE
+     */
+    public void setRingtoneType(int type) {
+        mRingtoneType = type;
+    }
+
+    /**
+     * Returns whether to a show an item for 'Silent'.
+     */
+    public boolean getShowSilent() {
+        return mShowSilent;
+    }
+
+    /**
+     * Sets whether to show an item for 'Silent'.
+     *
+     * @param showSilent Whether to show 'Silent'.
+     * @see RingtoneManager#EXTRA_RINGTONE_SHOW_SILENT
+     */
+    public void setShowSilent(boolean showSilent) {
+        mShowSilent = showSilent;
+    }
+}
diff --git a/src/com/android/car/settings/sound/RingtonePreferenceController.java b/src/com/android/car/settings/sound/RingtonePreferenceController.java
new file mode 100644
index 0000000..7a90b26
--- /dev/null
+++ b/src/com/android/car/settings/sound/RingtonePreferenceController.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2018 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.car.settings.sound;
+
+import android.app.Activity;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.media.AudioAttributes;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.UserHandle;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic for changing the default ringtone. */
+public class RingtonePreferenceController extends
+        PreferenceController<RingtonePreference> implements ActivityResultCallback {
+
+    private static final Logger LOG = new Logger(RingtonePreferenceController.class);
+    @VisibleForTesting
+    static final int REQUEST_CODE = 16;
+
+    // We use a user context so that default ringtones can differ per user.
+    private final Context mUserContext;
+
+    public RingtonePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mUserContext = createPackageContextAsUser(getContext(), UserHandle.myUserId());
+    }
+
+    @Override
+    protected Class<RingtonePreference> getPreferenceType() {
+        return RingtonePreference.class;
+    }
+
+    @Override
+    protected void updateState(RingtonePreference preference) {
+        Uri ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(getContext(),
+                getPreference().getRingtoneType());
+        preference.setSummary(Ringtone.getTitle(getContext(), ringtoneUri, /* followSettingsUri= */
+                false, /* allowRemote= */ true));
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(RingtonePreference preference) {
+        onPrepareRingtonePickerIntent(preference, preference.getIntent());
+        getFragmentController().startActivityForResult(preference.getIntent(), REQUEST_CODE, this);
+        return true;
+    }
+
+    @Override
+    public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        if (requestCode == REQUEST_CODE) {
+            if (resultCode != Activity.RESULT_OK || data == null) {
+                return;
+            }
+
+            Uri ringtoneUri = data.getParcelableExtra(
+                    RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
+            RingtoneManager.setActualDefaultRingtoneUri(mUserContext,
+                    getPreference().getRingtoneType(), ringtoneUri);
+            refreshUi();
+        }
+    }
+
+    /**
+     * Prepares the intent to launch the ringtone picker. This can be modified
+     * to adjust the parameters of the ringtone picker.
+     */
+    private void onPrepareRingtonePickerIntent(RingtonePreference ringtonePreference,
+            Intent ringtonePickerIntent) {
+        Uri currentRingtone = RingtoneManager.getActualDefaultRingtoneUri(mUserContext,
+                ringtonePreference.getRingtoneType());
+        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI,
+                currentRingtone);
+
+        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,
+                ringtonePreference.getTitle());
+        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
+                ringtonePreference.getRingtoneType());
+        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT,
+                ringtonePreference.getShowSilent());
+
+        // Since we are picking the default ringtone, no need to show system default.
+        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
+        // Allow playback in external activity.
+        ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_AUDIO_ATTRIBUTES_FLAGS,
+                AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY);
+    }
+
+    /**
+     * Returns a context created from the given context for the given user, or null if it fails.
+     */
+    private Context createPackageContextAsUser(Context context, int userId) {
+        try {
+            return context.createPackageContextAsUser(
+                    context.getPackageName(), 0 /* flags */, UserHandle.of(userId));
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.e("Failed to create user context", e);
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/sound/SoundSettingsFragment.java b/src/com/android/car/settings/sound/SoundSettingsFragment.java
index b1bf654..e04968c 100644
--- a/src/com/android/car/settings/sound/SoundSettingsFragment.java
+++ b/src/com/android/car/settings/sound/SoundSettingsFragment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 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.
@@ -11,242 +11,22 @@
  * 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
+ * limitations under the License.
  */
+
 package com.android.car.settings.sound;
 
-import android.annotation.DrawableRes;
-import android.annotation.StringRes;
-import android.car.Car;
-import android.car.CarNotConnectedException;
-import android.car.media.CarAudioManager;
-import android.car.media.ICarVolumeCallback;
-import android.content.ComponentName;
-import android.content.ServiceConnection;
-import android.content.res.TypedArray;
-import android.content.res.XmlResourceParser;
-import android.media.AudioAttributes;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.util.AttributeSet;
-import android.util.SparseArray;
-import android.util.Xml;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemAdapter;
-import androidx.car.widget.ListItemProvider.ListProvider;
-import androidx.car.widget.PagedListView;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
 
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Activity hosts sound related settings.
- */
-public class SoundSettingsFragment extends BaseFragment {
-    private static final Logger LOG = new Logger(SoundSettingsFragment.class);
-
-    private static final String XML_TAG_VOLUME_ITEMS = "carVolumeItems";
-    private static final String XML_TAG_VOLUME_ITEM = "item";
-
-    private final SparseArray<VolumeItem> mVolumeItems = new SparseArray<>();
-
-    private final List<ListItem> mVolumeLineItems = new ArrayList<>();
-
-    private final ServiceConnection mServiceConnection = new ServiceConnection() {
-        @Override
-        public void onServiceConnected(ComponentName name, IBinder service) {
-            try {
-                mCarAudioManager = (CarAudioManager) mCar.getCarManager(Car.AUDIO_SERVICE);
-                int volumeGroupCount = mCarAudioManager.getVolumeGroupCount();
-                cleanUpVolumeLineItems();
-                // Populates volume slider items from volume groups to UI.
-                for (int groupId = 0; groupId < volumeGroupCount; groupId++) {
-                    final VolumeItem volumeItem = getVolumeItemForUsages(
-                            mCarAudioManager.getUsagesForVolumeGroupId(groupId));
-                    mVolumeLineItems.add(new VolumeLineItem(
-                            getContext(),
-                            mCarAudioManager,
-                            groupId,
-                            volumeItem.usage,
-                            volumeItem.icon,
-                            volumeItem.title));
-                }
-                updateList();
-                mCarAudioManager.registerVolumeCallback(mVolumeChangeCallback.asBinder());
-            } catch (CarNotConnectedException e) {
-                LOG.e("Car is not connected!", e);
-            }
-        }
-
-        /**
-         * This does not gets called when service is properly disconnected.
-         * So we need to also handle cleanups in onStop().
-         */
-        @Override
-        public void onServiceDisconnected(ComponentName name) {
-            cleanupAudioManager();
-        }
-    };
-
-    private final ICarVolumeCallback mVolumeChangeCallback = new ICarVolumeCallback.Stub() {
-        @Override
-        public void onGroupVolumeChanged(int groupId, int flags) {
-            for (ListItem lineItem : mVolumeLineItems) {
-                VolumeLineItem volumeLineItem = (VolumeLineItem) lineItem;
-                if (volumeLineItem.getVolumeGroupId() == groupId) {
-                    volumeLineItem.updateProgress();
-                }
-            }
-            updateList();
-        }
-
-        @Override
-        public void onMasterMuteChanged(int flags) {
-            // ignored
-        }
-    };
-
-    private Car mCar;
-    private CarAudioManager mCarAudioManager;
-    private PagedListView mListView;
-    private ListItemAdapter mPagedListAdapter;
-
-    /**
-     * Creates a new instance of this fragment.
-     */
-    public static SoundSettingsFragment newInstance() {
-        SoundSettingsFragment soundSettingsFragment = new SoundSettingsFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.sound_settings);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.list);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar);
-        soundSettingsFragment.setArguments(bundle);
-        return soundSettingsFragment;
-    }
-
-    private void cleanupAudioManager() {
-        try {
-            mCarAudioManager.unregisterVolumeCallback(mVolumeChangeCallback.asBinder());
-        } catch (CarNotConnectedException e) {
-            LOG.e("Car is not connected!", e);
-        }
-        cleanUpVolumeLineItems();
-        mCarAudioManager = null;
-    }
-
-    private void updateList() {
-        if (getActivity() != null && mPagedListAdapter != null) {
-            getActivity().runOnUiThread(() -> mPagedListAdapter.notifyDataSetChanged());
-        }
-    }
+/** Fragment which shows the settings for sounds. */
+public class SoundSettingsFragment extends SettingsFragment {
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        loadAudioUsageItems();
-        mCar = Car.createCar(getContext(), mServiceConnection);
-        mListView = getView().findViewById(R.id.list);
-        mPagedListAdapter = new ListItemAdapter(getContext(), new ListProvider(mVolumeLineItems));
-        mListView.setAdapter(mPagedListAdapter);
-        mListView.setMaxPages(PagedListView.UNLIMITED_PAGES);
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        mCar.connect();
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        cleanUpVolumeLineItems();
-        cleanupAudioManager();
-        mCar.disconnect();
-    }
-
-    private void cleanUpVolumeLineItems() {
-        for (ListItem item : mVolumeLineItems) {
-            ((VolumeLineItem) item).stop();
-        }
-        mVolumeLineItems.clear();
-    }
-
-    private void loadAudioUsageItems() {
-        try (XmlResourceParser parser = getResources().getXml(R.xml.car_volume_items)) {
-            AttributeSet attrs = Xml.asAttributeSet(parser);
-            int type;
-            // Traverse to the first start tag
-            while ((type=parser.next()) != XmlResourceParser.END_DOCUMENT
-                    && type != XmlResourceParser.START_TAG) {
-            }
-
-            if (!XML_TAG_VOLUME_ITEMS.equals(parser.getName())) {
-                throw new RuntimeException("Meta-data does not start with carVolumeItems tag");
-            }
-            int outerDepth = parser.getDepth();
-            int rank = 0;
-            while ((type=parser.next()) != XmlResourceParser.END_DOCUMENT
-                    && (type != XmlResourceParser.END_TAG || parser.getDepth() > outerDepth)) {
-                if (type == XmlResourceParser.END_TAG) {
-                    continue;
-                }
-                if (XML_TAG_VOLUME_ITEM.equals(parser.getName())) {
-                    TypedArray item = getResources().obtainAttributes(
-                            attrs, R.styleable.carVolumeItems_item);
-                    int usage = item.getInt(R.styleable.carVolumeItems_item_usage, -1);
-                    if (usage >= 0) {
-                        mVolumeItems.put(usage, new VolumeItem(
-                                usage, rank,
-                                item.getResourceId(R.styleable.carVolumeItems_item_title, 0),
-                                item.getResourceId(R.styleable.carVolumeItems_item_icon, 0)));
-                        rank++;
-                    }
-                    item.recycle();
-                }
-            }
-        } catch (XmlPullParserException | IOException e) {
-            LOG.e("Error parsing volume groups configuration", e);
-        }
-    }
-
-    private VolumeItem getVolumeItemForUsages(int[] usages) {
-        int rank = Integer.MAX_VALUE;
-        VolumeItem result = null;
-        for (int usage : usages) {
-            VolumeItem volumeItem = mVolumeItems.get(usage);
-            if (volumeItem.rank < rank) {
-                rank = volumeItem.rank;
-                result = volumeItem;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Wrapper class which contains information to render volume item on UI.
-     */
-    private static class VolumeItem {
-        private final @AudioAttributes.AttributeUsage int usage;
-        private final int rank;
-        private final @StringRes int title;
-        private final @DrawableRes int icon;
-
-        private VolumeItem(@AudioAttributes.AttributeUsage int usage, int rank,
-                @StringRes int title, @DrawableRes int icon) {
-            this.usage = usage;
-            this.rank = rank;
-            this.title = title;
-            this.icon = icon;
-        }
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.sound_settings_fragment;
     }
 }
diff --git a/src/com/android/car/settings/sound/VolumeItemParser.java b/src/com/android/car/settings/sound/VolumeItemParser.java
new file mode 100644
index 0000000..562d200
--- /dev/null
+++ b/src/com/android/car/settings/sound/VolumeItemParser.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2018 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.car.settings.sound;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
+import android.media.AudioAttributes;
+import android.util.AttributeSet;
+import android.util.SparseArray;
+import android.util.Xml;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+
+/**
+ * Parses the xml file which specifies which Audio usages should be considered by sound settings.
+ */
+public class VolumeItemParser {
+    private static final Logger LOG = new Logger(VolumeItemParser.class);
+
+    private static final String XML_TAG_VOLUME_ITEMS = "carVolumeItems";
+    private static final String XML_TAG_VOLUME_ITEM = "item";
+
+    /**
+     * Parses the volume items listed in the xml resource provided. This is returned as a sparse
+     * array which is keyed by the rank (the order in which the volume item appears in the xml
+     * resrouce).
+     */
+    public static SparseArray<VolumeItem> loadAudioUsageItems(Context context,
+            @XmlRes int volumeItemsXml) {
+        SparseArray<VolumeItem> volumeItems = new SparseArray<>();
+        try (XmlResourceParser parser = context.getResources().getXml(volumeItemsXml)) {
+            AttributeSet attrs = Xml.asAttributeSet(parser);
+            int type;
+            // Traverse to the first start tag.
+            while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+                    && type != XmlResourceParser.START_TAG) {
+                continue;
+            }
+
+            if (!XML_TAG_VOLUME_ITEMS.equals(parser.getName())) {
+                throw new RuntimeException("Meta-data does not start with carVolumeItems tag");
+            }
+            int outerDepth = parser.getDepth();
+            int rank = 0;
+            while ((type = parser.next()) != XmlResourceParser.END_DOCUMENT
+                    && (type != XmlResourceParser.END_TAG || parser.getDepth() > outerDepth)) {
+                if (type == XmlResourceParser.END_TAG) {
+                    continue;
+                }
+                if (XML_TAG_VOLUME_ITEM.equals(parser.getName())) {
+                    TypedArray item = context.getResources().obtainAttributes(
+                            attrs, R.styleable.carVolumeItems_item);
+                    int usage = item.getInt(R.styleable.carVolumeItems_item_usage, -1);
+                    if (usage >= 0) {
+                        volumeItems.put(usage, new VolumeItemParser.VolumeItem(
+                                usage, rank,
+                                item.getResourceId(R.styleable.carVolumeItems_item_titleText, 0),
+                                item.getResourceId(R.styleable.carVolumeItems_item_icon, 0)));
+                        rank++;
+                    }
+                    item.recycle();
+                }
+            }
+        } catch (XmlPullParserException | IOException e) {
+            LOG.e("Error parsing volume groups configuration", e);
+        }
+        return volumeItems;
+    }
+
+    /**
+     * Wrapper class which contains information to render volume item on UI.
+     */
+    public static class VolumeItem {
+        @AudioAttributes.AttributeUsage
+        private final int mUsage;
+        private final int mRank;
+        @StringRes
+        private final int mTitle;
+        @DrawableRes
+        private final int mIcon;
+
+        /** Constructs the VolumeItem container with the given values. */
+        public VolumeItem(@AudioAttributes.AttributeUsage int usage, int rank,
+                @StringRes int title, @DrawableRes int icon) {
+            mUsage = usage;
+            mRank = rank;
+            mTitle = title;
+            mIcon = icon;
+        }
+
+        /**
+         * Usage is used to represent what purpose the sound is used for. The values should be
+         * defined within AudioAttributes.USAGE_*.
+         */
+        public int getUsage() {
+            return mUsage;
+        }
+
+        /**
+         * Rank represents the order in which the usage appears in
+         * {@link R.xml#car_volume_items}. This order is used to determine which title and icon
+         * should be used for each audio group. The lowest rank has the highest precedence.
+         */
+        public int getRank() {
+            return mRank;
+        }
+
+        /** Title which should be used for the seek bar preference. */
+        public int getTitle() {
+            return mTitle;
+        }
+
+        /** Icon which should be used for the seek bar preference. */
+        public int getIcon() {
+            return mIcon;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/sound/VolumeLineItem.java b/src/com/android/car/settings/sound/VolumeLineItem.java
deleted file mode 100644
index a628ad5..0000000
--- a/src/com/android/car/settings/sound/VolumeLineItem.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.sound;
-
-import android.annotation.DrawableRes;
-import android.annotation.StringRes;
-import android.car.CarNotConnectedException;
-import android.car.media.CarAudioManager;
-import android.content.Context;
-import android.media.AudioAttributes;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Looper;
-import android.provider.Settings;
-import android.widget.SeekBar;
-
-import androidx.car.widget.SeekbarListItem;
-
-import com.android.car.settings.common.Logger;
-
-/**
- * Contains logic about volume controller UI.
- */
-public class VolumeLineItem extends SeekbarListItem implements SeekBar.OnSeekBarChangeListener {
-    private static final Logger LOG = new Logger(VolumeLineItem.class);
-    private static final int AUDIO_FEEDBACK_DURATION_MS = 1000;
-
-    private final Handler mUiHandler;
-    private final Ringtone mRingtone;
-    private final int mVolumeGroupId;
-    private final CarAudioManager mCarAudioManager;
-
-    public VolumeLineItem(
-            Context context,
-            CarAudioManager carAudioManager,
-            int volumeGroupId,
-            @AudioAttributes.AttributeUsage int usage,
-            @DrawableRes int iconResId,
-            @StringRes int titleId) throws CarNotConnectedException {
-        super(context);
-        mCarAudioManager = carAudioManager;
-        mUiHandler = new Handler(Looper.getMainLooper());
-        mRingtone = RingtoneManager.getRingtone(context, getRingtoneUri(usage));
-        mRingtone.setAudioAttributes(new AudioAttributes.Builder().setUsage(usage).build());
-        mVolumeGroupId = volumeGroupId;
-        setMax(getMaxSeekbarValue());
-        updateProgress();
-        setOnSeekBarChangeListener(this);
-        setText(context.getString(titleId));
-        setPrimaryActionIcon(iconResId);
-    }
-
-    @Override
-    public void onStartTrackingTouch(SeekBar seekBar) {
-        // no-op
-    }
-
-    @Override
-    public void onStopTrackingTouch(SeekBar seekBar) {
-        // no-op
-    }
-
-    @Override
-    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
-        if (!fromUser) {
-            // For instance, if this event is originated from AudioService,
-            // we can ignore it as it has already been handled and doesn't need to be
-            // sent back down again.
-            return;
-        }
-        try {
-            if (mCarAudioManager == null) {
-                LOG.w("Ignoring volume change event because the car isn't connected");
-                return;
-            }
-            // AudioManager.FLAG_PLAY_SOUND does not guarantee play sound, use our own
-            // playback here instead.
-            mCarAudioManager.setGroupVolume(mVolumeGroupId, progress, 0);
-            playAudioFeedback();
-        } catch (CarNotConnectedException e) {
-            LOG.e("Car is not connected!", e);
-        }
-    }
-
-    /**
-     * Clean ups
-     */
-    public void stop() {
-        mUiHandler.removeCallbacksAndMessages(null);
-        mRingtone.stop();
-    }
-
-    public int getVolumeGroupId() {
-        return mVolumeGroupId;
-    }
-
-    /**
-     * Gets the latest progress.
-     */
-    public void updateProgress() {
-        setProgress(getSeekbarValue());
-    }
-
-    private void playAudioFeedback() {
-        mUiHandler.removeCallbacksAndMessages(null);
-        mRingtone.play();
-        mUiHandler.postDelayed(() -> {
-            if (mRingtone.isPlaying()) {
-                mRingtone.stop();
-            }
-        }, AUDIO_FEEDBACK_DURATION_MS);
-    }
-
-    // TODO: bundle car-specific audio sample assets in res/raw by usage
-    private Uri getRingtoneUri(@AudioAttributes.AttributeUsage int usage) {
-        switch (usage) {
-            case AudioAttributes.USAGE_NOTIFICATION:
-                return Settings.System.DEFAULT_NOTIFICATION_URI;
-            case AudioAttributes.USAGE_ALARM:
-                return Settings.System.DEFAULT_ALARM_ALERT_URI;
-            default:
-                return Settings.System.DEFAULT_RINGTONE_URI;
-        }
-    }
-
-    private int getSeekbarValue() {
-        try {
-            return mCarAudioManager.getGroupVolume(mVolumeGroupId);
-        } catch (CarNotConnectedException e) {
-            LOG.e("Car is not connected!", e);
-        }
-        return 0;
-    }
-
-    private int getMaxSeekbarValue() {
-        try {
-            return mCarAudioManager.getGroupMaxVolume(mVolumeGroupId);
-        } catch (CarNotConnectedException e) {
-            LOG.e("Car is not connected!", e);
-        }
-        return 0;
-    }
-}
diff --git a/src/com/android/car/settings/sound/VolumeSettingsPreferenceController.java b/src/com/android/car/settings/sound/VolumeSettingsPreferenceController.java
new file mode 100644
index 0000000..fae748e
--- /dev/null
+++ b/src/com/android/car/settings/sound/VolumeSettingsPreferenceController.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2018 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.car.settings.sound;
+
+import static com.android.car.settings.sound.VolumeItemParser.VolumeItem;
+
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.media.CarAudioManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.ServiceConnection;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.util.SparseArray;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.apps.common.util.Themes;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.SeekBarPreference;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Business logic which parses car volume items into groups, creates a seek bar preference for each
+ * group, and interfaces with the ringtone manager and audio manager.
+ *
+ * @see VolumeSettingsRingtoneManager
+ * @see android.car.media.CarAudioManager
+ */
+public class VolumeSettingsPreferenceController extends PreferenceController<PreferenceGroup> {
+    private static final Logger LOG = new Logger(VolumeSettingsPreferenceController.class);
+    private static final String VOLUME_GROUP_KEY = "volume_group_key";
+    private static final String VOLUME_USAGE_KEY = "volume_usage_key";
+
+    private final SparseArray<VolumeItem> mVolumeItems;
+    private final List<SeekBarPreference> mVolumePreferences = new ArrayList<>();
+    private final VolumeSettingsRingtoneManager mRingtoneManager;
+
+    private final ServiceConnection mServiceConnection = new ServiceConnection() {
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            try {
+                mCarAudioManager = (CarAudioManager) mCar.getCarManager(Car.AUDIO_SERVICE);
+                int volumeGroupCount = mCarAudioManager.getVolumeGroupCount();
+                cleanUpVolumePreferences();
+                // Populates volume slider items from volume groups to UI.
+                for (int groupId = 0; groupId < volumeGroupCount; groupId++) {
+                    VolumeItem volumeItem = getVolumeItemForUsages(
+                            mCarAudioManager.getUsagesForVolumeGroupId(groupId));
+                    SeekBarPreference volumePreference = createVolumeSeekBarPreference(
+                            groupId, volumeItem.getUsage(), volumeItem.getIcon(),
+                            volumeItem.getTitle());
+                    mVolumePreferences.add(volumePreference);
+                }
+
+                refreshUi();
+            } catch (CarNotConnectedException e) {
+                LOG.e("Car is not connected!", e);
+            }
+        }
+
+        /** Cleanup audio related fields when car is disconnected. */
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+            cleanupAudioManager();
+        }
+    };
+
+    private Car mCar;
+    private CarAudioManager mCarAudioManager;
+
+    public VolumeSettingsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCar = Car.createCar(getContext(), mServiceConnection);
+        mVolumeItems = VolumeItemParser.loadAudioUsageItems(context, carVolumeItemsXml());
+        mRingtoneManager = new VolumeSettingsRingtoneManager(getContext());
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /** Connect to car on create. */
+    @Override
+    protected void onCreateInternal() {
+        mCar.connect();
+    }
+
+    /** Disconnect from car on destroy. */
+    @Override
+    protected void onDestroyInternal() {
+        mCar.disconnect();
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        for (SeekBarPreference preference : mVolumePreferences) {
+            preferenceGroup.addPreference(preference);
+        }
+    }
+
+    /**
+     * The resource which lists the car volume resources associated with the various usage enums.
+     */
+    @XmlRes
+    @VisibleForTesting
+    int carVolumeItemsXml() {
+        return R.xml.car_volume_items;
+    }
+
+    private SeekBarPreference createVolumeSeekBarPreference(
+            int volumeGroupId, int usage, @DrawableRes int iconResId,
+            @StringRes int titleId) {
+        SeekBarPreference preference = new SeekBarPreference(getContext());
+        preference.setTitle(getContext().getString(titleId));
+        preference.setIcon(getContext().getDrawable(iconResId));
+        preference.getIcon().setTintList(
+                Themes.getAttrColorStateList(getContext(), R.attr.iconColor));
+        try {
+            preference.setValue(mCarAudioManager.getGroupVolume(volumeGroupId));
+            preference.setMin(mCarAudioManager.getGroupMinVolume(volumeGroupId));
+            preference.setMax(mCarAudioManager.getGroupMaxVolume(volumeGroupId));
+        } catch (CarNotConnectedException e) {
+            LOG.e("Car is not connected!", e);
+        }
+        preference.setContinuousUpdate(true);
+        preference.setShowSeekBarValue(false);
+        Bundle bundle = preference.getExtras();
+        bundle.putInt(VOLUME_GROUP_KEY, volumeGroupId);
+        bundle.putInt(VOLUME_USAGE_KEY, usage);
+        preference.setOnPreferenceChangeListener((pref, newValue) -> {
+            int prefGroup = pref.getExtras().getInt(VOLUME_GROUP_KEY);
+            int prefUsage = pref.getExtras().getInt(VOLUME_USAGE_KEY);
+            int newVolume = (Integer) newValue;
+            setGroupVolume(prefGroup, newVolume);
+            mRingtoneManager.playAudioFeedback(prefGroup, prefUsage);
+            return true;
+        });
+        return preference;
+    }
+
+    private void setGroupVolume(int volumeGroupId, int newVolume) {
+        try {
+            mCarAudioManager.setGroupVolume(volumeGroupId, newVolume, /* flags= */ 0);
+        } catch (CarNotConnectedException e) {
+            LOG.w("Ignoring volume change event because the car isn't connected", e);
+        }
+    }
+
+    private void cleanupAudioManager() {
+        cleanUpVolumePreferences();
+        mCarAudioManager = null;
+    }
+
+    private void cleanUpVolumePreferences() {
+        mRingtoneManager.stopCurrentRingtone();
+        mVolumePreferences.clear();
+    }
+
+    private VolumeItem getVolumeItemForUsages(int[] usages) {
+        int rank = Integer.MAX_VALUE;
+        VolumeItem result = null;
+        for (int usage : usages) {
+            VolumeItem volumeItem = mVolumeItems.get(usage);
+            if (volumeItem.getRank() < rank) {
+                rank = volumeItem.getRank();
+                result = volumeItem;
+            }
+        }
+        return result;
+    }
+}
diff --git a/src/com/android/car/settings/sound/VolumeSettingsRingtoneManager.java b/src/com/android/car/settings/sound/VolumeSettingsRingtoneManager.java
new file mode 100644
index 0000000..51f8bd8
--- /dev/null
+++ b/src/com/android/car/settings/sound/VolumeSettingsRingtoneManager.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2018 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.car.settings.sound;
+
+import android.content.Context;
+import android.media.AudioAttributes;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
+
+import androidx.annotation.Nullable;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/** Manges the audio played by the {@link VolumeSettingsPreferenceController}. */
+public class VolumeSettingsRingtoneManager {
+
+    private static final int AUDIO_FEEDBACK_DURATION_MS = 1000;
+
+    private final Context mContext;
+    private final Handler mUiHandler;
+    private final Map<Integer, Ringtone> mGroupToRingtoneMap = new HashMap<>();
+
+    @Nullable
+    private Ringtone mCurrentRingtone;
+
+    public VolumeSettingsRingtoneManager(Context context) {
+        mContext = context;
+        mUiHandler = new Handler(Looper.getMainLooper());
+    }
+
+    /**
+     * Play the audio defined by the current group and usage. Stop the current ringtone if it is a
+     * different ringtone than what is currently playing.
+     */
+    public void playAudioFeedback(int group, int usage) {
+        Ringtone nextRingtone = lazyLoadRingtone(group, usage);
+        if (mCurrentRingtone != null && mCurrentRingtone != nextRingtone
+                && mCurrentRingtone.isPlaying()) {
+            mCurrentRingtone.stop();
+        }
+
+        mUiHandler.removeCallbacksAndMessages(null);
+        mCurrentRingtone = nextRingtone;
+        mCurrentRingtone.play();
+        mUiHandler.postDelayed(() -> {
+            if (mCurrentRingtone.isPlaying()) {
+                mCurrentRingtone.stop();
+                mCurrentRingtone = null;
+            }
+        }, AUDIO_FEEDBACK_DURATION_MS);
+    }
+
+    /** Stop playing the current ringtone. */
+    public void stopCurrentRingtone() {
+        if (mCurrentRingtone != null) {
+            mCurrentRingtone.stop();
+        }
+    }
+
+    /** If we have already seen this ringtone, use it. Otherwise load when requested. */
+    private Ringtone lazyLoadRingtone(int group, int usage) {
+        if (!mGroupToRingtoneMap.containsKey(group)) {
+            Ringtone ringtone = RingtoneManager.getRingtone(mContext, getRingtoneUri(usage));
+            ringtone.setAudioAttributes(new AudioAttributes.Builder().setUsage(usage).build());
+            mGroupToRingtoneMap.put(group, ringtone);
+        }
+        return mGroupToRingtoneMap.get(group);
+    }
+
+    // TODO: bundle car-specific audio sample assets in res/raw by usage
+    private Uri getRingtoneUri(@AudioAttributes.AttributeUsage int usage) {
+        switch (usage) {
+            case AudioAttributes.USAGE_NOTIFICATION:
+                return Settings.System.DEFAULT_NOTIFICATION_URI;
+            case AudioAttributes.USAGE_ALARM:
+                return Settings.System.DEFAULT_ALARM_ALERT_URI;
+            default:
+                return Settings.System.DEFAULT_RINGTONE_URI;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragment.java b/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragment.java
new file mode 100644
index 0000000..5e29aa1
--- /dev/null
+++ b/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragment.java
@@ -0,0 +1,398 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.app.ActivityManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageDataObserver;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.loader.app.LoaderManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.StorageStatsSource;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Fragment to display the applications storage information. Also provide buttons to clear the
+ * applications cache data and user data.
+ */
+public class AppStorageSettingsDetailsFragment extends SettingsFragment implements
+        AppsStorageStatsManager.Callback {
+    private static final Logger LOG = new Logger(AppStorageSettingsDetailsFragment.class);
+
+    @VisibleForTesting
+    static final String CONFIRM_CLEAR_STORAGE_DIALOG_TAG =
+            "com.android.car.settings.storage.ConfirmClearStorageDialog";
+
+    @VisibleForTesting
+    static final String CONFIRM_CANNOT_CLEAR_STORAGE_DIALOG_TAG =
+            "com.android.car.settings.storage.ConfirmCannotClearStorageDialog";
+
+    public static final String EXTRA_PACKAGE_NAME = "extra_package_name";
+    // Result code identifiers
+    public static final int REQUEST_MANAGE_SPACE = 2;
+
+    // Internal constants used in Handler
+    private static final int OP_SUCCESSFUL = 1;
+    private static final int OP_FAILED = 2;
+
+    // Constant used in handler to determine when the user data is cleared.
+    private static final int MSG_CLEAR_USER_DATA = 1;
+    // Constant used in handler to determine when the cache is cleared.
+    private static final int MSG_CLEAR_CACHE = 2;
+
+    // Keys to save the instance values.
+    private static final String KEY_CACHE_CLEARED = "cache_cleared";
+    private static final String KEY_DATA_CLEARED = "data_cleared";
+
+    // Package information
+    protected PackageManager mPackageManager;
+    private String mPackageName;
+
+    // Application state info
+    private ApplicationsState.AppEntry mAppEntry;
+    private ApplicationsState mAppState;
+    private ApplicationInfo mInfo;
+    private AppsStorageStatsManager mAppsStorageStatsManager;
+
+    // User info
+    private int mUserId;
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    //  An observer callback to get notified when the cache file deletion is complete.
+    private ClearCacheObserver mClearCacheObserver;
+    //  An observer callback to get notified when the user data deletion is complete.
+    private ClearUserDataObserver mClearDataObserver;
+
+    // The restriction enforced by admin.
+    private RestrictedLockUtils.EnforcedAdmin mAppsControlDisallowedAdmin;
+    private boolean mAppsControlDisallowedBySystem;
+
+    // Clear user data and cache buttons and state.
+    private Button mClearStorageButton;
+    private Button mClearCacheButton;
+    private boolean mCanClearData = true;
+    private boolean mCacheCleared;
+    private boolean mDataCleared;
+
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmClearStorageDialog =
+            arguments -> initiateClearUserData();
+
+
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmCannotClearStorageDialog =
+            arguments -> mClearStorageButton.setEnabled(false);
+
+    /** Creates an instance of this fragment, passing packageName as an argument. */
+    public static AppStorageSettingsDetailsFragment getInstance(String packageName) {
+        AppStorageSettingsDetailsFragment applicationDetailFragment =
+                new AppStorageSettingsDetailsFragment();
+        Bundle bundle = new Bundle();
+        bundle.putString(EXTRA_PACKAGE_NAME, packageName);
+        applicationDetailFragment.setArguments(bundle);
+        return applicationDetailFragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.app_storage_settings_details_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mUserId = mCarUserManagerHelper.getCurrentProcessUserId();
+        mPackageName = getArguments().getString(EXTRA_PACKAGE_NAME);
+        mAppState = ApplicationsState.getInstance(requireActivity().getApplication());
+        mAppEntry = mAppState.getEntry(mPackageName, mUserId);
+        StorageStatsSource storageStatsSource = new StorageStatsSource(context);
+        StorageStatsSource.AppStorageStats stats = null;
+        mPackageManager = context.getPackageManager();
+        try {
+            stats = storageStatsSource.getStatsForPackage(/* volumeUuid= */ null, mPackageName,
+                    UserHandle.of(mUserId));
+        } catch (Exception e) {
+            // This may happen if the package was removed during our calculation.
+            LOG.w("App unexpectedly not found", e);
+        }
+        mAppsStorageStatsManager = new AppsStorageStatsManager(context);
+        mAppsStorageStatsManager.registerListener(this);
+        use(StorageApplicationPreferenceController.class,
+                R.string.pk_storage_application_details)
+                .setAppEntry(mAppEntry)
+                .setAppState(mAppState);
+
+        List<StorageSizeBasePreferenceController> preferenceControllers = Arrays.asList(
+                use(StorageApplicationSizePreferenceController.class,
+                        R.string.pk_storage_application_size),
+                use(StorageApplicationTotalSizePreferenceController.class,
+                        R.string.pk_storage_application_total_size),
+                use(StorageApplicationUserDataPreferenceController.class,
+                        R.string.pk_storage_application_data_size),
+                use(StorageApplicationCacheSizePreferenceController.class,
+                        R.string.pk_storage_application_cache_size)
+        );
+
+        for (StorageSizeBasePreferenceController pc : preferenceControllers) {
+            pc.setAppsStorageStatsManager(mAppsStorageStatsManager);
+            pc.setAppStorageStats(stats);
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putBoolean(KEY_CACHE_CLEARED, mCacheCleared);
+        outState.putBoolean(KEY_DATA_CLEARED, mDataCleared);
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (savedInstanceState != null) {
+            mCacheCleared = savedInstanceState.getBoolean(KEY_CACHE_CLEARED, false);
+            mDataCleared = savedInstanceState.getBoolean(KEY_DATA_CLEARED, false);
+            mCacheCleared = mCacheCleared || mDataCleared;
+        }
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) findDialogByTag(CONFIRM_CLEAR_STORAGE_DIALOG_TAG),
+                mConfirmClearStorageDialog, /* rejectListener= */ null);
+        ConfirmationDialogFragment.resetListeners(
+                (ConfirmationDialogFragment) findDialogByTag(
+                        CONFIRM_CANNOT_CLEAR_STORAGE_DIALOG_TAG),
+                mConfirmCannotClearStorageDialog, /* rejectListener= */ null);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        mClearStorageButton = requireActivity().findViewById(R.id.action_button1);
+        mClearStorageButton.setVisibility(View.VISIBLE);
+        mClearStorageButton.setEnabled(false);
+        mClearStorageButton.setText(R.string.storage_clear_user_data_text);
+
+        mClearCacheButton = requireActivity().findViewById(R.id.action_button2);
+        mClearCacheButton.setVisibility(View.VISIBLE);
+        mClearCacheButton.setEnabled(false);
+        mClearCacheButton.setText(R.string.storage_clear_cache_btn_text);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+                getActivity(), UserManager.DISALLOW_APPS_CONTROL, mUserId);
+        mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
+                getActivity(), UserManager.DISALLOW_APPS_CONTROL, mUserId);
+        updateSize();
+    }
+
+    @Override
+    public void onDataLoaded(StorageStatsSource.AppStorageStats data, boolean cacheCleared,
+            boolean dataCleared) {
+        if (data == null) {
+            mClearStorageButton.setEnabled(false);
+            mClearCacheButton.setEnabled(false);
+        } else {
+            long cacheSize = data.getCacheBytes();
+            long dataSize = data.getDataBytes() - cacheSize;
+
+            if (dataSize <= 0 || !mCanClearData || mDataCleared) {
+                mClearStorageButton.setEnabled(false);
+            } else {
+                mClearStorageButton.setEnabled(true);
+                mClearStorageButton.setOnClickListener(v -> handleClearDataClick());
+            }
+            if (cacheSize <= 0 || mCacheCleared) {
+                mClearCacheButton.setEnabled(false);
+            } else {
+                mClearCacheButton.setEnabled(true);
+                mClearCacheButton.setOnClickListener(v -> handleClearCacheClick());
+            }
+        }
+        if (mAppsControlDisallowedBySystem) {
+            mClearStorageButton.setEnabled(false);
+            mClearCacheButton.setEnabled(false);
+        }
+    }
+
+    private void handleClearCacheClick() {
+        if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
+            RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
+                    getActivity(), mAppsControlDisallowedAdmin);
+            return;
+        }
+        // Lazy initialization of observer.
+        if (mClearCacheObserver == null) {
+            mClearCacheObserver = new ClearCacheObserver();
+        }
+        mPackageManager.deleteApplicationCacheFiles(mPackageName, mClearCacheObserver);
+    }
+
+    private void handleClearDataClick() {
+        if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
+            RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
+                    getActivity(), mAppsControlDisallowedAdmin);
+        } else if (mAppEntry.info.manageSpaceActivityName != null) {
+            Intent intent = new Intent(Intent.ACTION_DEFAULT);
+            intent.setClassName(mAppEntry.info.packageName,
+                    mAppEntry.info.manageSpaceActivityName);
+            startActivityForResult(intent, REQUEST_MANAGE_SPACE);
+        } else {
+            showClearDataDialog();
+        }
+    }
+
+    /*
+     * Private method to initiate clearing user data when the user clicks the clear data
+     * button for a system package
+     */
+    private void initiateClearUserData() {
+        mClearStorageButton.setEnabled(false);
+        // Invoke uninstall or clear user data based on sysPackage
+        String packageName = mAppEntry.info.packageName;
+        LOG.i("Clearing user data for package : " + packageName);
+        if (mClearDataObserver == null) {
+            mClearDataObserver = new ClearUserDataObserver();
+        }
+        ActivityManager am = (ActivityManager)
+                getActivity().getSystemService(Context.ACTIVITY_SERVICE);
+        boolean res = am.clearApplicationUserData(packageName, mClearDataObserver);
+        if (!res) {
+            // Clearing data failed for some obscure reason. Just log error for now
+            LOG.i("Couldn't clear application user data for package:" + packageName);
+            showCannotClearDataDialog();
+        }
+    }
+
+    /*
+     * Private method to handle clear message notification from observer when
+     * the async operation from PackageManager is complete
+     */
+    private void processClearMsg(Message msg) {
+        int result = msg.arg1;
+        String packageName = mAppEntry.info.packageName;
+        if (result == OP_SUCCESSFUL) {
+            LOG.i("Cleared user data for package : " + packageName);
+            updateSize();
+        } else {
+            mClearStorageButton.setEnabled(true);
+        }
+    }
+
+    private void updateSize() {
+        PackageManager packageManager = getActivity().getPackageManager();
+        try {
+            mInfo = packageManager.getApplicationInfo(mPackageName, 0);
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.e("Could not find package", e);
+        }
+        if (mInfo == null) {
+            return;
+        }
+        LoaderManager loaderManager = LoaderManager.getInstance(this);
+        mAppsStorageStatsManager.startLoading(loaderManager, mInfo, mUserId, mCacheCleared,
+                mDataCleared);
+    }
+
+    private void showClearDataDialog() {
+        ConfirmationDialogFragment confirmClearStorageDialog =
+                new ConfirmationDialogFragment.Builder(getContext())
+                        .setTitle(R.string.storage_clear_user_data_text)
+                        .setMessage(getString(R.string.storage_clear_data_dlg_text))
+                        .setPositiveButton(R.string.okay, mConfirmClearStorageDialog)
+                        .setNegativeButton(android.R.string.cancel, /* rejectListener= */ null)
+                        .build();
+        showDialog(confirmClearStorageDialog, CONFIRM_CLEAR_STORAGE_DIALOG_TAG);
+    }
+
+    private void showCannotClearDataDialog() {
+        ConfirmationDialogFragment dialogFragment =
+                new ConfirmationDialogFragment.Builder(getContext())
+                        .setTitle(R.string.storage_clear_data_dlg_title)
+                        .setMessage(getString(R.string.storage_clear_failed_dlg_text))
+                        .setPositiveButton(R.string.okay, mConfirmCannotClearStorageDialog)
+                        .build();
+        showDialog(dialogFragment, CONFIRM_CANNOT_CLEAR_STORAGE_DIALOG_TAG);
+    }
+
+    private final Handler mHandler = new Handler() {
+        public void handleMessage(Message msg) {
+            if (getView() == null) {
+                return;
+            }
+            switch (msg.what) {
+                case MSG_CLEAR_USER_DATA:
+                    mDataCleared = true;
+                    mCacheCleared = true;
+                    processClearMsg(msg);
+                    break;
+                case MSG_CLEAR_CACHE:
+                    mCacheCleared = true;
+                    // Refresh size info
+                    updateSize();
+                    break;
+            }
+        }
+    };
+
+    class ClearCacheObserver extends IPackageDataObserver.Stub {
+        public void onRemoveCompleted(final String packageName, final boolean succeeded) {
+            Message msg = mHandler.obtainMessage(MSG_CLEAR_CACHE);
+            msg.arg1 = succeeded ? OP_SUCCESSFUL : OP_FAILED;
+            mHandler.sendMessage(msg);
+        }
+    }
+
+    class ClearUserDataObserver extends IPackageDataObserver.Stub {
+        public void onRemoveCompleted(final String packageName, final boolean succeeded) {
+            Message msg = mHandler.obtainMessage(MSG_CLEAR_USER_DATA);
+            msg.arg1 = succeeded ? OP_SUCCESSFUL : OP_FAILED;
+            mHandler.sendMessage(msg);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/storage/AppsStorageStatsManager.java b/src/com/android/car/settings/storage/AppsStorageStatsManager.java
new file mode 100644
index 0000000..8b78e4e
--- /dev/null
+++ b/src/com/android/car/settings/storage/AppsStorageStatsManager.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+
+import com.android.settingslib.applications.StorageStatsSource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class to manage the callbacks needed to calculate storage stats for an application.
+ */
+public class AppsStorageStatsManager {
+
+    /**
+     * Callback that is called once the AppsStorageStats is loaded.
+     */
+    public interface Callback {
+        /**
+         * Called when the data is successfully loaded from {@link AppsStorageStatsResult}. The
+         * result can be {@link null} if the package is removed during loading. Also notifies if
+         * this callback was initiated when cache or data is cleared or not.
+         */
+        void onDataLoaded(StorageStatsSource.AppStorageStats data, boolean cacheCleared,
+                boolean dataCleared);
+    }
+
+    private final Context mContext;
+    private ApplicationInfo mInfo;
+    private int mUserId;
+    private boolean mCacheCleared;
+    private boolean mDataCleared;
+    private List<Callback> mAppsStorageStatsListeners = new ArrayList<>();
+
+    AppsStorageStatsManager(Context context) {
+        mContext = context;
+    }
+
+    /**
+     * Registers a listener that will be notified once the data is loaded.
+     */
+    public void registerListener(Callback appsStorageStatsListener) {
+        if (!mAppsStorageStatsListeners.contains(appsStorageStatsListener)) {
+            mAppsStorageStatsListeners.add(appsStorageStatsListener);
+        }
+    }
+
+    /**
+     * Unregisters the listener.
+     */
+    public void unregisterListener(Callback appsStorageStatsListener) {
+        mAppsStorageStatsListeners.remove(appsStorageStatsListener);
+    }
+
+    /**
+     * Start calculating the storage stats.
+     */
+    public void startLoading(LoaderManager loaderManager, ApplicationInfo info, int userId,
+            boolean cacheCleared, boolean dataCleared) {
+        mInfo = info;
+        mUserId = userId;
+        mCacheCleared = cacheCleared;
+        mDataCleared = dataCleared;
+        loaderManager.restartLoader(/* id= */ 1, Bundle.EMPTY, new AppsStorageStatsResult());
+    }
+
+    private void onAppsStorageStatsLoaded(StorageStatsSource.AppStorageStats data) {
+        for (Callback listener : mAppsStorageStatsListeners) {
+            listener.onDataLoaded(data, mCacheCleared, mDataCleared);
+        }
+    }
+
+    /**
+     * Callback to calculate applications storage stats.
+     */
+    private class AppsStorageStatsResult implements
+            LoaderManager.LoaderCallbacks<StorageStatsSource.AppStorageStats> {
+
+        @NonNull
+        @Override
+        public Loader<StorageStatsSource.AppStorageStats> onCreateLoader(int id,
+                @Nullable Bundle args) {
+            return new FetchPackageStorageAsyncLoader(
+                    mContext, new StorageStatsSource(mContext), mInfo, UserHandle.of(mUserId));
+        }
+
+        @Override
+        public void onLoadFinished(
+                @NonNull Loader<StorageStatsSource.AppStorageStats> loader,
+                StorageStatsSource.AppStorageStats data) {
+            onAppsStorageStatsLoaded(data);
+        }
+
+        @Override
+        public void onLoaderReset(
+                @NonNull Loader<StorageStatsSource.AppStorageStats> loader) {
+        }
+    }
+}
diff --git a/src/com/android/car/settings/storage/FetchPackageStorageAsyncLoader.java b/src/com/android/car/settings/storage/FetchPackageStorageAsyncLoader.java
new file mode 100644
index 0000000..1c942b3
--- /dev/null
+++ b/src/com/android/car/settings/storage/FetchPackageStorageAsyncLoader.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.os.UserHandle;
+import android.util.Log;
+
+import com.android.car.settingslib.loader.AsyncLoader;
+import com.android.internal.util.Preconditions;
+import com.android.settingslib.applications.StorageStatsSource;
+import com.android.settingslib.applications.StorageStatsSource.AppStorageStats;
+
+import java.io.IOException;
+
+/**
+ * Fetches the storage stats using the {@link StorageStatsSource} for a given package and user
+ * tuple.
+ *
+ * <p>Class is taken from {@link com.android.settings.applications.FetchPackageStorageAsyncLoader}
+ */
+public class FetchPackageStorageAsyncLoader extends AsyncLoader<AppStorageStats> {
+    private static final String TAG = "FetchPackageStorage";
+    private final StorageStatsSource mSource;
+    private final ApplicationInfo mInfo;
+    private final UserHandle mUser;
+
+    public FetchPackageStorageAsyncLoader(Context context, @NonNull StorageStatsSource source,
+            @NonNull ApplicationInfo info, @NonNull UserHandle user) {
+        super(context);
+        mSource = Preconditions.checkNotNull(source);
+        mInfo = info;
+        mUser = user;
+    }
+
+    @Override
+    public AppStorageStats loadInBackground() {
+        AppStorageStats result = null;
+        try {
+            result = mSource.getStatsForPackage(mInfo.volumeUuid, mInfo.packageName, mUser);
+        } catch (NameNotFoundException | IOException e) {
+            Log.w(TAG, "Package may have been removed during query, failing gracefully", e);
+        }
+        return result;
+    }
+}
diff --git a/src/com/android/car/settings/storage/FileSizeFormatter.java b/src/com/android/car/settings/storage/FileSizeFormatter.java
new file mode 100644
index 0000000..789c4a3
--- /dev/null
+++ b/src/com/android/car/settings/storage/FileSizeFormatter.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.text.BidiFormatter;
+import android.text.format.Formatter;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Utility class to aid in formatting file sizes always with the same unit. This is modified from
+ * android.text.format.Formatter to fit this purpose.
+ *
+ * <p>Class is taken from {@link com.android.settings.utils.FileSizeFormatter}
+ */
+public final class FileSizeFormatter {
+    public static final long KILOBYTE_IN_BYTES = 1000;
+    public static final long MEGABYTE_IN_BYTES = KILOBYTE_IN_BYTES * 1000;
+    public static final long GIGABYTE_IN_BYTES = MEGABYTE_IN_BYTES * 1000;
+
+    private FileSizeFormatter() {
+    }
+
+    /**
+     * Formats a content size to be in the form of bytes, kilobytes, megabytes, etc.
+     *
+     * <p>The prefixes are used in their standard meanings in the SI system, so kB = 1000
+     * bytes, MB = 1,000,000 bytes, etc.
+     *
+     * <p>If the context has a right-to-left locale, the returned string is wrapped in bidi
+     * formatting characters to make sure it's displayed correctly if inserted inside a
+     * right-to-left string. (This is useful in cases where the unit strings, like "MB", are
+     * left-to-right, but the locale is right-to-left.)
+     *
+     * @param context Context to use to load the localized units
+     * @param sizeBytes size value to be formatted, in bytes
+     * @param suffix String id for the unit suffix.
+     * @param mult Amount of bytes in the unit. * @return formatted string with the number
+     */
+    public static String formatFileSize(
+            @NonNull Context context, long sizeBytes, int suffix, long mult) {
+        Formatter.BytesResult res =
+                formatBytes(context.getResources(), sizeBytes, suffix, mult);
+        return BidiFormatter.getInstance()
+                .unicodeWrap(context.getString(getFileSizeSuffix(context), res.value, res.units));
+    }
+
+    private static int getFileSizeSuffix(Context context) {
+        Resources res = context.getResources();
+        return res.getIdentifier("fileSizeSuffix", "string", "android");
+    }
+
+    /**
+     * A simplified version of the SettingsLib file size formatter. The primary difference is that
+     * this version always assumes it is doing a "short file size" and allows for a suffix to be
+     * provided.
+     *
+     * @param res Resources to fetch strings with.
+     * @param sizeBytes File size in bytes to format.
+     * @param suffix String id for the unit suffix.
+     * @param mult Amount of bytes in the unit.
+     */
+    private static Formatter.BytesResult formatBytes(
+            Resources res, long sizeBytes, int suffix, long mult) {
+        boolean isNegative = (sizeBytes < 0);
+        float result = isNegative ? -sizeBytes : sizeBytes;
+        result = result / mult;
+        // Note we calculate the rounded long by ourselves, but still let String.format()
+        // compute the rounded value. String.format("%f", 0.1) might not return "0.1" due to
+        // floating point errors.
+        int roundFactor;
+        String roundFormat;
+        if (mult == 1) {
+            roundFactor = 1;
+            roundFormat = "%.0f";
+        } else if (result < 1) {
+            roundFactor = 100;
+            roundFormat = "%.2f";
+        } else if (result < 10) {
+            roundFactor = 10;
+            roundFormat = "%.1f";
+        } else { // 10 <= result < 100
+            roundFactor = 1;
+            roundFormat = "%.0f";
+        }
+
+        if (isNegative) {
+            result = -result;
+        }
+        String roundedString = String.format(roundFormat, result);
+
+        // Note this might overflow if abs(result) >= Long.MAX_VALUE / 100, but that's like 80PB so
+        // it's okay (for now)...
+        long roundedBytes = (((long) Math.round(result * roundFactor)) * mult / roundFactor);
+
+        String units = res.getString(suffix);
+
+        return new Formatter.BytesResult(roundedString, units, roundedBytes);
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageAppDetailPreference.java b/src/com/android/car/settings/storage/StorageAppDetailPreference.java
new file mode 100644
index 0000000..8621e11
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageAppDetailPreference.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.widget.TextView;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+
+/**
+ * A Preference to be used on the storage size application details page where the summary is
+ * displayed towards the right.
+ */
+public class StorageAppDetailPreference extends Preference {
+    private String mDetailText;
+
+    public StorageAppDetailPreference(Context context, AttributeSet attributeSet) {
+        super(context, attributeSet);
+        setWidgetLayoutResource(R.layout.summary_preference_widget);
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+        TextView textView = ((TextView) view.findViewById(R.id.widget_summary));
+        textView.setText(mDetailText);
+    }
+
+    @VisibleForTesting
+    StorageAppDetailPreference(Context context) {
+        super(context);
+    }
+
+    /**
+     * Sets the detail text.
+     */
+    public void setDetailText(String text) {
+        if (TextUtils.equals(mDetailText, text)) {
+            return;
+        }
+        mDetailText = text;
+        notifyChanged();
+    }
+
+    /**
+     * Gets the detail text.
+     */
+    public String getDetailText() {
+        return mDetailText;
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageApplicationCacheSizePreferenceController.java b/src/com/android/car/settings/storage/StorageApplicationCacheSizePreferenceController.java
new file mode 100644
index 0000000..dd7d5aa
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageApplicationCacheSizePreferenceController.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Class to calculate the cache size for a particular application.
+ */
+public class StorageApplicationCacheSizePreferenceController extends
+        StorageSizeBasePreferenceController {
+
+    public StorageApplicationCacheSizePreferenceController(Context context,
+            String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected long getSize() {
+        return (isCachedCleared() || isDataCleared()) ? 0 : getAppStorageStats().getCacheBytes();
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageApplicationListPreferenceController.java b/src/com/android/car/settings/storage/StorageApplicationListPreferenceController.java
new file mode 100644
index 0000000..e403998
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageApplicationListPreferenceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.applications.ApplicationListItemManager;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.ArrayList;
+
+/**
+ * Controller that adds all the applications provided to it into the UI as preference. Each
+ * application is a new preference.
+ */
+public class StorageApplicationListPreferenceController extends
+        PreferenceController<PreferenceGroup> implements
+        ApplicationListItemManager.AppListItemListener {
+
+    public StorageApplicationListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    public void onDataLoaded(ArrayList<ApplicationsState.AppEntry> apps) {
+        getPreference().removeAll();
+        for (ApplicationsState.AppEntry appEntry : apps) {
+            getPreference().addPreference(
+                    createPreference(appEntry.label, appEntry.sizeStr, appEntry.icon,
+                            appEntry.info.packageName));
+        }
+    }
+
+    protected Preference createPreference(String title, String summary, Drawable icon,
+            String key) {
+        Preference preference = new Preference(getContext());
+        preference.setTitle(title);
+        preference.setSummary(summary);
+        preference.setIcon(icon);
+        preference.setKey(key);
+        preference.setOnPreferenceClickListener(p -> {
+            getFragmentController().launchFragment(
+                    AppStorageSettingsDetailsFragment.getInstance(key));
+            return true;
+        });
+        return preference;
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageApplicationPreferenceController.java b/src/com/android/car/settings/storage/StorageApplicationPreferenceController.java
new file mode 100644
index 0000000..ed55031
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageApplicationPreferenceController.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.applications.ApplicationPreferenceController;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Preference showing the application icon, title and version on the storage size application
+ * details page.
+ */
+public class StorageApplicationPreferenceController extends ApplicationPreferenceController {
+
+    public StorageApplicationPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setTitle(getAppName());
+        preference.setIcon(getAppIcon());
+        preference.setSummary(getAppVersion());
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageApplicationSizePreferenceController.java b/src/com/android/car/settings/storage/StorageApplicationSizePreferenceController.java
new file mode 100644
index 0000000..27df177
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageApplicationSizePreferenceController.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Class to calculate the app size for a particular application.
+ */
+public class StorageApplicationSizePreferenceController extends
+        StorageSizeBasePreferenceController {
+
+    public StorageApplicationSizePreferenceController(Context context,
+            String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected long getSize() {
+        return getAppStorageStats().getCodeBytes();
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageApplicationTotalSizePreferenceController.java b/src/com/android/car/settings/storage/StorageApplicationTotalSizePreferenceController.java
new file mode 100644
index 0000000..4f42c6b
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageApplicationTotalSizePreferenceController.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Class to calculate the total size for a particular application.
+ */
+public class StorageApplicationTotalSizePreferenceController extends
+        StorageSizeBasePreferenceController {
+
+    public StorageApplicationTotalSizePreferenceController(Context context,
+            String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected long getSize() {
+        long appSize = getAppStorageStats().getCodeBytes();
+        long userData = isDataCleared() ? 0
+                : getAppStorageStats().getDataBytes() - getAppStorageStats().getCacheBytes();
+        long cacheData =
+                (isCachedCleared() || isDataCleared()) ? 0 : getAppStorageStats().getCacheBytes();
+        return appSize + userData + cacheData;
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageApplicationUserDataPreferenceController.java b/src/com/android/car/settings/storage/StorageApplicationUserDataPreferenceController.java
new file mode 100644
index 0000000..33d470f
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageApplicationUserDataPreferenceController.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Class to calculate the user data size for a particular application.
+ */
+public class StorageApplicationUserDataPreferenceController extends
+        StorageSizeBasePreferenceController {
+
+    public StorageApplicationUserDataPreferenceController(Context context,
+            String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected long getSize() {
+        return isDataCleared() ? 0
+                : getAppStorageStats().getDataBytes() - getAppStorageStats().getCacheBytes();
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageAsyncLoader.java b/src/com/android/car/settings/storage/StorageAsyncLoader.java
new file mode 100644
index 0000000..204695f
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageAsyncLoader.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static android.content.pm.ApplicationInfo.CATEGORY_AUDIO;
+import static android.content.pm.ApplicationInfo.CATEGORY_GAME;
+import static android.content.pm.ApplicationInfo.CATEGORY_IMAGE;
+import static android.content.pm.ApplicationInfo.CATEGORY_VIDEO;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+import android.util.ArraySet;
+import android.util.SparseArray;
+
+import com.android.car.settings.common.Logger;
+import com.android.car.settingslib.loader.AsyncLoader;
+import com.android.settingslib.applications.StorageStatsSource;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * {@link StorageAsyncLoader} is a Loader which loads categorized app information and external stats
+ * for all users.
+ *
+ * <p>Class is taken from {@link com.android.settings.deviceinfo.storage.StorageAsyncLoader}
+ */
+public class StorageAsyncLoader
+        extends AsyncLoader<SparseArray<StorageAsyncLoader.AppsStorageResult>> {
+    private static final Logger LOG = new Logger(StorageAsyncLoader.class);
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final StorageStatsSource mStatsManager;
+    private final PackageManager mPackageManager;
+
+    public StorageAsyncLoader(Context context, CarUserManagerHelper carUserManagerHelper,
+            StorageStatsSource source) {
+        super(context);
+        mCarUserManagerHelper = carUserManagerHelper;
+        mStatsManager = source;
+        mPackageManager = context.getPackageManager();
+    }
+
+    @Override
+    public SparseArray<AppsStorageResult> loadInBackground() {
+        ArraySet<String> seenPackages = new ArraySet<>();
+        SparseArray<AppsStorageResult> result = new SparseArray<>();
+        List<UserInfo> infos = mCarUserManagerHelper.getAllUsers();
+        for (int i = 0, userCount = infos.size(); i < userCount; i++) {
+            UserInfo info = infos.get(i);
+            result.put(info.id, getStorageResultForUser(info.id, seenPackages));
+        }
+        return result;
+    }
+
+    private AppsStorageResult getStorageResultForUser(int userId, ArraySet<String> seenPackages) {
+        LOG.d("Loading apps");
+        List<ApplicationInfo> applicationInfos =
+                mPackageManager.getInstalledApplicationsAsUser(/* getAllInstalledApplications= */ 0,
+                        userId);
+        UserHandle myUser = UserHandle.of(userId);
+        long gameAppSize = 0;
+        long musicAppsSize = 0;
+        long videoAppsSize = 0;
+        long photosAppsSize = 0;
+        long otherAppsSize = 0;
+        for (int i = 0, size = applicationInfos.size(); i < size; i++) {
+            ApplicationInfo app = applicationInfos.get(i);
+            StorageStatsSource.AppStorageStats stats;
+            try {
+                stats = mStatsManager.getStatsForPackage(/* volumeUuid= */ null, app.packageName,
+                        myUser);
+            } catch (NameNotFoundException | IOException e) {
+                // This may happen if the package was removed during our calculation.
+                LOG.w("App unexpectedly not found", e);
+                continue;
+            }
+
+            long dataSize = stats.getDataBytes();
+            long cacheQuota = mStatsManager.getCacheQuotaBytes(/* volumeUuid= */null, app.uid);
+            long cacheBytes = stats.getCacheBytes();
+            long blamedSize = dataSize;
+            // Technically, we could show overages as freeable on the storage settings screen.
+            // If the app is using more cache than its quota, we would accidentally subtract the
+            // overage from the system size (because it shows up as unused) during our attribution.
+            // Thus, we cap the attribution at the quota size.
+            if (cacheQuota < cacheBytes) {
+                blamedSize = blamedSize - cacheBytes + cacheQuota;
+            }
+
+            // This isn't quite right because it slams the first user by user id with the whole code
+            // size, but this ensures that we count all apps seen once.
+            if (!seenPackages.contains(app.packageName)) {
+                blamedSize += stats.getCodeBytes();
+                seenPackages.add(app.packageName);
+            }
+
+            switch (app.category) {
+                case CATEGORY_GAME:
+                    gameAppSize += blamedSize;
+                    break;
+                case CATEGORY_AUDIO:
+                    musicAppsSize += blamedSize;
+                    break;
+                case CATEGORY_VIDEO:
+                    videoAppsSize += blamedSize;
+                    break;
+                case CATEGORY_IMAGE:
+                    photosAppsSize += blamedSize;
+                    break;
+                default:
+                    // The deprecated game flag does not set the category.
+                    if ((app.flags & ApplicationInfo.FLAG_IS_GAME) != 0) {
+                        gameAppSize += blamedSize;
+                        break;
+                    }
+                    otherAppsSize += blamedSize;
+                    break;
+            }
+        }
+
+        AppsStorageResult result = new AppsStorageResult(gameAppSize, musicAppsSize, photosAppsSize,
+                videoAppsSize, otherAppsSize);
+
+        LOG.d("Loading external stats");
+        try {
+            result.mStorageStats = mStatsManager.getExternalStorageStats(null,
+                    UserHandle.of(userId));
+        } catch (IOException e) {
+            LOG.w("External stats not loaded" + e);
+        }
+        LOG.d("Obtaining result completed");
+        return result;
+    }
+
+    /**
+     * Class to hold the result for different categories for storage.
+     */
+    public static class AppsStorageResult {
+        private final long mGamesSize;
+        private final long mMusicAppsSize;
+        private final long mPhotosAppsSize;
+        private final long mVideoAppsSize;
+        private final long mOtherAppsSize;
+        private long mCacheSize;
+        private StorageStatsSource.ExternalStorageStats mStorageStats;
+
+        AppsStorageResult(long gamesSize, long musicAppsSize, long photosAppsSize,
+                long videoAppsSize, long otherAppsSize) {
+            mGamesSize = gamesSize;
+            mMusicAppsSize = musicAppsSize;
+            mPhotosAppsSize = photosAppsSize;
+            mVideoAppsSize = videoAppsSize;
+            mOtherAppsSize = otherAppsSize;
+        }
+
+        /**
+         * Returns the size in bytes used by the applications of category {@link CATEGORY_GAME}.
+         */
+        public long getGamesSize() {
+            return mGamesSize;
+        }
+
+        /**
+         * Returns the size in bytes used by the applications of category {@link CATEGORY_AUDIO}.
+         */
+        public long getMusicAppsSize() {
+            return mMusicAppsSize;
+        }
+
+        /**
+         * Returns the size in bytes used by the applications of category {@link CATEGORY_IMAGE}.
+         */
+        public long getPhotosAppsSize() {
+            return mPhotosAppsSize;
+        }
+
+        /**
+         * Returns the size in bytes used by the applications of category {@link CATEGORY_VIDEO}.
+         */
+        public long getVideoAppsSize() {
+            return mVideoAppsSize;
+        }
+
+        /**
+         * Returns the size in bytes used by the applications not assigned to one of the other
+         * categories.
+         */
+        public long getOtherAppsSize() {
+            return mOtherAppsSize;
+        }
+
+        /**
+         * Returns the cached size in bytes.
+         */
+        public long getCacheSize() {
+            return mCacheSize;
+        }
+
+        /**
+         * Sets the storage cached size.
+         */
+        public void setCacheSize(long cacheSize) {
+            this.mCacheSize = cacheSize;
+        }
+
+        /**
+         * Returns the size in bytes for external storage of mounted device.
+         */
+        public StorageStatsSource.ExternalStorageStats getExternalStats() {
+            return mStorageStats;
+        }
+
+        /**
+         * Sets the size in bytes for the external storage.
+         */
+        public void setExternalStats(
+                StorageStatsSource.ExternalStorageStats externalStats) {
+            this.mStorageStats = externalStats;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageFileCategoryPreferenceController.java b/src/com/android/car/settings/storage/StorageFileCategoryPreferenceController.java
new file mode 100644
index 0000000..16e0c3c
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageFileCategoryPreferenceController.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserHandle;
+import android.os.storage.StorageManager;
+import android.util.SparseArray;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.ProgressBarPreference;
+import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
+import com.android.settingslib.deviceinfo.StorageVolumeProvider;
+
+/**
+ * Controller which determines the storage for file category in the storage preference screen.
+ */
+public class StorageFileCategoryPreferenceController extends StorageUsageBasePreferenceController {
+
+    private StorageVolumeProvider mStorageVolumeProvider;
+
+    public StorageFileCategoryPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        StorageManager sm = context.getSystemService(StorageManager.class);
+        mStorageVolumeProvider = new StorageManagerVolumeProvider(sm);
+    }
+
+    @Override
+    protected long calculateCategoryUsage(SparseArray<StorageAsyncLoader.AppsStorageResult> result,
+            long usedSizeBytes) {
+        StorageAsyncLoader.AppsStorageResult data = result.get(
+                getCarUserManagerHelper().getCurrentProcessUserId());
+        return data.getExternalStats().totalBytes - data.getExternalStats().audioBytes
+                - data.getExternalStats().videoBytes - data.getExternalStats().imageBytes
+                - data.getExternalStats().appBytes;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(ProgressBarPreference preference) {
+        Intent intent = getFilesIntent();
+        intent.putExtra(Intent.EXTRA_USER_ID, getCarUserManagerHelper().getCurrentProcessUserId());
+        getContext().startActivityAsUser(intent,
+                new UserHandle(getCarUserManagerHelper().getCurrentProcessUserId()));
+        return true;
+    }
+
+    private Intent getFilesIntent() {
+        return mStorageVolumeProvider.findEmulatedForPrivate(getVolumeInfo()).buildBrowseIntent();
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageMediaCategoryDetailFragment.java b/src/com/android/car/settings/storage/StorageMediaCategoryDetailFragment.java
new file mode 100644
index 0000000..f7af597
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageMediaCategoryDetailFragment.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+
+import static com.android.car.settings.storage.StorageMediaCategoryPreferenceController.EXTRA_AUDIO_BYTES;
+import static com.android.car.settings.storage.StorageUtils.maybeInitializeVolume;
+
+import android.app.Application;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.AppListFragment;
+import com.android.car.settings.applications.ApplicationListItemManager;
+import com.android.settingslib.applications.ApplicationsState;
+
+/**
+ * Lists all installed applications with category audio and their summary.
+ */
+public class StorageMediaCategoryDetailFragment extends AppListFragment {
+
+    private ApplicationListItemManager mAppListItemManager;
+
+    /**
+     * Gets the instance of this class.
+     */
+    public static StorageMediaCategoryDetailFragment getInstance() {
+        StorageMediaCategoryDetailFragment storageMedia = new StorageMediaCategoryDetailFragment();
+        return storageMedia;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.storage_media_category_detail_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        Bundle bundle = getArguments();
+        long externalAudioBytes = bundle.getLong(EXTRA_AUDIO_BYTES);
+        StorageManager sm = context.getSystemService(StorageManager.class);
+        VolumeInfo volume = maybeInitializeVolume(sm, getArguments());
+        Application application = requireActivity().getApplication();
+        mAppListItemManager = new ApplicationListItemManager(volume, getLifecycle(),
+                ApplicationsState.getInstance(application));
+        StorageMediaCategoryDetailPreferenceController pc = use(
+                StorageMediaCategoryDetailPreferenceController.class,
+                R.string.pk_storage_music_audio_details);
+        mAppListItemManager.registerListener(pc);
+        pc.setExternalAudioBytes(externalAudioBytes);
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mAppListItemManager.startLoading(getAppFilter(), ApplicationsState.SIZE_COMPARATOR);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mAppListItemManager.onFragmentStart();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mAppListItemManager.onFragmentStop();
+    }
+
+    @Override
+    protected void onToggleShowSystemApps(boolean showSystem) {
+        mAppListItemManager.rebuildWithFilter(getAppFilter());
+    }
+
+    private ApplicationsState.AppFilter getAppFilter() {
+        ApplicationsState.AppFilter filter = ApplicationsState.FILTER_AUDIO;
+        if (!shouldShowSystemApps()) {
+            filter = new ApplicationsState.CompoundFilter(filter,
+                    ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER_AND_INSTANT);
+        }
+        return filter;
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceController.java b/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceController.java
new file mode 100644
index 0000000..7c81ff7
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceController.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.util.ArrayList;
+
+/**
+ * Controller extends the {@link StorageApplicationListPreferenceController} which adds all the
+ * application in the parent controller and in addition one more application specific for listing
+ * audio files.
+ */
+public class StorageMediaCategoryDetailPreferenceController extends
+        StorageApplicationListPreferenceController {
+
+    private long mExternalAudioBytes;
+
+    public StorageMediaCategoryDetailPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    public void onDataLoaded(ArrayList<ApplicationsState.AppEntry> apps) {
+        super.onDataLoaded(apps);
+        Preference preference = createPreference(
+                getContext().getString(R.string.storage_audio_files_title),
+                Long.toString(mExternalAudioBytes),
+                getContext().getDrawable(R.drawable.ic_headset),
+                getContext().getString(R.string.pk_storage_music_audio_files));
+        // remove the onClickListener which was set above with null key. This preference should
+        // do nothing on click.
+        preference.setOnPreferenceClickListener(null);
+        getPreference().addPreference(preference);
+    }
+
+    /**
+     * Sets the external audio bytes
+     */
+    public void setExternalAudioBytes(long externalAudioBytes) {
+        mExternalAudioBytes = externalAudioBytes;
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageMediaCategoryPreferenceController.java b/src/com/android/car/settings/storage/StorageMediaCategoryPreferenceController.java
new file mode 100644
index 0000000..1766be3
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageMediaCategoryPreferenceController.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Bundle;
+import android.util.SparseArray;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.ProgressBarPreference;
+
+/**
+ * Controller which determines the storage for media category in the storage preference screen.
+ */
+public class StorageMediaCategoryPreferenceController extends StorageUsageBasePreferenceController {
+
+    public static final String EXTRA_AUDIO_BYTES = "extra_audio_bytes";
+
+    private long mExternalAudioBytes;
+
+    public StorageMediaCategoryPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected long calculateCategoryUsage(SparseArray<StorageAsyncLoader.AppsStorageResult> result,
+            long usedSizeBytes) {
+        StorageAsyncLoader.AppsStorageResult data = result.get(
+                getCarUserManagerHelper().getCurrentProcessUserId());
+        mExternalAudioBytes = data.getExternalStats().audioBytes;
+        return data.getMusicAppsSize() + mExternalAudioBytes;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(ProgressBarPreference preference) {
+        Bundle bundle = new Bundle();
+        bundle.putLong(EXTRA_AUDIO_BYTES, mExternalAudioBytes);
+        StorageMediaCategoryDetailFragment storageMediaCategoryDetailFragment =
+                StorageMediaCategoryDetailFragment.getInstance();
+        storageMediaCategoryDetailFragment.setArguments(bundle);
+        getFragmentController().launchFragment(storageMediaCategoryDetailFragment);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageOtherCategoryDetailFragment.java b/src/com/android/car/settings/storage/StorageOtherCategoryDetailFragment.java
new file mode 100644
index 0000000..6aec796
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageOtherCategoryDetailFragment.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.android.car.settings.storage.StorageUtils.maybeInitializeVolume;
+
+import android.app.Application;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
+
+import com.android.car.settings.R;
+import com.android.car.settings.applications.AppListFragment;
+import com.android.car.settings.applications.ApplicationListItemManager;
+import com.android.settingslib.applications.ApplicationsState;
+
+/**
+ * Lists all installed applications with no category defined and their summary.
+ */
+public class StorageOtherCategoryDetailFragment extends AppListFragment {
+
+    private ApplicationListItemManager mAppListItemManager;
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.storage_other_category_detail_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        Application application = requireActivity().getApplication();
+        StorageManager sm = context.getSystemService(StorageManager.class);
+        VolumeInfo volume = maybeInitializeVolume(sm, getArguments());
+        mAppListItemManager = new ApplicationListItemManager(volume, getLifecycle(),
+                ApplicationsState.getInstance(application));
+        mAppListItemManager.registerListener(
+                use(StorageApplicationListPreferenceController.class,
+                        R.string.pk_storage_other_apps_details));
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mAppListItemManager.startLoading(getAppFilter(), ApplicationsState.SIZE_COMPARATOR);
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mAppListItemManager.onFragmentStart();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mAppListItemManager.onFragmentStop();
+    }
+
+    @Override
+    protected void onToggleShowSystemApps(boolean showSystem) {
+        mAppListItemManager.rebuildWithFilter(getAppFilter());
+    }
+
+    private ApplicationsState.AppFilter getAppFilter() {
+        ApplicationsState.AppFilter filter = ApplicationsState.FILTER_OTHER_APPS;
+        if (!shouldShowSystemApps()) {
+            filter = new ApplicationsState.CompoundFilter(filter,
+                    ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER_AND_INSTANT);
+        }
+        return filter;
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageOtherCategoryPreferenceController.java b/src/com/android/car/settings/storage/StorageOtherCategoryPreferenceController.java
new file mode 100644
index 0000000..09e8814
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageOtherCategoryPreferenceController.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.util.SparseArray;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controller which determines the storage for the applications not assigned to one of the other
+ * categories in the storage preference screen.
+ */
+public class StorageOtherCategoryPreferenceController extends StorageUsageBasePreferenceController {
+
+    public StorageOtherCategoryPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected long calculateCategoryUsage(SparseArray<StorageAsyncLoader.AppsStorageResult> result,
+            long usedSizeBytes) {
+        StorageAsyncLoader.AppsStorageResult data = result.get(
+                getCarUserManagerHelper().getCurrentProcessUserId());
+        return data.getOtherAppsSize();
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageSettingsFragment.java b/src/com/android/car/settings/storage/StorageSettingsFragment.java
new file mode 100644
index 0000000..efdc487
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageSettingsFragment.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.android.car.settings.storage.StorageUtils.maybeInitializeVolume;
+
+import android.annotation.XmlRes;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
+
+import androidx.loader.app.LoaderManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+import java.util.Arrays;
+import java.util.List;
+
+/** Fragment which shows the settings for storage. */
+public class StorageSettingsFragment extends SettingsFragment {
+
+    private StorageSettingsManager mStorageSettingsManager;
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.storage_settings_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        StorageManager sm = context.getSystemService(StorageManager.class);
+        VolumeInfo volume = maybeInitializeVolume(sm, getArguments());
+        mStorageSettingsManager = new StorageSettingsManager(getContext(), volume);
+        List<StorageUsageBasePreferenceController> usagePreferenceControllers =
+                Arrays.asList(
+                        use(StorageMediaCategoryPreferenceController.class,
+                                R.string.pk_storage_music_audio),
+                        use(StorageOtherCategoryPreferenceController.class,
+                                R.string.pk_storage_other_apps),
+                        use(StorageFileCategoryPreferenceController.class,
+                                R.string.pk_storage_files),
+                        use(StorageSystemCategoryPreferenceController.class,
+                                R.string.pk_storage_system));
+
+        for (StorageUsageBasePreferenceController pc : usagePreferenceControllers) {
+            mStorageSettingsManager.registerListener(pc);
+            pc.setVolumeInfo(volume);
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        LoaderManager loaderManager = LoaderManager.getInstance(this);
+        mStorageSettingsManager.startLoading(loaderManager);
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageSettingsManager.java b/src/com/android/car/settings/storage/StorageSettingsManager.java
new file mode 100644
index 0000000..d058a01
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageSettingsManager.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.usage.StorageStatsManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
+import android.util.SparseArray;
+
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+
+import com.android.settingslib.applications.StorageStatsSource;
+import com.android.settingslib.deviceinfo.PrivateStorageInfo;
+import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class to manage all the callbacks needed to calculate the total volume, storage used by each app
+ * category and notifying the listeners when the data is loaded.
+ */
+public class StorageSettingsManager {
+
+    /**
+     * Callback that is called once the volume of data is loaded for the mounted device.
+     */
+    public interface VolumeListener {
+        /**
+         * Called when the data is successfully loaded from {@link VolumeSizeCallback} and the
+         * total and used size for the mounted device is calculated from {@link AppsStorageResult}
+         */
+        void onDataLoaded(SparseArray<StorageAsyncLoader.AppsStorageResult> result,
+                long usedSizeBytes, long totalSizeBytes);
+    }
+
+    private static final int STORAGE_JOB_ID = 0;
+    private static final int VOLUME_SIZE_JOB_ID = 1;
+
+    private final Context mContext;
+    private final VolumeInfo mVolumeInfo;
+
+    private List<VolumeListener> mVolumeListeners = new ArrayList<>();
+    private PrivateStorageInfo mPrivateStorageInfo;
+    private SparseArray<StorageAsyncLoader.AppsStorageResult> mAppsStorageResultSparseArray;
+
+    StorageSettingsManager(Context context, VolumeInfo volume) {
+        mContext = context;
+        mVolumeInfo = volume;
+    }
+
+    /**
+     * Registers a listener that will be notified once the data is loaded.
+     */
+    public void registerListener(VolumeListener volumeListener) {
+        if (!mVolumeListeners.contains(volumeListener)) {
+            mVolumeListeners.add(volumeListener);
+        }
+    }
+
+    /**
+     * Unregisters the listener.
+     */
+    public void unregisterlistener(VolumeListener volumeListener) {
+        mVolumeListeners.remove(volumeListener);
+    }
+
+    /**
+     * Start calculating the storage and volume.
+     */
+    public void startLoading(LoaderManager loaderManager) {
+        loaderManager.restartLoader(STORAGE_JOB_ID, Bundle.EMPTY, new AppsStorageResult());
+        loaderManager.restartLoader(VOLUME_SIZE_JOB_ID, Bundle.EMPTY, new VolumeSizeCallback());
+    }
+
+    private void onReceivedSizes() {
+        if (mAppsStorageResultSparseArray != null && mPrivateStorageInfo != null) {
+            long privateUsedBytes = mPrivateStorageInfo.totalBytes - mPrivateStorageInfo.freeBytes;
+            for (VolumeListener listener : mVolumeListeners) {
+                listener.onDataLoaded(mAppsStorageResultSparseArray, privateUsedBytes,
+                        mPrivateStorageInfo.totalBytes);
+            }
+        }
+    }
+
+    /**
+     * Callback to get the storage volume information for the device that is mounted.
+     */
+    private class VolumeSizeCallback
+            implements LoaderManager.LoaderCallbacks<PrivateStorageInfo> {
+
+        @Override
+        public Loader<PrivateStorageInfo> onCreateLoader(int id, Bundle args) {
+            StorageManager sm = mContext.getSystemService(StorageManager.class);
+            StorageManagerVolumeProvider smvp = new StorageManagerVolumeProvider(sm);
+            StorageStatsManager stats = mContext.getSystemService(StorageStatsManager.class);
+            return new VolumeSizesLoader(mContext, smvp, stats, mVolumeInfo);
+        }
+
+        @Override
+        public void onLoadFinished(
+                Loader<PrivateStorageInfo> loader, PrivateStorageInfo privateStorageInfo) {
+            if (privateStorageInfo == null) {
+                return;
+            }
+            mPrivateStorageInfo = privateStorageInfo;
+            onReceivedSizes();
+        }
+
+        @Override
+        public void onLoaderReset(Loader<PrivateStorageInfo> loader) {
+        }
+    }
+
+    /**
+     * Callback to calculate how much space each category of applications is using.
+     */
+    private class AppsStorageResult implements
+            LoaderManager.LoaderCallbacks<SparseArray<StorageAsyncLoader.AppsStorageResult>> {
+
+        @NonNull
+        @Override
+        public Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> onCreateLoader(int id,
+                @Nullable Bundle args) {
+            return new StorageAsyncLoader(mContext, new CarUserManagerHelper(mContext),
+                    new StorageStatsSource(mContext));
+        }
+
+        @Override
+        public void onLoadFinished(
+                @NonNull Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> loader,
+                SparseArray<StorageAsyncLoader.AppsStorageResult> data) {
+            mAppsStorageResultSparseArray = data;
+            onReceivedSizes();
+        }
+
+        @Override
+        public void onLoaderReset(
+                @NonNull Loader<SparseArray<StorageAsyncLoader.AppsStorageResult>> loader) {
+        }
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageSizeBasePreferenceController.java b/src/com/android/car/settings/storage/StorageSizeBasePreferenceController.java
new file mode 100644
index 0000000..77ecbb4
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageSizeBasePreferenceController.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.text.format.Formatter;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.applications.StorageStatsSource;
+
+/**
+ * Controller which have the basic logic to determines the storage size details for a particular
+ * application.
+ */
+public abstract class StorageSizeBasePreferenceController extends
+        PreferenceController<StorageAppDetailPreference> implements
+        AppsStorageStatsManager.Callback {
+
+    private StorageStatsSource.AppStorageStats mAppStorageStats;
+    private AppsStorageStatsManager mAppsStorageStatsManager;
+    private Context mContext;
+    private boolean mDataCleared = false;
+    private boolean mCachedCleared = false;
+
+    public StorageSizeBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mContext = context;
+    }
+
+    @Override
+    protected Class<StorageAppDetailPreference> getPreferenceType() {
+        return StorageAppDetailPreference.class;
+    }
+
+    /**
+     * Calculates the storage size for a application.
+     *
+     * @return size value in bytes.
+     */
+    protected abstract long getSize();
+
+    @Override
+    protected void onCreateInternal() {
+        if (mAppsStorageStatsManager == null) {
+            return;
+        }
+        mAppsStorageStatsManager.registerListener(this);
+    }
+
+    /**
+     * Sets the {@link AppsStorageStatsManager} which will be used to register the controller to the
+     * Listener {@link AppsStorageStatsManager.Callback}.
+     */
+    public void setAppsStorageStatsManager(AppsStorageStatsManager appsStorageStatsManager) {
+        mAppsStorageStatsManager = appsStorageStatsManager;
+    }
+
+    @Override
+    protected void updateState(StorageAppDetailPreference preference) {
+        if (mAppStorageStats == null) {
+            return;
+        }
+        preference.setDetailText(getSizeStr(getSize()));
+    }
+
+    /**
+     * Sets the {@link StorageStatsSource.AppStorageStats} for a particular application.
+     */
+    public void setAppStorageStats(StorageStatsSource.AppStorageStats appStorageStats) {
+        mAppStorageStats = appStorageStats;
+    }
+
+    /**
+     * Gets the {@link StorageStatsSource.AppStorageStats} for a particular application.
+     */
+    public StorageStatsSource.AppStorageStats getAppStorageStats() {
+        return mAppStorageStats;
+    }
+
+    boolean isCachedCleared() {
+        return mCachedCleared;
+    }
+
+    boolean isDataCleared() {
+        return mDataCleared;
+    }
+
+    private String getSizeStr(long size) {
+        return Formatter.formatFileSize(mContext, size);
+    }
+
+    @Override
+    public void onDataLoaded(StorageStatsSource.AppStorageStats data, boolean cacheCleared,
+            boolean dataCleared) {
+        //  Sets if user have cleared the cache and should zero the cache bytes.
+        //  When the cache is cleared, the cache directories are recreated. These directories have
+        //  some size, but are empty. We zero this out to best match user expectations.
+        mCachedCleared = cacheCleared;
+
+        //  Sets if user have cleared data and should zero the data bytes.
+        //  When the data is cleared, the directory are recreated. Directories have some size,
+        //  but are empty. We zero this out to best match user expectations.
+        mDataCleared = dataCleared;
+        refreshUi();
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageSystemCategoryPreferenceController.java b/src/com/android/car/settings/storage/StorageSystemCategoryPreferenceController.java
new file mode 100644
index 0000000..2f0d23f
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageSystemCategoryPreferenceController.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.app.AlertDialog;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.TrafficStats;
+import android.os.Build;
+import android.util.SparseArray;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.ProgressBarPreference;
+
+/**
+ * Controller which determines the storage for system category in the storage preference screen.
+ */
+public class StorageSystemCategoryPreferenceController extends
+        StorageUsageBasePreferenceController {
+
+    public StorageSystemCategoryPreferenceController(Context context,
+            String preferenceKey, FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected long calculateCategoryUsage(
+            SparseArray<StorageAsyncLoader.AppsStorageResult> result, long usedSizeBytes) {
+        long attributedSize = 0;
+        for (int i = 0; i < result.size(); i++) {
+            StorageAsyncLoader.AppsStorageResult otherData = result.valueAt(i);
+
+            attributedSize += otherData.getGamesSize()
+                    + otherData.getMusicAppsSize()
+                    + otherData.getVideoAppsSize()
+                    + otherData.getPhotosAppsSize()
+                    + otherData.getOtherAppsSize();
+
+            attributedSize += otherData.getExternalStats().totalBytes
+                    - otherData.getExternalStats().appBytes;
+        }
+        return Math.max(TrafficStats.GB_IN_BYTES, usedSizeBytes - attributedSize);
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(ProgressBarPreference preference) {
+        AlertDialog alertDialog = new AlertDialog.Builder(getContext())
+                .setMessage(getContext().getString(R.string.storage_detail_dialog_system,
+                        Build.VERSION.RELEASE))
+                .setPositiveButton(android.R.string.ok, null)
+                .create();
+        alertDialog.show();
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageUsageBasePreferenceController.java b/src/com/android/car/settings/storage/StorageUsageBasePreferenceController.java
new file mode 100644
index 0000000..93fcb74
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageUsageBasePreferenceController.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.storage.VolumeInfo;
+import android.util.SparseArray;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.ProgressBarPreference;
+
+/**
+ * Controller which have the basic logic to determines the storage for different categories visible
+ * in the storage preference screen.
+ */
+public abstract class StorageUsageBasePreferenceController extends
+        PreferenceController<ProgressBarPreference> implements
+        StorageSettingsManager.VolumeListener {
+
+    private static final int PROGRESS_MAX = 100;
+
+    private VolumeInfo mVolumeInfo;
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    public StorageUsageBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController,
+            CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<ProgressBarPreference> getPreferenceType() {
+        return ProgressBarPreference.class;
+    }
+
+    /**
+     * Calculates the storage used by the category.
+     *
+     * @return usage value in bytes.
+     */
+    protected abstract long calculateCategoryUsage(
+            SparseArray<StorageAsyncLoader.AppsStorageResult> result, long usedSizeBytes);
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setSummary(R.string.memory_calculating_size);
+        getPreference().setMax(PROGRESS_MAX);
+    }
+
+    @Override
+    public void onDataLoaded(SparseArray<StorageAsyncLoader.AppsStorageResult> result,
+            long usedSizeBytes, long totalSizeBytes) {
+        setStorageSize(calculateCategoryUsage(result, usedSizeBytes), totalSizeBytes);
+    }
+
+    CarUserManagerHelper getCarUserManagerHelper() {
+        return mCarUserManagerHelper;
+    }
+
+    public VolumeInfo getVolumeInfo() {
+        return mVolumeInfo;
+    }
+
+    public void setVolumeInfo(VolumeInfo volumeInfo) {
+        mVolumeInfo = volumeInfo;
+    }
+
+    /**
+     * Sets the storage size for this preference that will be displayed as a summary. It will also
+     * update the progress bar accordingly.
+     */
+    private void setStorageSize(long size, long total) {
+        getPreference().setSummary(
+                FileSizeFormatter.formatFileSize(
+                        getContext(),
+                        size,
+                        getGigabyteSuffix(getContext().getResources()),
+                        FileSizeFormatter.GIGABYTE_IN_BYTES));
+        int progressPercent;
+        if (total == 0) {
+            progressPercent = 0;
+        } else {
+            progressPercent = (int) (size * PROGRESS_MAX / total);
+        }
+        getPreference().setProgress(progressPercent);
+    }
+
+    private static int getGigabyteSuffix(Resources res) {
+        return res.getIdentifier("gigabyteShort", "string", "android");
+    }
+}
diff --git a/src/com/android/car/settings/storage/StorageUtils.java b/src/com/android/car/settings/storage/StorageUtils.java
new file mode 100644
index 0000000..f393dbc
--- /dev/null
+++ b/src/com/android/car/settings/storage/StorageUtils.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2019 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.car.settings.storage;
+
+import android.annotation.Nullable;
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
+
+/** Utility functions for use in storage settings. */
+public class StorageUtils {
+
+    private StorageUtils() { }
+
+    /**
+     * Tries to initialize a volume with the given bundle. If it is a valid, private, and readable
+     * {@link VolumeInfo}, it is returned. If it is not valid, {@code null} is returned.
+     */
+    @Nullable
+    public static VolumeInfo maybeInitializeVolume(StorageManager sm, @Nullable Bundle bundle) {
+        String volumeId = VolumeInfo.ID_PRIVATE_INTERNAL;
+        if (bundle != null) {
+            volumeId = bundle.getString(VolumeInfo.EXTRA_VOLUME_ID,
+                    VolumeInfo.ID_PRIVATE_INTERNAL);
+        }
+
+        VolumeInfo volume = sm.findVolumeById(volumeId);
+        return isVolumeValid(volume) ? volume : null;
+    }
+
+    private static boolean isVolumeValid(VolumeInfo volume) {
+        return (volume != null) && (volume.getType() == VolumeInfo.TYPE_PRIVATE)
+                && volume.isMountedReadable();
+    }
+}
diff --git a/src/com/android/car/settings/storage/VolumeSizesLoader.java b/src/com/android/car/settings/storage/VolumeSizesLoader.java
new file mode 100644
index 0000000..f207cbc
--- /dev/null
+++ b/src/com/android/car/settings/storage/VolumeSizesLoader.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import android.app.usage.StorageStatsManager;
+import android.content.Context;
+import android.os.storage.VolumeInfo;
+
+import com.android.car.settingslib.loader.AsyncLoader;
+import com.android.settingslib.deviceinfo.PrivateStorageInfo;
+import com.android.settingslib.deviceinfo.StorageVolumeProvider;
+
+import java.io.IOException;
+
+/**
+ * Loads the storage volume information for the device mounted.
+ */
+public class VolumeSizesLoader extends AsyncLoader<PrivateStorageInfo> {
+    private final StorageVolumeProvider mVolumeProvider;
+    private final StorageStatsManager mStats;
+    private final VolumeInfo mVolume;
+
+    public VolumeSizesLoader(Context context, StorageVolumeProvider volumeProvider,
+            StorageStatsManager stats, VolumeInfo volume) {
+        super(context);
+        mVolumeProvider = volumeProvider;
+        mStats = stats;
+        mVolume = volume;
+    }
+
+    @Override
+    public PrivateStorageInfo loadInBackground() {
+        PrivateStorageInfo volumeSizes;
+        try {
+            volumeSizes = getVolumeSize();
+        } catch (IOException e) {
+            return null;
+        }
+        return volumeSizes;
+    }
+
+    private PrivateStorageInfo getVolumeSize() throws IOException {
+        long privateTotalBytes = mVolumeProvider.getTotalBytes(mStats, mVolume);
+        long privateFreeBytes = mVolumeProvider.getFreeBytes(mStats, mVolume);
+        return new PrivateStorageInfo(privateFreeBytes, privateTotalBytes);
+    }
+}
diff --git a/src/com/android/car/settings/suggestions/SettingsSuggestionsController.java b/src/com/android/car/settings/suggestions/SettingsSuggestionsController.java
deleted file mode 100644
index ad103f3..0000000
--- a/src/com/android/car/settings/suggestions/SettingsSuggestionsController.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.suggestions;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.app.PendingIntent;
-import android.content.ComponentName;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.service.settings.suggestions.Suggestion;
-
-import androidx.annotation.StringRes;
-import androidx.loader.app.LoaderManager;
-import androidx.loader.content.Loader;
-
-import com.android.car.list.TypedPagedListAdapter;
-import com.android.car.settings.R;
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.suggestions.SuggestionController;
-import com.android.settingslib.suggestions.SuggestionControllerMixin;
-import com.android.settingslib.suggestions.SuggestionLoader;
-import com.android.settingslib.utils.IconCache;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * Retrieves suggestions and prepares them for rendering.
- * Modeled after {@link SuggestionControllerMixin}, differs by implementing support library version
- * of LoaderManager and Loader. Does not implement use of LifeCycle.
- */
-public class SettingsSuggestionsController implements
-        SuggestionController.ServiceConnectionListener,
-        LoaderManager.LoaderCallbacks<List<Suggestion>> {
-    private static final Logger LOG = new Logger(SettingsSuggestionsController.class);
-    private static final ComponentName mComponentName = new ComponentName(
-            "com.android.settings.intelligence",
-            "com.android.settings.intelligence.suggestions.SuggestionService");
-    // These values are hard coded until we receive the OK to plumb them through
-    // SettingsIntelligence. This is ok as right now only SUW uses this framework.
-    @StringRes
-    private static final int PRIMARY_ACTION_ID = R.string.suggestion_primary_button;
-    @StringRes
-    private static final int SECONDARY_ACTION_ID = R.string.suggestion_secondary_button;
-
-    private final Context mContext;
-    private final LoaderManager mLoaderManager;
-    private final Listener mListener;
-    private final SuggestionController mSuggestionController;
-    private final IconCache mIconCache;
-
-    public SettingsSuggestionsController(
-            Context context,
-            LoaderManager loaderManager,
-            @NonNull Listener listener) {
-        mContext = context;
-        mLoaderManager = loaderManager;
-        mListener = listener;
-        mIconCache = new IconCache(context);
-        mSuggestionController = new SuggestionController(
-                mContext,
-                mComponentName,
-                /* listener= */ this);
-    }
-
-    @Override
-    public void onServiceConnected() {
-        LOG.v("onServiceConnected");
-        mLoaderManager.restartLoader(
-                SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS,
-                /* args= */ null,
-                /* callback= */ this);
-    }
-
-    @Override
-    public void onServiceDisconnected() {
-        LOG.v("onServiceDisconnected");
-        cleanupLoader();
-    }
-
-    @NonNull
-    @Override
-    public Loader<List<Suggestion>> onCreateLoader(int id, @Nullable Bundle args) {
-        LOG.v("onCreateLoader: " + id);
-        if (id == SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS) {
-            return new SettingsSuggestionsLoader(mContext, mSuggestionController);
-        }
-        throw new IllegalArgumentException("This loader id is not supported " + id);
-    }
-
-    @Override
-    public void onLoadFinished(
-            @NonNull Loader<List<Suggestion>> loader,
-            List<Suggestion> suggestionList) {
-        LOG.v("onLoadFinished");
-        if (suggestionList == null) {
-            return;
-        }
-        ArrayList<TypedPagedListAdapter.LineItem> items = new ArrayList<>();
-        for (final Suggestion suggestion : suggestionList) {
-            LOG.v("Suggestion ID: " + suggestion.getId());
-            Drawable itemIcon = mIconCache.getIcon(suggestion.getIcon());
-            SuggestionLineItem suggestionLineItem =
-                    new SuggestionLineItem(
-                            suggestion.getTitle(),
-                            suggestion.getSummary(),
-                            itemIcon,
-                            mContext.getString(PRIMARY_ACTION_ID),
-                            mContext.getString(SECONDARY_ACTION_ID),
-                            v -> {
-                                try {
-                                    suggestion.getPendingIntent().send();
-                                    launchSuggestion(suggestion);
-                                } catch (PendingIntent.CanceledException e) {
-                                    LOG.w("Failed to start suggestion " + suggestion.getTitle());
-                                }
-                            },
-                            adapterPosition -> {
-                                dismissSuggestion(suggestion);
-                                mListener.onSuggestionDismissed(adapterPosition);
-
-                            });
-            items.add(suggestionLineItem);
-        }
-        mListener.onSuggestionsLoaded(items);
-    }
-
-    @Override
-    public void onLoaderReset(@NonNull Loader<List<Suggestion>> loader) {
-        LOG.v("onLoaderReset");
-    }
-
-    /**
-     * Start the suggestions controller.
-     */
-    public void start() {
-        LOG.v("Start");
-        mSuggestionController.start();
-    }
-
-    /**
-     * Stop the suggestions controller.
-     */
-    public void stop() {
-        LOG.v("Stop");
-        mSuggestionController.stop();
-        cleanupLoader();
-
-    }
-
-    private void cleanupLoader() {
-        LOG.v("cleanupLoader");
-        mLoaderManager.destroyLoader(SuggestionLoader.LOADER_ID_SUGGESTIONS);
-    }
-
-    private void dismissSuggestion(Suggestion suggestion) {
-        LOG.v("dismissSuggestion");
-        mSuggestionController.dismissSuggestions(suggestion);
-    }
-
-    private void launchSuggestion(Suggestion suggestion) {
-        LOG.v("launchSuggestion");
-        mSuggestionController.launchSuggestion(suggestion);
-    }
-
-    /**
-     * Listener interface to notify of data state changes and actions.
-     */
-    public interface Listener {
-        /**
-         * Invoked when deferred setup items have been loaded.
-         *
-         * @param suggestions List of deferred setup suggestions.
-         */
-        void onSuggestionsLoaded(@NonNull ArrayList<TypedPagedListAdapter.LineItem> suggestions);
-
-        /***
-         * Invoked when a suggestion is dismissed.
-         *
-         * @param adapterPosition the position of the suggestion item in it's adapter.
-         */
-        void onSuggestionDismissed(int adapterPosition);
-    }
-}
diff --git a/src/com/android/car/settings/suggestions/SuggestionLineItem.java b/src/com/android/car/settings/suggestions/SuggestionLineItem.java
deleted file mode 100644
index 6ad9cce..0000000
--- a/src/com/android/car/settings/suggestions/SuggestionLineItem.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.suggestions;
-
-import android.graphics.drawable.Drawable;
-import android.view.View;
-
-import com.android.car.list.ActionIconButtonLineItem;
-
-/**
- * Represents suggestion list item.
- */
-public class SuggestionLineItem extends ActionIconButtonLineItem {
-
-    private final CharSequence mSummary;
-    private final View.OnClickListener mOnClickListener;
-    private final ActionListener mActionListener;
-
-    /**
-     * Creates a {@link SuggestionLineItem} with title, summary, icons, and click handlers.
-     */
-    public SuggestionLineItem(
-            CharSequence title,
-            CharSequence summary,
-            Drawable iconDrawable,
-            CharSequence primaryAction,
-            CharSequence secondaryAction,
-            View.OnClickListener onClickListener,
-            ActionListener actionListener) {
-        super(title, primaryAction, secondaryAction, iconDrawable);
-        mSummary = summary;
-        mOnClickListener = onClickListener;
-        mActionListener = actionListener;
-    }
-
-    @Override
-    public CharSequence getDesc() {
-        return mSummary;
-    }
-
-    @Override
-    public boolean isExpandable() {
-        return true;
-    }
-
-    @Override
-    public void onClick(View view) {
-        mOnClickListener.onClick(view);
-    }
-
-    @Override
-    public void onSecondaryActionButtonClick(int adapterPosition) {
-        mActionListener.onSuggestionItemDismissed(adapterPosition);
-    }
-
-    @Override
-    public void onPrimaryActionButtonClick(View view) {
-        onClick(view);
-    }
-
-    /**
-     * Interface that surfaces events on the suggestion.
-     */
-    public interface ActionListener {
-
-        /**
-         * Invoked when a suggestions item is dismissed.
-         *
-         * @param adapterPosition the position of the suggestion item in it's adapter.
-         */
-        void onSuggestionItemDismissed(int adapterPosition);
-    }
-}
diff --git a/src/com/android/car/settings/suggestions/SuggestionPreference.java b/src/com/android/car/settings/suggestions/SuggestionPreference.java
new file mode 100644
index 0000000..c299902
--- /dev/null
+++ b/src/com/android/car/settings/suggestions/SuggestionPreference.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2018 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.car.settings.suggestions;
+
+import android.content.Context;
+import android.service.settings.suggestions.Suggestion;
+import android.view.View;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+
+import java.util.Objects;
+
+/**
+ * Custom preference for Suggestions.
+ */
+public class SuggestionPreference extends Preference {
+
+    public static final String SUGGESTION_PREFERENCE_KEY = "suggestion_pref_key";
+
+    /**
+     * Callback for actions performed on a suggestion preference.
+     */
+    public interface Callback {
+        /** Called when the suggestion should be launched. */
+        void launchSuggestion(SuggestionPreference preference);
+
+        /** Called when the suggestion should be dismissed. */
+        void dismissSuggestion(SuggestionPreference preference);
+    }
+
+    private final Callback mCallback;
+    private Suggestion mSuggestion;
+
+    public SuggestionPreference(Context context, Suggestion suggestion, Callback callback) {
+        super(context);
+        setLayoutResource(R.layout.suggestion_preference);
+        mCallback = callback;
+        setKey(SUGGESTION_PREFERENCE_KEY + suggestion.getId());
+        updateSuggestion(suggestion);
+    }
+
+    /**
+     * Returns the {@link Suggestion} represented by this preference.
+     */
+    public Suggestion getSuggestion() {
+        return mSuggestion;
+    }
+
+    /**
+     * Updates the icon, title, and summary of the preference with those of the given
+     * {@link Suggestion}.
+     *
+     * @param suggestion the updated suggestion to represent
+     * @throws IllegalArgumentException if the given suggestion has a different id than the
+     *         suggestion passed to the constructor
+     */
+    public void updateSuggestion(Suggestion suggestion) {
+        if (mSuggestion != null && !Objects.equals(mSuggestion.getId(), suggestion.getId())) {
+            throw new IllegalArgumentException(
+                    "Suggestion preference update must have a matching id");
+        }
+        mSuggestion = suggestion;
+        setIcon((suggestion.getIcon() != null) ? suggestion.getIcon().loadDrawable(getContext())
+                : null);
+        setTitle(suggestion.getTitle());
+        setSummary(suggestion.getSummary());
+    }
+
+    @Override
+    public void onBindViewHolder(final PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        holder.setDividerAllowedAbove(false);
+        holder.setDividerAllowedBelow(false);
+
+        holder.itemView.setOnClickListener(v -> mCallback.launchSuggestion(this));
+
+        View dismissButton = holder.findViewById(R.id.dismiss_button);
+        dismissButton.setOnClickListener(v -> mCallback.dismissSuggestion(this));
+    }
+}
diff --git a/src/com/android/car/settings/suggestions/SuggestionsPreferenceController.java b/src/com/android/car/settings/suggestions/SuggestionsPreferenceController.java
new file mode 100644
index 0000000..1a86590
--- /dev/null
+++ b/src/com/android/car/settings/suggestions/SuggestionsPreferenceController.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2018 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.car.settings.suggestions;
+
+import android.app.PendingIntent;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ComponentName;
+import android.content.Context;
+import android.os.Bundle;
+import android.service.settings.suggestions.Suggestion;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.suggestions.SuggestionController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Injects {@link SuggestionPreference} instances loaded from the SuggestionService at the
+ * location in the hierarchy of the controller's placeholder preference. The placeholder should
+ * be a {@link PreferenceGroup} which sets the controller attribute to the fully qualified name
+ * of this class.
+ *
+ * <p>For example:
+ * <pre>{@code
+ * <PreferenceCategory
+ *     android:key="@string/pk_suggestions"
+ *     android:title="@string/suggestions_title"
+ *     settings:controller="com.android.settings.suggestions.SuggestionsPreferenceController"/>
+ * }</pre>
+ */
+public class SuggestionsPreferenceController extends
+        PreferenceController<PreferenceGroup> implements
+        SuggestionController.ServiceConnectionListener,
+        LoaderManager.LoaderCallbacks<List<Suggestion>>, SuggestionPreference.Callback {
+
+    private static final Logger LOG = new Logger(SuggestionsPreferenceController.class);
+
+    // These values are hard coded until we receive the OK to plumb them through
+    // SettingsIntelligence. This is ok as right now only SUW uses this framework.
+    private static final ComponentName COMPONENT_NAME = new ComponentName(
+            "com.android.settings.intelligence",
+            "com.android.settings.intelligence.suggestions.SuggestionService");
+
+    private final SuggestionController mSuggestionController;
+    private List<Suggestion> mSuggestionsList = new ArrayList<>();
+    private LoaderManager mLoaderManager;
+
+    public SuggestionsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSuggestionController = new SuggestionController(context,
+                COMPONENT_NAME, /* serviceConnectionListener= */ this);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /**
+     * Sets the {@link LoaderManager} used to load suggestions.
+     */
+    public void setLoaderManager(LoaderManager loaderManager) {
+        mLoaderManager = loaderManager;
+    }
+
+    /**
+     * Verifies that the controller was properly initialized with
+     * {@link #setLoaderManager(LoaderManager)}.
+     *
+     * @throws IllegalStateException if the loader manager is {@code null}
+     */
+    @Override
+    protected void checkInitialized() {
+        LOG.v("checkInitialized");
+        if (mLoaderManager == null) {
+            throw new IllegalStateException(
+                    "SuggestionPreferenceController must be initialized by calling "
+                            + "setLoaderManager(LoaderManager)");
+        }
+    }
+
+    /** Starts the suggestions controller. */
+    @Override
+    protected void onStartInternal() {
+        LOG.v("onStartInternal");
+        mSuggestionController.start();
+    }
+
+    /** Stops the suggestions controller. */
+    @Override
+    protected void onStopInternal() {
+        LOG.v("onStopInternal");
+        mSuggestionController.stop();
+        cleanupLoader();
+    }
+
+    @Override
+    public void onServiceConnected() {
+        LOG.v("onServiceConnected");
+        mLoaderManager.restartLoader(SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS, /* args= */
+                null, /* callback= */ this);
+    }
+
+    @Override
+    public void onServiceDisconnected() {
+        LOG.v("onServiceDisconnected");
+        cleanupLoader();
+    }
+
+    @NonNull
+    @Override
+    public Loader<List<Suggestion>> onCreateLoader(int id, @Nullable Bundle args) {
+        LOG.v("onCreateLoader: " + id);
+        if (id == SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS) {
+            return new SettingsSuggestionsLoader(getContext(), mSuggestionController);
+        }
+        throw new IllegalArgumentException("This loader id is not supported " + id);
+    }
+
+
+    @Override
+    public void onLoadFinished(@NonNull Loader<List<Suggestion>> loader,
+            List<Suggestion> suggestions) {
+        LOG.v("onLoadFinished");
+        if (suggestions == null) {
+            // Load started before the service was ready.
+            return;
+        }
+
+        updateSuggestionPreferences(suggestions);
+        mSuggestionsList = new ArrayList<>(suggestions);
+    }
+
+    private void updateSuggestionPreferences(List<Suggestion> suggestions) {
+        // Remove suggestions that are not in the new list.
+        for (Suggestion oldSuggestion : mSuggestionsList) {
+            boolean isInNewSuggestionList = false;
+            for (Suggestion suggestion : suggestions) {
+                if (oldSuggestion.getId().equals(suggestion.getId())) {
+                    isInNewSuggestionList = true;
+                    break;
+                }
+            }
+            if (!isInNewSuggestionList) {
+                getPreference().removePreference(
+                        getPreference().findPreference(getSuggestionPreferenceKey(oldSuggestion)));
+            }
+        }
+
+        // Add suggestions that are not in the old list and update the existing suggestions.
+        for (Suggestion suggestion : suggestions) {
+            Preference curPref = getPreference().findPreference(
+                    getSuggestionPreferenceKey(suggestion));
+            if (curPref == null) {
+                SuggestionPreference newSuggPref = new SuggestionPreference(getContext(),
+                        suggestion, /* callback= */ this);
+                getPreference().addPreference(newSuggPref);
+            } else {
+                ((SuggestionPreference) curPref).updateSuggestion(suggestion);
+            }
+        }
+
+        refreshUi();
+    }
+
+    @Override
+    public void onLoaderReset(@NonNull Loader<List<Suggestion>> loader) {
+        LOG.v("onLoaderReset");
+    }
+
+    @Override
+    public void launchSuggestion(SuggestionPreference preference) {
+        LOG.v("launchSuggestion");
+        Suggestion suggestion = preference.getSuggestion();
+        try {
+            if (suggestion.getPendingIntent() != null) {
+                suggestion.getPendingIntent().send();
+                mSuggestionController.launchSuggestion(suggestion);
+            } else {
+                LOG.w("Suggestion with null pending intent " + suggestion.getId());
+            }
+        } catch (PendingIntent.CanceledException e) {
+            LOG.w("Failed to start suggestion " + suggestion.getId());
+        }
+    }
+
+    @Override
+    public void dismissSuggestion(SuggestionPreference preference) {
+        LOG.v("dismissSuggestion");
+        Suggestion suggestion = preference.getSuggestion();
+        mSuggestionController.dismissSuggestions(suggestion);
+        mSuggestionsList.remove(suggestion);
+        getPreference().removePreference(preference);
+        refreshUi();
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preference) {
+        preference.setVisible(preference.getPreferenceCount() > 0);
+    }
+
+    private void cleanupLoader() {
+        LOG.v("cleanupLoader");
+        mLoaderManager.destroyLoader(SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS);
+    }
+
+    private String getSuggestionPreferenceKey(Suggestion suggestion) {
+        return SuggestionPreference.SUGGESTION_PREFERENCE_KEY + suggestion.getId();
+    }
+}
diff --git a/src/com/android/car/settings/system/AboutSettingsEntryPreferenceController.java b/src/com/android/car/settings/system/AboutSettingsEntryPreferenceController.java
new file mode 100644
index 0000000..8f13d9f
--- /dev/null
+++ b/src/com/android/car/settings/system/AboutSettingsEntryPreferenceController.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Updates the about settings entry summary with the build version. */
+public class AboutSettingsEntryPreferenceController extends PreferenceController<Preference> {
+
+    public AboutSettingsEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(
+                getContext().getString(R.string.about_summary, Build.VERSION.RELEASE));
+    }
+}
diff --git a/src/com/android/car/settings/system/AboutSettingsFragment.java b/src/com/android/car/settings/system/AboutSettingsFragment.java
index c4fe8d9..4171542 100644
--- a/src/com/android/car/settings/system/AboutSettingsFragment.java
+++ b/src/com/android/car/settings/system/AboutSettingsFragment.java
@@ -16,74 +16,19 @@
 
 package com.android.car.settings.system;
 
-import android.os.Build;
-import android.os.Bundle;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-import com.android.settingslib.DeviceInfoUtils;
-
-import java.util.ArrayList;
-import java.util.List;
+import com.android.car.settings.common.SettingsFragment;
 
 /**
  * Shows basic info about the system and provide some actions like update, reset etc.
  */
-public class AboutSettingsFragment extends ListItemSettingsFragment {
-
-    private ListItemProvider mItemProvider;
-
-    public static AboutSettingsFragment getInstance() {
-        AboutSettingsFragment aboutSettingsFragment = new AboutSettingsFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.about_settings);
-        aboutSettingsFragment.setArguments(bundle);
-        return aboutSettingsFragment;
-    }
+public class AboutSettingsFragment extends SettingsFragment {
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        mItemProvider = new ListItemProvider.ListProvider(getListItems());
-        // super.onActivityCreated() will need itemProvider, so call it after the provider
-        // is initialized.
-        super.onActivityCreated(savedInstanceState);
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        return mItemProvider;
-    }
-
-    private List<ListItem> getListItems() {
-        List<ListItem> listItems = new ArrayList<>();
-        TextListItem modelItem = new TextListItem(getContext());
-        modelItem.setTitle(getString(R.string.model_info));
-        modelItem.setBody(Build.MODEL + DeviceInfoUtils.getMsvSuffix());
-        listItems.add(modelItem);
-
-        TextListItem androidVersionItem = new TextListItem(getContext());
-        androidVersionItem.setTitle(getString(R.string.firmware_version));
-        androidVersionItem.setBody(getString(R.string.about_summary, Build.VERSION.RELEASE));
-        listItems.add(androidVersionItem);
-
-        TextListItem securityLevelItem = new TextListItem(getContext());
-        securityLevelItem.setTitle(getString(R.string.security_patch));
-        securityLevelItem.setBody(DeviceInfoUtils.getSecurityPatch());
-        listItems.add(securityLevelItem);
-
-        TextListItem kernelVersionItem = new TextListItem(getContext());
-        kernelVersionItem.setTitle(getString(R.string.kernel_version));
-        kernelVersionItem.setBody(DeviceInfoUtils.getFormattedKernelVersion(getContext()));
-        listItems.add(kernelVersionItem);
-
-        TextListItem buildNumberItem = new TextListItem(getContext());
-        buildNumberItem.setTitle(getString(R.string.build_number));
-        buildNumberItem.setBody(Build.DISPLAY);
-        listItems.add(buildNumberItem);
-        return listItems;
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.about_settings_fragment;
     }
 }
diff --git a/src/com/android/car/settings/system/BluetoothMacAddressPreferenceController.java b/src/com/android/car/settings/system/BluetoothMacAddressPreferenceController.java
new file mode 100644
index 0000000..05f9c60
--- /dev/null
+++ b/src/com/android/car/settings/system/BluetoothMacAddressPreferenceController.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Updates the vehicle bluetooth mac address summary. */
+public class BluetoothMacAddressPreferenceController extends
+        PreferenceController<Preference> {
+
+    private BluetoothAdapter mBluetoothAdapter;
+
+    public BluetoothMacAddressPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return super.getAvailabilityStatus();
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(mBluetoothAdapter.getAddress());
+    }
+}
diff --git a/src/com/android/car/settings/system/BuildNumberPreferenceController.java b/src/com/android/car/settings/system/BuildNumberPreferenceController.java
new file mode 100644
index 0000000..c2b7718
--- /dev/null
+++ b/src/com/android/car/settings/system/BuildNumberPreferenceController.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Build;
+import android.widget.Toast;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.development.DevelopmentSettingsUtil;
+
+/** Updates the build number entry summary with the build number. */
+public class BuildNumberPreferenceController extends PreferenceController<Preference> {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private Toast mDevHitToast;
+    private int mDevHitCountdown;
+
+    public BuildNumberPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    /**
+     * Reset the toast and counter which tracks how many more clicks until development settings is
+     * enabled.
+     */
+    @Override
+    protected void onResumeInternal() {
+        mDevHitToast = null;
+        mDevHitCountdown = DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(getContext(),
+                mCarUserManagerHelper) ? -1 : getTapsToBecomeDeveloper();
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(Build.DISPLAY);
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        if (!mCarUserManagerHelper.isCurrentProcessAdminUser()
+                && !mCarUserManagerHelper.isCurrentProcessDemoUser()) {
+            return false;
+        }
+
+        if (!DevelopmentSettingsUtil.isDeviceProvisioned(getContext())) {
+            return false;
+        }
+
+        if (mDevHitCountdown > 0) {
+            mDevHitCountdown--;
+            if (mDevHitCountdown == 0) {
+                DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(getContext(), true);
+                showToast(getContext().getString(R.string.show_dev_on), Toast.LENGTH_LONG);
+            } else if (mDevHitCountdown <= getTapsToBecomeDeveloper() - getTapsToShowToast()) {
+                showToast(getContext().getResources().getQuantityString(
+                        R.plurals.show_dev_countdown, mDevHitCountdown, mDevHitCountdown),
+                        Toast.LENGTH_SHORT);
+            }
+        } else if (mDevHitCountdown < 0) {
+            showToast(getContext().getString(R.string.show_dev_already), Toast.LENGTH_LONG);
+        }
+        return true;
+    }
+
+    private void showToast(String text, @Toast.Duration int duration) {
+        if (mDevHitToast != null) {
+            mDevHitToast.cancel();
+        }
+        mDevHitToast = Toast.makeText(getContext(), text, duration);
+        mDevHitToast.show();
+    }
+
+    private int getTapsToBecomeDeveloper() {
+        return getContext().getResources().getInteger(
+                R.integer.enable_developer_settings_click_count);
+    }
+
+    private int getTapsToShowToast() {
+        return getContext().getResources().getInteger(
+                R.integer.enable_developer_settings_clicks_to_show_toast_count);
+    }
+}
diff --git a/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceController.java b/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceController.java
new file mode 100644
index 0000000..9b2b22b
--- /dev/null
+++ b/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceController.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.development.DevelopmentSettingsUtil;
+
+/** Controls the visibility of the developer options setting. */
+public class DeveloperOptionsEntryPreferenceController extends PreferenceController<Preference> {
+
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    public DeveloperOptionsEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(getContext(),
+                mCarUserManagerHelper) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+}
diff --git a/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java b/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java
new file mode 100644
index 0000000..0d24dec
--- /dev/null
+++ b/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Updates the firmware version entry summary with the firmware version. */
+public class FirmwareVersionPreferenceController extends PreferenceController<Preference> {
+
+    public FirmwareVersionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(
+                getContext().getString(R.string.about_summary, Build.VERSION.RELEASE));
+    }
+}
diff --git a/src/com/android/car/settings/system/KernelVersionPreferenceController.java b/src/com/android/car/settings/system/KernelVersionPreferenceController.java
new file mode 100644
index 0000000..1d18523
--- /dev/null
+++ b/src/com/android/car/settings/system/KernelVersionPreferenceController.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.DeviceInfoUtils;
+
+/** Updates the kernel version entry summary with the kernel version. */
+public class KernelVersionPreferenceController extends PreferenceController<Preference> {
+
+    public KernelVersionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(DeviceInfoUtils.getFormattedKernelVersion(getContext()));
+    }
+}
diff --git a/src/com/android/car/settings/system/LanguagePickerFragment.java b/src/com/android/car/settings/system/LanguagePickerFragment.java
deleted file mode 100644
index af78320..0000000
--- a/src/com/android/car/settings/system/LanguagePickerFragment.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.system;
-
-import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.os.AsyncTask;
-import android.os.Build;
-import android.os.Bundle;
-
-import androidx.car.widget.ListItemProvider;
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-import androidx.lifecycle.ViewModelProviders;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-import com.android.car.settingslib.language.LanguagePickerUtils;
-import com.android.car.settingslib.language.LocaleListItemProvider;
-import com.android.car.settingslib.language.LocaleSelectionListener;
-import com.android.internal.app.LocalePicker;
-import com.android.internal.app.LocaleStore;
-
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-
-/**
- * Fragment for showing the list of languages.
- */
-public class LanguagePickerFragment extends ListItemSettingsFragment implements
-        LocaleSelectionListener {
-
-    private LocaleListItemProvider mLocaleListItemProvider;
-    private final HashSet<String> mLangTagsToIgnore = new HashSet<>();
-
-    /**
-     * Factory method for creating LanguagePickerFragment.
-     */
-    public static LanguagePickerFragment newInstance() {
-        LanguagePickerFragment LanguagePickerFragment = new LanguagePickerFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.language_settings);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar);
-        LanguagePickerFragment.setArguments(bundle);
-        return LanguagePickerFragment;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        LocaleViewModel viewModel = getLocaleViewModel();
-        viewModel.getLocaleInfos(getContext(), mLangTagsToIgnore).observe(this,
-                localeInfos -> resetLocaleList(localeInfos));
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        if (mLocaleListItemProvider == null) {
-            mLocaleListItemProvider = new LocaleListItemProvider(
-                    getContext(),
-                    new HashSet<LocaleStore.LocaleInfo>(),
-                    /* localeSelectionListener= */ this,
-                    mLangTagsToIgnore);
-        }
-        return mLocaleListItemProvider;
-    }
-
-    @Override
-    public void onLocaleSelected(LocaleStore.LocaleInfo localeInfo) {
-        if (localeInfo == null || localeInfo.getLocale() == null) {
-            return;
-        }
-
-        Locale locale = localeInfo.getLocale();
-
-        Resources res = getResources();
-        Configuration baseConfig = res.getConfiguration();
-        Configuration config = new Configuration(baseConfig);
-        config.setLocale(locale);
-        res.updateConfiguration(config, null);
-
-        // Apply locale to system.
-        LocalePicker.updateLocale(locale);
-        getFragmentController().goBack();
-    }
-
-    @Override
-    public void onParentWithChildrenLocaleSelected(LocaleStore.LocaleInfo localeInfo) {
-        if (localeInfo != null) {
-            setTitle(localeInfo.getFullNameNative());
-            refreshList();
-        }
-    }
-
-    @Override
-    protected void onBackPressed() {
-        if (isChildLocaleDisplayed()) {
-            setTitle(getString(R.string.language_settings));
-            getLocaleViewModel().reloadLocales(getContext(), mLangTagsToIgnore);
-        } else {
-            super.onBackPressed();
-        }
-    }
-
-    private LocaleViewModel getLocaleViewModel() {
-        return ViewModelProviders.of(this).get(LocaleViewModel.class);
-    }
-
-    private boolean isChildLocaleDisplayed() {
-        return mLocaleListItemProvider != null && mLocaleListItemProvider.isChildLocale();
-    }
-
-    /**
-     * Add a pseudo locale in debug build for testing RTL.
-     *
-     * @param localeInfos the set of {@link LocaleStore.LocaleInfo} to which the locale is added.
-     */
-    private void maybeAddPseudoLocale(Set<LocaleStore.LocaleInfo> localeInfos) {
-        if (Build.IS_USERDEBUG) {
-            // The ar-XB pseudo-locale is RTL.
-            localeInfos.add(LocaleStore.getLocaleInfo(new Locale("ar", "XB")));
-        }
-    }
-
-    private void resetLocaleList(Set<LocaleStore.LocaleInfo> localeInfos) {
-        if (mLocaleListItemProvider != null) {
-            maybeAddPseudoLocale(localeInfos);
-            mLocaleListItemProvider.updateSuggestedLocaleAdapter(
-                    LanguagePickerUtils.createSuggestedLocaleAdapter(
-                            getContext(), localeInfos, /* parent= */ null),
-                    /* isChildLocale= */ false);
-            refreshList();
-        }
-    }
-
-    /**
-     * ViewModel for holding the LocaleInfos.
-     */
-    public static class LocaleViewModel extends ViewModel {
-
-        private MutableLiveData<Set<LocaleStore.LocaleInfo>> mLocaleInfos;
-
-        /**
-         * Returns LiveData holding a set of LocaleInfo.
-         */
-        public LiveData<Set<LocaleStore.LocaleInfo>> getLocaleInfos(Context context,
-                Set<String> ignorables) {
-
-            if (mLocaleInfos == null) {
-                mLocaleInfos = new MutableLiveData<Set<LocaleStore.LocaleInfo>>();
-                reloadLocales(context, ignorables);
-            }
-            return mLocaleInfos;
-        }
-
-        /**
-         * Reload the locales based on the current context.
-         */
-        public void reloadLocales(Context context, Set<String> ignorables) {
-            new AsyncTask<Context, Void, Set<LocaleStore.LocaleInfo>>() {
-                @Override
-                protected Set<LocaleStore.LocaleInfo> doInBackground(Context... contexts) {
-                    return LocaleStore.getLevelLocales(
-                            contexts[0],
-                            ignorables,
-                            /* parent= */ null,
-                            /* translatedOnly= */ true);
-                }
-
-                @Override
-                protected void onPostExecute(Set<LocaleStore.LocaleInfo> localeInfos) {
-                    LocaleViewModel.this.mLocaleInfos.setValue(localeInfos);
-                }
-            }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, context);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/system/LegalInformationFragment.java b/src/com/android/car/settings/system/LegalInformationFragment.java
new file mode 100644
index 0000000..69b9bc6
--- /dev/null
+++ b/src/com/android/car/settings/system/LegalInformationFragment.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Fragment showing legal information.
+ */
+public class LegalInformationFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.legal_information_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/system/LicenseHtmlGeneratorFromXml.java b/src/com/android/car/settings/system/LicenseHtmlGeneratorFromXml.java
new file mode 100644
index 0000000..8002ac1
--- /dev/null
+++ b/src/com/android/car/settings/system/LicenseHtmlGeneratorFromXml.java
@@ -0,0 +1,288 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.text.TextUtils;
+import android.util.Xml;
+
+import com.android.car.settings.common.Logger;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.GZIPInputStream;
+
+/**
+ * The utility class that generate a license html file from xml files.
+ * All the HTML snippets and logic are copied from build/make/tools/generate-notice-files.py.
+ */
+class LicenseHtmlGeneratorFromXml {
+    private static final Logger LOG = new Logger(LicenseHtmlGeneratorFromXml.class);
+
+    private static final String TAG_ROOT = "licenses";
+    private static final String TAG_FILE_NAME = "file-name";
+    private static final String TAG_FILE_CONTENT = "file-content";
+    private static final String ATTR_CONTENT_ID = "contentId";
+    private static final String HTML_HEAD_STRING =
+            "<html><head>\n"
+                    + "<style type=\"text/css\">\n"
+                    + "body { padding: 0; font-family: sans-serif; }\n"
+                    + ".same-license { background-color: #eeeeee;\n"
+                    + "                border-top: 20px solid white;\n"
+                    + "                padding: 10px; }\n"
+                    + ".label { font-weight: bold; }\n"
+                    + ".file-list { margin-left: 1em; color: blue; }\n"
+                    + "</style>\n"
+                    + "</head>"
+                    + "<body topmargin=\"0\" leftmargin=\"0\" rightmargin=\"0\" bottommargin=\"0\">"
+                    + "\n"
+                    + "<div class=\"toc\">\n"
+                    + "<ul>";
+
+    private static final String HTML_MIDDLE_STRING =
+            "</ul>\n"
+                    + "</div><!-- table of contents -->\n"
+                    + "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
+
+    private static final String HTML_REAR_STRING =
+            "</table></body></html>";
+
+    private final List<File> mXmlFiles;
+
+    /*
+     * A map from a file name to a content id (MD5 sum of file content) for its license.
+     * For example, "/system/priv-app/TeleService/TeleService.apk" maps to
+     * "9645f39e9db895a4aa6e02cb57294595". Here "9645f39e9db895a4aa6e02cb57294595" is a MD5 sum
+     * of the content of packages/services/Telephony/MODULE_LICENSE_APACHE2.
+     */
+    private final Map<String, String> mFileNameToContentIdMap = new HashMap();
+
+    /*
+     * A map from a content id (MD5 sum of file content) to a license file content.
+     * For example, "9645f39e9db895a4aa6e02cb57294595" maps to the content string of
+     * packages/services/Telephony/MODULE_LICENSE_APACHE2. Here "9645f39e9db895a4aa6e02cb57294595"
+     * is a MD5 sum of the file content.
+     */
+    private final Map<String, String> mContentIdToFileContentMap = new HashMap();
+
+    static class ContentIdAndFileNames {
+        final String mContentId;
+        final List<String> mFileNameList = new ArrayList();
+
+        ContentIdAndFileNames(String contentId) {
+            mContentId = contentId;
+        }
+    }
+
+    private LicenseHtmlGeneratorFromXml(List<File> xmlFiles) {
+        mXmlFiles = xmlFiles;
+    }
+
+    public static boolean generateHtml(List<File> xmlFiles, File outputFile) {
+        LicenseHtmlGeneratorFromXml genertor = new LicenseHtmlGeneratorFromXml(xmlFiles);
+        return genertor.generateHtml(outputFile);
+    }
+
+    private boolean generateHtml(File outputFile) {
+        for (File xmlFile : mXmlFiles) {
+            parse(xmlFile);
+        }
+
+        if (mFileNameToContentIdMap.isEmpty() || mContentIdToFileContentMap.isEmpty()) {
+            return false;
+        }
+
+        PrintWriter writer = null;
+        try {
+            writer = new PrintWriter(outputFile);
+
+            generateHtml(mFileNameToContentIdMap, mContentIdToFileContentMap, writer);
+
+            writer.flush();
+            writer.close();
+            return true;
+        } catch (FileNotFoundException | SecurityException e) {
+            LOG.e("Failed to generate " + outputFile, e);
+
+            if (writer != null) {
+                writer.close();
+            }
+            return false;
+        }
+    }
+
+    private void parse(File xmlFile) {
+        if (xmlFile == null || !xmlFile.exists() || xmlFile.length() == 0) {
+            return;
+        }
+
+        InputStreamReader in = null;
+        try {
+            if (xmlFile.getName().endsWith(".gz")) {
+                in = new InputStreamReader(new GZIPInputStream(new FileInputStream(xmlFile)));
+            } else {
+                in = new FileReader(xmlFile);
+            }
+
+            parse(in, mFileNameToContentIdMap, mContentIdToFileContentMap);
+
+            in.close();
+        } catch (XmlPullParserException | IOException e) {
+            LOG.e("Failed to parse " + xmlFile, e);
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException ie) {
+                    LOG.w("Failed to close " + xmlFile);
+                }
+            }
+        }
+    }
+
+    /*
+     * Parses an input stream and fills a map from a file name to a content id for its license
+     * and a map from a content id to a license file content.
+     *
+     * Following xml format is expected from the input stream.
+     *
+     *     <licenses>
+     *     <file-name contentId="content_id_of_license1">file1</file-name>
+     *     <file-name contentId="content_id_of_license2">file2</file-name>
+     *     ...
+     *     <file-content contentId="content_id_of_license1">license1 file contents</file-content>
+     *     <file-content contentId="content_id_of_license2">license2 file contents</file-content>
+     *     ...
+     *     </licenses>
+     */
+    private static void parse(InputStreamReader in, Map<String, String> outFileNameToContentIdMap,
+            Map<String, String> outContentIdToFileContentMap)
+            throws XmlPullParserException, IOException {
+        Map<String, String> fileNameToContentIdMap = new HashMap<String, String>();
+        Map<String, String> contentIdToFileContentMap = new HashMap<String, String>();
+
+        XmlPullParser parser = Xml.newPullParser();
+        parser.setInput(in);
+        parser.nextTag();
+
+        parser.require(XmlPullParser.START_TAG, "", TAG_ROOT);
+
+        int state = parser.getEventType();
+        while (state != XmlPullParser.END_DOCUMENT) {
+            if (state == XmlPullParser.START_TAG) {
+                if (TAG_FILE_NAME.equals(parser.getName())) {
+                    String contentId = parser.getAttributeValue("", ATTR_CONTENT_ID);
+                    if (!TextUtils.isEmpty(contentId)) {
+                        String fileName = readText(parser).trim();
+                        if (!TextUtils.isEmpty(fileName)) {
+                            fileNameToContentIdMap.put(fileName, contentId);
+                        }
+                    }
+                } else if (TAG_FILE_CONTENT.equals(parser.getName())) {
+                    String contentId = parser.getAttributeValue("", ATTR_CONTENT_ID);
+                    if (!TextUtils.isEmpty(contentId)
+                            && !outContentIdToFileContentMap.containsKey(contentId)
+                            && !contentIdToFileContentMap.containsKey(contentId)) {
+                        String fileContent = readText(parser);
+                        if (!TextUtils.isEmpty(fileContent)) {
+                            contentIdToFileContentMap.put(contentId, fileContent);
+                        }
+                    }
+                }
+            }
+
+            state = parser.next();
+        }
+        outFileNameToContentIdMap.putAll(fileNameToContentIdMap);
+        outContentIdToFileContentMap.putAll(contentIdToFileContentMap);
+    }
+
+    private static String readText(XmlPullParser parser)
+            throws IOException, XmlPullParserException {
+        StringBuffer result = new StringBuffer();
+        int state = parser.next();
+        while (state == XmlPullParser.TEXT) {
+            result.append(parser.getText());
+            state = parser.next();
+        }
+        return result.toString();
+    }
+
+    private static void generateHtml(Map<String, String> fileNameToContentIdMap,
+            Map<String, String> contentIdToFileContentMap, PrintWriter writer) {
+        List<String> fileNameList = new ArrayList();
+        fileNameList.addAll(fileNameToContentIdMap.keySet());
+        Collections.sort(fileNameList);
+
+        writer.println(HTML_HEAD_STRING);
+
+        int count = 0;
+        Map<String, Integer> contentIdToOrderMap = new HashMap();
+        List<ContentIdAndFileNames> contentIdAndFileNamesList = new ArrayList();
+
+        // Prints all the file list with a link to its license file content.
+        for (String fileName : fileNameList) {
+            String contentId = fileNameToContentIdMap.get(fileName);
+            // Assigns an id to a newly referred license file content.
+            if (!contentIdToOrderMap.containsKey(contentId)) {
+                contentIdToOrderMap.put(contentId, count);
+
+                // An index in contentIdAndFileNamesList is the order of each element.
+                contentIdAndFileNamesList.add(new ContentIdAndFileNames(contentId));
+                count++;
+            }
+
+            int id = contentIdToOrderMap.get(contentId);
+            contentIdAndFileNamesList.get(id).mFileNameList.add(fileName);
+            writer.format("<li><a href=\"#id%d\">%s</a></li>\n", id, fileName);
+        }
+
+        writer.println(HTML_MIDDLE_STRING);
+
+        count = 0;
+        // Prints all contents of the license files in order of id.
+        for (ContentIdAndFileNames contentIdAndFileNames : contentIdAndFileNamesList) {
+            writer.format("<tr id=\"id%d\"><td class=\"same-license\">\n", count);
+            writer.println("<div class=\"label\">Notices for file(s):</div>");
+            writer.println("<div class=\"file-list\">");
+            for (String fileName : contentIdAndFileNames.mFileNameList) {
+                writer.format("%s <br/>\n", fileName);
+            }
+            writer.println("</div><!-- file-list -->");
+            writer.println("<pre class=\"license-text\">");
+            writer.println(contentIdToFileContentMap.get(
+                    contentIdAndFileNames.mContentId));
+            writer.println("</pre><!-- license-text -->");
+            writer.println("</td></tr><!-- same-license -->");
+
+            count++;
+        }
+
+        writer.println(HTML_REAR_STRING);
+    }
+}
diff --git a/src/com/android/car/settings/system/LicenseHtmlLoader.java b/src/com/android/car/settings/system/LicenseHtmlLoader.java
new file mode 100644
index 0000000..8bdf9f7
--- /dev/null
+++ b/src/com/android/car/settings/system/LicenseHtmlLoader.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.content.Context;
+
+import com.android.car.settings.common.Logger;
+import com.android.car.settingslib.loader.AsyncLoader;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * LicenseHtmlLoader is a loader which loads a license html file from default license xml files.
+ */
+public class LicenseHtmlLoader extends AsyncLoader<File> {
+    private static final Logger LOG = new Logger(LicenseHtmlLoader.class);
+
+    private static final String[] DEFAULT_LICENSE_XML_PATHS = {
+            "/system/etc/NOTICE.xml.gz",
+            "/vendor/etc/NOTICE.xml.gz",
+            "/odm/etc/NOTICE.xml.gz",
+            "/oem/etc/NOTICE.xml.gz"};
+    private static final String NOTICE_HTML_FILE_NAME = "NOTICE.html";
+
+    private final Context mContext;
+
+    public LicenseHtmlLoader(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    @Override
+    public File loadInBackground() {
+        return generateHtmlFromDefaultXmlFiles();
+    }
+
+    private File generateHtmlFromDefaultXmlFiles() {
+        final List<File> xmlFiles = getVaildXmlFiles();
+        if (xmlFiles.isEmpty()) {
+            LOG.e("No notice file exists.");
+            return null;
+        }
+
+        File cachedHtmlFile = getCachedHtmlFile();
+        if (!isCachedHtmlFileOutdated(xmlFiles, cachedHtmlFile)
+                || generateHtmlFile(xmlFiles, cachedHtmlFile)) {
+            return cachedHtmlFile;
+        }
+
+        return null;
+    }
+
+    private List<File> getVaildXmlFiles() {
+        final List<File> xmlFiles = new ArrayList();
+        for (final String xmlPath : DEFAULT_LICENSE_XML_PATHS) {
+            File file = new File(xmlPath);
+            if (file.exists() && file.length() != 0) {
+                xmlFiles.add(file);
+            }
+        }
+        return xmlFiles;
+    }
+
+    private File getCachedHtmlFile() {
+        return new File(mContext.getCacheDir(), NOTICE_HTML_FILE_NAME);
+    }
+
+    private boolean isCachedHtmlFileOutdated(List<File> xmlFiles, File cachedHtmlFile) {
+        boolean outdated = true;
+        if (cachedHtmlFile.exists() && cachedHtmlFile.length() != 0) {
+            outdated = false;
+            for (File file : xmlFiles) {
+                if (cachedHtmlFile.lastModified() < file.lastModified()) {
+                    outdated = true;
+                    break;
+                }
+            }
+        }
+        return outdated;
+    }
+
+    private boolean generateHtmlFile(List<File> xmlFiles, File htmlFile) {
+        return LicenseHtmlGeneratorFromXml.generateHtml(xmlFiles, htmlFile);
+    }
+}
+
+
diff --git a/src/com/android/car/settings/system/MasterClearAccountsPreferenceController.java b/src/com/android/car/settings/system/MasterClearAccountsPreferenceController.java
new file mode 100644
index 0000000..eda3161
--- /dev/null
+++ b/src/com/android/car/settings/system/MasterClearAccountsPreferenceController.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.UserInfo;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.ArrayMap;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Displays the currently signed in accounts on the vehicle to inform the user that they will be
+ * removed during a factory reset.
+ */
+public class MasterClearAccountsPreferenceController extends PreferenceController<PreferenceGroup> {
+
+    private static final Logger LOG = new Logger(MasterClearAccountsPreferenceController.class);
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final Map<Account, Preference> mAccountPreferenceMap = new ArrayMap<>();
+
+    public MasterClearAccountsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().addPreference(
+                createPreference(getContext().getString(R.string.master_clear_accounts), /* icon= */
+                        null));
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        // Refresh the accounts in the off chance an account was added or removed while stopped.
+        Set<Account> accountsToRemove = new HashSet<>(mAccountPreferenceMap.keySet());
+        List<UserInfo> profiles = UserManager.get(getContext()).getProfiles(
+                mCarUserManagerHelper.getCurrentProcessUserId());
+        for (UserInfo profile : profiles) {
+            UserHandle userHandle = new UserHandle(profile.id);
+            AuthenticatorDescription[] descriptions = AccountManager.get(
+                    getContext()).getAuthenticatorTypesAsUser(profile.id);
+            Account[] accounts = AccountManager.get(getContext()).getAccountsAsUser(profile.id);
+            for (Account account : accounts) {
+                AuthenticatorDescription description = null;
+                for (AuthenticatorDescription desc : descriptions) {
+                    if (account.type.equals(desc.type)) {
+                        description = desc;
+                        break;
+                    }
+                }
+                if (description == null) {
+                    LOG.w("No descriptor for account name=" + account.name + " type="
+                            + account.type);
+                    continue;
+                }
+
+                accountsToRemove.remove(account);
+                if (!mAccountPreferenceMap.containsKey(account)) {
+                    Preference accountPref = createPreference(account.name,
+                            getAccountIcon(description, userHandle));
+                    mAccountPreferenceMap.put(account, accountPref);
+                    preferenceGroup.addPreference(accountPref);
+                }
+            }
+        }
+
+        for (Account accountToRemove : accountsToRemove) {
+            preferenceGroup.removePreference(mAccountPreferenceMap.get(accountToRemove));
+        }
+
+        // If the only preference is the title, hide the group.
+        preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 1);
+    }
+
+    private Drawable getAccountIcon(AuthenticatorDescription description, UserHandle userHandle) {
+        Drawable icon = null;
+        try {
+            if (description.iconId != 0) {
+                Context authContext = getContext().createPackageContextAsUser(
+                        description.packageName, /* flags= */ 0, userHandle);
+                icon = getContext().getPackageManager().getUserBadgedIcon(
+                        authContext.getDrawable(description.iconId), userHandle);
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.w("Bad package name for account type " + description.type, e);
+        } catch (Resources.NotFoundException e) {
+            LOG.w("Invalid icon id for account type " + description.type, e);
+        }
+        if (icon == null) {
+            icon = getContext().getPackageManager().getDefaultActivityIcon();
+        }
+        return icon;
+    }
+
+    private Preference createPreference(String title, @Nullable Drawable icon) {
+        Preference preference = new Preference(getContext());
+        preference.setTitle(title);
+        preference.setIcon(icon);
+        preference.setSelectable(false);
+        return preference;
+    }
+}
diff --git a/src/com/android/car/settings/system/MasterClearConfirmFragment.java b/src/com/android/car/settings/system/MasterClearConfirmFragment.java
new file mode 100644
index 0000000..df8b88b
--- /dev/null
+++ b/src/com/android/car/settings/system/MasterClearConfirmFragment.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import android.app.ActivityManager;
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.service.oemlock.OemLockManager;
+import android.service.persistentdata.PersistentDataBlockManager;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.preference.PreferenceManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Presents the user with a final warning before issuing the request to reset the head unit to its
+ * default "factory" state.
+ */
+public class MasterClearConfirmFragment extends SettingsFragment {
+
+    private Button.OnClickListener mFinalClickListener = v -> {
+        if (ActivityManager.isUserAMonkey()) {
+            return;
+        }
+
+        PersistentDataBlockManager pdbManager =
+                (PersistentDataBlockManager) requireContext().getSystemService(
+                        Context.PERSISTENT_DATA_BLOCK_SERVICE);
+        OemLockManager oemLockManager = (OemLockManager) requireContext().getSystemService(
+                Context.OEM_LOCK_SERVICE);
+        if (pdbManager != null && !oemLockManager.isOemUnlockAllowed()
+                && isDeviceProvisioned()) {
+            // If OEM unlock is allowed, the persistent data block will be wiped during the factory
+            // reset process. If disabled, it will be wiped here, unless the device is still being
+            // provisioned, in which case the persistent data block will be preserved.
+            new AsyncTask<Void, Void, Void>() {
+                private ProgressDialog mProgressDialog;
+
+                @Override
+                protected Void doInBackground(Void... params) {
+                    pdbManager.wipe();
+                    return null;
+                }
+
+                @Override
+                protected void onPostExecute(Void aVoid) {
+                    mProgressDialog.hide();
+                    if (getActivity() != null) {
+                        resetEverything();
+                    }
+                }
+
+                @Override
+                protected void onPreExecute() {
+                    mProgressDialog = getProgressDialog();
+                    mProgressDialog.show();
+                }
+            }.execute();
+        } else {
+            resetEverything();
+        }
+    };
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.master_clear_confirm_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        Button masterClearConfirmButton = requireActivity().findViewById(R.id.action_button1);
+        masterClearConfirmButton.setText(
+                requireContext().getString(R.string.master_clear_confirm_button_text));
+        masterClearConfirmButton.setOnClickListener(mFinalClickListener);
+    }
+
+    private boolean isDeviceProvisioned() {
+        return Settings.Global.getInt(requireContext().getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
+    }
+
+    private ProgressDialog getProgressDialog() {
+        ProgressDialog progressDialog = new ProgressDialog(requireContext());
+        progressDialog.setIndeterminate(true);
+        progressDialog.setCancelable(false);
+        progressDialog.setTitle(requireContext().getString(R.string.master_clear_progress_title));
+        progressDialog.setMessage(requireContext().getString(R.string.master_clear_progress_text));
+        return progressDialog;
+    }
+
+    private void resetEverything() {
+        Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);
+        intent.setPackage("android");
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+        intent.putExtra(Intent.EXTRA_REASON, "MasterClearConfirm");
+        intent.putExtra(Intent.EXTRA_WIPE_ESIMS, shouldResetEsim());
+        requireActivity().sendBroadcast(intent);
+    }
+
+    private boolean shouldResetEsim() {
+        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(
+                requireContext());
+        return sharedPreferences.getBoolean(
+                requireContext().getString(R.string.pk_master_clear_reset_esim), false);
+    }
+}
diff --git a/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java b/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
new file mode 100644
index 0000000..28b8444
--- /dev/null
+++ b/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static android.os.UserManager.DISALLOW_FACTORY_RESET;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller which determines if master clear (aka "factory reset") should be displayed based on
+ * user status.
+ */
+public class MasterClearEntryPreferenceController extends PreferenceController<Preference> {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public MasterClearEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return isUserRestricted() ? DISABLED_FOR_USER : AVAILABLE;
+    }
+
+    private boolean isUserRestricted() {
+        return !(mCarUserManagerHelper.isCurrentProcessAdminUser() || isDemoUser())
+                || mCarUserManagerHelper.isCurrentProcessUserHasRestriction(DISALLOW_FACTORY_RESET);
+    }
+
+    private boolean isDemoUser() {
+        return UserManager.isDeviceInDemoMode(getContext())
+                && mCarUserManagerHelper.isCurrentProcessDemoUser();
+    }
+}
diff --git a/src/com/android/car/settings/system/MasterClearFragment.java b/src/com/android/car/settings/system/MasterClearFragment.java
new file mode 100644
index 0000000..2cc9f6d
--- /dev/null
+++ b/src/com/android/car/settings/system/MasterClearFragment.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import static android.app.Activity.RESULT_OK;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.car.apps.common.widget.PagedRecyclerView;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.security.CheckLockActivity;
+
+/**
+ * Presents the user with the option to reset the head unit to its default "factory" state. If a
+ * user confirms, the user is first required to authenticate and then presented with a secondary
+ * confirmation: {@link MasterClearConfirmFragment}. The user must scroll to the bottom of the page
+ * before proceeding.
+ */
+public class MasterClearFragment extends SettingsFragment implements ActivityResultCallback {
+
+    // Arbitrary request code for starting CheckLockActivity when the reset button is clicked.
+    @VisibleForTesting
+    static final int CHECK_LOCK_REQUEST_CODE = 88;
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.master_clear_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        Button masterClearButton = requireActivity().findViewById(R.id.action_button1);
+        masterClearButton.setText(requireContext().getString(R.string.master_clear_button_text));
+        masterClearButton.setOnClickListener(
+                v -> startActivityForResult(new Intent(getContext(), CheckLockActivity.class),
+                        CHECK_LOCK_REQUEST_CODE, /* callback= */ this));
+        masterClearButton.setEnabled(false);
+
+        RecyclerView recyclerView = getListView();
+        recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(
+                new ViewTreeObserver.OnGlobalLayoutListener() {
+                    @Override
+                    public void onGlobalLayout() {
+                        if (recyclerView instanceof PagedRecyclerView) {
+                            PagedRecyclerView pagedRecyclerView = (PagedRecyclerView) recyclerView;
+                            if (!pagedRecyclerView.fullyInitialized()) {
+                                return;
+                            }
+                        }
+                        masterClearButton.setEnabled(isAtEnd());
+                        recyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                    }
+                });
+        recyclerView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
+            if (isAtEnd()) {
+                masterClearButton.setEnabled(true);
+            }
+        });
+    }
+
+    @Override
+    public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        if (requestCode == CHECK_LOCK_REQUEST_CODE && resultCode == RESULT_OK) {
+            launchFragment(new MasterClearConfirmFragment());
+        }
+    }
+
+    /** Returns {@code true} if the RecyclerView is completely displaying the last item. */
+    private boolean isAtEnd() {
+        RecyclerView recyclerView = getListView();
+        RecyclerView.LayoutManager layoutManager = (recyclerView instanceof PagedRecyclerView)
+                ? ((PagedRecyclerView) recyclerView).getEffectiveLayoutManager()
+                : recyclerView.getLayoutManager();
+        if (layoutManager == null || layoutManager.getChildCount() == 0) {
+            return true;
+        }
+
+        int childCount = layoutManager.getChildCount();
+        View lastVisibleChild = layoutManager.getChildAt(childCount - 1);
+
+        // The list has reached the bottom if the last child that is visible is the last item
+        // in the list and it's fully shown.
+        return layoutManager.getPosition(lastVisibleChild) == (layoutManager.getItemCount() - 1)
+                && layoutManager.getDecoratedBottom(lastVisibleChild) <= layoutManager.getHeight();
+    }
+}
diff --git a/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceController.java b/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceController.java
new file mode 100644
index 0000000..86f12cf
--- /dev/null
+++ b/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceController.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Displays a warning message on the factory reset screen when multiple switchable users are present
+ * on the vehicle.
+ */
+public class MasterClearOtherUsersPresentPreferenceController extends
+        PreferenceController<Preference> {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public MasterClearOtherUsersPresentPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setVisible(!mCarUserManagerHelper.getAllSwitchableUsers().isEmpty());
+    }
+}
diff --git a/src/com/android/car/settings/system/MasterClearResetEsimPreferenceController.java b/src/com/android/car/settings/system/MasterClearResetEsimPreferenceController.java
new file mode 100644
index 0000000..7a695d0
--- /dev/null
+++ b/src/com/android/car/settings/system/MasterClearResetEsimPreferenceController.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.SystemProperties;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Factory reset specific version of {@link ResetEsimPreferenceController} that is only available if
+ * the system property {@code masterclear.allow_retain_esim_profiles_after_fdr} is also true.
+ */
+public class MasterClearResetEsimPreferenceController extends ResetEsimPreferenceController {
+
+    @VisibleForTesting
+    static final String KEY_SHOW_ESIM_RESET_CHECKBOX =
+            "masterclear.allow_retain_esim_profiles_after_fdr";
+
+    public MasterClearResetEsimPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        int status = super.getAvailabilityStatus();
+        if (status == AVAILABLE) {
+            return SystemProperties.get(KEY_SHOW_ESIM_RESET_CHECKBOX,
+                    Boolean.FALSE.toString()).equals(Boolean.TRUE.toString()) ? AVAILABLE
+                    : UNSUPPORTED_ON_DEVICE;
+        }
+        return status;
+    }
+}
diff --git a/src/com/android/car/settings/system/ModelInfoPreferenceController.java b/src/com/android/car/settings/system/ModelInfoPreferenceController.java
new file mode 100644
index 0000000..4fd8b53
--- /dev/null
+++ b/src/com/android/car/settings/system/ModelInfoPreferenceController.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.os.Build;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.DeviceInfoUtils;
+
+/** Updates the model info entry summary with the model info. */
+public class ModelInfoPreferenceController extends PreferenceController<Preference> {
+
+    public ModelInfoPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(Build.MODEL + DeviceInfoUtils.getMsvSuffix());
+    }
+}
diff --git a/src/com/android/car/settings/system/RegulatoryInfoDisplayActivity.java b/src/com/android/car/settings/system/RegulatoryInfoDisplayActivity.java
new file mode 100644
index 0000000..a7deb12
--- /dev/null
+++ b/src/com/android/car/settings/system/RegulatoryInfoDisplayActivity.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.SystemProperties;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+
+import java.util.Locale;
+
+/**
+ * Code drop from {@link com.android.settings.RegulatoryInfoDisplayActivity}.
+ *
+ * {@link Activity} that displays regulatory information for the "Regulatory information"
+ * preference item, and when "*#07#" is dialed on the Phone keypad. To enable this feature,
+ * set the "config_show_regulatory_info" boolean to true in a device overlay resource, and in the
+ * same overlay, either add a drawable named "regulatory_info.png" containing a graphical version
+ * of the required regulatory info (If ro.bootloader.hardware.sku property is set use
+ * "regulatory_info_<sku>.png where sku is ro.bootloader.hardware.sku property value in lowercase"),
+ * or add a string resource named "regulatory_info_text" with an HTML version of the required
+ * information (text will be centered in the dialog).
+ */
+public class RegulatoryInfoDisplayActivity extends Activity implements
+        DialogInterface.OnDismissListener {
+
+    private static final String DEFAULT_REGULATORY_INFO_FILEPATH =
+            "/data/misc/elabel/regulatory_info.png";
+    private static final String REGULATORY_INFO_FILEPATH_TEMPLATE =
+            "/data/misc/elabel/regulatory_info_%s.png";
+
+    private final String mRegulatoryInfoResource = "regulatory_info";
+
+    /**
+     * Display the regulatory info graphic in a dialog window.
+     */
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Resources resources = getResources();
+
+        if (!resources.getBoolean(R.bool.config_show_regulatory_info)) {
+            finish();   // No regulatory info to display for this device.
+        }
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                .setTitle(R.string.regulatory_labels)
+                .setOnDismissListener(this);
+
+        boolean regulatoryInfoDrawableExists = false;
+
+        String regulatoryInfoFile = getRegulatoryInfoImageFileName();
+        Bitmap regulatoryInfoBitmap = BitmapFactory.decodeFile(regulatoryInfoFile);
+
+        if (regulatoryInfoBitmap != null) {
+            regulatoryInfoDrawableExists = true;
+        }
+
+        int resId = 0;
+        if (!regulatoryInfoDrawableExists) {
+            resId = getImageResourceId();
+        }
+        if (resId != 0) {
+            try {
+                Drawable d = getDrawable(resId);
+                // Set to false if the width or height is <= 2.
+                // (missing PNG can return an empty 2x2 pixel Drawable)
+                regulatoryInfoDrawableExists = (d.getIntrinsicWidth() > 2
+                        && d.getIntrinsicHeight() > 2);
+            } catch (Resources.NotFoundException ignored) {
+                regulatoryInfoDrawableExists = false;
+            }
+        }
+
+        CharSequence regulatoryText = resources.getText(R.string.regulatory_info_text);
+
+        if (regulatoryInfoDrawableExists) {
+            View view = getLayoutInflater().inflate(R.layout.regulatory_info, null);
+            ImageView image = view.findViewById(R.id.regulatory_info);
+            if (regulatoryInfoBitmap != null) {
+                image.setImageBitmap(regulatoryInfoBitmap);
+            } else {
+                image.setImageResource(resId);
+            }
+            builder.setView(view);
+            builder.show();
+        } else if (regulatoryText.length() > 0) {
+            builder.setMessage(regulatoryText);
+            AlertDialog dialog = builder.show();
+            // We have to show the dialog first, or the setGravity() call will throw a NPE.
+            TextView messageText = (TextView) dialog.findViewById(android.R.id.message);
+            messageText.setGravity(Gravity.CENTER);
+        } else {
+            // Neither drawable nor text resource exists, finish activity.
+            finish();
+        }
+    }
+
+    private int getImageResourceId() {
+        // Use regulatory_info by default.
+        int resId = getResources().getIdentifier(
+                mRegulatoryInfoResource, "drawable", getPackageName());
+
+        // When hardware sku property exists, use regulatory_info_<sku> resource if valid.
+        String sku = getSku();
+        if (!TextUtils.isEmpty(sku)) {
+            String regulatory_info_res = mRegulatoryInfoResource + "_" + sku.toLowerCase();
+            int id = getResources().getIdentifier(
+                    regulatory_info_res, "drawable", getPackageName());
+            if (id != 0) {
+                resId = id;
+            }
+        }
+        return resId;
+    }
+
+    @Override
+    public void onDismiss(DialogInterface dialog) {
+        finish();
+    }
+
+    @VisibleForTesting
+    static String getSku() {
+        return SystemProperties.get("ro.boot.hardware.sku", "");
+    }
+
+    @VisibleForTesting
+    static String getRegulatoryInfoImageFileName() {
+        String sku = getSku();
+        if (TextUtils.isEmpty(sku)) {
+            return DEFAULT_REGULATORY_INFO_FILEPATH;
+        } else {
+            return String.format(Locale.US, REGULATORY_INFO_FILEPATH_TEMPLATE, sku.toLowerCase());
+        }
+    }
+}
diff --git a/src/com/android/car/settings/system/ResetAppPrefFragment.java b/src/com/android/car/settings/system/ResetAppPrefFragment.java
new file mode 100644
index 0000000..74a4760
--- /dev/null
+++ b/src/com/android/car/settings/system/ResetAppPrefFragment.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.app.AppOpsManager;
+import android.app.INotificationManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.widget.Button;
+import android.widget.Toast;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
+
+import java.lang.ref.WeakReference;
+import java.util.List;
+
+/**
+ * Presents the user with information about resetting app preferences.
+ */
+public class ResetAppPrefFragment extends SettingsFragment {
+
+    private static final Logger LOG = new Logger(ResetAppPrefFragment.class);
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.reset_app_pref_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        Button resetAppsButton = requireActivity().findViewById(R.id.action_button1);
+        resetAppsButton.setText(requireContext().getString(R.string.reset_app_pref_button_text));
+        resetAppsButton.setOnClickListener(v -> resetAppPreferences());
+    }
+
+    private void resetAppPreferences() {
+        new ResetTask(requireContext().getApplicationContext()).execute();
+    }
+
+    private static class ResetTask extends AsyncTask<Void, Void, Void> {
+
+        private final WeakReference<Context> mContext;
+
+        ResetTask(Context context) {
+            mContext = new WeakReference<>(context);
+        }
+
+        @Override
+        protected Void doInBackground(Void... unused) {
+            Context context = mContext.get();
+            if (context == null) {
+                LOG.w("Unable to reset app preferences. Null context");
+                return null;
+            }
+            PackageManager packageManager = context.getPackageManager();
+            IBinder notificationManagerServiceBinder = ServiceManager.getService(
+                    Context.NOTIFICATION_SERVICE);
+            if (notificationManagerServiceBinder == null) {
+                LOG.w("Unable to reset app preferences. Null notification manager service");
+                return null;
+            }
+            INotificationManager notificationManagerService =
+                    INotificationManager.Stub.asInterface(notificationManagerServiceBinder);
+
+            // Reset app notifications.
+            // Reset disabled apps.
+            List<ApplicationInfo> apps = packageManager.getInstalledApplications(
+                    PackageManager.MATCH_DISABLED_COMPONENTS);
+            for (ApplicationInfo app : apps) {
+                try {
+                    notificationManagerService.setNotificationsEnabledForPackage(
+                            app.packageName,
+                            app.uid, true);
+                } catch (RemoteException e) {
+                    LOG.w("Unable to reset notification preferences for app: " + app.name, e);
+                }
+                if (!app.enabled) {
+                    if (packageManager.getApplicationEnabledSetting(app.packageName)
+                            == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) {
+                        packageManager.setApplicationEnabledSetting(app.packageName,
+                                PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
+                                PackageManager.DONT_KILL_APP);
+                    }
+                }
+            }
+
+            // Reset default applications for actions.
+            // Reset background data restrictions for apps.
+            // Reset permission restrictions.
+            try {
+                IBinder packageManagerServiceBinder = ServiceManager.getService("package");
+                if (packageManagerServiceBinder == null) {
+                    LOG.w("Unable to reset app preferences. Null package manager service");
+                    return null;
+                }
+                IPackageManager.Stub.asInterface(
+                        packageManagerServiceBinder).resetApplicationPreferences(
+                        new CarUserManagerHelper(context).getCurrentForegroundUserId());
+            } catch (RemoteException e) {
+                LOG.w("Unable to reset app preferences", e);
+            }
+
+            // Cleanup.
+            ((AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE)).resetAllModes();
+
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Void unused) {
+            super.onPostExecute(unused);
+            Context context = mContext.get();
+            if (context != null) {
+                Toast.makeText(context, R.string.reset_app_pref_complete_toast,
+                        Toast.LENGTH_SHORT).show();
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/system/ResetEsimPreferenceController.java b/src/com/android/car/settings/system/ResetEsimPreferenceController.java
new file mode 100644
index 0000000..928340c
--- /dev/null
+++ b/src/com/android/car/settings/system/ResetEsimPreferenceController.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.provider.Settings;
+import android.telephony.euicc.EuiccManager;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller which determines if a checkbox to reset the device's eSIMs is shown. Not all
+ * devices support eSIMs.
+ */
+public class ResetEsimPreferenceController extends PreferenceController<TwoStatePreference> {
+
+    public ResetEsimPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return showEuiccSettings() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    private boolean showEuiccSettings() {
+        EuiccManager euiccManager = (EuiccManager) getContext().getSystemService(
+                Context.EUICC_SERVICE);
+        if (!euiccManager.isEnabled()) {
+            return false;
+        }
+        ContentResolver resolver = getContext().getContentResolver();
+        return Settings.Global.getInt(resolver, Settings.Global.EUICC_PROVISIONED, 0) != 0
+                || Settings.Global.getInt(resolver, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0)
+                != 0;
+    }
+}
diff --git a/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java b/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
new file mode 100644
index 0000000..11d2240
--- /dev/null
+++ b/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.app.ActivityManager;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.net.ConnectivityManager;
+import android.net.NetworkPolicyManager;
+import android.net.Uri;
+import android.net.wifi.WifiManager;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.RecoverySystem;
+import android.provider.Telephony;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.widget.Button;
+import android.widget.Toast;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.fragment.app.Fragment;
+import androidx.preference.PreferenceManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Final warning presented to user to confirm restoring network settings to the factory default.
+ * If a user confirms, all settings are reset for connectivity, Wi-Fi, and Bluetooth.
+ */
+public class ResetNetworkConfirmFragment extends SettingsFragment {
+
+    // Copied from com.android.settings.network.ApnSettings.
+    @VisibleForTesting
+    static final String RESTORE_CARRIERS_URI = "content://telephony/carriers/restore";
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.reset_network_confirm_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        Button resetSettingsButton = requireActivity().findViewById(R.id.action_button1);
+        resetSettingsButton.setText(
+                requireContext().getString(R.string.reset_network_confirm_button_text));
+        resetSettingsButton.setOnClickListener(v -> resetNetwork());
+    }
+
+    private void resetNetwork() {
+        if (ActivityManager.isUserAMonkey()) {
+            return;
+        }
+
+        Context context = requireActivity().getApplicationContext();
+
+        ConnectivityManager connectivityManager = (ConnectivityManager)
+                context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        if (connectivityManager != null) {
+            connectivityManager.factoryReset();
+        }
+
+        WifiManager wifiManager = (WifiManager)
+                context.getSystemService(Context.WIFI_SERVICE);
+        if (wifiManager != null) {
+            wifiManager.factoryReset();
+        }
+
+        BluetoothManager btManager = (BluetoothManager)
+                context.getSystemService(Context.BLUETOOTH_SERVICE);
+        if (btManager != null) {
+            BluetoothAdapter btAdapter = btManager.getAdapter();
+            if (btAdapter != null) {
+                btAdapter.factoryReset();
+            }
+        }
+
+        int networkSubscriptionId = getNetworkSubscriptionId();
+        TelephonyManager telephonyManager = (TelephonyManager)
+                context.getSystemService(Context.TELEPHONY_SERVICE);
+        if (telephonyManager != null) {
+            telephonyManager.factoryReset(networkSubscriptionId);
+        }
+
+        NetworkPolicyManager policyManager = (NetworkPolicyManager)
+                context.getSystemService(Context.NETWORK_POLICY_SERVICE);
+        if (policyManager != null) {
+            String subscriberId = telephonyManager.getSubscriberId(networkSubscriptionId);
+            policyManager.factoryReset(subscriberId);
+        }
+
+        restoreDefaultApn(context, networkSubscriptionId);
+
+        // There has been issues when Sms raw table somehow stores orphan
+        // fragments. They lead to garbled message when new fragments come
+        // in and combined with those stale ones. In case this happens again,
+        // user can reset all network settings which will clean up this table.
+        cleanUpSmsRawTable(context);
+
+        if (shouldResetEsim()) {
+            new EraseEsimAsyncTask(getContext(), context.getPackageName(), this).execute();
+        } else {
+            showCompletionToast(getContext());
+        }
+    }
+
+    private boolean shouldResetEsim() {
+        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(
+                requireContext());
+        return sharedPreferences.getBoolean(requireContext().getString(R.string.pk_reset_esim),
+                false);
+    }
+
+    private int getNetworkSubscriptionId() {
+        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(
+                requireContext());
+        String stringId = sharedPreferences.getString(
+                requireContext().getString(R.string.pk_reset_network_subscription), null);
+        if (TextUtils.isEmpty(stringId)) {
+            return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+        }
+        return Integer.parseInt(stringId);
+    }
+
+    private void restoreDefaultApn(Context context, int subscriptionId) {
+        Uri uri = Uri.parse(RESTORE_CARRIERS_URI);
+
+        if (SubscriptionManager.isUsableSubIdValue(subscriptionId)) {
+            uri = Uri.withAppendedPath(uri, "subId/" + subscriptionId);
+        }
+
+        ContentResolver resolver = context.getContentResolver();
+        resolver.delete(uri, null, null);
+    }
+
+    private void cleanUpSmsRawTable(Context context) {
+        ContentResolver resolver = context.getContentResolver();
+        Uri uri = Uri.withAppendedPath(Telephony.Sms.CONTENT_URI, "raw/permanentDelete");
+        resolver.delete(uri, null, null);
+    }
+
+    private static void showCompletionToast(Context context) {
+        Toast.makeText(context, R.string.reset_network_complete_toast,
+                Toast.LENGTH_SHORT).show();
+    }
+
+    private static class EraseEsimAsyncTask extends AsyncTask<Void, Void, Boolean> {
+
+        private final Context mContext;
+        private final String mPackageName;
+        private final Fragment mFragment;
+
+        EraseEsimAsyncTask(Context context, String packageName, Fragment parent) {
+            mContext = context;
+            mPackageName = packageName;
+            mFragment = parent;
+        }
+
+        @Override
+        protected Boolean doInBackground(Void... voids) {
+            return RecoverySystem.wipeEuiccData(mContext, mPackageName);
+        }
+
+        @Override
+        protected void onPostExecute(Boolean succeeded) {
+            if (succeeded) {
+                showCompletionToast(mContext);
+            } else {
+                ErrorDialog.show(mFragment, R.string.reset_esim_error_title);
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
new file mode 100644
index 0000000..b8ca854
--- /dev/null
+++ b/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static android.os.UserManager.DISALLOW_NETWORK_RESET;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Controller which determines if network reset should be displayed based on user status. */
+public class ResetNetworkEntryPreferenceController extends PreferenceController<Preference> {
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public ResetNetworkEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return isUserRestricted() ? DISABLED_FOR_USER : AVAILABLE;
+    }
+
+    private boolean isUserRestricted() {
+        return !mCarUserManagerHelper.isCurrentProcessAdminUser()
+                || mCarUserManagerHelper.isCurrentProcessUserHasRestriction(DISALLOW_NETWORK_RESET);
+    }
+}
diff --git a/src/com/android/car/settings/system/ResetNetworkFragment.java b/src/com/android/car/settings/system/ResetNetworkFragment.java
new file mode 100644
index 0000000..c4b574f
--- /dev/null
+++ b/src/com/android/car/settings/system/ResetNetworkFragment.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static android.app.Activity.RESULT_OK;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.security.CheckLockActivity;
+
+/**
+ * Presents the user with information about restoring network settings to the factory default
+ * values. If a user confirms, they will first be required to authenticate then presented with a
+ * secondary confirmation: {@link ResetNetworkConfirmFragment}.
+ */
+public class ResetNetworkFragment extends SettingsFragment {
+
+    // Arbitrary request code for starting CheckLockActivity when the reset button is clicked.
+    private static final int REQUEST_CODE = 123;
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.reset_network_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        Button resetSettingsButton = requireActivity().findViewById(R.id.action_button1);
+        resetSettingsButton.setText(requireContext().getString(R.string.reset_network_button_text));
+        resetSettingsButton.setOnClickListener(v -> startActivityForResult(new Intent(
+                getContext(), CheckLockActivity.class), REQUEST_CODE));
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
+            launchFragment(new ResetNetworkConfirmFragment());
+        }
+    }
+}
diff --git a/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java
new file mode 100644
index 0000000..b24d5f7
--- /dev/null
+++ b/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.text.SpannableString;
+import android.text.SpannableStringBuilder;
+import android.text.style.BulletSpan;
+
+import androidx.annotation.StringRes;
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Controller to determine which items appear as resetable within the reset network description. */
+public class ResetNetworkItemsPreferenceController extends PreferenceController<Preference> {
+
+    public ResetNetworkItemsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        SpannableStringBuilder sb = new SpannableStringBuilder();
+        sb.append(getContext().getString(R.string.reset_network_desc));
+        sb.append(System.lineSeparator());
+        if (hasFeature(PackageManager.FEATURE_WIFI)) {
+            addBulletedValue(sb, R.string.reset_network_item_wifi);
+        }
+        if (hasFeature(PackageManager.FEATURE_TELEPHONY)) {
+            addBulletedValue(sb, R.string.reset_network_item_mobile);
+        }
+        if (hasFeature(PackageManager.FEATURE_BLUETOOTH)) {
+            addBulletedValue(sb, R.string.reset_network_item_bluetooth);
+        }
+        preference.setTitle(sb);
+    }
+
+    private boolean hasFeature(String feature) {
+        return getContext().getPackageManager().hasSystemFeature(feature);
+    }
+
+    private void addBulletedValue(SpannableStringBuilder sb, @StringRes int resId) {
+        sb.append(System.lineSeparator());
+        SpannableString value = new SpannableString(getContext().getString(resId));
+        // Match android.content.res.StringBlock which applies a 10 gapWidth BulletSpan as the <li>
+        // style. This is a workaround for translation specific behavior in StringBlock which led
+        // to multiple indents when building the list using getText(resId).
+        value.setSpan(new BulletSpan(/* gapWidth= */ 10), /* start= */ 0,
+                value.length(), /* flags= */ 0);
+        sb.append(value);
+    }
+}
diff --git a/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
new file mode 100644
index 0000000..fab9b03
--- /dev/null
+++ b/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.text.TextUtils;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Controller which determines if a network selection option is visible. On devices with multiple
+ * network subscriptions, a user may select the network to reset.
+ */
+public class ResetNetworkSubscriptionPreferenceController extends
+        PreferenceController<ListPreference> {
+
+    private final SubscriptionManager mSubscriptionManager;
+
+    public ResetNetworkSubscriptionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSubscriptionManager = (SubscriptionManager) context.getSystemService(
+                Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    protected void updateState(ListPreference preference) {
+        List<SubscriptionInfo> subscriptions = mSubscriptionManager.getActiveSubscriptionInfoList();
+        if (subscriptions == null || subscriptions.isEmpty()) {
+            // No subscriptions to reset.
+            preference.setValue(String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
+            preference.setVisible(false);
+            return;
+        }
+        if (subscriptions.size() == 1) {
+            // Only one subscription, so nothing else to select. Use it and hide the preference.
+            preference.setValue(String.valueOf(subscriptions.get(0).getSubscriptionId()));
+            preference.setVisible(false);
+            return;
+        }
+
+        int defaultSubscriptionId = getDefaultSubscriptionId();
+        int selectedIndex = 0;
+        int size = subscriptions.size();
+        List<String> subscriptionNames = new ArrayList<>(size);
+        List<String> subscriptionIds = new ArrayList<>(size);
+        for (int i = 0; i < size; i++) {
+            SubscriptionInfo subscription = subscriptions.get(i);
+            int subscriptionId = subscription.getSubscriptionId();
+            if (subscriptionId == defaultSubscriptionId) {
+                // Set the default as the first selected value.
+                selectedIndex = i;
+            }
+            subscriptionNames.add(getSubscriptionName(subscription));
+            subscriptionIds.add(String.valueOf(subscriptionId));
+        }
+
+        preference.setEntries(toCharSequenceArray(subscriptionNames));
+        preference.setEntryValues(toCharSequenceArray(subscriptionIds));
+        preference.setTitle(subscriptionNames.get(selectedIndex));
+        preference.setValueIndex(selectedIndex);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ListPreference preference, Object newValue) {
+        String subscriptionIdStr = (String) newValue;
+        int index = preference.findIndexOfValue(subscriptionIdStr);
+        CharSequence subscriptionName = preference.getEntries()[index];
+        preference.setTitle(subscriptionName);
+        return true;
+    }
+
+    /**
+     * Returns the default subscription id in the order of data, voice, sms, system subscription.
+     */
+    private int getDefaultSubscriptionId() {
+        int defaultSubscriptionId = SubscriptionManager.getDefaultDataSubscriptionId();
+        if (!SubscriptionManager.isUsableSubIdValue(defaultSubscriptionId)) {
+            defaultSubscriptionId = SubscriptionManager.getDefaultVoiceSubscriptionId();
+        }
+        if (!SubscriptionManager.isUsableSubIdValue(defaultSubscriptionId)) {
+            defaultSubscriptionId = SubscriptionManager.getDefaultSmsSubscriptionId();
+        }
+        if (!SubscriptionManager.isUsableSubIdValue(defaultSubscriptionId)) {
+            defaultSubscriptionId = SubscriptionManager.getDefaultSubscriptionId();
+        }
+        return defaultSubscriptionId;
+    }
+
+    /**
+     * Returns the subscription display name falling back to the number, the carrier, and then
+     * network id codes.
+     */
+    private String getSubscriptionName(SubscriptionInfo subscription) {
+        String name = subscription.getDisplayName().toString();
+        if (TextUtils.isEmpty(name)) {
+            name = subscription.getNumber();
+        }
+        if (TextUtils.isEmpty(name)) {
+            name = subscription.getCarrierName().toString();
+        }
+        if (TextUtils.isEmpty(name)) {
+            name = getContext().getString(R.string.reset_network_fallback_subscription_name,
+                    subscription.getMcc(), subscription.getMnc(), subscription.getSimSlotIndex(),
+                    subscription.getSubscriptionId());
+        }
+        return name;
+    }
+
+    private CharSequence[] toCharSequenceArray(List<String> list) {
+        CharSequence[] array = new CharSequence[list.size()];
+        list.toArray(array);
+        return array;
+    }
+}
diff --git a/src/com/android/car/settings/system/ResetOptionsFragment.java b/src/com/android/car/settings/system/ResetOptionsFragment.java
new file mode 100644
index 0000000..a0643cf
--- /dev/null
+++ b/src/com/android/car/settings/system/ResetOptionsFragment.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Shows options to reset network settings, reset app preferences, and factory reset the device.
+ */
+public class ResetOptionsFragment extends SettingsFragment {
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.reset_options_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/system/SecurityPatchPreferenceController.java b/src/com/android/car/settings/system/SecurityPatchPreferenceController.java
new file mode 100644
index 0000000..f48357c
--- /dev/null
+++ b/src/com/android/car/settings/system/SecurityPatchPreferenceController.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.DeviceInfoUtils;
+
+/** Updates the security patch entry summary with the security patch. */
+public class SecurityPatchPreferenceController extends PreferenceController<Preference> {
+
+    public SecurityPatchPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setSummary(DeviceInfoUtils.getSecurityPatch());
+    }
+}
diff --git a/src/com/android/car/settings/system/SystemSettingsFragment.java b/src/com/android/car/settings/system/SystemSettingsFragment.java
index 4f39e32..5b5efc2 100644
--- a/src/com/android/car/settings/system/SystemSettingsFragment.java
+++ b/src/com/android/car/settings/system/SystemSettingsFragment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 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.
@@ -11,135 +11,21 @@
  * 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
+ * limitations under the License.
  */
 
-
 package com.android.car.settings.system;
 
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.os.Bundle;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
-
 import com.android.car.settings.R;
-import com.android.car.settings.common.ExtraSettingsLoader;
-import com.android.car.settings.common.ListItemSettingsFragment;
-import com.android.car.settingslib.language.LanguagePickerUtils;
-import com.android.internal.app.LocaleHelper;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Locale;
-import java.util.Map;
+import com.android.car.settings.common.SettingsFragment;
 
 /**
  * Shows basic info about the system and provide some actions like update, reset etc.
  */
-public class SystemSettingsFragment extends ListItemSettingsFragment {
-
-    // Copied from hidden version in android.provider.Settings
-    private static final String ACTION_SYSTEM_UPDATE_SETTINGS =
-            "android.settings.SYSTEM_UPDATE_SETTINGS";
-
-    private static final String ACTION_SETTING_VIEW_LICENSE =
-            "android.settings.WEBVIEW_LICENSE";
-
-    private ListItemProvider mItemProvider;
-
-    public static SystemSettingsFragment getInstance() {
-        SystemSettingsFragment systemSettingsFragment = new SystemSettingsFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.system_setting_title);
-        systemSettingsFragment.setArguments(bundle);
-        return systemSettingsFragment;
-    }
+public class SystemSettingsFragment extends SettingsFragment {
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        mItemProvider = new ListItemProvider.ListProvider(getListItems());
-        // super.onActivityCreated() will need itemProvider, so call it after the provider
-        // is initialized.
-        super.onActivityCreated(savedInstanceState);
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        return mItemProvider;
-    }
-
-    private ArrayList<ListItem> getListItems() {
-        ArrayList<ListItem> lineItems = new ArrayList<>();
-
-        lineItems.add(createLanguageListItem());
-        lineItems.addAll(createSystemUpdateListItems());
-        lineItems.add(createAboutSystemListItem());
-        lineItems.add(createLegalInfoListItem());
-
-        return lineItems;
-    }
-
-    private TextListItem createLanguageListItem() {
-        Context context = getContext();
-        TextListItem languageItem = new TextListItem(context);
-        languageItem.setTitle(context.getString(R.string.language_settings));
-        Locale locale = LanguagePickerUtils.getConfiguredLocale();
-        languageItem.setBody(LocaleHelper.getDisplayName(locale, locale, /* sentenceCase= */ true));
-        languageItem.setPrimaryActionIcon(
-                R.drawable.ic_language, /* useLargeIcon= */ false);
-        languageItem.setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-        languageItem.setOnClickListener(
-                v -> getFragmentController().launchFragment(LanguagePickerFragment.newInstance()));
-        return languageItem;
-    }
-
-    private Collection<ListItem> createSystemUpdateListItems() {
-        Collection<ListItem> collection = new ArrayList<>();
-        Context context = getContext();
-
-        Intent settingsIntent = new Intent(ACTION_SYSTEM_UPDATE_SETTINGS);
-        PackageManager packageManager = context.getPackageManager();
-        if (settingsIntent.resolveActivity(packageManager) != null) {
-            collection.add(new SystemUpdatesListItem(context, settingsIntent));
-        }
-
-        ExtraSettingsLoader extraSettingLoader = new ExtraSettingsLoader(context);
-        Map<String, Collection<ListItem>> extraSettings = extraSettingLoader.load();
-        collection.addAll(extraSettings.get(ExtraSettingsLoader.SYSTEM_CATEGORY));
-        return collection;
-    }
-
-    private TextListItem createAboutSystemListItem() {
-        Context context = getContext();
-        TextListItem aboutSystemItem = new TextListItem(context);
-        aboutSystemItem.setTitle(context.getString(R.string.about_settings));
-        aboutSystemItem.setBody(
-                context.getString(R.string.about_summary, Build.VERSION.RELEASE));
-        aboutSystemItem.setPrimaryActionIcon(
-                R.drawable.ic_settings_about, /* useLargeIcon= */ false);
-        aboutSystemItem.setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-        aboutSystemItem.setOnClickListener(
-                v -> getFragmentController().launchFragment(AboutSettingsFragment.getInstance()));
-        return aboutSystemItem;
-    }
-
-    private TextListItem createLegalInfoListItem() {
-        Context context = getContext();
-        TextListItem legalInfoItem = new TextListItem(context);
-        legalInfoItem.setTitle(context.getString(R.string.legal_information));
-        legalInfoItem.setPrimaryActionIcon(
-                R.drawable.ic_settings_about, /* useLargeIcon= */ false);
-        legalInfoItem.setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false);
-        legalInfoItem.setOnClickListener(v -> {
-            Intent intent = new Intent();
-            intent.setAction(ACTION_SETTING_VIEW_LICENSE);
-            context.startActivity(intent);
-        });
-        return legalInfoItem;
+    protected int getPreferenceScreenResId() {
+        return R.xml.system_settings_fragment;
     }
 }
diff --git a/src/com/android/car/settings/system/SystemUpdatePreferenceController.java b/src/com/android/car/settings/system/SystemUpdatePreferenceController.java
new file mode 100644
index 0000000..a3389c3
--- /dev/null
+++ b/src/com/android/car/settings/system/SystemUpdatePreferenceController.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static android.content.Context.CARRIER_CONFIG_SERVICE;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.PersistableBundle;
+import android.telephony.CarrierConfigManager;
+import android.text.TextUtils;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/**
+ * Controller which determines if the system update preference should be displayed based on
+ * device and user status. When the preference is clicked, this controller broadcasts a client
+ * initiated action if an intent is available in carrier-specific telephony configuration.
+ *
+ * @see CarrierConfigManager#KEY_CI_ACTION_ON_SYS_UPDATE_BOOL
+ */
+public class SystemUpdatePreferenceController extends PreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(SystemUpdatePreferenceController.class);
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private boolean mActivityFound;
+
+    public SystemUpdatePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!getContext().getResources().getBoolean(R.bool.config_show_system_update_settings)) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return mCarUserManagerHelper.isCurrentProcessAdminUser() ? AVAILABLE : DISABLED_FOR_USER;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        Preference preference = getPreference();
+        Intent intent = preference.getIntent();
+        if (intent != null) {
+            // Find the activity that is in the system image.
+            PackageManager pm = getContext().getPackageManager();
+            List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
+            int listSize = list.size();
+            for (int i = 0; i < listSize; i++) {
+                ResolveInfo resolveInfo = list.get(i);
+                if ((resolveInfo.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)
+                        != 0) {
+                    // Replace the intent with this specific activity.
+                    preference.setIntent(
+                            new Intent().setClassName(resolveInfo.activityInfo.packageName,
+                                    resolveInfo.activityInfo.name));
+                    // Set the preference title to the activity's label.
+                    preference.setTitle(resolveInfo.loadLabel(pm));
+                    mActivityFound = true;
+                }
+            }
+        }
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        preference.setVisible(mActivityFound);
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        CarrierConfigManager configManager = (CarrierConfigManager) getContext().getSystemService(
+                CARRIER_CONFIG_SERVICE);
+        PersistableBundle b = configManager.getConfig();
+        if (b != null && b.getBoolean(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_BOOL)) {
+            ciActionOnSysUpdate(b);
+        }
+        // Don't handle so that preference framework will launch the preference intent.
+        return false;
+    }
+
+    /** Trigger client initiated action (send intent) on system update. */
+    private void ciActionOnSysUpdate(PersistableBundle b) {
+        String intentStr = b.getString(
+                CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING);
+        if (!TextUtils.isEmpty(intentStr)) {
+            String extra = b.getString(
+                    CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING);
+            String extraVal = b.getString(
+                    CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING);
+
+            Intent intent = new Intent(intentStr);
+            if (!TextUtils.isEmpty(extra)) {
+                intent.putExtra(extra, extraVal);
+            }
+            LOG.d("ciActionOnSysUpdate: broadcasting intent " + intentStr + " with extra " + extra
+                    + ", " + extraVal);
+            getContext().getApplicationContext().sendBroadcast(intent);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/system/SystemUpdatesListItem.java b/src/com/android/car/settings/system/SystemUpdatesListItem.java
deleted file mode 100644
index 16e30df..0000000
--- a/src/com/android/car/settings/system/SystemUpdatesListItem.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.system;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-import android.text.TextUtils;
-import android.view.View;
-
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-
-
-/**
- * A LineItem that links to system update.
- */
-class SystemUpdatesListItem extends TextListItem {
-    private final Context mContext;
-    private final Intent mSettingsIntent;
-
-    SystemUpdatesListItem(Context context, Intent settingsIntent) {
-        super(context);
-        mContext = context;
-        mSettingsIntent = settingsIntent;
-        setTitle(context.getString(R.string.system_update_settings_list_item_title));
-        setPrimaryActionIcon(R.drawable.ic_system_update, /*useLargeIcon=*/ false);
-        setSupplementalIcon(R.drawable.ic_chevron_right, /*showDivider=*/ false);
-        setOnClickListener(this::onClick);
-    }
-
-    private void onClick(View view) {
-        mContext.startActivity(mSettingsIntent);
-
-        // copy what the phone setting is doing, sending out a carrier defined intent
-        CarrierConfigManager configManager =
-                (CarrierConfigManager) mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
-        PersistableBundle b = configManager.getConfig();
-        if (b == null || !b.getBoolean(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_BOOL)) {
-            return;
-        }
-        String intentStr = b.getString(CarrierConfigManager
-                .KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING);
-        if (!TextUtils.isEmpty(intentStr)) {
-            String extra = b.getString(CarrierConfigManager
-                    .KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING);
-            Intent intent = new Intent(intentStr);
-            if (!TextUtils.isEmpty(extra)) {
-                String extraVal = b.getString(CarrierConfigManager
-                        .KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING);
-                intent.putExtra(extra, extraVal);
-            }
-            mContext.getApplicationContext().sendBroadcast(intent);
-        }
-    }
-}
diff --git a/src/com/android/car/settings/system/ThirdPartyLicensesActivity.java b/src/com/android/car/settings/system/ThirdPartyLicensesActivity.java
new file mode 100644
index 0000000..571e7b7
--- /dev/null
+++ b/src/com/android/car/settings/system/ThirdPartyLicensesActivity.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import android.content.ActivityNotFoundException;
+import android.content.ContentResolver;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.SystemProperties;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+import androidx.core.content.FileProvider;
+import androidx.fragment.app.FragmentActivity;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+
+import java.io.File;
+
+/**
+ * The activity that displays third-party licenses.
+ */
+public class ThirdPartyLicensesActivity extends FragmentActivity implements
+        LoaderManager.LoaderCallbacks<File> {
+    private static final Logger LOG = new Logger(ThirdPartyLicensesActivity.class);
+    private static final int LOADER_ID_LICENSE_HTML_LOADER = 0;
+    private static final String DEFAULT_LICENSE_PATH = "/system/etc/NOTICE.html.gz";
+    private static final String PROPERTY_LICENSE_PATH = "ro.config.license_path";
+    private static final String FILE_PROVIDER_AUTHORITY = "com.android.settings.files";
+    private static final String HTML_VIEWER_PACKAGE = "com.android.htmlviewer";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final String licenseHtmlPath =
+                SystemProperties.get(PROPERTY_LICENSE_PATH, DEFAULT_LICENSE_PATH);
+        if (isFilePathValid(licenseHtmlPath)) {
+            showSelectedFile(licenseHtmlPath);
+        } else {
+            showHtmlFromDefaultXmlFiles();
+        }
+    }
+
+    @Override
+    public Loader<File> onCreateLoader(int id, Bundle args) {
+        return new LicenseHtmlLoader(this);
+    }
+
+    @Override
+    public void onLoadFinished(Loader<File> loader, File generatedHtmlFile) {
+        showGeneratedHtmlFile(generatedHtmlFile);
+    }
+
+    @Override
+    public void onLoaderReset(Loader<File> loader) {
+    }
+
+    private void showSelectedFile(final String path) {
+        if (TextUtils.isEmpty(path)) {
+            LOG.e("The system property for the license file is empty");
+            showErrorAndFinish();
+            return;
+        }
+
+        final File file = new File(path);
+        if (!isFileValid(file)) {
+            LOG.e("License file " + path + " does not exist");
+            showErrorAndFinish();
+            return;
+        }
+        showHtmlFromUri(Uri.fromFile(file));
+    }
+
+    private void showErrorAndFinish() {
+        Toast.makeText(this, R.string.settings_license_activity_unavailable, Toast.LENGTH_LONG)
+                .show();
+        finish();
+    }
+
+    private void showHtmlFromUri(Uri uri) {
+        // Kick off external viewer due to WebView security restrictions; we
+        // carefully point it at HTMLViewer, since it offers to decompress
+        // before viewing.
+        final Intent intent = new Intent(Intent.ACTION_VIEW);
+        intent.setDataAndType(uri, "text/html");
+        intent.putExtra(Intent.EXTRA_TITLE, getString(R.string.settings_license_activity_title));
+        if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) {
+            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+        }
+        intent.addCategory(Intent.CATEGORY_DEFAULT);
+        intent.setPackage(HTML_VIEWER_PACKAGE);
+
+        try {
+            startActivity(intent);
+            finish();
+        } catch (ActivityNotFoundException e) {
+            LOG.e("Failed to find viewer", e);
+            showErrorAndFinish();
+        }
+    }
+
+    private void showHtmlFromDefaultXmlFiles() {
+        LoaderManager.getInstance(this).initLoader(LOADER_ID_LICENSE_HTML_LOADER, Bundle.EMPTY,
+                this);
+    }
+
+    private void showGeneratedHtmlFile(File generatedHtmlFile) {
+        if (generatedHtmlFile != null) {
+            LOG.i("File size: " + generatedHtmlFile.length());
+            showHtmlFromUri(getUriFromGeneratedHtmlFile(generatedHtmlFile));
+        } else {
+            LOG.e("Failed to generate.");
+            showErrorAndFinish();
+        }
+    }
+
+    private Uri getUriFromGeneratedHtmlFile(File generatedHtmlFile) {
+        return FileProvider.getUriForFile(this, FILE_PROVIDER_AUTHORITY, generatedHtmlFile);
+    }
+
+    private boolean isFilePathValid(final String path) {
+        return !TextUtils.isEmpty(path) && isFileValid(new File(path));
+    }
+
+    private boolean isFileValid(final File file) {
+        return file.exists() && file.length() != 0;
+    }
+}
diff --git a/src/com/android/car/settings/system/legal/LegalPreferenceController.java b/src/com/android/car/settings/system/legal/LegalPreferenceController.java
new file mode 100644
index 0000000..d05c852
--- /dev/null
+++ b/src/com/android/car/settings/system/legal/LegalPreferenceController.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system.legal;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/**
+ *  Base class for legal preferences. Locates an activity coupled with the given intent and updates
+ *  the preference accordingly.
+ */
+public abstract class LegalPreferenceController extends PreferenceController<Preference> {
+    private final PackageManager mPackageManager;
+    private ResolveInfo mResolveInfo;
+
+    public LegalPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mPackageManager = context.getPackageManager();
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        mResolveInfo = findMatchingSpecificActivity();
+        return mResolveInfo != null ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        if (mResolveInfo == null) {
+            return;
+        }
+
+        // Replace the intent with this specific activity.
+        preference.setIntent(new Intent().setClassName(
+                mResolveInfo.activityInfo.packageName,
+                mResolveInfo.activityInfo.name));
+
+        preference.setTitle(mResolveInfo.loadLabel(mPackageManager));
+    }
+
+    /** Intent with a matching system activity to display legal disclaimers or licenses. */
+    protected abstract Intent getIntent();
+
+    private ResolveInfo findMatchingSpecificActivity() {
+        Intent intent = getIntent();
+        if (intent == null) {
+            return null;
+        }
+
+        // Find the activity that is in the system image.
+        List<ResolveInfo> list = mPackageManager.queryIntentActivities(intent, /* flags= */ 0);
+        if (list == null) {
+            return null;
+        }
+
+        for (ResolveInfo resolveInfo : list) {
+            if ((resolveInfo.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)
+                    != 0) {
+                return resolveInfo;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/system/legal/TermsPreferenceController.java b/src/com/android/car/settings/system/legal/TermsPreferenceController.java
new file mode 100644
index 0000000..5381a64
--- /dev/null
+++ b/src/com/android/car/settings/system/legal/TermsPreferenceController.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system.legal;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Links to a system activity that displays Terms and Conditions. */
+public class TermsPreferenceController extends LegalPreferenceController {
+    private static final Intent INTENT = new Intent("android.settings.TERMS");
+
+    public TermsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Intent getIntent() {
+        return INTENT;
+    }
+}
diff --git a/src/com/android/car/settings/system/legal/ThirdPartyLicensePreferenceController.java b/src/com/android/car/settings/system/legal/ThirdPartyLicensePreferenceController.java
new file mode 100644
index 0000000..c239bc9
--- /dev/null
+++ b/src/com/android/car/settings/system/legal/ThirdPartyLicensePreferenceController.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system.legal;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Links to a system activity that displays a list of third party licenses. */
+public class ThirdPartyLicensePreferenceController extends LegalPreferenceController {
+    private static final Intent INTENT = new Intent("android.settings.THIRD_PARTY_LICENSE");
+
+    public ThirdPartyLicensePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Intent getIntent() {
+        return INTENT;
+    }
+}
diff --git a/src/com/android/car/settings/system/legal/WebViewLicensePreferenceController.java b/src/com/android/car/settings/system/legal/WebViewLicensePreferenceController.java
new file mode 100644
index 0000000..e25f7c2
--- /dev/null
+++ b/src/com/android/car/settings/system/legal/WebViewLicensePreferenceController.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system.legal;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Links to a system activity that displays System Webview Licenses. */
+public class WebViewLicensePreferenceController extends LegalPreferenceController {
+    private static final Intent INTENT = new Intent("android.settings.WEBVIEW_LICENSE");
+
+    public WebViewLicensePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Intent getIntent() {
+        return INTENT;
+    }
+}
diff --git a/src/com/android/car/settings/tts/PreferredEngineEntryPreferenceController.java b/src/com/android/car/settings/tts/PreferredEngineEntryPreferenceController.java
new file mode 100644
index 0000000..2e1919a
--- /dev/null
+++ b/src/com/android/car/settings/tts/PreferredEngineEntryPreferenceController.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic to set the summary for the preferred engine entry setting. */
+public class PreferredEngineEntryPreferenceController extends
+        PreferenceController<ButtonPreference> {
+
+    private static final Logger LOG = new Logger(PreferredEngineEntryPreferenceController.class);
+    private TtsEngines mEnginesHelper;
+
+    public PreferredEngineEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mEnginesHelper = new TtsEngines(context);
+    }
+
+    @Override
+    protected Class<ButtonPreference> getPreferenceType() {
+        return ButtonPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setOnButtonClickListener(preference -> {
+            TextToSpeech.EngineInfo info = mEnginesHelper.getEngineInfo(
+                    mEnginesHelper.getDefaultEngine());
+            Intent subSettingsIntent = mEnginesHelper.getSettingsIntent(info.name);
+            if (subSettingsIntent != null) {
+                getContext().startActivity(subSettingsIntent);
+            } else {
+                LOG.e("subSettingsIntent is null");
+            }
+        });
+    }
+
+    @Override
+    protected void updateState(ButtonPreference preference) {
+        TextToSpeech.EngineInfo info = mEnginesHelper.getEngineInfo(
+                mEnginesHelper.getDefaultEngine());
+        preference.setSummary(info.label);
+    }
+}
diff --git a/src/com/android/car/settings/tts/PreferredEngineFragment.java b/src/com/android/car/settings/tts/PreferredEngineFragment.java
new file mode 100644
index 0000000..4c71f75
--- /dev/null
+++ b/src/com/android/car/settings/tts/PreferredEngineFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Displays the fragment which gives the user an option to change the preferred TTS engine. */
+public class PreferredEngineFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.preferred_engine_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceController.java b/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceController.java
new file mode 100644
index 0000000..e0bbbbc
--- /dev/null
+++ b/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceController.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import static android.provider.Settings.Secure.TTS_DEFAULT_SYNTH;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.provider.Settings;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+import android.text.TextUtils;
+
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/** Populates the possible tts engines to set as the preferred engine. */
+public class PreferredEngineOptionsPreferenceController extends
+        PreferenceController<PreferenceGroup> {
+
+    private static final Logger LOG = new Logger(PreferredEngineOptionsPreferenceController.class);
+
+    private final TtsEngines mEnginesHelper;
+    private String mPreviousEngine;
+    private boolean mIsStarted;
+    private TextToSpeech mTts;
+
+    public PreferredEngineOptionsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mEnginesHelper = new TtsEngines(getContext());
+        mIsStarted = false;
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /**
+     * Creates the initial TTS object and constructs the related preferences when underlying
+     * fragment is created.
+     */
+    @Override
+    protected void onCreateInternal() {
+        mTts = new TextToSpeech(getContext(), /* listener= */ null);
+
+        for (TextToSpeech.EngineInfo engine : mEnginesHelper.getEngines()) {
+            TtsPreference preference = new TtsPreference(getContext(), engine);
+            preference.setKey(engine.name);
+            preference.setTitle(engine.label);
+            preference.setOnPreferenceClickListener(pref -> {
+                TextToSpeech.EngineInfo engineInfo = ((TtsPreference) pref).getEngineInfo();
+                TextToSpeech.EngineInfo current = mEnginesHelper.getEngineInfo(
+                        mTts.getCurrentEngine());
+                if (TextUtils.equals(engineInfo.label, current.label)) {
+                    return false;
+                }
+                updateDefaultEngine(engineInfo.name);
+                return true;
+            });
+            getPreference().addPreference(preference);
+        }
+    }
+
+    /** Note that the preference controller was started. */
+    @Override
+    protected void onStartInternal() {
+        mIsStarted = true;
+    }
+
+    /** Note that the preference controller was stopped. */
+    @Override
+    protected void onStopInternal() {
+        mIsStarted = false;
+    }
+
+    /** Cleans up the TTS object and clears the preferences representing the TTS engines. */
+    @Override
+    protected void onDestroyInternal() {
+        if (mTts != null) {
+            mTts.shutdown();
+            mTts = null;
+        }
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preference) {
+        TextToSpeech.EngineInfo current = mEnginesHelper.getEngineInfo(mTts.getCurrentEngine());
+        for (int i = 0; i < preference.getPreferenceCount(); i++) {
+            TtsPreference pref = (TtsPreference) preference.getPreference(i);
+            if (pref.getTitle().equals(current.label)) {
+                pref.setSummary(R.string.text_to_speech_current_engine);
+            } else {
+                pref.setSummary("");
+            }
+        }
+    }
+
+    private void updateDefaultEngine(String engineName) {
+        LOG.d("Updating default synth to : " + engineName);
+
+        // Keep track of the previous engine that was being used. So that
+        // we can reuse the previous engine.
+        //
+        // Note that if TextToSpeech#getCurrentEngine is not null, it means at
+        // the very least that we successfully bound to the engine service.
+        mPreviousEngine = mTts.getCurrentEngine();
+
+        // Step 1: Shut down the existing TTS engine.
+        LOG.i("Shutting down current tts engine");
+        if (mTts != null) {
+            mTts.shutdown();
+        }
+
+        // Step 2: Connect to the new TTS engine.
+        // Step 3 is continued on #onUpdateEngine (below) which is called when
+        // the app binds successfully to the engine.
+        LOG.i("Updating engine : Attempting to connect to engine: " + engineName);
+        mTts = new TextToSpeech(getContext(), status -> {
+            if (mIsStarted) {
+                onUpdateEngine(status);
+                refreshUi();
+            }
+        }, engineName);
+        LOG.i("Success");
+    }
+
+    /**
+     * We have now bound to the TTS engine the user requested. We will attempt to check voice data
+     * for the engine if we successfully bound to it, or revert to the previous engine if we
+     * didn't.
+     */
+    private void onUpdateEngine(int status) {
+        if (status == TextToSpeech.SUCCESS) {
+            LOG.d("Updating engine: Successfully bound to the engine: "
+                    + mTts.getCurrentEngine());
+            Settings.Secure.putString(getContext().getContentResolver(), TTS_DEFAULT_SYNTH,
+                    mTts.getCurrentEngine());
+        } else {
+            LOG.d("Updating engine: Failed to bind to engine, reverting.");
+            if (mPreviousEngine != null) {
+                // This is guaranteed to at least bind, since mPreviousEngine would be
+                // null if the previous bind to this engine failed.
+                mTts = new TextToSpeech(getContext(), /* listener= */ null, mPreviousEngine);
+            }
+            mPreviousEngine = null;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/tts/TextToSpeechOutputFragment.java b/src/com/android/car/settings/tts/TextToSpeechOutputFragment.java
new file mode 100644
index 0000000..bada2bd
--- /dev/null
+++ b/src/com/android/car/settings/tts/TextToSpeechOutputFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Fragment to show the TTS settings. */
+public class TextToSpeechOutputFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.text_to_speech_output_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/tts/TtsPlaybackPreferenceController.java b/src/com/android/car/settings/tts/TtsPlaybackPreferenceController.java
new file mode 100644
index 0000000..00c8ca8
--- /dev/null
+++ b/src/com/android/car/settings/tts/TtsPlaybackPreferenceController.java
@@ -0,0 +1,429 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+import android.text.TextUtils;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.SeekBarPreference;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.Objects;
+
+/**
+ * Business logic for configuring and listening to the current TTS voice. This preference contorller
+ * handles the following:
+ *
+ * <ol>
+ * <li>Changing the TTS language
+ * <li>Changing the TTS speech rate
+ * <li>Changing the TTS voice pitch
+ * <li>Resetting the TTS configuration
+ * </ol>
+ */
+public class TtsPlaybackPreferenceController extends
+        PreferenceController<PreferenceGroup> implements ActivityResultCallback {
+
+    private static final Logger LOG = new Logger(TtsPlaybackPreferenceController.class);
+
+    @VisibleForTesting
+    static final int VOICE_DATA_CHECK = 1;
+    @VisibleForTesting
+    static final int GET_SAMPLE_TEXT = 2;
+
+    private final TtsEngines mEnginesHelper;
+    private TtsPlaybackSettingsManager mTtsPlaybackManager;
+    private TextToSpeech mTts;
+    private int mSelectedLocaleIndex;
+
+    private ListPreference mDefaultLanguagePreference;
+    private SeekBarPreference mSpeechRatePreference;
+    private SeekBarPreference mVoicePitchPreference;
+    private Preference mResetPreference;
+
+    private String mSampleText;
+    private Locale mSampleTextLocale;
+
+    /** True if initialized with no errors. */
+    private boolean mTtsInitialized = false;
+
+    private final TextToSpeech.OnInitListener mOnInitListener = status -> {
+        if (status == TextToSpeech.SUCCESS) {
+            mTtsInitialized = true;
+            refreshUi();
+        }
+    };
+
+    public TtsPlaybackPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mEnginesHelper = new TtsEngines(context);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mDefaultLanguagePreference = initDefaultLanguagePreference();
+        mSpeechRatePreference = initSpeechRatePreference();
+        mVoicePitchPreference = initVoicePitchPreference();
+        mResetPreference = initResetTtsPlaybackPreference();
+
+        mTts = new TextToSpeech(getContext(), mOnInitListener);
+        mTtsPlaybackManager = new TtsPlaybackSettingsManager(getContext(), mTts, mEnginesHelper);
+        mTts.setSpeechRate(mTtsPlaybackManager.getCurrentSpeechRate()
+                / TtsPlaybackSettingsManager.SCALING_FACTOR);
+        mTts.setPitch(mTtsPlaybackManager.getCurrentVoicePitch()
+                / TtsPlaybackSettingsManager.SCALING_FACTOR);
+        startEngineVoiceDataCheck(mTts.getCurrentEngine());
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        if (mTts != null) {
+            mTts.shutdown();
+            mTts = null;
+            mTtsPlaybackManager = null;
+        }
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preference) {
+        boolean isValid = isDefaultLocaleValid();
+        mDefaultLanguagePreference.setEnabled(isValid);
+        mSpeechRatePreference.setEnabled(isValid);
+        mVoicePitchPreference.setEnabled(isValid);
+        mResetPreference.setEnabled(isValid);
+        if (!isValid && mDefaultLanguagePreference.getEntries() != null) {
+            mDefaultLanguagePreference.setEnabled(true);
+        }
+
+        if (mDefaultLanguagePreference.getEntries() != null) {
+            mDefaultLanguagePreference.setValueIndex(mSelectedLocaleIndex);
+            mDefaultLanguagePreference.setSummary(
+                    mDefaultLanguagePreference.getEntries()[mSelectedLocaleIndex]);
+        }
+
+        mSpeechRatePreference.setValue(mTtsPlaybackManager.getCurrentSpeechRate());
+        mVoicePitchPreference.setValue(mTtsPlaybackManager.getCurrentVoicePitch());
+        checkOrUpdateSampleText();
+    }
+
+    @Override
+    public void processActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+        switch (requestCode) {
+            case VOICE_DATA_CHECK:
+                onVoiceDataIntegrityCheckDone(resultCode, data);
+                break;
+            case GET_SAMPLE_TEXT:
+                onSampleTextReceived(resultCode, data);
+                break;
+            default:
+                LOG.e("Got unknown activity result");
+        }
+    }
+
+    private void startEngineVoiceDataCheck(String engine) {
+        Intent intent = new Intent(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
+        intent.setPackage(engine);
+        try {
+            LOG.d("Updating engine: Checking voice data: " + intent.toUri(0));
+            getFragmentController().startActivityForResult(intent, VOICE_DATA_CHECK,
+                    this);
+        } catch (ActivityNotFoundException ex) {
+            LOG.e("Failed to check TTS data, no activity found for " + intent);
+        }
+    }
+
+    /**
+     * Ask the current default engine to return a string of sample text to be
+     * spoken to the user.
+     */
+    private void startGetSampleText() {
+        String currentEngine = mTts.getCurrentEngine();
+        if (TextUtils.isEmpty(currentEngine)) {
+            currentEngine = mTts.getDefaultEngine();
+        }
+
+        Intent intent = new Intent(TextToSpeech.Engine.ACTION_GET_SAMPLE_TEXT);
+        mSampleTextLocale = mTtsPlaybackManager.getEffectiveTtsLocale();
+        if (mSampleTextLocale == null) {
+            return;
+        }
+        intent.putExtra(TextToSpeech.Engine.KEY_PARAM_LANGUAGE, mSampleTextLocale.getLanguage());
+        intent.putExtra(TextToSpeech.Engine.KEY_PARAM_COUNTRY, mSampleTextLocale.getCountry());
+        intent.putExtra(TextToSpeech.Engine.KEY_PARAM_VARIANT, mSampleTextLocale.getVariant());
+        intent.setPackage(currentEngine);
+
+        try {
+            LOG.d("Getting sample text: " + intent.toUri(0));
+            getFragmentController().startActivityForResult(intent, GET_SAMPLE_TEXT, this);
+        } catch (ActivityNotFoundException ex) {
+            LOG.e("Failed to get sample text, no activity found for " + intent + ")");
+        }
+    }
+
+    /** The voice data check is complete. */
+    private void onVoiceDataIntegrityCheckDone(int resultCode, Intent data) {
+        String engine = mTts.getCurrentEngine();
+        if (engine == null) {
+            LOG.e("Voice data check complete, but no engine bound");
+            return;
+        }
+
+        if (data == null || resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL) {
+            LOG.e("Engine failed voice data integrity check (null return or invalid result code)"
+                    + mTts.getCurrentEngine());
+            return;
+        }
+
+        Settings.Secure.putString(getContext().getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_SYNTH, engine);
+
+        ArrayList<String> availableLangs =
+                data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
+        if (availableLangs == null || availableLangs.size() == 0) {
+            refreshUi();
+            return;
+        }
+
+        updateDefaultLanguagePreference(availableLangs);
+
+        mSelectedLocaleIndex = findLocaleIndex(mTtsPlaybackManager.getStoredTtsLocale());
+        if (mSelectedLocaleIndex < 0) {
+            mSelectedLocaleIndex = 0;
+        }
+        startGetSampleText();
+        refreshUi();
+    }
+
+    private void onSampleTextReceived(int resultCode, Intent data) {
+        String sample = getContext().getString(R.string.tts_default_sample_string);
+
+        if (resultCode == TextToSpeech.LANG_AVAILABLE && data != null) {
+            String tmp = data.getStringExtra(TextToSpeech.Engine.EXTRA_SAMPLE_TEXT);
+            if (!TextUtils.isEmpty(tmp)) {
+                sample = tmp;
+            }
+            LOG.d("Got sample text: " + sample);
+        } else {
+            LOG.d("Using default sample text :" + sample);
+        }
+
+        mSampleText = sample;
+    }
+
+    private void updateLanguageTo(Locale locale) {
+        int selectedLocaleIndex = findLocaleIndex(locale);
+        if (selectedLocaleIndex == -1) {
+            LOG.w("updateLanguageTo called with unknown locale argument");
+            return;
+        }
+
+        if (mTtsPlaybackManager.updateTtsLocale(locale)) {
+            mSelectedLocaleIndex = selectedLocaleIndex;
+            refreshUi();
+        } else {
+            LOG.e("updateLanguageTo failed to update tts language");
+        }
+    }
+
+    private int findLocaleIndex(Locale locale) {
+        String localeString = (locale != null) ? locale.toString() : "";
+        return mDefaultLanguagePreference.findIndexOfValue(localeString);
+    }
+
+    private boolean isDefaultLocaleValid() {
+        if (!mTtsInitialized) {
+            return false;
+        }
+
+        Locale defaultLocale = mTtsPlaybackManager.getEffectiveTtsLocale();
+        if (defaultLocale == null) {
+            LOG.e("Failed to get default language from engine " + mTts.getCurrentEngine());
+            return false;
+        }
+
+        if (mDefaultLanguagePreference.getEntries() == null) {
+            return false;
+        }
+
+        int index = mDefaultLanguagePreference.findIndexOfValue(defaultLocale.toString());
+        if (index < 0) {
+            return false;
+        }
+
+        return true;
+    }
+
+    private void checkOrUpdateSampleText() {
+        if (!mTtsInitialized) {
+            return;
+        }
+        Locale defaultLocale = mTtsPlaybackManager.getEffectiveTtsLocale();
+        if (defaultLocale == null) {
+            LOG.e("Failed to get default language from engine " + mTts.getCurrentEngine());
+            return;
+        }
+
+        if (!Objects.equals(defaultLocale, mSampleTextLocale)) {
+            mSampleText = null;
+            mSampleTextLocale = null;
+        }
+
+        if (mSampleText == null) {
+            startGetSampleText();
+        }
+    }
+
+    @VisibleForTesting
+    String getSampleText() {
+        return mSampleText;
+    }
+
+    /* ***************************************************************************************** *
+     * Preference initialization/update code.                                                    *
+     * ***************************************************************************************** */
+
+    private ListPreference initDefaultLanguagePreference() {
+        ListPreference defaultLanguagePreference = (ListPreference) getPreference().findPreference(
+                getContext().getString(R.string.pk_tts_default_language));
+        defaultLanguagePreference.setOnPreferenceChangeListener((preference, newValue) -> {
+            String localeString = (String) newValue;
+            updateLanguageTo(!TextUtils.isEmpty(localeString) ? mEnginesHelper.parseLocaleString(
+                    localeString) : null);
+            checkOrUpdateSampleText();
+            return true;
+        });
+        return defaultLanguagePreference;
+    }
+
+    private void updateDefaultLanguagePreference(@NonNull ArrayList<String> availableLangs) {
+        // Sort locales by display name.
+        ArrayList<Locale> locales = new ArrayList<>();
+        for (int i = 0; i < availableLangs.size(); i++) {
+            Locale locale = mEnginesHelper.parseLocaleString(availableLangs.get(i));
+            if (locale != null) {
+                locales.add(locale);
+            }
+        }
+        Collections.sort(locales,
+                (lhs, rhs) -> lhs.getDisplayName().compareToIgnoreCase(rhs.getDisplayName()));
+
+        // Separate pairs into two separate arrays.
+        CharSequence[] entries = new CharSequence[availableLangs.size() + 1];
+        CharSequence[] entryValues = new CharSequence[availableLangs.size() + 1];
+
+        entries[0] = getContext().getString(R.string.tts_lang_use_system);
+        entryValues[0] = "";
+
+        int i = 1;
+        for (Locale locale : locales) {
+            entries[i] = locale.getDisplayName();
+            entryValues[i++] = locale.toString();
+        }
+
+        mDefaultLanguagePreference.setEntries(entries);
+        mDefaultLanguagePreference.setEntryValues(entryValues);
+    }
+
+    private SeekBarPreference initSpeechRatePreference() {
+        SeekBarPreference speechRatePreference = (SeekBarPreference) getPreference().findPreference(
+                getContext().getString(R.string.pk_tts_speech_rate));
+        speechRatePreference.setMin(TtsPlaybackSettingsManager.MIN_SPEECH_RATE);
+        speechRatePreference.setMax(TtsPlaybackSettingsManager.MAX_SPEECH_RATE);
+        speechRatePreference.setShowSeekBarValue(false);
+        speechRatePreference.setContinuousUpdate(false);
+        speechRatePreference.setOnPreferenceChangeListener((preference, newValue) -> {
+            if (mTtsPlaybackManager != null) {
+                mTtsPlaybackManager.updateSpeechRate((Integer) newValue);
+                mTtsPlaybackManager.speakSampleText(mSampleText);
+                return true;
+            }
+            LOG.e("speech rate preference enabled before it is allowed");
+            return false;
+        });
+
+        // Initially disable.
+        speechRatePreference.setEnabled(false);
+        return speechRatePreference;
+    }
+
+    private SeekBarPreference initVoicePitchPreference() {
+        SeekBarPreference pitchPreference = (SeekBarPreference) getPreference().findPreference(
+                getContext().getString(R.string.pk_tts_pitch));
+        pitchPreference.setMin(TtsPlaybackSettingsManager.MIN_VOICE_PITCH);
+        pitchPreference.setMax(TtsPlaybackSettingsManager.MAX_VOICE_PITCH);
+        pitchPreference.setShowSeekBarValue(false);
+        pitchPreference.setContinuousUpdate(false);
+        pitchPreference.setOnPreferenceChangeListener((preference, newValue) -> {
+            if (mTtsPlaybackManager != null) {
+                mTtsPlaybackManager.updateVoicePitch((Integer) newValue);
+                mTtsPlaybackManager.speakSampleText(mSampleText);
+                return true;
+            }
+            LOG.e("speech pitch preference enabled before it is allowed");
+            return false;
+        });
+
+        // Initially disable.
+        pitchPreference.setEnabled(false);
+        return pitchPreference;
+    }
+
+    private Preference initResetTtsPlaybackPreference() {
+        Preference resetPreference = getPreference().findPreference(
+                getContext().getString(R.string.pk_tts_reset));
+        resetPreference.setOnPreferenceClickListener(preference -> {
+            if (mTtsPlaybackManager != null) {
+                mTtsPlaybackManager.resetVoicePitch();
+                mTtsPlaybackManager.resetSpeechRate();
+                refreshUi();
+                return true;
+            }
+            LOG.e("reset preference enabled before it is allowed");
+            return false;
+        });
+
+        // Initially disable.
+        resetPreference.setEnabled(false);
+        return resetPreference;
+    }
+}
diff --git a/src/com/android/car/settings/tts/TtsPlaybackSettingsManager.java b/src/com/android/car/settings/tts/TtsPlaybackSettingsManager.java
new file mode 100644
index 0000000..01021bb
--- /dev/null
+++ b/src/com/android/car/settings/tts/TtsPlaybackSettingsManager.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.provider.Settings;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+
+import java.util.Locale;
+
+/** Handles interactions with TTS playback settings. */
+class TtsPlaybackSettingsManager {
+
+    private static final Logger LOG = new Logger(TtsPlaybackSettingsManager.class);
+
+    /**
+     * Maximum speech rate value.
+     */
+    public static final int MAX_SPEECH_RATE = 600;
+
+    /**
+     * Minimum speech rate value.
+     */
+    public static final int MIN_SPEECH_RATE = 10;
+
+    /**
+     * Maximum voice pitch value.
+     */
+    public static final int MAX_VOICE_PITCH = 400;
+
+    /**
+     * Minimum voice pitch value.
+     */
+    public static final int MIN_VOICE_PITCH = 25;
+
+    /**
+     * Scaling factor used to convert speech rate and pitch values between {@link Settings.Secure}
+     * and {@link TextToSpeech}.
+     */
+    public static final float SCALING_FACTOR = 100.0f;
+    private static final String UTTERANCE_ID = "Sample";
+
+    private final Context mContext;
+    private final TextToSpeech mTts;
+    private final TtsEngines mEnginesHelper;
+
+    TtsPlaybackSettingsManager(Context context, @NonNull TextToSpeech tts,
+            @NonNull TtsEngines enginesHelper) {
+        mContext = context;
+        mTts = tts;
+        mEnginesHelper = enginesHelper;
+    }
+
+    void updateSpeechRate(int speechRate) {
+        Settings.Secure.putInt(
+                mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_RATE, speechRate);
+        mTts.setSpeechRate(speechRate / SCALING_FACTOR);
+        LOG.d("TTS default rate changed, now " + speechRate);
+    }
+
+    int getCurrentSpeechRate() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE);
+    }
+
+    void resetSpeechRate() {
+        updateSpeechRate(TextToSpeech.Engine.DEFAULT_RATE);
+    }
+
+    void updateVoicePitch(int pitch) {
+        Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_PITCH,
+                pitch);
+        mTts.setPitch(pitch / SCALING_FACTOR);
+        LOG.d("TTS default pitch changed, now " + pitch);
+    }
+
+    int getCurrentVoicePitch() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH);
+    }
+
+    void resetVoicePitch() {
+        updateVoicePitch(TextToSpeech.Engine.DEFAULT_PITCH);
+    }
+
+    /**
+     * Returns the currently stored locale for the given tts engine. It can return {@code null}, if
+     * it is configured to use the system default locale.
+     */
+    @Nullable
+    Locale getStoredTtsLocale() {
+        Locale currentLocale = null;
+        if (!mEnginesHelper.isLocaleSetToDefaultForEngine(mTts.getCurrentEngine())) {
+            currentLocale = mEnginesHelper.getLocalePrefForEngine(mTts.getCurrentEngine());
+        }
+        return currentLocale;
+    }
+
+    /**
+     * Similar to {@link #getStoredTtsLocale()}, but returns the language of the voice registered
+     * to the actual TTS object. It is possible for the TTS voice to be {@code null} if TTS is not
+     * yet initialized.
+     */
+    @Nullable
+    Locale getEffectiveTtsLocale() {
+        if (mTts.getVoice() == null) {
+            return null;
+        }
+        return mEnginesHelper.parseLocaleString(mTts.getVoice().getLocale().toString());
+    }
+
+    /**
+     * Attempts to update the default tts locale. Returns {@code true} if successful, false
+     * otherwise.
+     */
+    boolean updateTtsLocale(Locale newLocale) {
+        int resultCode = mTts.setLanguage((newLocale != null) ? newLocale : Locale.getDefault());
+        boolean success = resultCode != TextToSpeech.LANG_NOT_SUPPORTED
+                && resultCode != TextToSpeech.LANG_MISSING_DATA;
+        if (success) {
+            mEnginesHelper.updateLocalePrefForEngine(mTts.getCurrentEngine(), newLocale);
+        }
+
+        return success;
+    }
+
+    void speakSampleText(String text) {
+        boolean networkRequired = mTts.getVoice().isNetworkConnectionRequired();
+        Locale defaultLocale = getEffectiveTtsLocale();
+        if (!networkRequired || networkRequired && mTts.isLanguageAvailable(defaultLocale)
+                >= TextToSpeech.LANG_AVAILABLE) {
+            mTts.speak(text, TextToSpeech.QUEUE_FLUSH, /* params= */ null, UTTERANCE_ID);
+        } else {
+            displayNetworkAlert();
+        }
+    }
+
+    private void displayNetworkAlert() {
+        AlertDialog dialog = new AlertDialog.Builder(mContext)
+                .setTitle(android.R.string.dialog_alert_title)
+                .setMessage(R.string.tts_engine_network_required)
+                .setCancelable(false)
+                .setPositiveButton(android.R.string.ok, null).create();
+        dialog.show();
+    }
+}
diff --git a/src/com/android/car/settings/tts/TtsPreference.java b/src/com/android/car/settings/tts/TtsPreference.java
new file mode 100644
index 0000000..7c2f8db
--- /dev/null
+++ b/src/com/android/car/settings/tts/TtsPreference.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import android.content.Context;
+import android.speech.tts.TextToSpeech;
+
+import androidx.preference.Preference;
+
+/** Preference which also encapsulates the associated Text-to-speech engine. */
+public class TtsPreference extends Preference {
+
+    private TextToSpeech.EngineInfo mEngineInfo;
+
+    public TtsPreference(Context context, TextToSpeech.EngineInfo engineInfo) {
+        super(context);
+        mEngineInfo = engineInfo;
+    }
+
+    /** Gets the engine info associated with this preference. */
+    public TextToSpeech.EngineInfo getEngineInfo() {
+        return mEngineInfo;
+    }
+}
diff --git a/src/com/android/car/settings/units/CarUnitsManager.java b/src/com/android/car/settings/units/CarUnitsManager.java
new file mode 100644
index 0000000..112faf3
--- /dev/null
+++ b/src/com/android/car/settings/units/CarUnitsManager.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.VehiclePropertyIds;
+import android.car.VehicleUnit;
+import android.car.hardware.CarPropertyConfig;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.util.ArraySet;
+
+import com.android.car.settings.common.Logger;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Utility to read and write {@link Unit}-related properties in {@link CarPropertyManager}. */
+public class CarUnitsManager {
+    private static final Logger LOG = new Logger(CarUnitsManager.class);
+    private static final int AREA_ID = 0;
+
+    private final ServiceConnection mServiceConnection = new ServiceConnection() {
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            try {
+                mCarPropertyManager =
+                        (CarPropertyManager) mCar.getCarManager(Car.PROPERTY_SERVICE);
+                mCarServiceListener.handleServiceConnected(mCarPropertyManager);
+            } catch (CarNotConnectedException e) {
+                LOG.e("Car is not connected!", e);
+            }
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+            mCarServiceListener.handleServiceDisconnected();
+        }
+    };
+
+    private Context mContext;
+    private Car mCar;
+    private CarPropertyManager mCarPropertyManager;
+    private OnCarServiceListener mCarServiceListener;
+
+    public CarUnitsManager(Context context) {
+        mContext = context;
+        mCar = Car.createCar(mContext, mServiceConnection);
+    }
+
+    /**
+     * Registers {@link OnCarServiceListener} as a Callback for when connection to {@link Car} has
+     * been established.
+     */
+    public void registerCarServiceListener(OnCarServiceListener listener) {
+        mCarServiceListener = listener;
+    }
+
+    /**
+     * Unregisters {@link OnCarServiceListener} as a Callback for when connection to {@link Car} has
+     * been terminated.
+     */
+    public void unregisterCarServiceListener() {
+        mCarServiceListener = null;
+    }
+
+    protected void connect() {
+        mCar.connect();
+    }
+
+    protected void disconnect() {
+        mCar.disconnect();
+    }
+
+    protected boolean isPropertyAvailable(int propertyId) {
+        Integer intProperty = null;
+
+        try {
+            intProperty = mCarPropertyManager.getIntProperty(propertyId, AREA_ID);
+        } catch (CarNotConnectedException e) {
+            LOG.e("Property is unavailable because Car is not connected.");
+        }
+
+        return intProperty != null && intProperty != VehicleUnit.SHOULD_NOT_USE;
+    }
+
+    protected Unit[] getUnitsSupportedByProperty(int propertyId) {
+        ArraySet<Integer> propertyIdSet = new ArraySet<Integer>();
+        propertyIdSet.add(propertyId);
+        List<CarPropertyConfig> configs = mCarPropertyManager.getPropertyList(propertyIdSet);
+        List<Integer> availableUnitsId = new ArrayList<Integer>();
+        List<Unit> units = new ArrayList<Unit>();
+
+        if (configs == null || configs.size() < 1 || configs.get(0) == null) {
+            return null;
+        }
+
+        availableUnitsId = configs.get(0).getConfigArray();
+
+        Unit[] result = new Unit[availableUnitsId.size()];
+        for (int unitId : availableUnitsId) {
+            if (UnitsMap.MAP.get(unitId) != null) {
+                Unit unit = UnitsMap.MAP.get(unitId);
+                units.add(unit);
+            }
+        }
+        for (int i = 0; i < result.length; i++) {
+            int unitId = availableUnitsId.get(i);
+            if (UnitsMap.MAP.get(unitId) != null) {
+                Unit unit = UnitsMap.MAP.get(unitId);
+                result[i] = unit;
+            }
+        }
+        return result;
+    }
+
+    protected Unit getUnitUsedByProperty(int propertyId) {
+        try {
+            int unitId = mCarPropertyManager.getIntProperty(propertyId, AREA_ID);
+            if (UnitsMap.MAP.get(unitId) != null) {
+                return UnitsMap.MAP.get(unitId);
+            } else {
+                return null;
+            }
+        } catch (CarNotConnectedException e) {
+            LOG.e("CarPropertyManager cannot get property because Car is not connected.");
+            return null;
+        }
+    }
+
+    protected void setUnitUsedByProperty(int propertyId, int unitId) {
+        try {
+            mCarPropertyManager.setIntProperty(propertyId, AREA_ID, unitId);
+        } catch (CarNotConnectedException e) {
+            LOG.e("CarPropertyManager cannot set property because Car is not connected.");
+        }
+    }
+
+    /**
+     * Returns a boolean that indicates whether the unit is expressed in distance per volume (true)
+     * or volume per distance (false) for fuel consumption. Note that only distance over volume
+     * format is supported when Mile and Gallon (both US and UK) units are used.
+     */
+    protected boolean isDistanceOverVolume() {
+        try {
+            return mCarPropertyManager.getBooleanProperty(
+                    VehiclePropertyIds.FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME, AREA_ID);
+        } catch (CarNotConnectedException e) {
+            return true; // Defaults to True.
+        }
+    }
+
+    /** Defines callbacks that listen to {@link Car} service-related events. */
+    public interface OnCarServiceListener {
+        /**
+         * Callback to be run when {@link Car} service is connected and {@link
+         * CarPropertyManager} becomes available.
+         */
+        void handleServiceConnected(CarPropertyManager carPropertyManager);
+
+        /** Callback to be run when {@link Car} service is disconnected. */
+        void handleServiceDisconnected();
+    }
+}
diff --git a/src/com/android/car/settings/units/Unit.java b/src/com/android/car/settings/units/Unit.java
new file mode 100644
index 0000000..bc5e9b7
--- /dev/null
+++ b/src/com/android/car/settings/units/Unit.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.annotation.StringRes;
+import android.car.VehicleUnit;
+
+/**
+ * Contains properties and methods associated with each unit defined in {@link
+ * android.car.VehicleUnit}.
+ */
+public class Unit {
+    private final int mId;
+    private final int mAbbreviationResId;
+    private final int mNameResId;
+
+    Unit(@VehicleUnit.Enum int unitId, @StringRes int unitAbbreviationResId,
+            @StringRes int unitNameResId) {
+        mId = unitId;
+        mAbbreviationResId = unitAbbreviationResId;
+        mNameResId = unitNameResId;
+    }
+
+    public int getId() {
+        return mId;
+    }
+
+    public int getAbbreviationResId() {
+        return mAbbreviationResId;
+    }
+
+    public int getNameResId() {
+        return mNameResId;
+    }
+}
diff --git a/src/com/android/car/settings/units/UnitsBasePreferenceController.java b/src/com/android/car/settings/units/UnitsBasePreferenceController.java
new file mode 100644
index 0000000..8d9066e
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsBasePreferenceController.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.CarNotConnectedException;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.annotation.CallSuper;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.annotations.VisibleForTesting;
+
+/**
+ * Shared business logic for preference controllers related to Units.
+ */
+public abstract class UnitsBasePreferenceController extends PreferenceController<ListPreference> {
+
+    @VisibleForTesting
+    protected final CarUnitsManager.OnCarServiceListener mOnCarServiceListener =
+            new CarUnitsManager.OnCarServiceListener() {
+                @Override
+                public void handleServiceConnected(CarPropertyManager carPropertyManager) {
+                    try {
+                        if (carPropertyManager != null) {
+                            carPropertyManager.registerCallback(mCarPropertyEventCallback,
+                                    getPropertyId(), CarPropertyManager.SENSOR_RATE_ONCHANGE);
+                        }
+                        mSupportedUnits = mCarUnitsManager.getUnitsSupportedByProperty(
+                                getPropertyId());
+                        if (mSupportedUnits != null && mSupportedUnits.length > 0) {
+                            // first element in the config array is the default Unit per VHAL spec.
+                            mDefaultUnit = mSupportedUnits[0];
+                            getPreference().setEntries(getEntriesOfSupportedUnits());
+                            getPreference().setEntryValues(getIdsOfSupportedUnits());
+                            getPreference().setValue(
+                                    Integer.toString(getUnitUsedByThisProperty().getId()));
+                            refreshUi();
+                        }
+
+                        mIsCarUnitsManagerStarted = true;
+                    } catch (CarNotConnectedException e) {
+                    }
+                }
+
+                @Override
+                public void handleServiceDisconnected() {
+                    mIsCarUnitsManagerStarted = false;
+                }
+            };
+
+    @VisibleForTesting
+    protected final CarPropertyManager.CarPropertyEventCallback mCarPropertyEventCallback =
+            new CarPropertyManager.CarPropertyEventCallback() {
+                @Override
+                public void onChangeEvent(CarPropertyValue value) {
+                    if (value != null && value.getStatus() == CarPropertyValue.STATUS_AVAILABLE) {
+                        mUnitBeingUsed = UnitsMap.MAP.get(value.getValue());
+                        refreshUi();
+                    }
+                }
+
+                @Override
+                public void onErrorEvent(int propId, int zone) {
+                }
+            };
+
+    private Unit[] mSupportedUnits;
+    private Unit mUnitBeingUsed;
+    private Unit mDefaultUnit;
+    private boolean mIsCarUnitsManagerStarted = false;
+    private CarUnitsManager mCarUnitsManager;
+
+    public UnitsBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    @CallSuper
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        mCarUnitsManager = new CarUnitsManager(getContext());
+        mCarUnitsManager.connect();
+        mCarUnitsManager.registerCarServiceListener(mOnCarServiceListener);
+    }
+
+    @Override
+    @CallSuper
+    protected void onDestroyInternal() {
+        super.onDestroyInternal();
+        mCarUnitsManager.disconnect();
+        mCarUnitsManager.unregisterCarServiceListener();
+    }
+
+    @Override
+    @CallSuper
+    protected void updateState(ListPreference preference) {
+        if (mIsCarUnitsManagerStarted && mUnitBeingUsed != null) {
+            preference.setSummary(generateSummaryFromUnit(mUnitBeingUsed));
+            preference.setValue(Integer.toString(mUnitBeingUsed.getId()));
+        }
+    }
+
+    @Override
+    @CallSuper
+    public boolean handlePreferenceChanged(ListPreference preference, Object newValue) {
+        int unitId = Integer.parseInt((String) newValue);
+        mCarUnitsManager.setUnitUsedByProperty(getPropertyId(), unitId);
+        return true;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return mSupportedUnits != null && mSupportedUnits.length > 0
+                ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+
+    protected abstract int getPropertyId();
+
+    protected String[] getEntriesOfSupportedUnits() {
+        String[] names = new String[mSupportedUnits.length];
+        for (int i = 0; i < names.length; i++) {
+            Unit unit = mSupportedUnits[i];
+            names[i] = generateEntryStringFromUnit(unit);
+        }
+        return names;
+    }
+
+    protected String generateSummaryFromUnit(Unit unit) {
+        return getContext().getString(unit.getAbbreviationResId());
+    }
+
+    protected String generateEntryStringFromUnit(Unit unit) {
+        return getContext().getString(R.string.units_list_entry,
+                getContext().getString(unit.getAbbreviationResId()),
+                getContext().getString(unit.getNameResId()));
+    }
+
+    protected String[] getIdsOfSupportedUnits() {
+        String[] ids = new String[mSupportedUnits.length];
+        for (int i = 0; i < ids.length; i++) {
+            ids[i] = Integer.toString(mSupportedUnits[i].getId());
+        }
+        return ids;
+    }
+
+    protected CarUnitsManager getCarUnitsManager() {
+        return mCarUnitsManager;
+    }
+
+    private Unit getUnitUsedByThisProperty() {
+        Unit savedUnit = mCarUnitsManager.getUnitUsedByProperty(getPropertyId());
+        if (savedUnit == null) {
+            return mDefaultUnit;
+        }
+        return savedUnit;
+    }
+
+}
diff --git a/src/com/android/car/settings/units/UnitsDistancePreferenceController.java b/src/com/android/car/settings/units/UnitsDistancePreferenceController.java
new file mode 100644
index 0000000..cc69797
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsDistancePreferenceController.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Controls {@link Unit} used for Distance Display. */
+public class UnitsDistancePreferenceController extends UnitsBasePreferenceController {
+
+    public UnitsDistancePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected int getPropertyId() {
+        return VehiclePropertyIds.DISTANCE_DISPLAY_UNITS;
+    }
+
+}
diff --git a/src/com/android/car/settings/units/UnitsEnergyConsumptionPreferenceController.java b/src/com/android/car/settings/units/UnitsEnergyConsumptionPreferenceController.java
new file mode 100644
index 0000000..00b763b
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsEnergyConsumptionPreferenceController.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.VehiclePropertyIds;
+import android.car.VehicleUnit;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/** Controls {@link Unit} used for Energy Consumption Display. */
+public class UnitsEnergyConsumptionPreferenceController extends UnitsBasePreferenceController {
+
+    private final String mKWh;
+
+    public UnitsEnergyConsumptionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mKWh = getContext().getString(UnitsMap.KILOWATT_HOUR.getAbbreviationResId());
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected int getPropertyId() {
+        return VehiclePropertyIds.EV_BATTERY_DISPLAY_UNITS;
+    }
+
+    @Override
+    protected String generateSummaryFromUnit(Unit unit) {
+        return getAbbreviationByUnit(unit);
+    }
+
+    @Override
+    protected String generateEntryStringFromUnit(Unit unit) {
+        int unitNameResId;
+        switch (unit.getId()) {
+            case VehicleUnit.MILE:
+                unitNameResId = R.string.units_unit_name_kilowatt_per_hundred_miles;
+                break;
+            default:
+                unitNameResId = R.string.units_unit_name_kilowatt_per_hundred_kilometers;
+        }
+
+        return getContext().getString(R.string.units_list_entry, getAbbreviationByUnit(unit),
+                getContext().getString(unitNameResId));
+
+    }
+
+    private String getAbbreviationByUnit(Unit unit) {
+        int quantity = 100;
+        String denominator = getContext().getString(R.string.units_ratio_denominator, quantity,
+                getContext().getString(unit.getAbbreviationResId()));
+
+        return getContext().getString(R.string.units_ratio, mKWh, denominator);
+    }
+}
diff --git a/src/com/android/car/settings/units/UnitsFuelConsumptionPreferenceController.java b/src/com/android/car/settings/units/UnitsFuelConsumptionPreferenceController.java
new file mode 100644
index 0000000..95e7f70
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsFuelConsumptionPreferenceController.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.VehiclePropertyIds;
+import android.car.VehicleUnit;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/** Controls {@link Unit} used for Fuel Consumption Display. */
+public class UnitsFuelConsumptionPreferenceController extends UnitsBasePreferenceController {
+
+    public UnitsFuelConsumptionPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected int getPropertyId() {
+        return VehiclePropertyIds.FUEL_VOLUME_DISPLAY_UNITS;
+    }
+
+    @Override
+    protected String generateSummaryFromUnit(Unit unit) {
+        return getAbbreviationByVolumeUnit(unit);
+    }
+
+    @Override
+    protected String generateEntryStringFromUnit(Unit unit) {
+        return getContext().getString(R.string.units_list_entry, getAbbreviationByVolumeUnit(unit),
+                getPronouncedNameByVolumeUnit(unit));
+    }
+
+    private String getAbbreviationByVolumeUnit(Unit unit) {
+        String abbreviation;
+        switch (unit.getId()) {
+            case VehicleUnit.US_GALLON:
+                abbreviation = getContext().getString(
+                        R.string.units_unit_abbreviation_miles_per_gallon_us);
+                break;
+            case VehicleUnit.IMPERIAL_GALLON:
+                abbreviation = getContext().getString(
+                        R.string.units_unit_abbreviation_miles_per_gallon_uk);
+                break;
+            default:
+                if (getCarUnitsManager().isDistanceOverVolume()) {
+                    abbreviation = getContext().getString(
+                            R.string.units_unit_abbreviation_kilometers_per_liter);
+                } else {
+                    abbreviation = getContext().getString(
+                            R.string.units_unit_abbreviation_liters_per_hundred_kilometers);
+                }
+        }
+        return abbreviation;
+    }
+
+    private String getPronouncedNameByVolumeUnit(Unit unit) {
+        String pronounced;
+        switch (unit.getId()) {
+            case VehicleUnit.US_GALLON:
+                pronounced = getContext().getString(R.string.units_unit_name_miles_per_gallon_us);
+                break;
+            case VehicleUnit.IMPERIAL_GALLON:
+                pronounced = getContext().getString(R.string.units_unit_name_miles_per_gallon_uk);
+                break;
+            default:
+                if (getCarUnitsManager().isDistanceOverVolume()) {
+                    pronounced = getContext().getString(
+                            R.string.units_unit_name_kilometers_per_liter);
+                } else {
+                    pronounced = getContext().getString(
+                            R.string.units_unit_name_liter_per_hundred_kilometers);
+                }
+        }
+        return pronounced;
+    }
+}
diff --git a/src/com/android/car/settings/units/UnitsMap.java b/src/com/android/car/settings/units/UnitsMap.java
new file mode 100644
index 0000000..12264de
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsMap.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.VehicleUnit;
+
+import com.android.car.settings.R;
+
+import java.util.HashMap;
+
+/**
+ * Contains {@link Unit} instances for all units defined in {@link VehicleUnit}. This mapping is
+ * safe because OEMs cannot define their own VehicleUnit.
+ */
+public final class UnitsMap {
+    protected static final Unit METER_PER_SEC = new Unit(VehicleUnit.METER_PER_SEC,
+            R.string.units_unit_abbreviation_meter_per_sec, R.string.units_unit_name_meter_per_sec);
+    protected static final Unit RPM = new Unit(VehicleUnit.RPM,
+            R.string.units_unit_abbreviation_rpm, R.string.units_unit_name_rpm);
+    protected static final Unit HERTZ = new Unit(VehicleUnit.HERTZ,
+            R.string.units_unit_abbreviation_hertz, R.string.units_unit_name_hertz);
+    protected static final Unit PERCENTILE = new Unit(VehicleUnit.PERCENTILE,
+            R.string.units_unit_abbreviation_percentile, R.string.units_unit_name_percentile);
+    protected static final Unit MILLIMETER = new Unit(VehicleUnit.MILLIMETER,
+            R.string.units_unit_abbreviation_millimeter, R.string.units_unit_name_millimeter);
+    protected static final Unit METER = new Unit(VehicleUnit.METER,
+            R.string.units_unit_abbreviation_meter, R.string.units_unit_name_meter);
+    protected static final Unit KILOMETER = new Unit(VehicleUnit.KILOMETER,
+            R.string.units_unit_abbreviation_kilometer, R.string.units_unit_name_kilometer);
+    protected static final Unit MILE = new Unit(VehicleUnit.MILE,
+            R.string.units_unit_abbreviation_mile, R.string.units_unit_name_mile);
+    protected static final Unit CELSIUS = new Unit(VehicleUnit.CELSIUS,
+            R.string.units_unit_abbreviation_celsius, R.string.units_unit_name_celsius);
+    protected static final Unit FAHRENHEIT = new Unit(VehicleUnit.FAHRENHEIT,
+            R.string.units_unit_abbreviation_fahrenheit, R.string.units_unit_name_fahrenheit);
+    protected static final Unit KELVIN = new Unit(VehicleUnit.KELVIN,
+            R.string.units_unit_abbreviation_kelvin, R.string.units_unit_name_kelvin);
+    protected static final Unit MILLILITER = new Unit(VehicleUnit.MILLILITER,
+            R.string.units_unit_abbreviation_milliliter, R.string.units_unit_name_milliliter);
+    protected static final Unit LITER = new Unit(VehicleUnit.LITER,
+            R.string.units_unit_abbreviation_liter, R.string.units_unit_name_liter);
+    protected static final Unit US_GALLON = new Unit(VehicleUnit.US_GALLON,
+            R.string.units_unit_abbreviation_us_gallon, R.string.units_unit_name_us_gallon);
+    protected static final Unit IMPERIAL_GALLON = new Unit(VehicleUnit.IMPERIAL_GALLON,
+            R.string.units_unit_abbreviation_imperial_gallon,
+            R.string.units_unit_name_imperial_gallon);
+    protected static final Unit NANO_SECS = new Unit(VehicleUnit.NANO_SECS,
+            R.string.units_unit_abbreviation_nano_secs, R.string.units_unit_name_nano_secs);
+    protected static final Unit SECS = new Unit(VehicleUnit.SECS,
+            R.string.units_unit_abbreviation_secs, R.string.units_unit_name_secs);
+    protected static final Unit YEAR = new Unit(VehicleUnit.YEAR,
+            R.string.units_unit_abbreviation_year, R.string.units_unit_name_year);
+    protected static final Unit KILOPASCAL = new Unit(VehicleUnit.KILOPASCAL,
+            R.string.units_unit_abbreviation_kilopascal, R.string.units_unit_name_kilopascal);
+    protected static final Unit WATT_HOUR = new Unit(VehicleUnit.WATT_HOUR,
+            R.string.units_unit_abbreviation_watt_hour, R.string.units_unit_name_watt_hour);
+    protected static final Unit MILLIAMPERE = new Unit(VehicleUnit.MILLIAMPERE,
+            R.string.units_unit_abbreviation_milliampere, R.string.units_unit_name_milliampere);
+    protected static final Unit MILLIVOLT = new Unit(VehicleUnit.MILLIVOLT,
+            R.string.units_unit_abbreviation_millivolt, R.string.units_unit_name_millivolt);
+    protected static final Unit MILLIWATTS = new Unit(VehicleUnit.MILLIWATTS,
+            R.string.units_unit_abbreviation_milliwatts, R.string.units_unit_name_milliwatts);
+    protected static final Unit AMPERE_HOURS = new Unit(VehicleUnit.AMPERE_HOURS,
+            R.string.units_unit_abbreviation_ampere_hour, R.string.units_unit_name_ampere_hour);
+    protected static final Unit KILOWATT_HOUR = new Unit(VehicleUnit.KILOWATT_HOUR,
+            R.string.units_unit_abbreviation_kilowatt_hour, R.string.units_unit_name_kilowatt_hour);
+    protected static final Unit PSI = new Unit(VehicleUnit.PSI,
+            R.string.units_unit_abbreviation_psi, R.string.units_unit_name_psi);
+    protected static final Unit BAR = new Unit(VehicleUnit.BAR,
+            R.string.units_unit_abbreviation_bar, R.string.units_unit_name_bar);
+    protected static final Unit DEGREES = new Unit(VehicleUnit.DEGREES,
+            R.string.units_unit_abbreviation_degrees, R.string.units_unit_name_degrees);
+    protected static final Unit MILES_PER_HOUR = new Unit(VehicleUnit.MILES_PER_HOUR,
+            R.string.units_unit_abbreviation_miles_per_hour,
+            R.string.units_unit_name_miles_per_hour);
+    protected static final Unit KILOMETERS_PER_HOUR = new Unit(VehicleUnit.KILOMETERS_PER_HOUR,
+            R.string.units_unit_abbreviation_kilometers_per_hour,
+            R.string.units_unit_name_kilometers_per_hour);
+
+    public static final HashMap<Integer, Unit> MAP = createMap();
+
+    private static HashMap<Integer, Unit> createMap() {
+        HashMap<Integer, Unit> map = new HashMap();
+        map.put(VehicleUnit.METER_PER_SEC, METER_PER_SEC);
+        map.put(VehicleUnit.RPM, RPM);
+        map.put(VehicleUnit.HERTZ, HERTZ);
+        map.put(VehicleUnit.PERCENTILE, PERCENTILE);
+        map.put(VehicleUnit.MILLIMETER, MILLIMETER);
+        map.put(VehicleUnit.METER, METER);
+        map.put(VehicleUnit.KILOMETER, KILOMETER);
+        map.put(VehicleUnit.MILE, MILE);
+        map.put(VehicleUnit.CELSIUS, CELSIUS);
+        map.put(VehicleUnit.FAHRENHEIT, FAHRENHEIT);
+        map.put(VehicleUnit.KELVIN, KELVIN);
+        map.put(VehicleUnit.MILLILITER, MILLILITER);
+        map.put(VehicleUnit.LITER, LITER);
+        map.put(VehicleUnit.US_GALLON, US_GALLON);
+        map.put(VehicleUnit.IMPERIAL_GALLON, IMPERIAL_GALLON);
+        map.put(VehicleUnit.NANO_SECS, NANO_SECS);
+        map.put(VehicleUnit.SECS, SECS);
+        map.put(VehicleUnit.YEAR, YEAR);
+        map.put(VehicleUnit.KILOPASCAL, KILOPASCAL);
+        map.put(VehicleUnit.WATT_HOUR, WATT_HOUR);
+        map.put(VehicleUnit.MILLIAMPERE, MILLIAMPERE);
+        map.put(VehicleUnit.MILLIVOLT, MILLIVOLT);
+        map.put(VehicleUnit.MILLIWATTS, MILLIWATTS);
+        map.put(VehicleUnit.AMPERE_HOURS, AMPERE_HOURS);
+        map.put(VehicleUnit.KILOWATT_HOUR, KILOWATT_HOUR);
+        map.put(VehicleUnit.PSI, PSI);
+        map.put(VehicleUnit.BAR, BAR);
+        map.put(VehicleUnit.DEGREES, DEGREES);
+        map.put(VehicleUnit.MILES_PER_HOUR, MILES_PER_HOUR);
+        map.put(VehicleUnit.KILOMETERS_PER_HOUR, KILOMETERS_PER_HOUR);
+
+        return map;
+    }
+
+    private UnitsMap() {
+    }
+}
diff --git a/src/com/android/car/settings/units/UnitsPressurePreferenceController.java b/src/com/android/car/settings/units/UnitsPressurePreferenceController.java
new file mode 100644
index 0000000..51da7d6
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsPressurePreferenceController.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Controls {@link Unit} used for Pressure Display. */
+public class UnitsPressurePreferenceController extends UnitsBasePreferenceController {
+
+    public UnitsPressurePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected int getPropertyId() {
+        return VehiclePropertyIds.TIRE_PRESSURE_DISPLAY_UNITS;
+    }
+}
diff --git a/src/com/android/car/settings/units/UnitsSettingsFragment.java b/src/com/android/car/settings/units/UnitsSettingsFragment.java
new file mode 100644
index 0000000..7c0bed9
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsSettingsFragment.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import androidx.annotation.LayoutRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Fragment to host Units-related preferences. */
+public class UnitsSettingsFragment extends SettingsFragment {
+
+    @Override
+    @LayoutRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.units_fragment;
+    }
+
+}
diff --git a/src/com/android/car/settings/units/UnitsSpeedPreferenceController.java b/src/com/android/car/settings/units/UnitsSpeedPreferenceController.java
new file mode 100644
index 0000000..120a3d0
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsSpeedPreferenceController.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Controls {@link Unit} used for Speed Display. */
+public class UnitsSpeedPreferenceController extends UnitsBasePreferenceController {
+
+    public UnitsSpeedPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected int getPropertyId() {
+        return VehiclePropertyIds.VEHICLE_SPEED_DISPLAY_UNITS;
+    }
+}
diff --git a/src/com/android/car/settings/units/UnitsTemperaturePreferenceController.java b/src/com/android/car/settings/units/UnitsTemperaturePreferenceController.java
new file mode 100644
index 0000000..72dbdff
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsTemperaturePreferenceController.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Controls {@link Unit} used for HVAC Temperature Display. */
+public class UnitsTemperaturePreferenceController extends UnitsBasePreferenceController {
+
+    public UnitsTemperaturePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected int getPropertyId() {
+        return VehiclePropertyIds.HVAC_TEMPERATURE_DISPLAY_UNITS;
+    }
+}
diff --git a/src/com/android/car/settings/units/UnitsVolumePreferenceController.java b/src/com/android/car/settings/units/UnitsVolumePreferenceController.java
new file mode 100644
index 0000000..5c7ab2b
--- /dev/null
+++ b/src/com/android/car/settings/units/UnitsVolumePreferenceController.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import android.car.VehiclePropertyIds;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Controls {@link Unit} used for Volume Display. */
+public class UnitsVolumePreferenceController extends UnitsBasePreferenceController {
+
+    public UnitsVolumePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected int getPropertyId() {
+        return VehiclePropertyIds.FUEL_VOLUME_DISPLAY_UNITS;
+    }
+
+}
diff --git a/src/com/android/car/settings/users/AddNewUserTask.java b/src/com/android/car/settings/users/AddNewUserTask.java
index 29f9384..281542d 100644
--- a/src/com/android/car/settings/users/AddNewUserTask.java
+++ b/src/com/android/car/settings/users/AddNewUserTask.java
@@ -16,7 +16,7 @@
 
 package com.android.car.settings.users;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.pm.UserInfo;
 import android.os.AsyncTask;
 
@@ -34,21 +34,19 @@
 
     @Override
     protected UserInfo doInBackground(String... userNames) {
-        // Default to create a non admin user for now. Need to add logic
-        // for user to choose whether they want to create an admin or non-admin
-        // user later.
         return mCarUserManagerHelper.createNewNonAdminUser(userNames[0]);
     }
 
     @Override
-    protected void onPreExecute() {
-    }
+    protected void onPreExecute() { }
 
     @Override
     protected void onPostExecute(UserInfo user) {
-        mAddNewUserListener.onUserAdded();
         if (user != null) {
+            mAddNewUserListener.onUserAddedSuccess();
             mCarUserManagerHelper.switchToUser(user);
+        } else {
+            mAddNewUserListener.onUserAddedFailure();
         }
     }
 
@@ -57,8 +55,13 @@
      */
     public interface AddNewUserListener {
         /**
-         * Invoked in AddNewUserTask.onPostExecute after the task has been completed.
+         * Invoked in AddNewUserTask.onPostExecute after the user has been created successfully.
          */
-        void onUserAdded();
+        void onUserAddedSuccess();
+
+        /**
+         * Invoked in AddNewUserTask.onPostExecute if new user creation failed.
+         */
+        void onUserAddedFailure();
     }
 }
diff --git a/src/com/android/car/settings/users/ChooseNewAdminFragment.java b/src/com/android/car/settings/users/ChooseNewAdminFragment.java
new file mode 100644
index 0000000..09ff61e
--- /dev/null
+++ b/src/com/android/car/settings/users/ChooseNewAdminFragment.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static java.util.Objects.requireNonNull;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * This screen appears after the last admin on the device tries to delete themselves. (but only if
+ * there are other users on the device)
+ *
+ * <p> It lets the Admin see a list of non-Admins on the device and choose a user from the list to
+ * upgrade to Admin.
+ *
+ * <p> After new admin has been selected and upgraded, the old Admin is removed.
+ */
+public class ChooseNewAdminFragment extends SettingsFragment {
+
+    /**
+     * Creates a new instance of {@link ChooseNewAdminFragment} that enables the last remaining
+     * admin to choose a new Admin from a list of Non-Admins.
+     *
+     * @param adminInfo Admin that will get removed after new admin has been designated.
+     */
+    public static ChooseNewAdminFragment newInstance(UserInfo adminInfo) {
+        ChooseNewAdminFragment usersListFragment = new ChooseNewAdminFragment();
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(Intent.EXTRA_USER, adminInfo);
+        usersListFragment.setArguments(bundle);
+        return usersListFragment;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.choose_new_admin_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        UserInfo adminInfo = requireNonNull(getArguments()).getParcelable(
+                Intent.EXTRA_USER);
+        use(ChooseNewAdminPreferenceController.class, R.string.pk_choose_new_admin).setAdminInfo(
+                adminInfo);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        Button cancelBtn = getActivity().findViewById(R.id.action_button1);
+        cancelBtn.setVisibility(View.VISIBLE);
+        cancelBtn.setText(R.string.cancel);
+        cancelBtn.setOnClickListener(v -> getActivity().onBackPressed());
+    }
+}
diff --git a/src/com/android/car/settings/users/ChooseNewAdminPreferenceController.java b/src/com/android/car/settings/users/ChooseNewAdminPreferenceController.java
new file mode 100644
index 0000000..975f5a4
--- /dev/null
+++ b/src/com/android/car/settings/users/ChooseNewAdminPreferenceController.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Business logic for when the last admin is about to be removed from the device and a new
+ * administrator needs to be chosen.
+ */
+public class ChooseNewAdminPreferenceController extends UsersBasePreferenceController {
+
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+        UserInfo userToMakeAdmin = (UserInfo) arguments.get(
+                UsersDialogProvider.KEY_USER_TO_MAKE_ADMIN);
+        assignNewAdminAndRemoveOldAdmin(userToMakeAdmin);
+        getFragmentController().goBack();
+    };
+
+    private UserInfo mAdminInfo;
+
+    public ChooseNewAdminPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        getPreferenceProvider().setIncludeCurrentUser(false);
+        getPreferenceProvider().setIncludeGuest(false);
+    }
+
+    /** Setter for the user info of the admin we're deleting. */
+    public void setAdminInfo(UserInfo adminInfo) {
+        mAdminInfo = adminInfo;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mAdminInfo == null) {
+            throw new IllegalStateException("Admin info should be set by this point");
+        }
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        ConfirmationDialogFragment dialogFragment =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG);
+
+        ConfirmationDialogFragment.resetListeners(dialogFragment,
+                mConfirmListener, /* rejectListener= */ null);
+    }
+
+    @Override
+    protected void userClicked(UserInfo userToMakeAdmin) {
+
+        ConfirmationDialogFragment dialogFragment =
+                UsersDialogProvider.getConfirmGrantAdminDialogFragment(getContext(),
+                        mConfirmListener, /* rejectListener= */ null, userToMakeAdmin);
+
+        getFragmentController().showDialog(dialogFragment, ConfirmationDialogFragment.TAG);
+    }
+
+    @VisibleForTesting
+    void assignNewAdminAndRemoveOldAdmin(UserInfo userToMakeAdmin) {
+        getCarUserManagerHelper().grantAdminPermissions(userToMakeAdmin);
+        removeOldAdmin();
+    }
+
+    private void removeOldAdmin() {
+        if (!getCarUserManagerHelper().removeUser(mAdminInfo,
+                getContext().getString(R.string.user_guest))) {
+            // If failed, need to show error dialog for users.
+            getFragmentController().showDialog(
+                    ErrorDialog.newInstance(R.string.delete_user_error_title), /* tag= */ null);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/users/ConfirmCreateNewUserDialog.java b/src/com/android/car/settings/users/ConfirmCreateNewUserDialog.java
deleted file mode 100644
index 41037dd..0000000
--- a/src/com/android/car/settings/users/ConfirmCreateNewUserDialog.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.users;
-
-import static android.content.DialogInterface.BUTTON_NEGATIVE;
-import static android.content.DialogInterface.BUTTON_POSITIVE;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-
-import androidx.car.app.CarAlertDialog;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-
-import com.android.car.settings.R;
-
-/**
- * Dialog to confirm creation of new user.
- */
-public class ConfirmCreateNewUserDialog extends DialogFragment implements
-        DialogInterface.OnClickListener {
-    private static final String DIALOG_TAG = "ConfirmCreateNewUserDialog";
-    private ConfirmCreateNewUserListener mCreateListener;
-    private CancelCreateNewUserListener mCancelListener;
-
-    /**
-     * Interface for listeners that want to receive a callback when user confirms new user creation
-     * in the dialog.
-     */
-    public interface ConfirmCreateNewUserListener {
-        void onCreateNewUserConfirmed();
-    }
-
-    /**
-     * Interface for listeners that want to receive a callback when user cancels new user creation
-     * in the dialog.
-     */
-    public interface CancelCreateNewUserListener {
-        void onCreateNewUserCancelled();
-    }
-
-    /**
-     * Shows the dialog.
-     *
-     * @param parent Fragment associated with the dialog.
-     */
-    public void show(Fragment parent) {
-        setTargetFragment(parent, 0);
-        show(parent.getFragmentManager(), DIALOG_TAG);
-    }
-
-    /**
-     * Sets a listener for OnCreateNewUserConfirmed that will get called if user confirms
-     * the dialog.
-     *
-     * @param listener Instance of {@link ConfirmCreateNewUserListener} to call when confirmed.
-     */
-    public void setConfirmCreateNewUserListener(ConfirmCreateNewUserListener listener) {
-        mCreateListener = listener;
-    }
-
-    /**
-     * Sets a listener for OnCancelNewUserConfirmed that will get called if user cancels
-     * the dialog.
-     *
-     * @param listener Instance of {@link CancelCreateNewUserListener} to call when user presses
-     * cancel.
-     */
-    public void setCancelCreateNewUserListener(CancelCreateNewUserListener listener) {
-        mCancelListener = listener;
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        String message = getString(R.string.user_add_user_message_setup)
-                .concat(System.getProperty("line.separator"))
-                .concat(System.getProperty("line.separator"))
-                .concat(getString(R.string.user_add_user_message_update));
-
-        return new CarAlertDialog.Builder(getContext())
-                .setTitle(R.string.user_add_user_title)
-                .setBody(message)
-                .setNegativeButton(android.R.string.cancel, this)
-                .setPositiveButton(android.R.string.ok, this)
-                .create();
-    }
-
-    @Override
-    public void onClick(DialogInterface dialog, int which) {
-        if (which == BUTTON_POSITIVE) {
-            if (mCreateListener != null) {
-                mCreateListener.onCreateNewUserConfirmed();
-            }
-        } else if (which == BUTTON_NEGATIVE) {
-            if (mCancelListener != null) {
-                mCancelListener.onCreateNewUserCancelled();
-            }
-        }
-
-        dialog.dismiss();
-    }
-}
diff --git a/src/com/android/car/settings/users/ConfirmExitRetailModeDialog.java b/src/com/android/car/settings/users/ConfirmExitRetailModeDialog.java
index eb48171..6a85227 100644
--- a/src/com/android/car/settings/users/ConfirmExitRetailModeDialog.java
+++ b/src/com/android/car/settings/users/ConfirmExitRetailModeDialog.java
@@ -16,11 +16,12 @@
 
 package com.android.car.settings.users;
 
+import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.os.Bundle;
 
-import androidx.car.app.CarAlertDialog;
+import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 
@@ -32,7 +33,8 @@
  */
 public class ConfirmExitRetailModeDialog extends DialogFragment implements
         DialogInterface.OnClickListener {
-    private static final String DIALOG_TAG = "ConfirmExitRetailModeDialog";
+    @VisibleForTesting
+    static final String DIALOG_TAG = "ConfirmExitRetailModeDialog";
     private ConfirmExitRetailModeListener mListener;
 
     /**
@@ -57,9 +59,9 @@
 
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        return new CarAlertDialog.Builder(getContext())
+        return new AlertDialog.Builder(getContext())
                 .setTitle(R.string.exit_retail_mode_dialog_title)
-                .setBody(R.string.exit_retail_mode_dialog_body)
+                .setMessage(R.string.exit_retail_mode_dialog_body)
                 .setPositiveButton(R.string.exit_retail_mode_dialog_confirmation_button_text, this)
                 .setNegativeButton(android.R.string.cancel, null)
                 .create();
diff --git a/src/com/android/car/settings/users/ConfirmRemoveUserDialog.java b/src/com/android/car/settings/users/ConfirmRemoveUserDialog.java
deleted file mode 100644
index 679e068..0000000
--- a/src/com/android/car/settings/users/ConfirmRemoveUserDialog.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.users;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.os.Bundle;
-
-import androidx.car.app.CarAlertDialog;
-import androidx.fragment.app.DialogFragment;
-
-import com.android.car.settings.R;
-
-/**
- * Dialog to confirm user removal.
- */
-public class ConfirmRemoveUserDialog extends DialogFragment {
-    private final DialogInterface.OnClickListener mDeleteUserListener = new OnClickListener() {
-        @Override
-        public void onClick(DialogInterface dialog, int which) {
-            if (mListener != null && which == DialogInterface.BUTTON_POSITIVE) {
-                mListener.onRemoveUserConfirmed();
-            }
-            dialog.dismiss();
-        }
-    };
-
-    private ConfirmRemoveUserListener mListener;
-
-    /**
-     * Sets a listener for OnRemoveUserConfirmed that will get called if user confirms
-     * the dialog.
-     *
-     * @param listener Instance of {@link ConfirmRemoveUserListener} to call when confirmed.
-     */
-    public void setConfirmRemoveUserListener(ConfirmRemoveUserListener listener) {
-        mListener = listener;
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        return new CarAlertDialog.Builder(getContext())
-            .setTitle(R.string.really_remove_user_title)
-            .setBody(R.string.really_remove_user_message)
-            .setPositiveButton(R.string.delete_button, mDeleteUserListener)
-            .setNegativeButton(android.R.string.cancel, null)
-            .create();
-    }
-
-    /**
-     * Interface for listeners that want to receive a callback when user confirms user removal in a
-     * dialog.
-     */
-    public interface ConfirmRemoveUserListener {
-
-        /**
-         * Method called only when user presses delete button.
-         */
-        void onRemoveUserConfirmed();
-    }
-}
diff --git a/src/com/android/car/settings/users/EditUserNameEntryPreferenceController.java b/src/com/android/car/settings/users/EditUserNameEntryPreferenceController.java
new file mode 100644
index 0000000..0f72c48
--- /dev/null
+++ b/src/com/android/car/settings/users/EditUserNameEntryPreferenceController.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.FragmentController;
+
+/** Business logic for the preference which opens the EditUserNameFragment. */
+public class EditUserNameEntryPreferenceController extends
+        UserDetailsBasePreferenceController<ButtonPreference> {
+
+    public EditUserNameEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ButtonPreference> getPreferenceType() {
+        return ButtonPreference.class;
+    }
+
+    @Override
+    protected void updateState(ButtonPreference preference) {
+        preference.setOnButtonClickListener(pref -> {
+            getFragmentController().launchFragment(EditUsernameFragment.newInstance(getUserInfo()));
+        });
+
+        Drawable icon = new UserIconProvider(getCarUserManagerHelper()).getUserIcon(getUserInfo(),
+                getContext());
+        preference.setIcon(icon);
+        preference.setTitle(UserUtils.getUserDisplayName(getContext(), getCarUserManagerHelper(),
+                getUserInfo()));
+
+        if (!getCarUserManagerHelper().isCurrentProcessUser(getUserInfo())) {
+            preference.showAction(false);
+        }
+        preference.setSummary(getSummary());
+    }
+
+    private CharSequence getSummary() {
+        if (!getUserInfo().isInitialized()) {
+            return getContext().getString(R.string.user_summary_not_set_up);
+        }
+        if (getUserInfo().isAdmin()) {
+            return getCarUserManagerHelper().isCurrentProcessUser(getUserInfo())
+                    ? getContext().getString(R.string.signed_in_admin_user)
+                    : getContext().getString(R.string.user_admin);
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/users/EditUsernameFragment.java b/src/com/android/car/settings/users/EditUsernameFragment.java
index e3d969a..03312c8 100644
--- a/src/com/android/car/settings/users/EditUsernameFragment.java
+++ b/src/com/android/car/settings/users/EditUsernameFragment.java
@@ -15,27 +15,32 @@
  */
 package com.android.car.settings.users;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Intent;
 import android.content.pm.UserInfo;
 import android.os.Bundle;
 import android.provider.Settings;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
 import android.view.View;
 import android.widget.Button;
+import android.widget.EditText;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
 import com.android.car.settingslib.util.SettingsConstants;
 
-import com.google.android.material.textfield.TextInputEditText;
-
 /**
  * Enables user to edit their username.
  */
 public class EditUsernameFragment extends BaseFragment {
-    public static final String EXTRA_USER_INFO = "extra_user_info";
     private UserInfo mUserInfo;
 
-    private TextInputEditText mUserNameEditText;
+    private EditText mUserNameEditText;
     private Button mOkButton;
     private Button mCancelButton;
     private CarUserManagerHelper mCarUserManagerHelper;
@@ -46,24 +51,39 @@
     public static EditUsernameFragment newInstance(UserInfo userInfo) {
         EditUsernameFragment
                 userSettingsFragment = new EditUsernameFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_TITLE_ID, R.string.edit_user_name_title);
-        bundle.putParcelable(EXTRA_USER_INFO, userInfo);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.edit_username_fragment);
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(Intent.EXTRA_USER, userInfo);
         userSettingsFragment.setArguments(bundle);
         return userSettingsFragment;
     }
 
     @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.edit_username_fragment;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.edit_user_name_title;
+    }
+
+    @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mUserInfo = getArguments().getParcelable(EXTRA_USER_INFO);
+        mUserInfo = getArguments().getParcelable(Intent.EXTRA_USER);
     }
 
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
-        mUserNameEditText = (TextInputEditText) view.findViewById(R.id.user_name_text_edit);
+        mUserNameEditText = view.findViewById(R.id.user_name_text_edit);
     }
 
     @Override
@@ -71,9 +91,9 @@
         super.onActivityCreated(savedInstanceState);
         mCarUserManagerHelper = new CarUserManagerHelper(getContext());
 
-        configureUsernameEditing();
         showOkButton();
         showCancelButton();
+        configureUsernameEditing();
     }
 
     private void configureUsernameEditing() {
@@ -81,11 +101,34 @@
         mUserNameEditText.setText(mUserInfo.name);
         mUserNameEditText.setEnabled(true);
         mUserNameEditText.setSelectAllOnFocus(true);
+        mUserNameEditText.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+                if (TextUtils.isEmpty(s)) {
+                    mOkButton.setEnabled(false);
+                    mUserNameEditText.setError(getString(R.string.name_input_blank_error));
+                } else if (!TextUtils.isGraphic(s)) {
+                    mOkButton.setEnabled(false);
+                    mUserNameEditText.setError(getString(R.string.name_input_invalid_error));
+                } else {
+                    mOkButton.setEnabled(true);
+                    mUserNameEditText.setError(null);
+                }
+            }
+
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+            }
+        });
     }
 
     private void showOkButton() {
         // Configure OK button.
-        mOkButton = (Button) getActivity().findViewById(R.id.action_button2);
+        mOkButton = getActivity().findViewById(R.id.action_button2);
         mOkButton.setVisibility(View.VISIBLE);
         mOkButton.setText(android.R.string.ok);
         mOkButton.setOnClickListener(view -> {
@@ -99,7 +142,7 @@
 
     private void showCancelButton() {
         // Configure Cancel button.
-        mCancelButton = (Button) getActivity().findViewById(R.id.action_button1);
+        mCancelButton = getActivity().findViewById(R.id.action_button1);
         mCancelButton.setVisibility(View.VISIBLE);
         mCancelButton.setText(android.R.string.cancel);
         mCancelButton.setOnClickListener(view -> {
diff --git a/src/com/android/car/settings/users/GuestFragment.java b/src/com/android/car/settings/users/GuestFragment.java
deleted file mode 100644
index eaec0d5..0000000
--- a/src/com/android/car/settings/users/GuestFragment.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.users;
-
-import android.car.user.CarUserManagerHelper;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Shows details for a guest session, including ability to switch to guest.
- */
-public class GuestFragment extends ListItemSettingsFragment {
-    private CarUserManagerHelper mCarUserManagerHelper;
-    private ListItemProvider mItemProvider;
-
-    /**
-     * Create new GuestFragment instance.
-     */
-    public static GuestFragment newInstance() {
-        GuestFragment guestFragment = new GuestFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.user_details_title);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        guestFragment.setArguments(bundle);
-        return guestFragment;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
-        mItemProvider = new ListItemProvider.ListProvider(getListItems());
-
-        // Super class's onActivityCreated need to be called after mItemProvider is initialized.
-        // Because getItemProvider is called in there.
-        super.onActivityCreated(savedInstanceState);
-
-        showSwitchButton();
-    }
-
-    private void showSwitchButton() {
-        Button switchUserBtn = (Button) getActivity().findViewById(R.id.action_button1);
-        // If the current process is not allowed to switch to another user, doe not show the switch
-        // button.
-        if (!mCarUserManagerHelper.canCurrentProcessSwitchUsers()) {
-            switchUserBtn.setVisibility(View.GONE);
-            return;
-        }
-        switchUserBtn.setVisibility(View.VISIBLE);
-        switchUserBtn.setText(R.string.user_switch);
-        switchUserBtn.setOnClickListener(v -> {
-            getActivity().onBackPressed();
-            mCarUserManagerHelper.startNewGuestSession(getContext().getString(R.string.user_guest));
-        });
-    }
-
-    private List<ListItem> getListItems() {
-        Drawable icon = UserIconProvider.scaleUserIcon(mCarUserManagerHelper.getGuestDefaultIcon(),
-                mCarUserManagerHelper, getContext());
-
-        TextListItem item = new TextListItem(getContext());
-        item.setPrimaryActionIcon(icon, /* useLargeIcon= */ false);
-        item.setTitle(getContext().getString(R.string.user_guest));
-
-        List<ListItem> items = new ArrayList<>();
-        items.add(item);
-        return items;
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        return mItemProvider;
-    }
-}
diff --git a/src/com/android/car/settings/users/MakeAdminPreferenceController.java b/src/com/android/car/settings/users/MakeAdminPreferenceController.java
new file mode 100644
index 0000000..0b93bbc
--- /dev/null
+++ b/src/com/android/car/settings/users/MakeAdminPreferenceController.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.graphics.drawable.Drawable;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+
+/** Business Logic for preference which promotes a regular user to an admin user. */
+public class MakeAdminPreferenceController extends
+        UserDetailsBasePreferenceController<ButtonPreference> {
+
+    @VisibleForTesting
+    final ConfirmationDialogFragment.ConfirmListener mConfirmListener =
+            arguments -> {
+                UserInfo userToMakeAdmin = (UserInfo) arguments.get(
+                        UsersDialogProvider.KEY_USER_TO_MAKE_ADMIN);
+                getCarUserManagerHelper().grantAdminPermissions(userToMakeAdmin);
+                getFragmentController().goBack();
+            };
+
+    public MakeAdminPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ButtonPreference> getPreferenceType() {
+        return ButtonPreference.class;
+    }
+
+
+    /** Ensure that the listener is reset if the dialog was open during a configuration change. */
+    @Override
+    protected void onCreateInternal() {
+        ConfirmationDialogFragment dialog =
+                (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmationDialogFragment.TAG);
+
+        ConfirmationDialogFragment.resetListeners(dialog, mConfirmListener, /* rejectListener= */
+                null);
+    }
+
+    @Override
+    protected void updateState(ButtonPreference preference) {
+        preference.setOnButtonClickListener(pref -> {
+
+            ConfirmationDialogFragment dialogFragment =
+                    UsersDialogProvider.getConfirmGrantAdminDialogFragment(getContext(),
+                            mConfirmListener, /* rejectListener= */ null, getUserInfo());
+
+            getFragmentController().showDialog(dialogFragment, ConfirmationDialogFragment.TAG);
+        });
+
+        Drawable icon = new UserIconProvider(getCarUserManagerHelper()).getUserIcon(getUserInfo(),
+                getContext());
+        preference.setIcon(icon);
+    }
+}
diff --git a/src/com/android/car/settings/users/MaxUsersLimitReachedDialog.java b/src/com/android/car/settings/users/MaxUsersLimitReachedDialog.java
new file mode 100644
index 0000000..4a9927e
--- /dev/null
+++ b/src/com/android/car/settings/users/MaxUsersLimitReachedDialog.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.R;
+
+/**
+ * Dialog to inform that user deletion failed and offers to retry.
+ */
+public class MaxUsersLimitReachedDialog extends DialogFragment {
+    @VisibleForTesting
+    static final String DIALOG_TAG = "MaxUsersLimitReachedDialog";
+    private final int mMaxUserLimit;
+
+    public MaxUsersLimitReachedDialog(int maxUserLimit) {
+        super();
+        mMaxUserLimit = maxUserLimit;
+    }
+
+    /**
+     * Shows the dialog.
+     *
+     * @param parent Fragment associated with the dialog.
+     */
+    public void show(Fragment parent) {
+        setTargetFragment(parent, 0);
+        show(parent.getFragmentManager(), DIALOG_TAG);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        return new AlertDialog.Builder(getContext())
+                .setTitle(R.string.user_limit_reached_title)
+                .setMessage(getResources().getQuantityString(
+                        R.plurals.user_limit_reached_message, mMaxUserLimit, mMaxUserLimit))
+                .setPositiveButton(android.R.string.ok, null)
+                .create();
+    }
+}
diff --git a/src/com/android/car/settings/users/PermissionsPreferenceController.java b/src/com/android/car/settings/users/PermissionsPreferenceController.java
new file mode 100644
index 0000000..c918dbb
--- /dev/null
+++ b/src/com/android/car/settings/users/PermissionsPreferenceController.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Constructs and populates the permissions toggles for non admin users.
+ *
+ * <p>In order to add a new permission, it needs to be added to {@link
+ * CarUserManagerHelper#OPTIONAL_NON_ADMIN_RESTRICTIONS} and the appropriate label needs to be added
+ * to {@link #PERMISSIONS_LIST}.
+ */
+public class PermissionsPreferenceController extends
+        UserDetailsBasePreferenceController<PreferenceGroup> {
+
+    private static class UserPermission {
+        private final String mPermissionKey;
+        @StringRes
+        private final int mPermissionTitle;
+
+        UserPermission(String key, int title) {
+            mPermissionKey = key;
+            mPermissionTitle = title;
+        }
+
+        public String getPermissionKey() {
+            return mPermissionKey;
+        }
+
+        public int getPermissionTitle() {
+            return mPermissionTitle;
+        }
+    }
+
+    @VisibleForTesting
+    static final String PERMISSION_TYPE_KEY = "permission_type_key";
+    private static final List<UserPermission> PERMISSIONS_LIST = new ArrayList<>();
+
+    // Add additional preferences to show here (in the order they should appear).
+    static {
+        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_ADD_USER,
+                R.string.create_user_permission_title));
+        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_OUTGOING_CALLS,
+                R.string.outgoing_calls_permission_title));
+        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_SMS,
+                R.string.sms_messaging_permission_title));
+        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_INSTALL_APPS,
+                R.string.install_apps_permission_title));
+        PERMISSIONS_LIST.add(new UserPermission(UserManager.DISALLOW_UNINSTALL_APPS,
+                R.string.uninstall_apps_permission_title));
+    }
+
+    private final List<SwitchPreference> mPermissionPreferences = new ArrayList<>();
+
+    public PermissionsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+
+        for (UserPermission permission : PERMISSIONS_LIST) {
+            SwitchPreference preference = new SwitchPreference(context);
+            preference.setTitle(permission.getPermissionTitle());
+            preference.getExtras().putString(PERMISSION_TYPE_KEY, permission.getPermissionKey());
+            preference.setOnPreferenceChangeListener((pref, newValue) -> {
+                boolean granted = (boolean) newValue;
+                getCarUserManagerHelper().setUserRestriction(getUserInfo(),
+                        pref.getExtras().getString(PERMISSION_TYPE_KEY), !granted);
+                return true;
+            });
+            mPermissionPreferences.add(preference);
+        }
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        for (SwitchPreference switchPreference : mPermissionPreferences) {
+            getPreference().addPreference(switchPreference);
+        }
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        for (SwitchPreference switchPreference : mPermissionPreferences) {
+            switchPreference.setChecked(!getCarUserManagerHelper().hasUserRestriction(
+                    switchPreference.getExtras().getString(PERMISSION_TYPE_KEY), getUserInfo()));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/users/RemoveUserErrorDialog.java b/src/com/android/car/settings/users/RemoveUserErrorDialog.java
deleted file mode 100644
index 60dde12..0000000
--- a/src/com/android/car/settings/users/RemoveUserErrorDialog.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.users;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.os.Bundle;
-
-import androidx.annotation.Nullable;
-import androidx.car.app.CarAlertDialog;
-import androidx.fragment.app.DialogFragment;
-
-import com.android.car.settings.R;
-
-/**
- * Dialog to inform that user deletion failed and offers to retry.
- */
-public class RemoveUserErrorDialog extends DialogFragment {
-    private DialogInterface.OnClickListener mRemoveUserRetryListener = new OnClickListener() {
-        @Override
-        public void onClick(DialogInterface dialog, int which) {
-            if (mListener != null && which == DialogInterface.BUTTON_POSITIVE) {
-                mListener.onRetryRemoveUser();
-            }
-            dialog.dismiss();
-        }
-    };
-
-    private RemoveUserErrorListener mListener;
-
-    /**
-     * Sets a listener for onRetryRemoveUser that will get called if user presses positive
-     * button.
-     *
-     * @param listener Instance of {@link RemoveUserErrorListener} to call when confirmed.
-     */
-    public void setRetryListener(@Nullable RemoveUserErrorListener listener) {
-        mListener = listener;
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        return new CarAlertDialog.Builder(getContext())
-                .setTitle(R.string.remove_user_error_title)
-                .setBody(R.string.remove_user_error_message)
-                .setPositiveButton(R.string.remove_user_error_retry, mRemoveUserRetryListener)
-                .setNegativeButton(R.string.remove_user_error_dismiss, null)
-                .create();
-    }
-
-    /**
-     * Interface for listeners that want to receive a callback when user removal fails.
-     */
-    public interface RemoveUserErrorListener {
-
-        /**
-         * Method called only when user presses retry button.
-         */
-        void onRetryRemoveUser();
-    }
-}
diff --git a/src/com/android/car/settings/users/UserDetailsBaseFragment.java b/src/com/android/car/settings/users/UserDetailsBaseFragment.java
new file mode 100644
index 0000000..2206ec9
--- /dev/null
+++ b/src/com/android/car/settings/users/UserDetailsBaseFragment.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.annotation.LayoutRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Common logic shared for controlling the action bar which contains a button to delete a user. */
+public abstract class UserDetailsBaseFragment extends SettingsFragment {
+
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private UserInfo mUserInfo;
+
+    private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+        String userType = arguments.getString(UsersDialogProvider.KEY_USER_TYPE);
+        if (userType.equals(UsersDialogProvider.LAST_ADMIN)) {
+            launchFragment(ChooseNewAdminFragment.newInstance(mUserInfo));
+        } else {
+            if (mCarUserManagerHelper.removeUser(
+                    mUserInfo, getContext().getString(R.string.user_guest))) {
+                getActivity().onBackPressed();
+            } else {
+                // If failed, need to show error dialog for users.
+                ErrorDialog.show(this, R.string.delete_user_error_title);
+            }
+        }
+    };
+
+    /** Adds user id to fragment arguments. */
+    protected static UserDetailsBaseFragment addUserIdToFragmentArguments(
+            UserDetailsBaseFragment fragment, int userId) {
+        Bundle bundle = new Bundle();
+        bundle.putInt(Intent.EXTRA_USER_ID, userId);
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        int userId = getArguments().getInt(Intent.EXTRA_USER_ID);
+        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
+        mUserInfo = UserUtils.getUserInfo(getContext(), userId);
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        ConfirmationDialogFragment dialogFragment =
+                (ConfirmationDialogFragment) findDialogByTag(ConfirmationDialogFragment.TAG);
+        ConfirmationDialogFragment.resetListeners(dialogFragment,
+                mConfirmListener, /* rejectListener= */ null);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        showRemoveUserButton();
+
+        TextView titleView = getActivity().findViewById(R.id.title);
+        titleView.setText(getTitleText());
+    }
+
+    /** Make CarUserManagerHelper available to subclasses. */
+    protected CarUserManagerHelper getCarUserManagerHelper() {
+        return mCarUserManagerHelper;
+    }
+
+    /** Make UserInfo available to subclasses. */
+    protected UserInfo getUserInfo() {
+        return mUserInfo;
+    }
+
+    /** Refresh UserInfo in case it becomes invalid. */
+    protected void refreshUserInfo() {
+        mUserInfo = UserUtils.getUserInfo(getContext(), mUserInfo.id);
+    }
+
+    /** Defines the text that should be shown in the action bar. */
+    protected abstract String getTitleText();
+
+    private void showRemoveUserButton() {
+        Button removeUserBtn = getActivity().findViewById(R.id.action_button1);
+        // If the current user is not allowed to remove users, the user trying to be removed
+        // cannot be removed, or the current user is a demo user, do not show delete button.
+        if (!mCarUserManagerHelper.canCurrentProcessRemoveUsers()
+                || !mCarUserManagerHelper.canUserBeRemoved(mUserInfo)
+                || mCarUserManagerHelper.isCurrentProcessDemoUser()) {
+            removeUserBtn.setVisibility(View.GONE);
+            return;
+        }
+        removeUserBtn.setVisibility(View.VISIBLE);
+        removeUserBtn.setText(R.string.delete_button);
+        removeUserBtn.setOnClickListener(v -> showConfirmRemoveUserDialog());
+    }
+
+    private void showConfirmRemoveUserDialog() {
+        boolean isLastUser = mCarUserManagerHelper.getAllPersistentUsers().size() == 1;
+        boolean isLastAdmin = mUserInfo.isAdmin()
+                && mCarUserManagerHelper.getAllAdminUsers().size() == 1;
+
+        ConfirmationDialogFragment dialogFragment;
+
+        if (isLastUser) {
+            dialogFragment = UsersDialogProvider.getConfirmRemoveLastUserDialogFragment(
+                    getContext(), mConfirmListener, /* rejectListener= */ null);
+        } else if (isLastAdmin) {
+            dialogFragment = UsersDialogProvider.getConfirmRemoveLastAdminDialogFragment(
+                    getContext(), mConfirmListener, /* rejectListener= */ null);
+        } else {
+            dialogFragment = UsersDialogProvider.getConfirmRemoveUserDialogFragment(getContext(),
+                    mConfirmListener, /* rejectListener= */ null);
+        }
+
+        dialogFragment.show(getFragmentManager(), ConfirmationDialogFragment.TAG);
+    }
+}
diff --git a/src/com/android/car/settings/users/UserDetailsBasePreferenceController.java b/src/com/android/car/settings/users/UserDetailsBasePreferenceController.java
new file mode 100644
index 0000000..73b2969
--- /dev/null
+++ b/src/com/android/car/settings/users/UserDetailsBasePreferenceController.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Common setup of all preference controllers related to user details.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class UserDetailsBasePreferenceController<V extends Preference> extends
+        PreferenceController<V> {
+
+    private final CarUserManagerHelper.OnUsersUpdateListener mOnUsersUpdateListener = () -> {
+        refreshUserInfo();
+        refreshUi();
+    };
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private UserInfo mUserInfo;
+
+    public UserDetailsBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
+    }
+
+    /** Sets the user info for which this preference controller operates. */
+    public void setUserInfo(UserInfo userInfo) {
+        mUserInfo = userInfo;
+    }
+
+    /** Gets the current user info. */
+    public UserInfo getUserInfo() {
+        return mUserInfo;
+    }
+
+    /** Refreshes the user info, since it might have changed. */
+    protected void refreshUserInfo() {
+        mUserInfo = UserUtils.getUserInfo(getContext(), mUserInfo.id);
+    }
+
+    @Override
+    protected void checkInitialized() {
+        if (mUserInfo == null) {
+            throw new IllegalStateException("UserInfo should be non-null by this point");
+        }
+    }
+
+    /** Registers a listener which updates the displayed user name when a user is modified. */
+    @Override
+    protected void onCreateInternal() {
+        getCarUserManagerHelper().registerOnUsersUpdateListener(mOnUsersUpdateListener);
+    }
+
+    /** Unregisters a listener which updates the displayed user name when a user is modified. */
+    @Override
+    protected void onDestroyInternal() {
+        getCarUserManagerHelper().unregisterOnUsersUpdateListener(mOnUsersUpdateListener);
+    }
+
+    /** Gets the car user manager helper. */
+    protected CarUserManagerHelper getCarUserManagerHelper() {
+        return mCarUserManagerHelper;
+    }
+}
diff --git a/src/com/android/car/settings/users/UserDetailsFragment.java b/src/com/android/car/settings/users/UserDetailsFragment.java
index 2971f4a..304df28 100644
--- a/src/com/android/car/settings/users/UserDetailsFragment.java
+++ b/src/com/android/car/settings/users/UserDetailsFragment.java
@@ -16,179 +16,62 @@
 
 package com.android.car.settings.users;
 
-import android.car.user.CarUserManagerHelper;
-import android.content.pm.UserInfo;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
 import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
+import android.widget.TextView;
 
 import androidx.annotation.VisibleForTesting;
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
-
-import java.util.Arrays;
-import java.util.List;
 
 /**
- * Shows details for a user with the ability to remove user and switch.
+ * Shows details for a user with the ability to remove user and edit current user.
  */
-public class UserDetailsFragment extends ListItemSettingsFragment implements
-        ConfirmRemoveUserDialog.ConfirmRemoveUserListener,
-        RemoveUserErrorDialog.RemoveUserErrorListener {
-    public static final String EXTRA_USER_INFO = "extra_user_info";
-    private static final String ERROR_DIALOG_TAG = "RemoveUserErrorDialogTag";
-    private static final String CONFIRM_REMOVE_DIALOG_TAG = "ConfirmRemoveUserDialog";
+public class UserDetailsFragment extends UserDetailsBaseFragment {
 
-    private Button mRemoveUserBtn;
-    private Button mSwitchUserBtn;
+    /** Creates instance of UserDetailsFragment. */
+    public static UserDetailsFragment newInstance(int userId) {
+        return (UserDetailsFragment) UserDetailsBaseFragment.addUserIdToFragmentArguments(
+                new UserDetailsFragment(), userId);
+    }
 
-    private UserInfo mUserInfo;
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-    CarUserManagerHelper mCarUserManagerHelper;
-    private UserIconProvider mUserIconProvider;
-    private ListItemProvider mItemProvider;
+    @VisibleForTesting
+    final CarUserManagerHelper.OnUsersUpdateListener mOnUsersUpdateListener = () -> {
+        // Update the user info value, as it may have changed.
+        refreshUserInfo();
+        // Update the text in the action bar when there is a user update.
+        ((TextView) getActivity().findViewById(R.id.title)).setText(getTitleText());
+    };
 
-    /**
-     * Creates instance of UserDetailsFragment.
-     */
-    public static UserDetailsFragment newInstance(UserInfo userInfo) {
-        UserDetailsFragment userDetailsFragment = new UserDetailsFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_TITLE_ID, R.string.user_details_title);
-        bundle.putParcelable(EXTRA_USER_INFO, userInfo);
-        userDetailsFragment.setArguments(bundle);
-        return userDetailsFragment;
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.user_details_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        use(EditUserNameEntryPreferenceController.class,
+                R.string.pk_edit_user_name_entry).setUserInfo(getUserInfo());
     }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mUserInfo = getArguments().getParcelable(EXTRA_USER_INFO);
-
-        if (savedInstanceState != null) {
-            RemoveUserErrorDialog removeUserErrorDialog = (RemoveUserErrorDialog)
-                    getFragmentManager().findFragmentByTag(ERROR_DIALOG_TAG);
-            if (removeUserErrorDialog != null) {
-                removeUserErrorDialog.setRetryListener(this);
-            }
-
-            ConfirmRemoveUserDialog confirmRemoveUserDialog = (ConfirmRemoveUserDialog)
-                    getFragmentManager().findFragmentByTag(CONFIRM_REMOVE_DIALOG_TAG);
-            if (confirmRemoveUserDialog != null) {
-                confirmRemoveUserDialog.setConfirmRemoveUserListener(this);
-            }
-        }
+        getCarUserManagerHelper().registerOnUsersUpdateListener(mOnUsersUpdateListener);
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        createUserManagerHelper();
-        mUserIconProvider = new UserIconProvider(mCarUserManagerHelper);
-        mItemProvider = new ListItemProvider.ListProvider(getListItems());
-
-        // Needs to be called after creation of item provider.
-        super.onActivityCreated(savedInstanceState);
-
-        showActionButtons();
+    public void onDestroy() {
+        super.onDestroy();
+        getCarUserManagerHelper().unregisterOnUsersUpdateListener(mOnUsersUpdateListener);
     }
 
     @Override
-    public void onRemoveUserConfirmed() {
-        removeUser();
-    }
-
-    @Override
-    public void onRetryRemoveUser() {
-        // Retry deleting user.
-        removeUser();
-    }
-
-    @Override
-    public ListItemProvider getItemProvider() {
-        return mItemProvider;
-    }
-
-    private void removeUser() {
-        if (mCarUserManagerHelper.removeUser(
-                mUserInfo, getContext().getString(R.string.user_guest))) {
-            getActivity().onBackPressed();
-        } else {
-            // If failed, need to show error dialog for users, can offer retry.
-            RemoveUserErrorDialog removeUserErrorDialog = new RemoveUserErrorDialog();
-            removeUserErrorDialog.setRetryListener(this);
-            removeUserErrorDialog.show(getFragmentManager(), ERROR_DIALOG_TAG);
-        }
-    }
-
-    private void showActionButtons() {
-        if (mCarUserManagerHelper.isForegroundUser(mUserInfo)) {
-            // Already foreground user, shouldn't show SWITCH button.
-            showRemoveUserButton();
-            return;
-        }
-
-        showRemoveUserButton();
-        showSwitchButton();
-    }
-
-    private void createUserManagerHelper() {
-        // Null check for testing. Don't want to override it if already set by a test.
-        if (mCarUserManagerHelper == null) {
-            mCarUserManagerHelper = new CarUserManagerHelper(getContext());
-        }
-    }
-
-    private void showRemoveUserButton() {
-        Button removeUserBtn = (Button) getActivity().findViewById(R.id.action_button1);
-        // If the current user is not allowed to remove users, the user trying to be removed
-        // cannot be removed, or the current user is a demo user, do not show delete button.
-        if (!mCarUserManagerHelper.canCurrentProcessRemoveUsers()
-                || !mCarUserManagerHelper.canUserBeRemoved(mUserInfo)
-                || mCarUserManagerHelper.isCurrentProcessDemoUser()) {
-            removeUserBtn.setVisibility(View.GONE);
-            return;
-        }
-        removeUserBtn.setVisibility(View.VISIBLE);
-        removeUserBtn.setText(R.string.delete_button);
-        removeUserBtn.setOnClickListener(v -> {
-            ConfirmRemoveUserDialog dialog = new ConfirmRemoveUserDialog();
-            dialog.setConfirmRemoveUserListener(this);
-            dialog.show(getFragmentManager(), CONFIRM_REMOVE_DIALOG_TAG);
-        });
-    }
-
-    private void showSwitchButton() {
-        Button switchUserBtn = (Button) getActivity().findViewById(R.id.action_button2);
-        // If the current process is not allowed to switch to another user, doe not show the switch
-        // button.
-        if (!mCarUserManagerHelper.canCurrentProcessSwitchUsers()) {
-            switchUserBtn.setVisibility(View.GONE);
-            return;
-        }
-        switchUserBtn.setVisibility(View.VISIBLE);
-        switchUserBtn.setText(R.string.user_switch);
-        switchUserBtn.setOnClickListener(v -> {
-            mCarUserManagerHelper.switchToUser(mUserInfo);
-            getActivity().onBackPressed();
-        });
-    }
-
-    private List<ListItem> getListItems() {
-        TextListItem item = new TextListItem(getContext());
-        item.setPrimaryActionIcon(mUserIconProvider.getUserIcon(mUserInfo, getContext()),
-                /* useLargeIcon= */ false);
-        item.setTitle(mUserInfo.name);
-
-        if (!mUserInfo.isInitialized()) {
-            // Indicate that the user has not been initialized yet.
-            item.setBody(getContext().getString(R.string.user_summary_not_set_up));
-        }
-
-        return Arrays.asList(item);
+    protected String getTitleText() {
+        return UserUtils.getUserDisplayName(getContext(), getCarUserManagerHelper(), getUserInfo());
     }
 }
diff --git a/src/com/android/car/settings/users/UserDetailsPermissionsFragment.java b/src/com/android/car/settings/users/UserDetailsPermissionsFragment.java
new file mode 100644
index 0000000..814e2a2
--- /dev/null
+++ b/src/com/android/car/settings/users/UserDetailsPermissionsFragment.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.content.Context;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+
+/**
+ * Business logic for the permissions fragment. This fragment is used when an admin user views the
+ * user details of a non-admin user.
+ */
+public class UserDetailsPermissionsFragment extends UserDetailsBaseFragment {
+
+    /**
+     * Creates instance of UserDetailsPermissionsFragment.
+     */
+    public static UserDetailsPermissionsFragment newInstance(int userId) {
+        return (UserDetailsPermissionsFragment) UserDetailsBaseFragment
+                .addUserIdToFragmentArguments(
+                new UserDetailsPermissionsFragment(), userId);
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.user_details_permissions_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        use(MakeAdminPreferenceController.class, R.string.pk_make_user_admin).setUserInfo(
+                getUserInfo());
+        use(PermissionsPreferenceController.class, R.string.pk_user_permissions).setUserInfo(
+                getUserInfo());
+    }
+
+    @Override
+    protected String getTitleText() {
+        return getContext().getString(R.string.user_details_admin_title,
+                UserUtils.getUserDisplayName(getContext(), getCarUserManagerHelper(),
+                        getUserInfo()));
+    }
+}
+
diff --git a/src/com/android/car/settings/users/UserGridRecyclerView.java b/src/com/android/car/settings/users/UserGridRecyclerView.java
index 8ff2ea4..bf9492b 100644
--- a/src/com/android/car/settings/users/UserGridRecyclerView.java
+++ b/src/com/android/car/settings/users/UserGridRecyclerView.java
@@ -16,11 +16,12 @@
 
 package com.android.car.settings.users;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
 import android.content.pm.UserInfo;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -29,15 +30,15 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import androidx.car.widget.PagedListView;
 import androidx.core.graphics.drawable.RoundedBitmapDrawable;
 import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
+import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.car.settings.R;
 import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.users.ConfirmCreateNewUserDialog.CancelCreateNewUserListener;
-import com.android.car.settings.users.ConfirmCreateNewUserDialog.ConfirmCreateNewUserListener;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
 import com.android.internal.util.UserIcons;
 
 import java.util.ArrayList;
@@ -47,8 +48,9 @@
  * Displays a GridLayout with icons for the users in the system to allow switching between users.
  * One of the uses of this is for the lock screen in auto.
  */
-public class UserGridRecyclerView extends PagedListView implements
+public class UserGridRecyclerView extends RecyclerView implements
         CarUserManagerHelper.OnUsersUpdateListener {
+
     private UserAdapter mAdapter;
     private CarUserManagerHelper mCarUserManagerHelper;
     private Context mContext;
@@ -61,6 +63,9 @@
         mContext = context;
         mCarUserManagerHelper = new CarUserManagerHelper(mContext);
         mEnableAddUserButton = true;
+
+        addItemDecoration(new ItemSpacingDecoration(context.getResources().getDimensionPixelSize(
+                R.dimen.user_switcher_vertical_spacing_between_users)));
     }
 
     /**
@@ -96,31 +101,46 @@
 
     private List<UserRecord> createUserRecords(List<UserInfo> userInfoList) {
         List<UserRecord> userRecords = new ArrayList<>();
+
+        // If the foreground user CANNOT switch to other users, only display the foreground user.
+        if (!mCarUserManagerHelper.canForegroundUserSwitchUsers()) {
+            userRecords.add(createForegroundUserRecord());
+            return userRecords;
+        }
+
+        // If the foreground user CAN switch to other users, iterate through all users.
         for (UserInfo userInfo : userInfoList) {
-            if (userInfo.isGuest()) {
-                // Don't display guests in the switcher.
-                continue;
-            }
             boolean isForeground =
                     mCarUserManagerHelper.getCurrentForegroundUserId() == userInfo.id;
+
+            if (!isForeground && userInfo.isGuest()) {
+                // Don't display temporary running background guests in the switcher.
+                continue;
+            }
+
             UserRecord record = new UserRecord(userInfo, false /* isStartGuestSession */,
                     false /* isAddUser */, isForeground);
             userRecords.add(record);
         }
 
-        // Add guest user record if the foreground user is not a guest
+        // Add start guest user record if the system is not logged in as guest already.
         if (!mCarUserManagerHelper.isForegroundUserGuest()) {
-            userRecords.add(addGuestUserRecord());
+            userRecords.add(createStartGuestUserRecord());
         }
 
         // Add "add user" record if the foreground user can add users
         if (mCarUserManagerHelper.canForegroundUserAddUsers()) {
-            userRecords.add(addUserRecord());
+            userRecords.add(createAddUserRecord());
         }
 
         return userRecords;
     }
 
+    private UserRecord createForegroundUserRecord() {
+        return new UserRecord(mCarUserManagerHelper.getCurrentForegroundUserInfo(),
+                false /* isStartGuestSession */, false /* isAddUser */, true /* isForeground */);
+    }
+
     /**
      * Show the "Add User" Button
      */
@@ -140,9 +160,9 @@
     /**
      * Create guest user record
      */
-    private UserRecord addGuestUserRecord() {
+    private UserRecord createStartGuestUserRecord() {
         UserInfo userInfo = new UserInfo();
-        userInfo.name = mContext.getString(R.string.user_guest);
+        userInfo.name = mContext.getString(R.string.start_guest_session);
         return new UserRecord(userInfo, true /* isStartGuestSession */,
                 false /* isAddUser */, false /* isForeground */);
     }
@@ -150,7 +170,7 @@
     /**
      * Create add user record
      */
-    private UserRecord addUserRecord() {
+    private UserRecord createAddUserRecord() {
         UserInfo userInfo = new UserInfo();
         userInfo.name = mContext.getString(R.string.user_add_user_menu);
         return new UserRecord(userInfo, false /* isStartGuestSession */,
@@ -164,7 +184,7 @@
     @Override
     public void onUsersUpdate() {
         // If you can show the add user button, there is no restriction
-        mAdapter.setAddUserRestricted(mEnableAddUserButton ? false : true);
+        mAdapter.setAddUserRestricted(!mEnableAddUserButton);
         mAdapter.clearUsers();
         mAdapter.updateUsers(createUserRecords(mCarUserManagerHelper
                 .getAllUsers()));
@@ -175,20 +195,33 @@
      * Adapter to populate the grid layout with the available user profiles
      */
     public final class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserAdapterViewHolder>
-            implements ConfirmCreateNewUserListener, CancelCreateNewUserListener,
-            AddNewUserTask.AddNewUserListener {
+            implements AddNewUserTask.AddNewUserListener {
 
         private final Context mContext;
-        private List<UserRecord> mUsers;
         private final Resources mRes;
         private final String mGuestName;
-        private final String mNewUserName;
+
+        private List<UserRecord> mUsers;
+        private String mNewUserName;
         // View that holds the add user button.  Used to enable/disable the view
         private View mAddUserView;
         private float mOpacityDisabled;
         private float mOpacityEnabled;
         private boolean mIsAddUserRestricted;
 
+        private final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+            mAddNewUserTask = new AddNewUserTask(mCarUserManagerHelper, /* addNewUserListener= */
+                    this);
+            mAddNewUserTask.execute(mNewUserName);
+        };
+
+        /**
+         * Enable the "add user" button if the user cancels adding an user
+         */
+        private final ConfirmationDialogFragment.RejectListener mRejectListener =
+                arguments -> enableAddView();
+
+
         public UserAdapter(Context context, List<UserRecord> users) {
             mRes = context.getResources();
             mContext = context;
@@ -208,7 +241,6 @@
 
         /**
          * Refreshes the User Grid with the new List of users.
-         * @param users
          */
         public void updateUsers(List<UserRecord> users) {
             mUsers = users;
@@ -217,7 +249,7 @@
         @Override
         public UserAdapterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
             View view = LayoutInflater.from(mContext)
-                    .inflate(R.layout.car_user_switcher_pod, parent, false);
+                    .inflate(R.layout.user_switcher_pod, parent, false);
             view.setAlpha(mOpacityEnabled);
             view.bringToFront();
             return new UserAdapterViewHolder(view);
@@ -232,100 +264,117 @@
             holder.mUserAvatarImageView.setImageDrawable(circleIcon);
             holder.mUserNameTextView.setText(userRecord.mInfo.name);
 
-            // Show the current user frame if current user
+            // Defaults to 100% opacity and no circle around the icon.
+            holder.mView.setAlpha(mOpacityEnabled);
+            holder.mFrame.setBackgroundResource(0);
+
+            // Foreground user record.
             if (userRecord.mIsForeground) {
-                holder.mFrame.setBackgroundResource(R.drawable.car_user_avatar_bg_circle);
-            } else {
-                holder.mFrame.setBackgroundResource(0);
+                // Add a circle around the icon.
+                holder.mFrame.setBackgroundResource(R.drawable.user_avatar_bg_circle);
+                // Go back to quick settings if user selected is already the foreground user.
+                holder.mView.setOnClickListener(v -> mBaseFragment.getActivity().onBackPressed());
+                return;
             }
 
-            // If there are restrictions, show a 50% opaque "add user" view
-            if (userRecord.mIsAddUser && mIsAddUserRestricted) {
-                holder.mView.setAlpha(mOpacityDisabled);
-            } else {
-                holder.mView.setAlpha(mOpacityEnabled);
+            // Start guest session record.
+            if (userRecord.mIsStartGuestSession) {
+                holder.mView.setOnClickListener(v -> handleGuestSessionClicked());
+                return;
             }
 
-            holder.mView.setOnClickListener(v -> {
-                if (userRecord == null) {
-                    return;
+            // Add user record.
+            if (userRecord.mIsAddUser) {
+                if (mIsAddUserRestricted) {
+                    // If there are restrictions, show a 50% opaque "add user" view
+                    holder.mView.setAlpha(mOpacityDisabled);
+                    holder.mView.setOnClickListener(
+                            v -> mBaseFragment.getFragmentController().showBlockingMessage());
+                } else {
+                    holder.mView.setOnClickListener(v -> handleAddUserClicked(v));
                 }
+                return;
+            }
 
-                // If the user selects Guest, start the guest session.
-                if (userRecord.mIsStartGuestSession) {
-                    mCarUserManagerHelper.startNewGuestSession(mGuestName);
-                    return;
-                }
-
-                // If the user wants to add a user, show dialog to confirm adding a user
-                if (userRecord.mIsAddUser) {
-                    if (mIsAddUserRestricted) {
-                        mBaseFragment.getFragmentController().showDOBlockingMessage();
-                    } else {
-                        // Disable button so it cannot be clicked multiple times
-                        mAddUserView = holder.mView;
-                        mAddUserView.setEnabled(false);
-
-                        ConfirmCreateNewUserDialog dialog =
-                                new ConfirmCreateNewUserDialog();
-                        dialog.setConfirmCreateNewUserListener(this);
-                        dialog.setCancelCreateNewUserListener(this);
-                        if (mBaseFragment != null) {
-                            dialog.show(mBaseFragment);
-                        }
-                    }
-                    return;
-                }
-                // If the user doesn't want to be a guest or add a user, switch to the user selected
-                mCarUserManagerHelper.switchToUser(userRecord.mInfo);
-            });
-
+            // User record;
+            holder.mView.setOnClickListener(v -> handleUserSwitch(userRecord.mInfo));
         }
 
         /**
          * Specify if adding a user should be restricted.
          *
          * @param isAddUserRestricted should adding a user be restricted
-         *
          */
         public void setAddUserRestricted(boolean isAddUserRestricted) {
             mIsAddUserRestricted = isAddUserRestricted;
         }
 
+        private void handleUserSwitch(UserInfo userInfo) {
+            if (mCarUserManagerHelper.switchToUser(userInfo)) {
+                // Successful switch, close Settings app.
+                mBaseFragment.getActivity().finish();
+            }
+        }
+
+        private void handleGuestSessionClicked() {
+            if (mCarUserManagerHelper.startGuestSession(mGuestName)) {
+                // Successful start, will switch to guest now. Close Settings app.
+                mBaseFragment.getActivity().finish();
+            }
+        }
+
+        private void handleAddUserClicked(View addUserView) {
+            if (mCarUserManagerHelper.isUserLimitReached()) {
+                showMaxUsersLimitReachedDialog();
+            } else {
+                mAddUserView = addUserView;
+                // Disable button so it cannot be clicked multiple times
+                mAddUserView.setEnabled(false);
+                showConfirmCreateNewUserDialog();
+            }
+        }
+
+        private void showMaxUsersLimitReachedDialog() {
+            MaxUsersLimitReachedDialog dialog = new MaxUsersLimitReachedDialog(
+                    mCarUserManagerHelper.getMaxSupportedRealUsers());
+            if (mBaseFragment != null) {
+                dialog.show(mBaseFragment);
+            }
+        }
+
+        private void showConfirmCreateNewUserDialog() {
+            ConfirmationDialogFragment dialogFragment =
+                    UsersDialogProvider.getConfirmCreateNewUserDialogFragment(getContext(),
+                            mConfirmListener, mRejectListener);
+            dialogFragment.show(mBaseFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
+        }
+
         private Bitmap getUserRecordIcon(UserRecord userRecord) {
             if (userRecord.mIsStartGuestSession) {
                 return mCarUserManagerHelper.getGuestDefaultIcon();
             }
 
             if (userRecord.mIsAddUser) {
-                return UserIcons.convertToBitmap(mContext
-                    .getDrawable(R.drawable.car_add_circle_round));
+                return UserIcons.convertToBitmap(mContext.getDrawable(R.drawable.user_add_circle));
             }
 
             return mCarUserManagerHelper.getUserIcon(userRecord.mInfo);
         }
 
-        @Override
-        public void onCreateNewUserConfirmed() {
-            mAddNewUserTask =
-                    new AddNewUserTask(mCarUserManagerHelper, /* addNewUserListener= */ this);
-            mAddNewUserTask.execute(mNewUserName);
-        }
 
-        /**
-         * Enable the "add user" button if the user cancels adding an user
-         */
         @Override
-        public void onCreateNewUserCancelled() {
-            if (mAddUserView != null) {
-                mAddUserView.setEnabled(true);
-            }
+        public void onUserAddedSuccess() {
+            enableAddView();
+            // New user added. Will switch to new user, therefore close the app.
+            mBaseFragment.getActivity().finish();
         }
 
         @Override
-        public void onUserAdded() {
-            if (mAddUserView != null) {
-                mAddUserView.setEnabled(true);
+        public void onUserAddedFailure() {
+            enableAddView();
+            // Display failure dialog.
+            if (mBaseFragment != null) {
+                ErrorDialog.show(mBaseFragment, R.string.add_user_error_title);
             }
         }
 
@@ -347,9 +396,15 @@
             public UserAdapterViewHolder(View view) {
                 super(view);
                 mView = view;
-                mUserAvatarImageView = (ImageView) view.findViewById(R.id.user_avatar);
-                mUserNameTextView = (TextView) view.findViewById(R.id.user_name);
-                mFrame = (FrameLayout) view.findViewById(R.id.current_user_frame);
+                mUserAvatarImageView = view.findViewById(R.id.user_avatar);
+                mUserNameTextView = view.findViewById(R.id.user_name);
+                mFrame = view.findViewById(R.id.current_user_frame);
+            }
+        }
+
+        private void enableAddView() {
+            if (mAddUserView != null) {
+                mAddUserView.setEnabled(true);
             }
         }
     }
@@ -373,4 +428,31 @@
             mIsForeground = isForeground;
         }
     }
+
+    /**
+     * A {@link RecyclerView.ItemDecoration} that will add spacing between each item in the
+     * RecyclerView that it is added to.
+     */
+    private static class ItemSpacingDecoration extends RecyclerView.ItemDecoration {
+        private int mItemSpacing;
+
+        private ItemSpacingDecoration(int itemSpacing) {
+            mItemSpacing = itemSpacing;
+        }
+
+        @Override
+        public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
+                RecyclerView.State state) {
+            super.getItemOffsets(outRect, view, parent, state);
+            int position = parent.getChildAdapterPosition(view);
+
+            // Skip offset for last item except for GridLayoutManager.
+            if (position == state.getItemCount() - 1
+                    && !(parent.getLayoutManager() instanceof GridLayoutManager)) {
+                return;
+            }
+
+            outRect.bottom = mItemSpacing;
+        }
+    }
 }
diff --git a/src/com/android/car/settings/users/UserIconProvider.java b/src/com/android/car/settings/users/UserIconProvider.java
index 895250d..f08ef66 100644
--- a/src/com/android/car/settings/users/UserIconProvider.java
+++ b/src/com/android/car/settings/users/UserIconProvider.java
@@ -16,7 +16,7 @@
 
 package com.android.car.settings.users;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
 import android.content.pm.UserInfo;
 import android.content.res.Resources;
@@ -44,7 +44,6 @@
      * If icon has not been assigned to this user, it defaults to a generic user icon.
      *
      * @param userInfo User for which the icon is requested.
-     *
      * @return Drawable representing the icon for the user.
      */
     public Drawable getUserIcon(UserInfo userInfo, Context context) {
@@ -55,7 +54,7 @@
         }
         Resources res = context.getResources();
         BitmapDrawable scaledIcon = (BitmapDrawable) mCarUserManagerHelper.scaleUserIcon(icon, res
-                .getDimensionPixelSize(R.dimen.car_primary_icon_size));
+                .getDimensionPixelSize(R.dimen.icon_size));
 
         // Enforce that the icon is circular
         RoundedBitmapDrawable circleIcon = RoundedBitmapDrawableFactory
@@ -65,15 +64,24 @@
     }
 
     /**
+     * Gets the default icon for guest user.
+     *
+     * @return Drawable representing the default guest icon.
+     */
+    public Drawable getDefaultGuestIcon(Context context) {
+        return UserIconProvider.scaleUserIcon(mCarUserManagerHelper.getGuestDefaultIcon(),
+                mCarUserManagerHelper, context);
+    }
+
+    /**
      * Scales passed in bitmap to the appropriate user icon size.
      *
      * @param bitmap Bitmap to scale.
-     *
      * @return Drawable scaled to the user icon size.
      */
     public static Drawable scaleUserIcon(Bitmap bitmap, CarUserManagerHelper userManagerHelper,
             Context context) {
         return userManagerHelper.scaleUserIcon(bitmap, context.getResources()
-                .getDimensionPixelSize(R.dimen.car_primary_icon_size));
+                .getDimensionPixelSize(R.dimen.icon_size));
     }
 }
diff --git a/src/com/android/car/settings/users/UserSwitcherFragment.java b/src/com/android/car/settings/users/UserSwitcherFragment.java
index 8fc89a4..bf18bdd 100644
--- a/src/com/android/car/settings/users/UserSwitcherFragment.java
+++ b/src/com/android/car/settings/users/UserSwitcherFragment.java
@@ -19,6 +19,8 @@
 import android.car.drivingstate.CarUxRestrictions;
 import android.os.Bundle;
 
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
 import androidx.recyclerview.widget.GridLayoutManager;
 
 import com.android.car.settings.R;
@@ -32,18 +34,22 @@
 
     private UserGridRecyclerView mUserGridView;
 
-    /**
-     * Initializes the UserSwitcherFragment
-     * @return instance of the UserSwitcherFragment
-     */
-    public static UserSwitcherFragment newInstance() {
-        UserSwitcherFragment userSwitcherFragment = new UserSwitcherFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.users_list_title);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.car_user_switcher);
-        userSwitcherFragment.setArguments(bundle);
-        return userSwitcherFragment;
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getLayoutId() {
+        return R.layout.user_switcher;
+    }
+
+    @Override
+    @StringRes
+    protected int getTitleId() {
+        return R.string.users_list_title;
     }
 
     @Override
@@ -54,7 +60,7 @@
         GridLayoutManager layoutManager = new GridLayoutManager(getContext(),
                 getContext().getResources().getInteger(R.integer.user_switcher_num_col));
         mUserGridView.setFragment(this);
-        mUserGridView.getRecyclerView().setLayoutManager(layoutManager);
+        mUserGridView.setLayoutManager(layoutManager);
         mUserGridView.buildAdapter();
     }
 
@@ -73,8 +79,8 @@
 
 
     @Override
-    public void onUxRestrictionChanged(CarUxRestrictions carUxRestrictions) {
-        applyRestriction(CarUxRestrictionsHelper.isNoSetup(carUxRestrictions));
+    public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
+        applyRestriction(CarUxRestrictionsHelper.isNoSetup(restrictionInfo));
     }
 
     private void applyRestriction(boolean restricted) {
diff --git a/src/com/android/car/settings/users/UserUtils.java b/src/com/android/car/settings/users/UserUtils.java
new file mode 100644
index 0000000..3d26939
--- /dev/null
+++ b/src/com/android/car/settings/users/UserUtils.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+
+import com.android.car.settings.R;
+
+/**
+ * Util class for providing basic, universally needed user-related methods.
+ */
+public class UserUtils {
+    private UserUtils() {
+    }
+
+    /**
+     * Fetches the {@link UserInfo} from UserManager system service for the user ID.
+     *
+     * @param userId ID that corresponds to the returned UserInfo.
+     * @return {@link UserInfo} for the user ID.
+     */
+    public static UserInfo getUserInfo(Context context, int userId) {
+        UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+        return userManager.getUserInfo(userId);
+    }
+
+    /**
+     * Returns the user name that should be displayed. The caller shouldn't use userInfo.name
+     * directly, because the display name is modified for the current process user.
+     */
+    public static String getUserDisplayName(Context context,
+            CarUserManagerHelper carUserManagerHelper, UserInfo userInfo) {
+        return carUserManagerHelper.isCurrentProcessUser(userInfo) ? context.getString(
+                R.string.current_user_name, userInfo.name) : userInfo.name;
+    }
+
+    /**
+     * Returns whether or not the current user is an admin and whether the user info they are
+     * viewing is of a non-admin.
+     */
+    public static boolean isAdminViewingNonAdmin(CarUserManagerHelper carUserManagerHelper,
+            UserInfo userInfo) {
+        return carUserManagerHelper.isCurrentProcessAdminUser() && !userInfo.isAdmin();
+    }
+
+}
diff --git a/src/com/android/car/settings/users/UsersBasePreferenceController.java b/src/com/android/car/settings/users/UsersBasePreferenceController.java
new file mode 100644
index 0000000..e0f8d4e
--- /dev/null
+++ b/src/com/android/car/settings/users/UsersBasePreferenceController.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.annotation.CallSuper;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/** Shared business logic between {@link UsersListFragment} and {@link ChooseNewAdminFragment}. */
+public abstract class UsersBasePreferenceController extends PreferenceController<PreferenceGroup> {
+
+    /** Update screen when users list is updated. */
+    private final CarUserManagerHelper.OnUsersUpdateListener mOnUsersUpdateListener =
+            this::refreshUi;
+
+    private UsersPreferenceProvider mPreferenceProvider;
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private List<Preference> mUsersToDisplay = new ArrayList<>();
+
+    public UsersBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        UsersPreferenceProvider.UserClickListener userClickListener = this::userClicked;
+        mPreferenceProvider = new UsersPreferenceProvider(context, mCarUserManagerHelper,
+                userClickListener);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    /**
+     * Ensure that helper is set by the time onCreate is called. Register a listener to refresh
+     * screen on updates.
+     */
+    @Override
+    @CallSuper
+    protected void onCreateInternal() {
+        mCarUserManagerHelper.registerOnUsersUpdateListener(mOnUsersUpdateListener);
+    }
+
+    /** Unregister listener to refresh screen on updates. */
+    @Override
+    @CallSuper
+    protected void onDestroyInternal() {
+        mCarUserManagerHelper.unregisterOnUsersUpdateListener(mOnUsersUpdateListener);
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        List<Preference> newUsers = mPreferenceProvider.createUserList();
+        if (userListsAreDifferent(mUsersToDisplay, newUsers)) {
+            mUsersToDisplay = newUsers;
+            preferenceGroup.removeAll();
+
+            for (Preference preference : mUsersToDisplay) {
+                preferenceGroup.addPreference(preference);
+            }
+        }
+    }
+
+    /** Gets the car user manager helper. */
+    protected CarUserManagerHelper getCarUserManagerHelper() {
+        return mCarUserManagerHelper;
+    }
+
+    /** Handles the user click on a preference for a certain user. */
+    protected abstract void userClicked(UserInfo userInfo);
+
+
+    /** Gets the preference provider to set additional arguments if necessary. */
+    protected UsersPreferenceProvider getPreferenceProvider() {
+        return mPreferenceProvider;
+    }
+
+    private boolean userListsAreDifferent(List<Preference> currentList,
+            List<Preference> newList) {
+        if (currentList.size() != newList.size()) {
+            return true;
+        }
+
+        for (int i = 0; i < currentList.size(); i++) {
+            // Cannot use "compareTo" on preference, since it uses the order attribute to compare.
+            if (preferencesAreDifferent(currentList.get(i), newList.get(i))) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    private boolean preferencesAreDifferent(Preference lhs, Preference rhs) {
+        return !Objects.equals(lhs.getTitle(), rhs.getTitle())
+                || !Objects.equals(lhs.getSummary(), rhs.getSummary());
+    }
+}
diff --git a/src/com/android/car/settings/users/UsersDialogProvider.java b/src/com/android/car/settings/users/UsersDialogProvider.java
new file mode 100644
index 0000000..cb1fe23
--- /dev/null
+++ b/src/com/android/car/settings/users/UsersDialogProvider.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2019 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.car.settings.users;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+
+/**
+ * Provides common Users-related ConfirmationDialogFragments to ensure consistency
+ */
+public final class UsersDialogProvider {
+
+    /** Argument key to store the user info that the device is trying to make an admin. */
+    static final String KEY_USER_TO_MAKE_ADMIN = "USER_TO_MAKE_ADMIN";
+    /** Argument key to store the user type that the device is trying to remove. */
+    static final String KEY_USER_TYPE = "USER_TYPE";
+    /** {@link KEY_USER_TYPE} value when removing the last admin on the device. */
+    static final String LAST_ADMIN = "LAST_ADMIN";
+    /** {@link KEY_USER_TYPE} value when removing the last user on the device. */
+    static final String LAST_USER = "LAST_USER";
+    /**
+     * Default {@link KEY_USER_TYPE} value when removing a user that is neither {@link LAST_ADMIN}
+     * nor {@link LAST_USER}.
+     */
+    static final String ANY_USER = "ANY_USER";
+
+    private UsersDialogProvider() {
+    }
+
+    /** Gets a confirmation dialog fragment to confirm or reject adding a new user. */
+    public static ConfirmationDialogFragment getConfirmCreateNewUserDialogFragment(Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+
+        String message = context.getString(R.string.user_add_user_message_setup)
+                .concat(System.lineSeparator())
+                .concat(System.lineSeparator())
+                .concat(context.getString(R.string.user_add_user_message_update));
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.user_add_user_title)
+                .setMessage(message)
+                .setPositiveButton(android.R.string.ok, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .build();
+
+        return dialogFragment;
+    }
+
+    /** Gets a confirmation dialog fragment to confirm or reject making a user an admin. */
+    public static ConfirmationDialogFragment getConfirmGrantAdminDialogFragment(Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener,
+            UserInfo userToMakeAdmin) {
+
+        String message = context.getString(R.string.grant_admin_permissions_message)
+                .concat(System.lineSeparator())
+                .concat(System.lineSeparator())
+                .concat(context.getString(R.string.action_not_reversible_message));
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.grant_admin_permissions_title)
+                .setMessage(message)
+                .setPositiveButton(R.string.confirm_grant_admin, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .addArgumentParcelable(KEY_USER_TO_MAKE_ADMIN, userToMakeAdmin)
+                .build();
+
+        return dialogFragment;
+    }
+
+    /**
+     * Gets a confirmation dialog fragment to confirm or reject removing the last user on the
+     * device.
+     */
+    public static ConfirmationDialogFragment getConfirmRemoveLastUserDialogFragment(Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+
+        String message = context.getString(R.string.delete_last_user_admin_created_message)
+                .concat(System.lineSeparator())
+                .concat(System.lineSeparator())
+                .concat(context.getString(R.string.delete_last_user_system_setup_required_message));
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.delete_last_user_dialog_title)
+                .setMessage(message)
+                .setPositiveButton(R.string.delete_button, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .addArgumentString(KEY_USER_TYPE, LAST_USER)
+                .build();
+
+        return dialogFragment;
+    }
+
+    /**
+     * Gets a confirmation dialog fragment to confirm or reject removing the last admin user on the
+     * device.
+     */
+    public static ConfirmationDialogFragment getConfirmRemoveLastAdminDialogFragment(
+            Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.choose_new_admin_title)
+                .setMessage(R.string.choose_new_admin_message)
+                .setPositiveButton(R.string.choose_new_admin_label, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .addArgumentString(KEY_USER_TYPE, LAST_ADMIN)
+                .build();
+
+        return dialogFragment;
+    }
+
+    /**
+     * Gets a confirmation dialog fragment to confirm or reject removing a user that is neither the
+     * last admin nor the last user on the device.
+     */
+    public static ConfirmationDialogFragment getConfirmRemoveUserDialogFragment(Context context,
+            @Nullable ConfirmationDialogFragment.ConfirmListener confirmListener,
+            @Nullable ConfirmationDialogFragment.RejectListener rejectListener) {
+
+        ConfirmationDialogFragment dialogFragment = new ConfirmationDialogFragment.Builder(context)
+                .setTitle(R.string.delete_user_dialog_title)
+                .setMessage(R.string.delete_user_dialog_message)
+                .setPositiveButton(R.string.delete_button, confirmListener)
+                .setNegativeButton(android.R.string.cancel, rejectListener)
+                .addArgumentString(KEY_USER_TYPE, ANY_USER)
+                .build();
+
+        return dialogFragment;
+    }
+}
diff --git a/src/com/android/car/settings/users/UsersEntryPreferenceController.java b/src/com/android/car/settings/users/UsersEntryPreferenceController.java
new file mode 100644
index 0000000..a4f8b8f
--- /dev/null
+++ b/src/com/android/car/settings/users/UsersEntryPreferenceController.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller which determines if the top level entry into User settings should direct to a list
+ * of all users or a user details page based on the current user's admin status.
+ */
+public class UsersEntryPreferenceController extends PreferenceController<Preference> {
+
+    private static final Logger LOG = new Logger(UsersEntryPreferenceController.class);
+
+    private final CarUserManagerHelper mCarUserManagerHelper;
+
+    public UsersEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public boolean handlePreferenceClicked(Preference preference) {
+        if (mCarUserManagerHelper.isCurrentProcessAdminUser()) {
+            // Admins can see a full list of users in Settings.
+            LOG.v("Creating UsersListFragment for admin user.");
+            getFragmentController().launchFragment(new UsersListFragment());
+        } else {
+            // Non-admins can only manage themselves in Settings.
+            LOG.v("Creating UserDetailsFragment for non-admin.");
+            getFragmentController().launchFragment(UserDetailsFragment.newInstance(
+                    mCarUserManagerHelper.getCurrentProcessUserId()));
+        }
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/users/UsersItemProvider.java b/src/com/android/car/settings/users/UsersItemProvider.java
deleted file mode 100644
index e6f5108..0000000
--- a/src/com/android/car/settings/users/UsersItemProvider.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.users;
-
-import android.annotation.Nullable;
-import android.car.user.CarUserManagerHelper;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.graphics.drawable.Drawable;
-
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.TextListItem;
-
-import com.android.car.settings.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Implementation of {@link ListItemProvider} for {@link UsersListFragment}.
- * Creates items that represent users on the system.
- */
-class UsersItemProvider extends ListItemProvider {
-    private final List<ListItem> mItems = new ArrayList<>();
-    private final Context mContext;
-    private final UserClickListener mUserClickListener;
-    private final CarUserManagerHelper mCarUserManagerHelper;
-    private final UserIconProvider mUserIconProvider;
-
-    UsersItemProvider(Context context, UserClickListener userClickListener,
-            CarUserManagerHelper userManagerHelper) {
-        mContext = context;
-        mUserClickListener = userClickListener;
-        mCarUserManagerHelper = userManagerHelper;
-        mUserIconProvider = new UserIconProvider(mCarUserManagerHelper);
-        refreshItems();
-    }
-
-    @Override
-    public ListItem get(int position) {
-        return mItems.get(position);
-    }
-
-    @Override
-    public int size() {
-        return mItems.size();
-    }
-
-    /**
-     * Clears and recreates the list of items.
-     */
-    public void refreshItems() {
-        mItems.clear();
-
-        UserInfo currUserInfo = mCarUserManagerHelper.getCurrentForegroundUserInfo();
-
-        // Show current user
-        mItems.add(createUserItem(currUserInfo, /* isCurrentUser= */ true));
-
-        // If the current user is a demo user, don't list any of the other users.
-        if (currUserInfo.isDemo()) {
-            return;
-        }
-
-        // Display other users on the system
-        List<UserInfo> infos = mCarUserManagerHelper.getAllSwitchableUsers();
-        for (UserInfo userInfo : infos) {
-            if (!userInfo.isGuest()) { // Do not show guest users.
-                mItems.add(createUserItem(userInfo, /* isCurrentUser= */ false));
-            }
-        }
-
-        // Display guest session option.
-        if (!currUserInfo.isGuest()) {
-            mItems.add(createGuestItem());
-        }
-    }
-
-    // Creates a line for a user, clicking on it leads to the user details page.
-    private ListItem createUserItem(UserInfo userInfo, boolean isCurrentUser) {
-        TextListItem item = new TextListItem(mContext);
-        item.setPrimaryActionIcon(mUserIconProvider.getUserIcon(userInfo, mContext),
-                /* useLargeIcon= */ false);
-        item.setTitle(getUserItemTitle(userInfo, isCurrentUser));
-        item.setBody(getUserItemSummary(userInfo, isCurrentUser));
-        item.setOnClickListener(view -> mUserClickListener.onUserClicked(userInfo));
-        item.setSupplementalIcon(R.drawable.ic_chevron_right, false);
-        return item;
-    }
-
-    @Nullable
-    private String getUserItemSummary(UserInfo userInfo, boolean isCurrentUser) {
-        if (!userInfo.isInitialized()) {
-            return mContext.getString(R.string.user_summary_not_set_up);
-        }
-        if (userInfo.isAdmin()) {
-            return isCurrentUser ? mContext.getString(R.string.signed_in_admin_user)
-                    : mContext.getString(R.string.user_admin);
-        }
-        // No summary for users who are initialized and not admins.
-        return null;
-    }
-
-    private String getUserItemTitle(UserInfo userInfo, boolean isCurrentUser)  {
-        return isCurrentUser ? mContext.getString(R.string.current_user_name, userInfo.name)
-                : userInfo.name;
-    }
-
-    // Creates a line for a guest session.
-    private ListItem createGuestItem() {
-        Drawable icon = UserIconProvider.scaleUserIcon(mCarUserManagerHelper.getGuestDefaultIcon(),
-                mCarUserManagerHelper, mContext);
-
-        TextListItem item = new TextListItem(mContext);
-        item.setPrimaryActionIcon(icon, /* useLargeIcon= */ false);
-        item.setTitle(mContext.getString(R.string.user_guest));
-
-        item.setOnClickListener(view -> mUserClickListener.onGuestClicked());
-        item.setSupplementalIcon(R.drawable.ic_chevron_right, false);
-        return item;
-    }
-
-    /**
-     * Interface for registering clicks on users.
-     */
-    interface UserClickListener {
-        /**
-         * Invoked when user is clicked.
-         *
-         * @param userInfo User for which the click is registered.
-         */
-        void onUserClicked(UserInfo userInfo);
-
-        /**
-         * Invoked when guest is clicked.
-         */
-        void onGuestClicked();
-    }
-}
diff --git a/src/com/android/car/settings/users/UsersListFragment.java b/src/com/android/car/settings/users/UsersListFragment.java
index 2784aee..160fbb6 100644
--- a/src/com/android/car/settings/users/UsersListFragment.java
+++ b/src/com/android/car/settings/users/UsersListFragment.java
@@ -17,93 +17,99 @@
 package com.android.car.settings.users;
 
 import android.car.drivingstate.CarUxRestrictions;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
 import android.content.Intent;
-import android.content.pm.UserInfo;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ProgressBar;
 
-import androidx.car.widget.ListItemProvider;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.ListItemSettingsFragment;
+import com.android.car.settings.common.CarUxRestrictionsHelper;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.internal.annotations.VisibleForTesting;
 
 /**
  * Lists all Users available on this device.
  */
-public class UsersListFragment extends ListItemSettingsFragment
-        implements CarUserManagerHelper.OnUsersUpdateListener,
-        UsersItemProvider.UserClickListener,
-        ConfirmCreateNewUserDialog.ConfirmCreateNewUserListener,
+public class UsersListFragment extends SettingsFragment implements
         ConfirmExitRetailModeDialog.ConfirmExitRetailModeListener,
         AddNewUserTask.AddNewUserListener {
     private static final String FACTORY_RESET_PACKAGE_NAME = "android";
     private static final String FACTORY_RESET_REASON = "ExitRetailModeConfirmed";
 
-    private UsersItemProvider mItemProvider;
     private CarUserManagerHelper mCarUserManagerHelper;
 
     private ProgressBar mProgressBar;
     private Button mAddUserButton;
 
     private AsyncTask mAddNewUserTask;
+    /** Indicates that a task is running. */
+    private boolean mIsBusy;
+    private float mOpacityDisabled;
+    private float mOpacityEnabled;
+    private boolean mRestricted;
 
-    public static UsersListFragment newInstance() {
-        UsersListFragment usersListFragment = new UsersListFragment();
-        Bundle bundle = ListItemSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.users_list_title);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        usersListFragment.setArguments(bundle);
-        return usersListFragment;
+    @VisibleForTesting
+    final ConfirmationDialogFragment.ConfirmListener mConfirmListener = arguments -> {
+        mAddNewUserTask = new AddNewUserTask(mCarUserManagerHelper, /* addNewUserListener= */
+                this).execute(getContext().getString(R.string.user_new_user_name));
+        mIsBusy = true;
+        updateUi();
+    };
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.users_list_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mOpacityDisabled = getContext().getResources().getFloat(R.dimen.opacity_disabled);
+        mOpacityEnabled = getContext().getResources().getFloat(R.dimen.opacity_enabled);
+        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
     }
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
-        mCarUserManagerHelper = new CarUserManagerHelper(getContext());
-        mItemProvider =
-                new UsersItemProvider(getContext(), this, mCarUserManagerHelper);
-
-        // Register to receive changes to the users.
-        mCarUserManagerHelper.registerOnUsersUpdateListener(this);
-
-        // Super class's onActivityCreated need to be called after itemProvider is initialized.
-        // Because getItemProvider is called in there.
         super.onActivityCreated(savedInstanceState);
 
-        mProgressBar = getActivity().findViewById(R.id.progress_bar);
+        mProgressBar = requireActivity().findViewById(R.id.progress_bar);
 
-        mAddUserButton = (Button) getActivity().findViewById(R.id.action_button1);
+        mAddUserButton = getActivity().findViewById(R.id.action_button1);
+        mAddUserButton.setOnClickListener(v -> {
+            if (mRestricted) {
+                showBlockingMessage();
+            } else {
+                handleAddUserClicked();
+            }
+        });
         if (mCarUserManagerHelper.isCurrentProcessDemoUser()) {
-            // If the user is a demo user, show a dialog asking if they want to exit retail/demo
-            // mode
             mAddUserButton.setText(R.string.exit_retail_button_text);
-            mAddUserButton.setOnClickListener(v -> {
-                ConfirmExitRetailModeDialog dialog = new ConfirmExitRetailModeDialog();
-                dialog.setConfirmExitRetailModeListener(this);
-                dialog.show(this);
-            });
         } else if (mCarUserManagerHelper.canCurrentProcessAddUsers()) {
-            // Only add the add user button if the current user is allowed to add a user.
             mAddUserButton.setText(R.string.user_add_user_menu);
-            mAddUserButton.setOnClickListener(v -> {
-                ConfirmCreateNewUserDialog dialog =
-                        new ConfirmCreateNewUserDialog();
-                dialog.setConfirmCreateNewUserListener(this);
-                dialog.show(this);
-            });
         }
     }
 
     @Override
-    public void onCreateNewUserConfirmed() {
-        mAddUserButton.setEnabled(false);
-        mProgressBar.setVisibility(View.VISIBLE);
-        mAddNewUserTask =
-                new AddNewUserTask(mCarUserManagerHelper, /* addNewUserListener= */ this)
-                        .execute(getContext().getString(R.string.user_new_user_name));
+    public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
+        mRestricted = CarUxRestrictionsHelper.isNoSetup(restrictionInfo);
+        mAddUserButton.setAlpha(mRestricted ? mOpacityDisabled : mOpacityEnabled);
     }
 
     /**
@@ -123,58 +129,70 @@
     }
 
     @Override
+    public void onStart() {
+        super.onStart();
+        updateUi();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mProgressBar.setVisibility(View.GONE);
+    }
+
+    @Override
     public void onDestroy() {
         super.onDestroy();
 
         if (mAddNewUserTask != null) {
             mAddNewUserTask.cancel(/* mayInterruptIfRunning= */ false);
         }
-
-        mCarUserManagerHelper.unregisterOnUsersUpdateListener(this);
     }
 
     @Override
-    public void onUsersUpdate() {
-        refreshListItems();
+    public void onUserAddedSuccess() {
+        mIsBusy = false;
+        updateUi();
     }
 
     @Override
-    public void onUserClicked(UserInfo userInfo) {
-        if (mCarUserManagerHelper.isForegroundUser(userInfo)) {
-            // If it's the foreground user, launch fragment that allows them to edit their name.
-            getFragmentController().launchFragment(EditUsernameFragment.newInstance(userInfo));
-        } else {
-            // If it's another user, launch fragment that displays their information
-            getFragmentController().launchFragment(UserDetailsFragment.newInstance(userInfo));
+    public void onUserAddedFailure() {
+        mIsBusy = false;
+        updateUi();
+        // Display failure dialog.
+        ErrorDialog.show(this, R.string.add_user_error_title);
+    }
+
+    private void updateUi() {
+        mAddUserButton.setEnabled(!mIsBusy);
+        mProgressBar.setVisibility(mIsBusy ? View.VISIBLE : View.GONE);
+    }
+
+    private void handleAddUserClicked() {
+        // If the user is a demo user, show a dialog asking if they want to exit retail/demo mode.
+        if (mCarUserManagerHelper.isCurrentProcessDemoUser()) {
+            ConfirmExitRetailModeDialog dialog = new ConfirmExitRetailModeDialog();
+            dialog.setConfirmExitRetailModeListener(this);
+            dialog.show(this);
+            return;
         }
-    }
 
-    /**
-     * User list fragment is distraction optimized, so is allowed at all times.
-     */
-    @Override
-    public boolean canBeShown(CarUxRestrictions carUxRestrictions) {
-        return true;
-    }
+        // If no more users can be added because the maximum allowed number is reached, let the user
+        // know.
+        if (mCarUserManagerHelper.isUserLimitReached()) {
+            MaxUsersLimitReachedDialog dialog = new MaxUsersLimitReachedDialog(
+                    mCarUserManagerHelper.getMaxSupportedRealUsers());
+            dialog.show(this);
+            return;
+        }
 
-    @Override
-    public void onGuestClicked() {
-        getFragmentController().launchFragment(GuestFragment.newInstance());
-    }
+        // Only add the add user button if the current user is allowed to add a user.
+        if (mCarUserManagerHelper.canCurrentProcessAddUsers()) {
+            ConfirmationDialogFragment dialogFragment =
+                    UsersDialogProvider.getConfirmCreateNewUserDialogFragment(getContext(),
+                            mConfirmListener, null);
 
-    @Override
-    public ListItemProvider getItemProvider() {
-        return mItemProvider;
-    }
-
-    private void refreshListItems() {
-        mItemProvider.refreshItems();
-        refreshList();
-    }
-
-    @Override
-    public void onUserAdded() {
-        mAddUserButton.setEnabled(true);
-        mProgressBar.setVisibility(View.GONE);
+            dialogFragment.show(getFragmentManager(), ConfirmationDialogFragment.TAG);
+        }
     }
 }
diff --git a/src/com/android/car/settings/users/UsersListPreferenceController.java b/src/com/android/car/settings/users/UsersListPreferenceController.java
new file mode 100644
index 0000000..793e759
--- /dev/null
+++ b/src/com/android/car/settings/users/UsersListPreferenceController.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import com.android.car.settings.common.FragmentController;
+
+/** Business logic for populating the users for the users list settings. */
+public class UsersListPreferenceController extends UsersBasePreferenceController {
+
+    public UsersListPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void userClicked(UserInfo userInfo) {
+        if (UserUtils.isAdminViewingNonAdmin(getCarUserManagerHelper(), userInfo)) {
+            // Admin viewing non admin.
+            getFragmentController().launchFragment(
+                    UserDetailsPermissionsFragment.newInstance(userInfo.id));
+        } else {
+            getFragmentController().launchFragment(UserDetailsFragment.newInstance(userInfo.id));
+        }
+    }
+}
diff --git a/src/com/android/car/settings/users/UsersPreferenceProvider.java b/src/com/android/car/settings/users/UsersPreferenceProvider.java
new file mode 100644
index 0000000..a34f99b
--- /dev/null
+++ b/src/com/android/car/settings/users/UsersPreferenceProvider.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Constructs the preferences to be displayed in {@link UsersListFragment} and
+ * {@link ChooseNewAdminFragment}.
+ */
+public class UsersPreferenceProvider {
+
+    /**
+     * Interface for registering clicks on users.
+     */
+    public interface UserClickListener {
+        /**
+         * Invoked when user is clicked.
+         *
+         * @param userInfo User for which the click is registered.
+         */
+        void onUserClicked(UserInfo userInfo);
+    }
+
+    private final Context mContext;
+    private final CarUserManagerHelper mCarUserManagerHelper;
+    private final UserClickListener mUserPreferenceClickListener;
+    private boolean mIncludeCurrentUser;
+    private boolean mIncludeGuest;
+
+    public UsersPreferenceProvider(Context context, CarUserManagerHelper carUserManagerHelper,
+            UserClickListener listener) {
+        mContext = context;
+        mCarUserManagerHelper = carUserManagerHelper;
+        mUserPreferenceClickListener = listener;
+        mIncludeCurrentUser = true;
+        mIncludeGuest = true;
+    }
+
+    /**
+     * Sets whether createUserList should include an entry for the current user. Default is
+     * {@code true}.
+     */
+    public void setIncludeCurrentUser(boolean includeCurrentUser) {
+        mIncludeCurrentUser = includeCurrentUser;
+    }
+
+    /**
+     * Sets whether createUserList should include an entry for the guest profile. Default is
+     * {@code true}.
+     */
+    public void setIncludeGuest(boolean includeGuest) {
+        mIncludeGuest = includeGuest;
+    }
+
+    /**
+     * Creates the list of users (as preferences). The first user will be the current user (if
+     * requested) and the last user will be the guest user (if requested). Otherwise, the list is
+     * populated with all of the remaining switchable users.
+     */
+    public List<Preference> createUserList() {
+        List<Preference> users = new ArrayList<>();
+        UserInfo currUserInfo = mCarUserManagerHelper.getCurrentProcessUserInfo();
+
+        // Show current user
+        if (mIncludeCurrentUser) {
+            users.add(createUserPreference(currUserInfo));
+        }
+
+        // Display other users on the system
+        List<UserInfo> infos = mCarUserManagerHelper.getAllSwitchableUsers();
+        for (UserInfo userInfo : infos) {
+            if (!userInfo.isGuest()) { // Do not show guest users.
+                users.add(createUserPreference(userInfo));
+            }
+        }
+
+        // Display guest session option.
+        if (mIncludeGuest) {
+            users.add(createGuestUserPreference());
+        }
+
+        return users;
+    }
+
+    private Preference createUserPreference(UserInfo userInfo) {
+        Preference preference = new Preference(mContext);
+        preference.setIcon(
+                new UserIconProvider(mCarUserManagerHelper).getUserIcon(userInfo, mContext));
+        preference.setTitle(
+                UserUtils.getUserDisplayName(mContext, mCarUserManagerHelper, userInfo));
+
+        if (!userInfo.isInitialized()) {
+            preference.setSummary(R.string.user_summary_not_set_up);
+        }
+        if (userInfo.isAdmin()) {
+            preference.setSummary(
+                    isCurrentUser(userInfo) ? R.string.signed_in_admin_user : R.string.user_admin);
+        }
+
+        preference.setOnPreferenceClickListener(pref -> {
+            if (mUserPreferenceClickListener == null) {
+                return false;
+            }
+            mUserPreferenceClickListener.onUserClicked(userInfo);
+            return true;
+        });
+
+        return preference;
+    }
+
+    private Preference createGuestUserPreference() {
+        Preference preference = new Preference(mContext);
+        preference.setIcon(
+                new UserIconProvider(mCarUserManagerHelper).getDefaultGuestIcon(mContext));
+        preference.setTitle(R.string.user_guest);
+        return preference;
+    }
+
+    private boolean isCurrentUser(UserInfo userInfo) {
+        return mCarUserManagerHelper.isCurrentProcessUser(userInfo);
+    }
+}
diff --git a/src/com/android/car/settings/wifi/AccessPointListAdapter.java b/src/com/android/car/settings/wifi/AccessPointListAdapter.java
deleted file mode 100644
index f43baaa..0000000
--- a/src/com/android/car/settings/wifi/AccessPointListAdapter.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.wifi;
-
-import android.annotation.NonNull;
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.StateListDrawable;
-import android.net.wifi.WifiManager;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.car.widget.PagedListView;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.settingslib.wifi.AccessPoint;
-
-import java.util.List;
-
-/**
- * Renders {@link AccessPoint} to a view to be displayed as a row in a list.
- */
-public class AccessPointListAdapter
-        extends RecyclerView.Adapter<AccessPointListAdapter.ViewHolder>
-        implements PagedListView.ItemCap {
-    private static final int NETWORK_ROW_TYPE = 1;
-    private static final int ADD_NETWORK_ROW_TYPE = 2;
-
-    private static final int[] STATE_SECURED = {
-            com.android.settingslib.R.attr.state_encrypted
-    };
-    private static final int[] STATE_NONE = {};
-    private static int[] wifi_signal_attributes = {com.android.settingslib.R.attr.wifi_signal};
-
-    private final StateListDrawable mWifiSld;
-    private final Context mContext;
-    private final BaseFragment.FragmentController mFragmentController;
-    private final CarWifiManager mCarWifiManager;
-    private final WifiManager.ActionListener mConnectionListener;
-    private boolean mShowAddNetworkRow;
-
-    private List<AccessPoint> mAccessPoints;
-
-    public AccessPointListAdapter(
-            @NonNull Context context,
-            CarWifiManager carWifiManager,
-            @NonNull List<AccessPoint> accesssPoints,
-            BaseFragment.FragmentController fragmentController) {
-        mContext = context;
-        mFragmentController = fragmentController;
-        mCarWifiManager = carWifiManager;
-        mAccessPoints = accesssPoints;
-        mWifiSld = (StateListDrawable) context.getTheme()
-                .obtainStyledAttributes(wifi_signal_attributes).getDrawable(0);
-
-        mConnectionListener = new WifiManager.ActionListener() {
-            @Override
-            public void onSuccess() {
-            }
-            @Override
-            public void onFailure(int reason) {
-                Toast.makeText(mContext,
-                        R.string.wifi_failed_connect_message,
-                        Toast.LENGTH_SHORT).show();
-            }
-        };
-    }
-
-    /**
-     * Toggles the row that links to add a new network.
-     */
-    public AccessPointListAdapter showAddNetworkRow(boolean show) {
-        mShowAddNetworkRow = show;
-        return this;
-    }
-
-    public void updateAccessPoints(@NonNull List<AccessPoint> accesssPoints) {
-        mAccessPoints = accesssPoints;
-        notifyDataSetChanged();
-    }
-
-    public boolean isEmpty() {
-        return mAccessPoints.isEmpty();
-    }
-
-    public class ViewHolder extends RecyclerView.ViewHolder {
-        private final ImageView mIcon;
-        private final ImageView mRightChevron;
-        private final TextView mWifiName;
-        private final TextView mWifiDesc;
-
-        public ViewHolder(View view) {
-            super(view);
-            mWifiName = (TextView) view.findViewById(R.id.title);
-            mWifiDesc = (TextView) view.findViewById(R.id.desc);
-            mIcon = (ImageView) view.findViewById(R.id.icon);
-            mRightChevron = (ImageView) view.findViewById(R.id.right_chevron);
-        }
-    }
-
-    private class AccessPointClickListener implements OnClickListener {
-        private final AccessPoint mAccessPoint;
-
-        public AccessPointClickListener(AccessPoint accessPoint) {
-            mAccessPoint = accessPoint;
-        }
-
-        @Override
-        public void onClick(View v) {
-            // for new open unsecuried wifi network, connect to it right away
-            if (mAccessPoint.getSecurity() == AccessPoint.SECURITY_NONE &&
-                    !mAccessPoint.isSaved() && !mAccessPoint.isActive()) {
-                mCarWifiManager.connectToPublicWifi(mAccessPoint, mConnectionListener);
-            } else if (mAccessPoint.isSaved()) {
-                mFragmentController.launchFragment(WifiDetailFragment.getInstance(mAccessPoint));
-            } else {
-                mFragmentController.launchFragment(AddWifiFragment.getInstance(mAccessPoint));
-            }
-        }
-    };
-
-    @Override
-    public int getItemViewType(int position) {
-        // the last row is the add device row
-        if (position == mAccessPoints.size()) {
-            return ADD_NETWORK_ROW_TYPE;
-        }
-        return NETWORK_ROW_TYPE;
-    }
-
-    @Override
-    public AccessPointListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
-            int viewType) {
-        ViewHolder viewHolder = new ViewHolder(LayoutInflater.from(parent.getContext())
-                .inflate(R.layout.icon_text_line_item, parent, false));
-        if (viewType == ADD_NETWORK_ROW_TYPE) {
-            viewHolder.mIcon.setImageResource(R.drawable.ic_add);
-            viewHolder.mWifiDesc.setVisibility(View.GONE);
-            viewHolder.mWifiName.setText(R.string.wifi_setup_add_network);
-            viewHolder.itemView.setOnClickListener(v -> {
-                mFragmentController.launchFragment(AddWifiFragment.getInstance(null));
-            });
-        }
-        return viewHolder;
-    }
-
-    @Override
-    public void onBindViewHolder(ViewHolder holder, int position) {
-        // for the last row, it's the "add network button", no more binding needed.
-        if (position >= mAccessPoints.size()) {
-            return;
-        }
-        AccessPoint accessPoint = mAccessPoints.get(position);
-        holder.itemView.setOnClickListener(new AccessPointClickListener(accessPoint));
-        holder.mWifiName.setText(accessPoint.getConfigName());
-        holder.mIcon.setImageDrawable(getIcon(accessPoint));
-        String summary = accessPoint.getSummary();
-        if (summary != null && !summary.isEmpty()) {
-            holder.mWifiDesc.setText(summary);
-            holder.mWifiDesc.setVisibility(View.VISIBLE);
-        } else {
-            holder.mWifiDesc.setVisibility(View.GONE);
-        }
-        if (accessPoint.getSecurity() == accessPoint.SECURITY_NONE &&
-                !accessPoint.isSaved() && !accessPoint.isActive()) {
-            holder.mRightChevron.setVisibility(View.GONE);
-        } else {
-            holder.mRightChevron.setVisibility(View.VISIBLE);
-        }
-    }
-
-    @Override
-    public int getItemCount() {
-        // number of rows include one per device and a row for add network.
-        return mShowAddNetworkRow ? mAccessPoints.size() + 1 : mAccessPoints.size();
-    }
-
-    @Override
-    public void setMaxItems(int maxItems) {
-        // no limit in this list.
-    }
-
-    private Drawable getIcon(AccessPoint accessPoint) {
-        mWifiSld.setState((accessPoint.getSecurity() != AccessPoint.SECURITY_NONE)
-                ? STATE_SECURED
-                : STATE_NONE);
-        Drawable drawable = mWifiSld.getCurrent();
-        drawable.setLevel(accessPoint.getLevel());
-        drawable.invalidateSelf();
-        return drawable;
-    }
-}
diff --git a/src/com/android/car/settings/wifi/AccessPointListPreferenceController.java b/src/com/android/car/settings/wifi/AccessPointListPreferenceController.java
new file mode 100644
index 0000000..f53c41b
--- /dev/null
+++ b/src/com/android/car/settings/wifi/AccessPointListPreferenceController.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
+import android.content.Context;
+import android.net.wifi.WifiManager;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.CarUxRestrictionsHelper;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.wifi.details.WifiDetailsFragment;
+import com.android.settingslib.wifi.AccessPoint;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Renders a list of {@link AccessPoint} as a list of preferences.
+ */
+public class AccessPointListPreferenceController extends
+        WifiBasePreferenceController<PreferenceGroup> implements
+        Preference.OnPreferenceClickListener,
+        Preference.OnPreferenceChangeListener,
+        CarUxRestrictionsManager.OnUxRestrictionsChangedListener {
+    private static final Logger LOG = new Logger(AccessPointListPreferenceController.class);
+    private final WifiManager.ActionListener mConnectionListener =
+            new WifiUtil.ActionFailedListener(getContext(), R.string.wifi_failed_connect_message);
+    private List<AccessPoint> mAccessPoints = new ArrayList<>();
+
+    public AccessPointListPreferenceController(@NonNull Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<PreferenceGroup> getPreferenceType() {
+        return PreferenceGroup.class;
+    }
+
+    @Override
+    protected void updateState(PreferenceGroup preferenceGroup) {
+        if (getCarWifiManager() == null) {
+            return;
+        }
+        mAccessPoints = CarUxRestrictionsHelper.isNoSetup(getUxRestrictions())
+                ? getCarWifiManager().getSavedAccessPoints()
+                : getCarWifiManager().getAllAccessPoints();
+        LOG.d("showing accessPoints: " + mAccessPoints.size());
+
+        preferenceGroup.setVisible(!mAccessPoints.isEmpty());
+        preferenceGroup.removeAll();
+        for (AccessPoint accessPoint : mAccessPoints) {
+            preferenceGroup.addPreference(createAccessPointPreference(accessPoint));
+        }
+    }
+
+    @Override
+    protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) {
+        // Since the list dynamically changes based on the ux restrictions, we enable this fragment
+        // regardless of the restriction. Intentional no-op.
+    }
+
+    @Override
+    public void onAccessPointsChanged() {
+        refreshUi();
+    }
+
+    @Override
+    public void onWifiStateChanged(int state) {
+        if (state == WifiManager.WIFI_STATE_ENABLED) {
+            refreshUi();
+        }
+    }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference) {
+        AccessPoint accessPoint = ((AccessPointPreference) preference).getAccessPoint();
+        // For new open unsecuried wifi network, connect to it right away.
+        if (accessPoint.getSecurity() == AccessPoint.SECURITY_NONE
+                && !accessPoint.isSaved() && !accessPoint.isActive()) {
+            getCarWifiManager().connectToPublicWifi(accessPoint, mConnectionListener);
+        } else if (accessPoint.isActive()) {
+            getFragmentController().launchFragment(WifiDetailsFragment.getInstance(accessPoint));
+        } else if (accessPoint.isSaved() && !WifiUtil.isAccessPointDisabledByWrongPassword(
+                accessPoint)) {
+            getCarWifiManager().connectToSavedWifi(accessPoint, mConnectionListener);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        AccessPoint accessPoint = ((AccessPointPreference) preference).getAccessPoint();
+        WifiUtil.connectToAccessPoint(getContext(), accessPoint.getSsid().toString(),
+                accessPoint.getSecurity(), newValue.toString(), /* hidden= */ false);
+        return true;
+    }
+
+    private AccessPointPreference createAccessPointPreference(AccessPoint accessPoint) {
+        LOG.d("Adding preference for " + WifiUtil.getKey(accessPoint));
+        AccessPointPreference accessPointPreference = new AccessPointPreference(getContext(),
+                accessPoint);
+        accessPointPreference.setKey(accessPoint.getKey());
+        accessPointPreference.setTitle(accessPoint.getConfigName());
+        accessPointPreference.setDialogTitle(accessPoint.getConfigName());
+        accessPointPreference.setSummary(accessPoint.getSummary());
+        accessPointPreference.setOnPreferenceClickListener(this);
+        accessPointPreference.setOnPreferenceChangeListener(this);
+        accessPointPreference.showButton(false);
+
+        if (accessPoint.isSaved() && WifiUtil.isAccessPointDisabledByWrongPassword(accessPoint)) {
+            accessPointPreference.setWidgetLayoutResource(R.layout.delete_preference_widget);
+            accessPointPreference.setOnButtonClickListener(
+                    preference -> WifiUtil.forget(getContext(), accessPoint));
+            accessPointPreference.showButton(true);
+        }
+
+        return accessPointPreference;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/AccessPointPreference.java b/src/com/android/car/settings/wifi/AccessPointPreference.java
new file mode 100644
index 0000000..f0e2a8d
--- /dev/null
+++ b/src/com/android/car/settings/wifi/AccessPointPreference.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.StateListDrawable;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.wifi.AccessPoint;
+
+/** Renders a {@link AccessPoint} as a preference. */
+public class AccessPointPreference extends ButtonPasswordEditTextPreference {
+    private static final Logger LOG = new Logger(AccessPointPreference.class);
+    private static final int[] STATE_SECURED = {
+            com.android.settingslib.R.attr.state_encrypted
+    };
+    private static final int[] STATE_NONE = {};
+    private static int[] sWifiSignalAttributes = {com.android.settingslib.R.attr.wifi_signal};
+
+    private final StateListDrawable mWifiSld;
+    private final AccessPoint mAccessPoint;
+
+    public AccessPointPreference(
+            Context context,
+            AccessPoint accessPoint) {
+        super(context);
+        mWifiSld = (StateListDrawable) context.getTheme()
+                .obtainStyledAttributes(sWifiSignalAttributes).getDrawable(0);
+        mAccessPoint = accessPoint;
+        LOG.d("creating preference for ap: " + mAccessPoint);
+        setIcon(getAccessPointIcon());
+    }
+
+    /**
+     * Returns the {@link AccessPoint}.
+     */
+    public AccessPoint getAccessPoint() {
+        return mAccessPoint;
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        setIcon(getAccessPointIcon());
+    }
+
+    @Override
+    protected void onClick() {
+        if (shouldShowPasswordDialog()) {
+            super.onClick();
+        }
+    }
+
+    /**
+     * Show password dialog for one of the following conditions:
+     * 1. AP with some security but is not saved and not active
+     * 2. AP that has been saved, but not enabled due to wrong password.
+     */
+    private boolean shouldShowPasswordDialog() {
+        return mAccessPoint.getSecurity() != AccessPoint.SECURITY_NONE && (!mAccessPoint.isSaved()
+                || WifiUtil.isAccessPointDisabledByWrongPassword(mAccessPoint));
+    }
+
+    private Drawable getAccessPointIcon() {
+        if (mWifiSld == null) {
+            LOG.w("wifiSld is null.");
+            return null;
+        }
+        mWifiSld.setState(
+                (mAccessPoint.getSecurity() != AccessPoint.SECURITY_NONE)
+                        ? STATE_SECURED
+                        : STATE_NONE);
+        Drawable drawable = mWifiSld.getCurrent();
+        drawable.setLevel(mAccessPoint.getLevel());
+        return drawable;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/AddWifiFragment.java b/src/com/android/car/settings/wifi/AddWifiFragment.java
index 72b5eeb..000a53a 100644
--- a/src/com/android/car/settings/wifi/AddWifiFragment.java
+++ b/src/com/android/car/settings/wifi/AddWifiFragment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 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.
@@ -13,89 +13,85 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package com.android.car.settings.wifi;
 
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.os.Bundle;
-import android.view.View;
-import android.widget.AdapterView;
+import android.text.TextUtils;
 import android.widget.Button;
-import android.widget.Toast;
 
-import androidx.annotation.Nullable;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 
-import com.android.car.list.EditTextLineItem;
-import com.android.car.list.PasswordLineItem;
-import com.android.car.list.SpinnerLineItem;
-import com.android.car.list.TypedPagedListAdapter;
 import com.android.car.settings.R;
-import com.android.car.settings.common.ListSettingsFragment;
 import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
 import com.android.settingslib.wifi.AccessPoint;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-
 /**
- * Adds a wifi network, the network can be public or private. If ADD_NETWORK_MODE is not specified
- * in the intent, then it needs to contain AccessPoint information, which is be use that to
- * render UI, e.g. show SSID etc.
+ * Adds a hidden wifi network. The connect button on the fragment is only used for unsecure hidden
+ * networks. The remaining security types can be connected via pressing connect on the password
+ * dialog.
  */
-public class AddWifiFragment extends ListSettingsFragment implements
-        AdapterView.OnItemSelectedListener {
-    public static final String EXTRA_AP_STATE = "extra_ap_state";
-
+public class AddWifiFragment extends SettingsFragment {
     private static final Logger LOG = new Logger(AddWifiFragment.class);
-    private static final Pattern HEX_PATTERN = Pattern.compile("^[0-9A-F]+$");
-    private static final Pattern VALID_SSID_PATTERN =
-            Pattern.compile("^[A-Za-z]+[\\w\\-\\:\\.]*$");
-    @Nullable
-    private AccessPoint mAccessPoint;
-    @Nullable
-    private SpinnerLineItem<AccessPointSecurity> mSpinnerLineItem;
-    private WifiManager mWifiManager;
-    private Button mAddWifiButton;
-    private final WifiManager.ActionListener mConnectionListener =
-            new WifiManager.ActionListener() {
-                @Override
-                public void onSuccess() {
-                }
+    private static final String KEY_NETWORK_NAME = "network_name";
+    private static final String KEY_SECURITY_TYPE = "security_type";
 
-                @Override
-                public void onFailure(int reason) {
-                    Toast.makeText(getContext(),
-                            R.string.wifi_failed_connect_message,
-                            Toast.LENGTH_SHORT).show();
-                }
-            };
-    private EditTextLineItem mWifiNameInput;
-    private EditTextLineItem mWifiPasswordInput;
-
-    private int mSelectedPosition = AccessPointSecurity.SECURITY_NONE_POSITION;
-
-    public static AddWifiFragment getInstance(AccessPoint accessPoint) {
-        AddWifiFragment addWifiFragment = new AddWifiFragment();
-        Bundle bundle = ListSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.wifi_setup_add_network);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        Bundle accessPointState = new Bundle();
-        if (accessPoint != null) {
-            accessPoint.saveWifiState(accessPointState);
-            bundle.putBundle(EXTRA_AP_STATE, accessPointState);
+    private final BroadcastReceiver mNameChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            mNetworkName = intent.getStringExtra(
+                    NetworkNamePreferenceController.KEY_NETWORK_NAME);
+            setButtonEnabledState();
         }
-        addWifiFragment.setArguments(bundle);
-        return addWifiFragment;
+    };
+
+    private final BroadcastReceiver mSecurityChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            mSecurityType = intent.getIntExtra(
+                    NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                    AccessPoint.SECURITY_NONE);
+            setButtonEnabledState();
+        }
+    };
+
+    private Button mAddWifiButton;
+    private String mNetworkName;
+    private int mSecurityType = AccessPoint.SECURITY_NONE;
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.add_wifi_fragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
     }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        if (getArguments().keySet().contains(EXTRA_AP_STATE)) {
-            mAccessPoint = new AccessPoint(getContext(), getArguments().getBundle(EXTRA_AP_STATE));
+        if (savedInstanceState != null) {
+            mNetworkName = savedInstanceState.getString(KEY_NETWORK_NAME);
+            mSecurityType = savedInstanceState.getInt(KEY_SECURITY_TYPE, AccessPoint.SECURITY_NONE);
         }
-        mWifiManager = getContext().getSystemService(WifiManager.class);
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putString(KEY_NETWORK_NAME, mNetworkName);
+        outState.putInt(KEY_SECURITY_TYPE, mSecurityType);
     }
 
     @Override
@@ -104,126 +100,40 @@
 
         mAddWifiButton = getActivity().findViewById(R.id.action_button1);
         mAddWifiButton.setText(R.string.wifi_setup_connect);
+        setButtonEnabledState();
+
+        // This only needs to handle hidden/unsecure networks.
         mAddWifiButton.setOnClickListener(v -> {
-            connectToAccessPoint();
-            getFragmentController().goBack();
+            int netId = WifiUtil.connectToAccessPoint(getContext(), mNetworkName,
+                    AccessPoint.SECURITY_NONE, /* password= */ null, /* hidden= */ true);
+
+            LOG.d("connected to netId: " + netId);
+            if (netId != WifiUtil.INVALID_NET_ID) {
+                goBack();
+            }
         });
-        mAddWifiButton.setEnabled(mAccessPoint != null);
     }
 
     @Override
-    public ArrayList<TypedPagedListAdapter.LineItem> getLineItems() {
-        ArrayList<TypedPagedListAdapter.LineItem> lineItems = new ArrayList<>();
-        if (mAccessPoint != null) {
-            mWifiNameInput = new EditTextLineItem(
-                    getContext().getText(R.string.wifi_ssid), mAccessPoint.getSsid());
-            mWifiNameInput.setTextType(EditTextLineItem.TextType.NONE);
-        } else {
-            mWifiNameInput = new EditTextLineItem(
-                    getContext().getText(R.string.wifi_ssid));
-            mWifiNameInput.setTextType(EditTextLineItem.TextType.TEXT);
-            mWifiNameInput.setTextChangeListener(s ->
-                    mAddWifiButton.setEnabled(VALID_SSID_PATTERN.matcher(s).matches()));
-        }
-        lineItems.add(mWifiNameInput);
-
-        if (mAccessPoint == null) {
-            List<AccessPointSecurity> securities =
-                    AccessPointSecurity.getSecurityTypes(getContext());
-            mSpinnerLineItem = new SpinnerLineItem<>(
-                    getContext(),
-                    this,
-                    securities,
-                    getContext().getText(R.string.wifi_security),
-                    mSelectedPosition);
-            lineItems.add(mSpinnerLineItem);
-        }
-
-        if (mAccessPoint != null
-                || mSelectedPosition != AccessPointSecurity.SECURITY_NONE_POSITION) {
-            mWifiPasswordInput = new PasswordLineItem(getContext().getText(R.string.wifi_password));
-            lineItems.add(mWifiPasswordInput);
-        }
-        return lineItems;
+    public void onStart() {
+        super.onStart();
+        LocalBroadcastManager.getInstance(getContext()).registerReceiver(mNameChangeReceiver,
+                new IntentFilter(NetworkNamePreferenceController.ACTION_NAME_CHANGE));
+        LocalBroadcastManager.getInstance(getContext()).registerReceiver(mSecurityChangeReceiver,
+                new IntentFilter(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE));
     }
 
     @Override
-    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-        if (position == mSelectedPosition) {
-            return;
-        }
-        mSelectedPosition = position;
-        mPagedListAdapter.setList(getLineItems());
+    public void onStop() {
+        super.onStop();
+        LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mNameChangeReceiver);
+        LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mSecurityChangeReceiver);
     }
 
-    @Override
-    public void onNothingSelected(AdapterView<?> parent) {
-    }
-
-    private void connectToAccessPoint() {
-        WifiConfiguration wifiConfig = new WifiConfiguration();
-        wifiConfig.SSID = String.format("\"%s\"", getSsId());
-        wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
-        wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
-        wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
-        wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
-        wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
-        wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
-        int security;
-        if (mAccessPoint == null) {
-            security = mSpinnerLineItem.getItem(mSelectedPosition).getSecurityType();
-            wifiConfig.hiddenSSID = true;
-        } else {
-            security = mAccessPoint.getSecurity();
-        }
-        switch (security) {
-            case AccessPoint.SECURITY_NONE:
-                wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
-                wifiConfig.allowedAuthAlgorithms.clear();
-                wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
-                wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
-                break;
-            case AccessPoint.SECURITY_WEP:
-                wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
-                wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
-                wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
-                String password = mWifiPasswordInput.getInput();
-                wifiConfig.wepKeys[0] = isHexString(password) ? password
-                        : "\"" + password + "\"";
-                wifiConfig.wepTxKeyIndex = 0;
-                break;
-            case AccessPoint.SECURITY_PSK:
-            case AccessPoint.SECURITY_EAP:
-                wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
-                wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
-                wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
-                wifiConfig.preSharedKey = String.format(
-                        "\"%s\"", mWifiPasswordInput.getInput());
-                break;
-            default:
-                LOG.w("invalid security type: " + security);
-                break;
-        }
-        int netId = mWifiManager.addNetwork(wifiConfig);
-        if (netId == -1) {
-            Toast.makeText(getContext(),
-                    R.string.wifi_failed_connect_message,
-                    Toast.LENGTH_SHORT).show();
-        } else {
-            mWifiManager.enableNetwork(netId, true);
-        }
-    }
-
-    private boolean isHexString(String password) {
-        return HEX_PATTERN.matcher(password).matches();
-    }
-
-    // TODO: handle null case, show warning message etc.
-    private String getSsId() {
-        if (mAccessPoint == null) {
-            return mWifiNameInput.getInput();
-        } else {
-            return mAccessPoint.getSsid().toString();
+    private void setButtonEnabledState() {
+        if (mAddWifiButton != null) {
+            mAddWifiButton.setEnabled(
+                    !TextUtils.isEmpty(mNetworkName) && mSecurityType == AccessPoint.SECURITY_NONE);
         }
     }
 }
diff --git a/src/com/android/car/settings/wifi/AddWifiPreferenceController.java b/src/com/android/car/settings/wifi/AddWifiPreferenceController.java
new file mode 100644
index 0000000..08d2910
--- /dev/null
+++ b/src/com/android/car/settings/wifi/AddWifiPreferenceController.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.wifi.WifiManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controls preference for adding wifi.
+ */
+public class AddWifiPreferenceController extends WifiBasePreferenceController<Preference> {
+
+    public AddWifiPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public void onWifiStateChanged(int state) {
+        switch (state) {
+            case WifiManager.WIFI_STATE_DISABLED:
+                getPreference().setVisible(false);
+                break;
+            default:
+                getPreference().setVisible(true);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreference.java b/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreference.java
new file mode 100644
index 0000000..46834c1
--- /dev/null
+++ b/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreference.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.PasswordEditTextPreference;
+
+/**
+ * A {@link PasswordEditTextPreference} which has a second button which can perform another action
+ * defined by {@link OnButtonClickListener}.
+ */
+public class ButtonPasswordEditTextPreference extends PasswordEditTextPreference {
+
+    private OnButtonClickListener mOnButtonClickListener;
+
+    private boolean mIsButtonShown = true;
+
+    public ButtonPasswordEditTextPreference(Context context) {
+        super(context);
+        init();
+    }
+
+    private void init() {
+        setLayoutResource(R.layout.two_action_preference);
+    }
+
+    /**
+     * Sets whether the secondary button is visible in the preference.
+     *
+     * @param isShown {@code true} if the secondary button should be shown.
+     */
+    public void showButton(boolean isShown) {
+        mIsButtonShown = isShown;
+        notifyChanged();
+    }
+
+    /** Returns {@code true} if action is shown. */
+    public boolean isButtonShown() {
+        return mIsButtonShown;
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        View actionConatiner = holder.findViewById(R.id.action_widget_container);
+        View widgetFrame = holder.findViewById(android.R.id.widget_frame);
+        if (mIsButtonShown) {
+            actionConatiner.setVisibility(View.VISIBLE);
+            widgetFrame.setOnClickListener(v -> performButtonClick());
+        } else {
+            actionConatiner.setVisibility(View.GONE);
+        }
+    }
+
+    /**
+     * Sets an {@link OnButtonClickListener} to be invoked when the button is clicked.
+     */
+    public void setOnButtonClickListener(OnButtonClickListener listener) {
+        mOnButtonClickListener = listener;
+    }
+
+    /** Virtually clicks the button contained inside this preference. */
+    public void performButtonClick() {
+        if (isButtonShown()) {
+            if (mOnButtonClickListener != null) {
+                mOnButtonClickListener.onButtonClick(this);
+            }
+        }
+    }
+
+    /** Callback to be invoked when the button is clicked. */
+    public interface OnButtonClickListener {
+        /**
+         * Called when a button has been clicked.
+         *
+         * @param preference the preference whose button was clicked.
+         */
+        void onButtonClick(ButtonPasswordEditTextPreference preference);
+    }
+}
diff --git a/src/com/android/car/settings/wifi/CarWifiManager.java b/src/com/android/car/settings/wifi/CarWifiManager.java
index 64414cb..be14f4c 100644
--- a/src/com/android/car/settings/wifi/CarWifiManager.java
+++ b/src/com/android/car/settings/wifi/CarWifiManager.java
@@ -18,6 +18,7 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.net.NetworkInfo;
+import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
 
 import androidx.annotation.UiThread;
@@ -33,11 +34,12 @@
  */
 public class CarWifiManager implements WifiTracker.WifiListener {
     private final Context mContext;
-    private Listener mListener;
+    private final List<Listener> mListeners = new ArrayList<>();
     private boolean mStarted;
 
     private WifiTracker mWifiTracker;
     private WifiManager mWifiManager;
+
     public interface Listener {
         /**
          * Something about wifi setting changed.
@@ -60,14 +62,27 @@
         void onWifiStateChanged(int state);
     }
 
-    public CarWifiManager(Context context, Listener listener) {
+    public CarWifiManager(Context context) {
         mContext = context;
-        mListener = listener;
-        mWifiManager = (WifiManager) mContext.getSystemService(WifiManager.class);
+        mWifiManager = mContext.getSystemService(WifiManager.class);
         mWifiTracker = new WifiTracker(context, this, true, true);
     }
 
     /**
+     * Adds {@link Listener}.
+     */
+    public boolean addListener(Listener listener) {
+        return mListeners.add(listener);
+    }
+
+    /**
+     * Removes {@link Listener}.
+     */
+    public boolean removeListener(Listener listener) {
+        return mListeners.remove(listener);
+    }
+
+    /**
      * Starts {@link CarWifiManager}.
      * This should be called only from main thread.
      */
@@ -142,26 +157,84 @@
         return null;
     }
 
+    /**
+     * Returns {@code true} if Wifi is enabled
+     */
     public boolean isWifiEnabled() {
         return mWifiManager.isWifiEnabled();
     }
 
+    /**
+     * Returns {@code true} if Wifi tethering is enabled
+     */
+    public boolean isWifiApEnabled() {
+        return mWifiManager.isWifiApEnabled();
+    }
+
+    /**
+     * Gets {@link WifiConfiguration} for tethering
+     */
+    public WifiConfiguration getWifiApConfig() {
+        return mWifiManager.getWifiApConfiguration();
+    }
+
+    /**
+     * Sets {@link WifiConfiguration} for tethering
+     */
+    public void setWifiApConfig(WifiConfiguration config) {
+        mWifiManager.setWifiApConfiguration(config);
+    }
+
+    /**
+     * Gets the country code in ISO 3166 format.
+     */
+    public String getCountryCode() {
+        return mWifiManager.getCountryCode();
+    }
+
+    /**
+     * Checks if the chipset supports dual frequency band (2.4 GHz and 5 GHz).
+     */
+    public boolean isDualBandSupported() {
+        return mWifiManager.isDualBandSupported();
+    }
+
+    /**
+     * Check if the chipset requires conversion of 5GHz Only apBand to ANY.
+     * @return {@code true} if required, {@code false} otherwise.
+     */
+    public boolean isDualModeSupported() {
+        return mWifiManager.isDualModeSupported();
+    }
+
+    /** Gets the wifi state from {@link WifiManager}. */
     public int getWifiState() {
         return mWifiManager.getWifiState();
     }
 
+    /** Sets whether wifi is enabled. */
     public boolean setWifiEnabled(boolean enabled) {
         return mWifiManager.setWifiEnabled(enabled);
     }
 
+    /** Connects to an public wifi access point. */
     public void connectToPublicWifi(AccessPoint accessPoint, WifiManager.ActionListener listener) {
         accessPoint.generateOpenNetworkConfig();
         mWifiManager.connect(accessPoint.getConfig(), listener);
     }
 
+    /** Connects to a saved access point. */
+    public void connectToSavedWifi(AccessPoint accessPoint, WifiManager.ActionListener listener) {
+        if (accessPoint.isSaved()) {
+            mWifiManager.connect(accessPoint.getConfig(), listener);
+        }
+    }
+
     @Override
     public void onWifiStateChanged(int state) {
-        mListener.onWifiStateChanged(state);
+        for (Listener listener : mListeners) {
+            listener.onWifiStateChanged(state);
+        }
     }
 
     @Override
@@ -170,6 +243,8 @@
 
     @Override
     public void onAccessPointsChanged() {
-        mListener.onAccessPointsChanged();
+        for (Listener listener : mListeners) {
+            listener.onAccessPointsChanged();
+        }
     }
 }
diff --git a/src/com/android/car/settings/wifi/NetworkNamePreferenceController.java b/src/com/android/car/settings/wifi/NetworkNamePreferenceController.java
new file mode 100644
index 0000000..b58f5c7
--- /dev/null
+++ b/src/com/android/car/settings/wifi/NetworkNamePreferenceController.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.text.TextUtils;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.preference.EditTextPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic for adding/displaying the network name. */
+public class NetworkNamePreferenceController extends PreferenceController<EditTextPreference> {
+
+    /** Action used in the {@link Intent} sent by the {@link LocalBroadcastManager}. */
+    public static final String ACTION_NAME_CHANGE =
+            "com.android.car.settings.wifi.NameChangeAction";
+    /** Key used to store the name of the network. */
+    public static final String KEY_NETWORK_NAME = "network_name";
+
+    public NetworkNamePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<EditTextPreference> getPreferenceType() {
+        return EditTextPreference.class;
+    }
+
+    @Override
+    protected void updateState(EditTextPreference preference) {
+        preference.setSummary(TextUtils.isEmpty(preference.getText()) ? getContext().getString(
+                R.string.default_network_name_summary) : preference.getText());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(EditTextPreference preference, Object newValue) {
+        String name = newValue.toString();
+        preference.setText(name);
+        notifyNameChange(name);
+        refreshUi();
+        return true;
+    }
+
+    private void notifyNameChange(String newName) {
+        Intent intent = new Intent(ACTION_NAME_CHANGE);
+        intent.putExtra(KEY_NETWORK_NAME, newName);
+        LocalBroadcastManager.getInstance(getContext()).sendBroadcastSync(intent);
+    }
+}
diff --git a/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreference.java b/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreference.java
new file mode 100644
index 0000000..8f52152
--- /dev/null
+++ b/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.widget.Toast;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.PasswordEditTextPreference;
+
+/**
+ * Custom {@link PasswordEditTextPreference} which doesn't open the password dialog unless the
+ * network name is provided.
+ */
+public class NetworkNameRestrictedPasswordEditTextPreference extends PasswordEditTextPreference {
+
+    private String mNetworkName;
+
+    public NetworkNameRestrictedPasswordEditTextPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    public NetworkNameRestrictedPasswordEditTextPreference(Context context, AttributeSet attrs,
+            int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public NetworkNameRestrictedPasswordEditTextPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public NetworkNameRestrictedPasswordEditTextPreference(Context context) {
+        super(context);
+    }
+
+    /** Sets the network name. */
+    public void setNetworkName(String name) {
+        mNetworkName = name;
+    }
+
+    @Override
+    protected void onClick() {
+        if (TextUtils.isEmpty(mNetworkName)) {
+            Toast.makeText(getContext(), R.string.wifi_no_network_name, Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        super.onClick();
+    }
+}
diff --git a/src/com/android/car/settings/wifi/NetworkPasswordPreferenceController.java b/src/com/android/car/settings/wifi/NetworkPasswordPreferenceController.java
new file mode 100644
index 0000000..0616399
--- /dev/null
+++ b/src/com/android/car/settings/wifi/NetworkPasswordPreferenceController.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.text.TextUtils;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.wifi.AccessPoint;
+
+/** Business logic relating to the security type and associated password. */
+public class NetworkPasswordPreferenceController extends
+        PreferenceController<NetworkNameRestrictedPasswordEditTextPreference> {
+
+    private static final Logger LOG = new Logger(NetworkPasswordPreferenceController.class);
+
+    private final BroadcastReceiver mNameChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            mNetworkName = intent.getStringExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME);
+            getPreference().setNetworkName(mNetworkName);
+            refreshUi();
+        }
+    };
+
+    private final BroadcastReceiver mSecurityChangeReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            mSecurityType = intent.getIntExtra(
+                    NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                    AccessPoint.SECURITY_NONE);
+            refreshUi();
+        }
+    };
+
+    private String mNetworkName;
+    private int mSecurityType = AccessPoint.SECURITY_NONE;
+
+    public NetworkPasswordPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<NetworkNameRestrictedPasswordEditTextPreference> getPreferenceType() {
+        return NetworkNameRestrictedPasswordEditTextPreference.class;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        LocalBroadcastManager.getInstance(getContext()).registerReceiver(mNameChangeReceiver,
+                new IntentFilter(NetworkNamePreferenceController.ACTION_NAME_CHANGE));
+        LocalBroadcastManager.getInstance(getContext()).registerReceiver(mSecurityChangeReceiver,
+                new IntentFilter(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE));
+    }
+
+    @Override
+    protected void onStopInternal() {
+        LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mNameChangeReceiver);
+        LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mSecurityChangeReceiver);
+    }
+
+    @Override
+    protected void updateState(NetworkNameRestrictedPasswordEditTextPreference preference) {
+        if (TextUtils.isEmpty(mNetworkName)) {
+            getPreference().setDialogTitle(R.string.wifi_password);
+        } else {
+            getPreference().setDialogTitle(mNetworkName);
+        }
+        preference.setVisible(mSecurityType != AccessPoint.SECURITY_NONE);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(
+            NetworkNameRestrictedPasswordEditTextPreference preference, Object newValue) {
+        String password = newValue.toString();
+        int netId = WifiUtil.connectToAccessPoint(getContext(), mNetworkName, mSecurityType,
+                password, /* hidden= */ true);
+
+        LOG.d("connected to netId: " + netId);
+        if (netId != WifiUtil.INVALID_NET_ID) {
+            getFragmentController().goBack();
+        }
+
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/NetworkSecurityPreferenceController.java b/src/com/android/car/settings/wifi/NetworkSecurityPreferenceController.java
new file mode 100644
index 0000000..0d180b2
--- /dev/null
+++ b/src/com/android/car/settings/wifi/NetworkSecurityPreferenceController.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.settingslib.wifi.AccessPoint;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/** Business logic to select the security type when adding a hidden network. */
+public class NetworkSecurityPreferenceController extends PreferenceController<ListPreference> {
+
+    /** Action used in the {@link Intent} sent by the {@link LocalBroadcastManager}. */
+    public static final String ACTION_SECURITY_CHANGE =
+            "com.android.car.settings.wifi.SecurityChangeAction";
+    /** Key used to store the selected security type. */
+    public static final String KEY_SECURITY_TYPE = "security_type";
+
+    private static final Map<Integer, Integer> SECURITY_TYPE_TO_DESC_RES =
+            createSecurityTypeDescMap();
+
+    private static final List<Integer> SECURITY_TYPES = Arrays.asList(
+            AccessPoint.SECURITY_NONE,
+            AccessPoint.SECURITY_WEP,
+            AccessPoint.SECURITY_PSK,
+            AccessPoint.SECURITY_EAP);
+
+    private CharSequence[] mSecurityTypeNames;
+    private CharSequence[] mSecurityTypeIds;
+    private int mSelectedSecurityType;
+
+    public NetworkSecurityPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        // Security type setup.
+        mSecurityTypeNames = new CharSequence[SECURITY_TYPES.size()];
+        mSecurityTypeIds = new CharSequence[SECURITY_TYPES.size()];
+        mSelectedSecurityType = AccessPoint.SECURITY_NONE;
+
+        for (int i = 0; i < SECURITY_TYPES.size(); i++) {
+            int type = SECURITY_TYPES.get(i);
+            mSecurityTypeNames[i] = getContext().getString(SECURITY_TYPE_TO_DESC_RES.get(type));
+            mSecurityTypeIds[i] = Integer.toString(type);
+        }
+
+        getPreference().setEntries(mSecurityTypeNames);
+        getPreference().setEntryValues(mSecurityTypeIds);
+        getPreference().setDefaultValue(Integer.toString(AccessPoint.SECURITY_NONE));
+    }
+
+    @Override
+    protected void updateState(ListPreference preference) {
+        preference.setSummary(SECURITY_TYPE_TO_DESC_RES.get(mSelectedSecurityType));
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ListPreference preference, Object newValue) {
+        mSelectedSecurityType = Integer.parseInt(newValue.toString());
+        notifySecurityChange(mSelectedSecurityType);
+        refreshUi();
+        return true;
+    }
+
+    private void notifySecurityChange(int securityType) {
+        Intent intent = new Intent(ACTION_SECURITY_CHANGE);
+        intent.putExtra(KEY_SECURITY_TYPE, securityType);
+        LocalBroadcastManager.getInstance(getContext()).sendBroadcastSync(intent);
+    }
+
+    private static Map<Integer, Integer> createSecurityTypeDescMap() {
+        Map<Integer, Integer> map = new HashMap<>();
+        map.put(AccessPoint.SECURITY_NONE, R.string.wifi_security_none);
+        map.put(AccessPoint.SECURITY_WEP, R.string.wifi_security_wep);
+        map.put(AccessPoint.SECURITY_PSK, R.string.wifi_security_psk_generic);
+        map.put(AccessPoint.SECURITY_EAP, R.string.wifi_security_eap);
+        return map;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiBasePreferenceController.java b/src/com/android/car/settings/wifi/WifiBasePreferenceController.java
new file mode 100644
index 0000000..b53cf39
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiBasePreferenceController.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Abstract controls preference for Wifi.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class WifiBasePreferenceController<V extends Preference> extends
+        PreferenceController<V> implements CarWifiManager.Listener {
+
+    private CarWifiManager mCarWifiManager;
+
+    public WifiBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mCarWifiManager = new CarWifiManager(getContext());
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mCarWifiManager.addListener(this);
+        mCarWifiManager.start();
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mCarWifiManager.removeListener(this);
+        mCarWifiManager.stop();
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mCarWifiManager.destroy();
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return WifiUtil.isWifiAvailable(getContext()) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    public void onAccessPointsChanged() {
+        // don't care
+    }
+
+    protected CarWifiManager getCarWifiManager() {
+        return mCarWifiManager;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiDetailFragment.java b/src/com/android/car/settings/wifi/WifiDetailFragment.java
deleted file mode 100644
index 2ce31dc..0000000
--- a/src/com/android/car/settings/wifi/WifiDetailFragment.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.settings.wifi;
-
-import android.net.NetworkInfo.State;
-import android.net.wifi.WifiManager;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.annotation.StringRes;
-
-import com.android.car.list.SimpleTextLineItem;
-import com.android.car.list.TypedPagedListAdapter;
-import com.android.car.settings.R;
-import com.android.car.settings.common.ListSettingsFragment;
-import com.android.car.settings.common.Logger;
-import com.android.settingslib.wifi.AccessPoint;
-
-import java.util.ArrayList;
-
-/**
- * Shows details about a wifi network, including actions related to the network,
- * e.g. ignore, disconnect, etc. The intent should include information about
- * access point, use that to render UI, e.g. show SSID etc.
- */
-public class WifiDetailFragment extends ListSettingsFragment {
-    public static final String EXTRA_AP_STATE = "extra_ap_state";
-    private static final Logger LOG = new Logger(WifiDetailFragment.class);
-
-    private AccessPoint mAccessPoint;
-    private WifiManager mWifiManager;
-
-    private class ActionFailListener implements WifiManager.ActionListener {
-        @StringRes
-        private final int mMessageResId;
-
-        public ActionFailListener(@StringRes int messageResId) {
-            mMessageResId = messageResId;
-        }
-
-        @Override
-        public void onSuccess() {
-        }
-
-        @Override
-        public void onFailure(int reason) {
-            Toast.makeText(getContext(),
-                    R.string.wifi_failed_connect_message,
-                    Toast.LENGTH_SHORT).show();
-        }
-    }
-
-    public static WifiDetailFragment getInstance(AccessPoint accessPoint) {
-        WifiDetailFragment wifiDetailFragment = new WifiDetailFragment();
-        Bundle bundle = ListSettingsFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.wifi_settings);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_button);
-        Bundle accessPointState = new Bundle();
-        accessPoint.saveWifiState(accessPointState);
-        bundle.putBundle(EXTRA_AP_STATE, accessPointState);
-        wifiDetailFragment.setArguments(bundle);
-        return wifiDetailFragment;
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mAccessPoint = new AccessPoint(getContext(), getArguments().getBundle(EXTRA_AP_STATE));
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        mWifiManager = getContext().getSystemService(WifiManager.class);
-
-        super.onActivityCreated(savedInstanceState);
-        ((TextView) getActivity().findViewById(R.id.title)).setText(mAccessPoint.getSsid());
-        Button forgetButton = (Button) getActivity().findViewById(R.id.action_button1);
-        forgetButton.setText(R.string.forget);
-        forgetButton.setOnClickListener(v -> {
-            forget();
-            getFragmentController().goBack();
-        });
-
-        if (mAccessPoint.isSaved() && !mAccessPoint.isActive()) {
-            Button connectButton = (Button) getActivity().findViewById(R.id.action_button2);
-            connectButton.setVisibility(View.VISIBLE);
-            connectButton.setText(R.string.wifi_setup_connect);
-            connectButton.setOnClickListener(v -> {
-                mWifiManager.connect(mAccessPoint.getConfig(),
-                        new ActionFailListener(R.string.wifi_failed_connect_message));
-                getFragmentController().goBack();
-            });
-        }
-    }
-
-    @Override
-    public ArrayList<TypedPagedListAdapter.LineItem> getLineItems() {
-        ArrayList<TypedPagedListAdapter.LineItem> lineItems = new ArrayList<>();
-        lineItems.add(
-                new SimpleTextLineItem(getText(R.string.wifi_status), mAccessPoint.getSummary()));
-        lineItems.add(
-                new SimpleTextLineItem(getText(R.string.wifi_signal), getSignalString()));
-        lineItems.add(new SimpleTextLineItem(getText(R.string.wifi_security),
-                mAccessPoint.getSecurityString(/* concise= */ true)));
-        return lineItems;
-    }
-
-    private String getSignalString() {
-        String[] signalStrings = getResources().getStringArray(R.array.wifi_signals);
-
-        int level = WifiManager.calculateSignalLevel(
-                mAccessPoint.getRssi(), signalStrings.length);
-        return signalStrings[level];
-    }
-
-    private void forget() {
-        if (!mAccessPoint.isSaved()) {
-            if (mAccessPoint.getNetworkInfo() != null &&
-                    mAccessPoint.getNetworkInfo().getState() != State.DISCONNECTED) {
-                // Network is active but has no network ID - must be ephemeral.
-                mWifiManager.disableEphemeralNetwork(
-                        AccessPoint.convertToQuotedString(mAccessPoint.getSsidStr()));
-            } else {
-                // Should not happen, but a monkey seems to trigger it
-                LOG.e("Failed to forget invalid network " + mAccessPoint.getConfig());
-                return;
-            }
-        } else {
-            mWifiManager.forget(mAccessPoint.getConfig().networkId,
-                    new ActionFailListener(R.string.wifi_failed_forget_message));
-        }
-    }
-}
diff --git a/src/com/android/car/settings/wifi/WifiEntryPreferenceController.java b/src/com/android/car/settings/wifi/WifiEntryPreferenceController.java
new file mode 100644
index 0000000..a564713
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiEntryPreferenceController.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.MasterSwitchPreference;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controller which determines if the top level entry into Wi-Fi settings should be displayed
+ * based on device capabilities.
+ */
+public class WifiEntryPreferenceController extends PreferenceController<MasterSwitchPreference> {
+
+    private CarWifiManager mCarWifiManager;
+
+    public WifiEntryPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mCarWifiManager = new CarWifiManager(context);
+    }
+
+    @Override
+    protected Class<MasterSwitchPreference> getPreferenceType() {
+        return MasterSwitchPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        getPreference().setSwitchToggleListener((preference, isChecked) -> {
+            if (isChecked != mCarWifiManager.isWifiEnabled()) {
+                mCarWifiManager.setWifiEnabled(isChecked);
+            }
+        });
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return WifiUtil.isWifiAvailable(getContext()) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    protected void updateState(MasterSwitchPreference preference) {
+        preference.setSwitchChecked(mCarWifiManager.isWifiEnabled());
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiRequestToggleActivity.java b/src/com/android/car/settings/wifi/WifiRequestToggleActivity.java
new file mode 100644
index 0000000..0b79b4b
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiRequestToggleActivity.java
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.annotation.NonNull;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.net.wifi.WifiManager;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+
+/**
+ * Code drop from {@link com.android.settings.wifi.RequestToggleWiFiActivity}.
+ *
+ * This {@link Activity} handles requests to toggle WiFi by collecting user
+ * consent and waiting until the state change is completed.
+ */
+public class WifiRequestToggleActivity extends Activity implements DialogInterface.OnClickListener,
+        DialogInterface.OnCancelListener {
+    private static final Logger LOG = new Logger(WifiRequestToggleActivity.class);
+    private static final long TOGGLE_TIMEOUT_MILLIS = 10000; // 10 sec
+
+    private static final int STATE_UNKNOWN = -1;
+    private static final int STATE_ENABLE = 1;
+    private static final int STATE_ENABLING = 2;
+    private static final int STATE_DISABLE = 3;
+    private static final int STATE_DISABLING = 4;
+
+    private final StateChangeReceiver mReceiver = new StateChangeReceiver();
+
+    private final Runnable mTimeoutCommand = () -> {
+        if (!isFinishing() && !isDestroyed()) {
+            finish();
+        }
+    };
+
+    @NonNull
+    private CarWifiManager mCarWifiManager;
+    @NonNull
+    private CharSequence mAppLabel;
+
+    private AlertDialog mDialog;
+    private int mAction = STATE_UNKNOWN;
+    private int mState = STATE_UNKNOWN;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mCarWifiManager = new CarWifiManager(getApplicationContext());
+
+        setResult(Activity.RESULT_CANCELED);
+
+        String packageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
+        if (TextUtils.isEmpty(packageName)) {
+            finish();
+            return;
+        }
+
+        try {
+            ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(
+                    packageName,  /* flags= */ 0);
+            mAppLabel = applicationInfo.loadSafeLabel(getPackageManager());
+        } catch (PackageManager.NameNotFoundException e) {
+            LOG.e("Couldn't find app with package name " + packageName);
+            finish();
+            return;
+        }
+
+        mAction = extractActionState();
+        if (mAction == STATE_UNKNOWN) {
+            finish();
+        }
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        switch (which) {
+            case DialogInterface.BUTTON_POSITIVE:
+                switch (mState) {
+                    case STATE_ENABLE:
+                        mCarWifiManager.setWifiEnabled(true);
+                        mState = STATE_ENABLING;
+                        updateUi();
+                        scheduleToggleTimeout();
+                        break;
+
+                    case STATE_DISABLE:
+                        mCarWifiManager.setWifiEnabled(false);
+                        mState = STATE_DISABLING;
+                        updateUi();
+                        scheduleToggleTimeout();
+                        break;
+                }
+                setResult(RESULT_OK);
+                break;
+            case DialogInterface.BUTTON_NEGATIVE:
+                finish();
+                break;
+        }
+    }
+
+    @Override
+    public void onCancel(DialogInterface dialog) {
+        finish();
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+
+        mReceiver.register();
+
+        final int wifiState = mCarWifiManager.getWifiState();
+
+        switch (mAction) {
+            case STATE_ENABLE:
+                switch (wifiState) {
+                    case WifiManager.WIFI_STATE_ENABLED:
+                        setResult(RESULT_OK);
+                        finish();
+                        return;
+
+                    case WifiManager.WIFI_STATE_ENABLING:
+                        mState = STATE_ENABLING;
+                        scheduleToggleTimeout();
+                        break;
+                    default:
+                        mState = mAction;
+                }
+                break;
+
+            case STATE_DISABLE:
+                switch (wifiState) {
+                    case WifiManager.WIFI_STATE_DISABLED:
+                        setResult(RESULT_OK);
+                        finish();
+                        return;
+
+                    case WifiManager.WIFI_STATE_DISABLING:
+                        mState = STATE_DISABLING;
+                        scheduleToggleTimeout();
+                        break;
+                    default:
+                        mState = mAction;
+                }
+                break;
+        }
+
+        updateUi();
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        mReceiver.unregister();
+        unscheduleToggleTimeout();
+        if (mDialog != null) {
+            mDialog.dismiss();
+        }
+    }
+
+    private void updateUi() {
+        if (mDialog != null) {
+            mDialog.dismiss();
+        }
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(/* context= */
+                this).setOnCancelListener(/* listener= */ this);
+        switch (mState) {
+            case STATE_ENABLE:
+                builder.setPositiveButton(R.string.allow, /* listener= */ this);
+                builder.setNegativeButton(R.string.deny, /* listener= */ this);
+                builder.setMessage(getString(R.string.wifi_ask_enable, mAppLabel));
+                break;
+
+            case STATE_ENABLING:
+                builder.setMessage(getString(R.string.wifi_starting, mAppLabel));
+                break;
+
+            case STATE_DISABLE:
+                builder.setPositiveButton(R.string.allow, /* listener= */ this);
+                builder.setNegativeButton(R.string.deny, /* listener= */ this);
+                builder.setMessage(getString(R.string.wifi_ask_disable, mAppLabel));
+                break;
+
+            case STATE_DISABLING:
+                builder.setMessage(getString(R.string.wifi_stopping, mAppLabel));
+                break;
+        }
+        mDialog = builder.create();
+        mDialog.show();
+    }
+
+    private void scheduleToggleTimeout() {
+        getWindow().getDecorView().postDelayed(mTimeoutCommand, TOGGLE_TIMEOUT_MILLIS);
+    }
+
+    private void unscheduleToggleTimeout() {
+        getWindow().getDecorView().removeCallbacks(mTimeoutCommand);
+    }
+
+    private int extractActionState() {
+        String action = getIntent().getAction();
+        switch (action) {
+            case WifiManager.ACTION_REQUEST_ENABLE:
+                return STATE_ENABLE;
+
+            case WifiManager.ACTION_REQUEST_DISABLE:
+                return STATE_DISABLE;
+
+            default:
+                return STATE_UNKNOWN;
+        }
+    }
+
+    private final class StateChangeReceiver extends BroadcastReceiver {
+        private final IntentFilter mFilter = new IntentFilter(
+                WifiManager.WIFI_STATE_CHANGED_ACTION);
+
+        public void register() {
+            registerReceiver(/* receiver= */ this, mFilter);
+        }
+
+        public void unregister() {
+            unregisterReceiver(/* receiver= */ this);
+        }
+
+        public void onReceive(Context context, Intent intent) {
+            Activity activity = WifiRequestToggleActivity.this;
+            if (activity.isFinishing() || activity.isDestroyed()) {
+                return;
+            }
+            int currentState = mCarWifiManager.getWifiState();
+            switch (currentState) {
+                case WifiManager.WIFI_STATE_ENABLED:
+                case WifiManager.WIFI_STATE_DISABLED:
+                    if (mState == STATE_ENABLING || mState == STATE_DISABLING) {
+                        activity.setResult(Activity.RESULT_OK);
+                        finish();
+                    }
+                    break;
+
+                case WifiManager.ERROR:
+                    Toast.makeText(activity, R.string.wifi_error, Toast.LENGTH_SHORT).show();
+                    finish();
+                    break;
+            }
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiSettingsFragment.java b/src/com/android/car/settings/wifi/WifiSettingsFragment.java
index 7bb7ee3..52706dd 100644
--- a/src/com/android/car/settings/wifi/WifiSettingsFragment.java
+++ b/src/com/android/car/settings/wifi/WifiSettingsFragment.java
@@ -15,94 +15,65 @@
  */
 package com.android.car.settings.wifi;
 
-import android.annotation.NonNull;
-import android.annotation.StringRes;
-import android.car.drivingstate.CarUxRestrictions;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.ProgressBar;
 import android.widget.Switch;
-import android.widget.TextView;
-import android.widget.ViewSwitcher;
 
-import androidx.car.widget.PagedListView;
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
-import com.android.car.settings.common.CarUxRestrictionsHelper;
+import com.android.car.settings.common.SettingsFragment;
 
 /**
  * Main page to host Wifi related preferences.
  */
-public class WifiSettingsFragment extends BaseFragment implements CarWifiManager.Listener {
-    private CarWifiManager mCarWifiManager;
-    private AccessPointListAdapter mAdapter;
-    private Switch mWifiSwitch;
-    private ProgressBar mProgressBar;
-    private PagedListView mListView;
-    private TextView mMessageView;
-    private ViewSwitcher mViewSwitcher;
-    private boolean mShowSavedApOnly;
+public class WifiSettingsFragment extends SettingsFragment
+        implements CarWifiManager.Listener {
 
-    /**
-     * Gets a new instance of this object.
-     */
-    public static WifiSettingsFragment newInstance() {
-        WifiSettingsFragment wifiSettingsFragment = new WifiSettingsFragment();
-        Bundle bundle = BaseFragment.getBundle();
-        bundle.putInt(EXTRA_TITLE_ID, R.string.wifi_settings);
-        bundle.putInt(EXTRA_LAYOUT, R.layout.wifi_list);
-        bundle.putInt(EXTRA_ACTION_BAR_LAYOUT, R.layout.action_bar_with_toggle);
-        wifiSettingsFragment.setArguments(bundle);
-        return wifiSettingsFragment;
+    private static final int SEARCHING_DELAY_MILLIS = 1700;
+
+    private CarWifiManager mCarWifiManager;
+    private ProgressBar mProgressBar;
+    private Switch mWifiSwitch;
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_toggle;
     }
 
-    /**
-     * Shows only saved wifi network.
-     */
-    public WifiSettingsFragment showSavedApOnly(boolean showSavedApOnly) {
-        mShowSavedApOnly = showSavedApOnly;
-        return this;
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.wifi_list_fragment;
     }
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
-        mCarWifiManager = new CarWifiManager(getContext(), /* listener= */ this);
+        mCarWifiManager = new CarWifiManager(getContext());
 
-        mProgressBar = (ProgressBar) getView().findViewById(R.id.wifi_search_progress);
-        mListView = (PagedListView) getView().findViewById(R.id.list);
-        mMessageView = (TextView) getView().findViewById(R.id.message);
-        mViewSwitcher = (ViewSwitcher) getView().findViewById(R.id.view_switcher);
+        mProgressBar = requireActivity().findViewById(R.id.progress_bar);
         setupWifiSwitch();
-        if (mCarWifiManager.isWifiEnabled()) {
-            showList();
-            setProgressBarVisible(true);
-        } else {
-            showMessage(R.string.wifi_disabled);
-        }
-        mAdapter = new AccessPointListAdapter(
-                getContext(),
-                mCarWifiManager,
-                mShowSavedApOnly
-                        ? mCarWifiManager.getSavedAccessPoints()
-                        : mCarWifiManager.getAllAccessPoints(),
-                getFragmentController());
-        mAdapter.showAddNetworkRow(!mShowSavedApOnly);
-        mListView.setAdapter(mAdapter);
     }
 
     @Override
     public void onStart() {
         super.onStart();
+        mCarWifiManager.addListener(this);
         mCarWifiManager.start();
+        onWifiStateChanged(mCarWifiManager.getWifiState());
     }
 
     @Override
     public void onStop() {
         super.onStop();
+        mCarWifiManager.removeListener(this);
         mCarWifiManager.stop();
+        mProgressBar.setVisibility(View.GONE);
     }
 
     @Override
@@ -113,7 +84,8 @@
 
     @Override
     public void onAccessPointsChanged() {
-        refreshData();
+        mProgressBar.setVisibility(View.VISIBLE);
+        getView().postDelayed(() -> mProgressBar.setVisibility(View.GONE), SEARCHING_DELAY_MILLIS);
     }
 
     @Override
@@ -121,75 +93,19 @@
         mWifiSwitch.setChecked(mCarWifiManager.isWifiEnabled());
         switch (state) {
             case WifiManager.WIFI_STATE_ENABLING:
-                showList();
-                setProgressBarVisible(true);
-                break;
-            case WifiManager.WIFI_STATE_DISABLED:
-                setProgressBarVisible(false);
-                showMessage(R.string.wifi_disabled);
+                mProgressBar.setVisibility(View.VISIBLE);
                 break;
             default:
-                showList();
-        }
-    }
-
-    /**
-     * This fragment will adapt to restriction, so can always be shown.
-     */
-    @Override
-    public boolean canBeShown(CarUxRestrictions carUxRestrictions) {
-        return true;
-    }
-
-    @Override
-    public void onUxRestrictionChanged(@NonNull CarUxRestrictions carUxRestrictions) {
-        mShowSavedApOnly = CarUxRestrictionsHelper.isNoSetup(carUxRestrictions);
-        refreshData();
-    }
-
-    private  void setProgressBarVisible(boolean visible) {
-        if (mProgressBar != null) {
-            mProgressBar.setVisibility(visible ? View.VISIBLE : View.GONE);
-        }
-    }
-
-    private void refreshData() {
-        if (mAdapter != null) {
-            mAdapter.showAddNetworkRow(!mShowSavedApOnly);
-            mAdapter.updateAccessPoints(mShowSavedApOnly
-                    ? mCarWifiManager.getSavedAccessPoints()
-                    : mCarWifiManager.getAllAccessPoints());
-            // if the list is empty, keep showing the progress bar, the list should reset
-            // every couple seconds.
-            // TODO: Consider show a message in the list view place.
-            if (!mAdapter.isEmpty()) {
-                setProgressBarVisible(false);
-            }
-        }
-        if (mCarWifiManager != null) {
-            mWifiSwitch.setChecked(mCarWifiManager.isWifiEnabled());
-        }
-    }
-
-    private void showMessage(@StringRes int resId) {
-        if (mViewSwitcher.getCurrentView() != mMessageView) {
-            mViewSwitcher.showNext();
-        }
-        mMessageView.setText(getResources().getString(resId));
-    }
-
-    private void showList() {
-        if (mViewSwitcher.getCurrentView() != mListView) {
-            mViewSwitcher.showPrevious();
+                mProgressBar.setVisibility(View.GONE);
         }
     }
 
     private void setupWifiSwitch() {
-        mWifiSwitch = (Switch) getActivity().findViewById(R.id.toggle_switch);
+        mWifiSwitch = getActivity().findViewById(R.id.toggle_switch);
         mWifiSwitch.setChecked(mCarWifiManager.isWifiEnabled());
         mWifiSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
-            if (mWifiSwitch.isChecked() != mCarWifiManager.isWifiEnabled()) {
-                mCarWifiManager.setWifiEnabled(mWifiSwitch.isChecked());
+            if (isChecked != mCarWifiManager.isWifiEnabled()) {
+                mCarWifiManager.setWifiEnabled(isChecked);
             }
         });
     }
diff --git a/src/com/android/car/settings/wifi/WifiStatusPreferenceController.java b/src/com/android/car/settings/wifi/WifiStatusPreferenceController.java
new file mode 100644
index 0000000..4bc0b56
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiStatusPreferenceController.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.wifi.WifiManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controls preference when Wifi is in disabled or enabling state
+ */
+public class WifiStatusPreferenceController extends WifiBasePreferenceController<Preference> {
+
+    public WifiStatusPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    public void onWifiStateChanged(int state) {
+        switch (state) {
+            case WifiManager.WIFI_STATE_DISABLED:
+                getPreference().setVisible(true);
+                getPreference().setTitle(R.string.wifi_disabled);
+                break;
+            case WifiManager.WIFI_STATE_ENABLING:
+                getPreference().setVisible(true);
+                getPreference().setTitle(R.string.loading_wifi_list);
+                break;
+            default:
+                getPreference().setVisible(false);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceController.java
new file mode 100644
index 0000000..1410168
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceController.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.res.Resources;
+import android.net.wifi.WifiConfiguration;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controls WiFi Hotspot AP Band configuration.
+ */
+public class WifiTetherApBandPreferenceController extends
+        WifiTetherBasePreferenceController<ListPreference> {
+
+    private String[] mBandEntries;
+    private String[] mBandSummaries;
+    private int mBandIndex;
+    private boolean mIsDualMode;
+
+    public WifiTetherApBandPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        mIsDualMode = getCarWifiManager().isDualModeSupported();
+        updatePreferenceEntries();
+        getPreference().setEntries(mBandSummaries);
+        getPreference().setEntryValues(mBandEntries);
+    }
+
+    @Override
+    public void updateState(ListPreference preference) {
+        super.updateState(preference);
+
+        WifiConfiguration config = getCarWifiApConfig();
+        if (config == null) {
+            mBandIndex = 0;
+        } else if (is5GhzBandSupported()) {
+            mBandIndex = validateSelection(config.apBand);
+        } else {
+            config.apBand = 0;
+            setCarWifiApConfig(config);
+            mBandIndex = config.apBand;
+        }
+
+        if (!is5GhzBandSupported()) {
+            preference.setEnabled(false);
+            preference.setSummary(R.string.wifi_ap_choose_2G);
+        } else {
+            preference.setValue(Integer.toString(config.apBand));
+            preference.setSummary(getSummary());
+        }
+
+    }
+
+    @Override
+    protected String getSummary() {
+        if (is5GhzBandSupported()) {
+            if (mBandIndex != WifiConfiguration.AP_BAND_ANY) {
+                return mBandSummaries[mBandIndex];
+            } else {
+                return getContext().getString(R.string.wifi_ap_prefer_5G);
+            }
+        } else {
+            return getContext().getString(R.string.wifi_ap_choose_2G);
+        }
+    }
+
+    @Override
+    protected String getDefaultSummary() {
+        return null;
+    }
+
+    @Override
+    public boolean handlePreferenceChanged(ListPreference preference, Object newValue) {
+        mBandIndex = validateSelection(Integer.parseInt((String) newValue));
+        updateApBand(); // updating AP band because mBandIndex may have been assigned a new value.
+        refreshUi();
+        return true;
+    }
+
+    private int validateSelection(int band) {
+        // Reset the band to 2.4 GHz if we get a weird config back to avoid a crash.
+        boolean isDualMode = getCarWifiManager().isDualModeSupported();
+
+        // unsupported states:
+        // 1: no dual mode means we can't have AP_BAND_ANY - default to 5GHZ
+        // 2: no 5 GHZ support means we can't have AP_BAND_5GHZ - default to 2GHZ
+        // 3: With Dual mode support we can't have AP_BAND_5GHZ - default to ANY
+        if (!isDualMode && WifiConfiguration.AP_BAND_ANY == band) {
+            return WifiConfiguration.AP_BAND_5GHZ;
+        } else if (!is5GhzBandSupported() && WifiConfiguration.AP_BAND_5GHZ == band) {
+            return WifiConfiguration.AP_BAND_2GHZ;
+        } else if (isDualMode && WifiConfiguration.AP_BAND_5GHZ == band) {
+            return WifiConfiguration.AP_BAND_ANY;
+        }
+
+        return band;
+    }
+
+    private void updatePreferenceEntries() {
+        Resources res = getContext().getResources();
+        int entriesRes = R.array.wifi_ap_band_config_full;
+        int summariesRes = R.array.wifi_ap_band_summary_full;
+        // change the list options if this is a dual mode device
+        if (mIsDualMode) {
+            entriesRes = R.array.wifi_ap_band_dual_mode;
+            summariesRes = R.array.wifi_ap_band_dual_mode_summary;
+        }
+        mBandEntries = res.getStringArray(entriesRes);
+        mBandSummaries = res.getStringArray(summariesRes);
+    }
+
+    private void updateApBand() {
+        WifiConfiguration config = getCarWifiApConfig();
+        config.apBand = mBandIndex;
+        setCarWifiApConfig(config);
+        if (mBandIndex == WifiConfiguration.AP_BAND_ANY) {
+            getPreference().setValue(mBandEntries[WifiConfiguration.AP_BAND_2GHZ]);
+        } else {
+            getPreference().setValue(mBandEntries[mBandIndex]);
+        }
+    }
+
+    private boolean is5GhzBandSupported() {
+        String countryCode = getCarWifiManager().getCountryCode();
+        return getCarWifiManager().isDualBandSupported() && countryCode != null;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherAutoOffPreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherAutoOffPreferenceController.java
new file mode 100644
index 0000000..ef19a3f
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherAutoOffPreferenceController.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controls wifi tethering auto off configuration
+ */
+public class WifiTetherAutoOffPreferenceController extends
+        PreferenceController<TwoStatePreference> {
+
+    public WifiTetherAutoOffPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        boolean settingsOn = Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.SOFT_AP_TIMEOUT_ENABLED, 1) != 0;
+        preference.setChecked(settingsOn);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean settingsOn = (Boolean) newValue;
+        Settings.Global.putInt(getContext().getContentResolver(),
+                Settings.Global.SOFT_AP_TIMEOUT_ENABLED, settingsOn ? 1 : 0);
+        return true;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherBasePreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherBasePreferenceController.java
new file mode 100644
index 0000000..dd74f4b
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherBasePreferenceController.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.wifi.WifiConfiguration;
+import android.text.TextUtils;
+
+import androidx.annotation.CallSuper;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Shared business logic for preference controllers related to Wifi Tethering
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class WifiTetherBasePreferenceController<V extends Preference> extends
+        PreferenceController<V> {
+
+    private CarWifiManager mCarWifiManager;
+
+    public WifiTetherBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    @CallSuper
+    protected void onCreateInternal() {
+        mCarWifiManager = new CarWifiManager(getContext());
+    }
+
+    @Override
+    @CallSuper
+    protected void onStartInternal() {
+        mCarWifiManager.start();
+        getPreference().setPersistent(true);
+    }
+
+    @Override
+    @CallSuper
+    protected void onStopInternal() {
+        mCarWifiManager.stop();
+    }
+
+    @Override
+    @CallSuper
+    protected void onDestroyInternal() {
+        mCarWifiManager.destroy();
+    }
+
+    @Override
+    @CallSuper
+    protected void updateState(V preference) {
+        String summary = getSummary();
+        String defaultSummary = getDefaultSummary();
+
+        if (TextUtils.isEmpty(summary)) {
+            preference.setSummary(defaultSummary);
+        } else {
+            preference.setSummary(summary);
+        }
+    }
+
+    protected WifiConfiguration getCarWifiApConfig() {
+        return mCarWifiManager.getWifiApConfig();
+    }
+
+    protected void setCarWifiApConfig(WifiConfiguration configuration) {
+        mCarWifiManager.setWifiApConfig(configuration);
+    }
+
+    protected CarWifiManager getCarWifiManager() {
+        return mCarWifiManager;
+    }
+
+    protected abstract String getSummary();
+
+    protected abstract String getDefaultSummary();
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherFragment.java b/src/com/android/car/settings/wifi/WifiTetherFragment.java
new file mode 100644
index 0000000..f8979e1
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherFragment.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.wifi.WifiManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.view.View;
+import android.widget.CompoundButton;
+import android.widget.ProgressBar;
+import android.widget.Switch;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Fragment to host tethering-related preferences.
+ */
+public class WifiTetherFragment extends SettingsFragment implements Switch.OnCheckedChangeListener {
+
+    private CarWifiManager mCarWifiManager;
+    private ConnectivityManager mConnectivityManager;
+    private ProgressBar mProgressBar;
+    private Switch mTetherSwitch;
+
+    private final ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
+            new ConnectivityManager.OnStartTetheringCallback() {
+                @Override
+                public void onTetheringFailed() {
+                    super.onTetheringFailed();
+                    mTetherSwitch.setChecked(false);
+                    mTetherSwitch.setEnabled(true);
+                }
+            };
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_toggle;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.wifi_tether_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        mCarWifiManager = new CarWifiManager(context);
+        mConnectivityManager = (ConnectivityManager) getContext().getSystemService(
+                Context.CONNECTIVITY_SERVICE);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        mProgressBar = getActivity().findViewById(R.id.progress_bar);
+        mTetherSwitch = getActivity().findViewById(R.id.toggle_switch);
+        setupTetherSwitch();
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+
+        mCarWifiManager.start();
+        getContext().registerReceiver(mReceiver,
+                new IntentFilter(WifiManager.WIFI_AP_STATE_CHANGED_ACTION));
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mCarWifiManager.stop();
+        getContext().unregisterReceiver(mReceiver);
+        mProgressBar.setVisibility(View.GONE);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mCarWifiManager.destroy();
+    }
+
+    @Override
+    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
+        if (!isChecked) {
+            mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
+        } else {
+            mConnectivityManager.startTethering(ConnectivityManager.TETHERING_WIFI,
+                    /* showProvisioningUi= */ true,
+                    mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));
+        }
+    }
+
+    protected void setupTetherSwitch() {
+        mTetherSwitch.setChecked(mCarWifiManager.isWifiApEnabled());
+        mTetherSwitch.setOnCheckedChangeListener(this);
+    }
+
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            final int state = intent.getIntExtra(
+                    WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_FAILED);
+            handleWifiApStateChanged(state);
+        }
+    };
+
+    private void handleWifiApStateChanged(int state) {
+        switch (state) {
+            case WifiManager.WIFI_AP_STATE_ENABLING:
+                mTetherSwitch.setEnabled(false);
+                break;
+            case WifiManager.WIFI_AP_STATE_ENABLED:
+                mTetherSwitch.setEnabled(true);
+                if (!mTetherSwitch.isChecked()) {
+                    mTetherSwitch.setChecked(true);
+                }
+                break;
+            case WifiManager.WIFI_AP_STATE_DISABLING:
+                mTetherSwitch.setEnabled(false);
+                if (mTetherSwitch.isChecked()) {
+                    mTetherSwitch.setChecked(false);
+                }
+                break;
+            case WifiManager.WIFI_AP_STATE_DISABLED:
+                mTetherSwitch.setChecked(false);
+                mTetherSwitch.setEnabled(true);
+                break;
+            default:
+                mTetherSwitch.setChecked(false);
+                mTetherSwitch.setEnabled(true);
+                break;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherNamePreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherNamePreferenceController.java
new file mode 100644
index 0000000..6bc2f58
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherNamePreferenceController.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.wifi.WifiConfiguration;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.ValidatedEditTextPreference;
+
+/**
+ * Controls WiFi Hotspot name configuration. When Hotspot is enabled, this name that will be
+ * displayed as the Access Point to the Hotspot.
+ */
+public class WifiTetherNamePreferenceController extends
+        WifiTetherBasePreferenceController<ValidatedEditTextPreference> {
+
+    private static final int HOTSPOT_NAME_MIN_LENGTH = 1;
+    private static final int HOTSPOT_NAME_MAX_LENGTH = 32;
+    private static final ValidatedEditTextPreference.Validator NAME_VALIDATOR =
+            value -> value.length() >= HOTSPOT_NAME_MIN_LENGTH
+                    && value.length() <= HOTSPOT_NAME_MAX_LENGTH;
+
+    private String mName;
+
+    public WifiTetherNamePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ValidatedEditTextPreference> getPreferenceType() {
+        return ValidatedEditTextPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        getPreference().setValidator(NAME_VALIDATOR);
+        mName = getCarWifiApConfig().SSID;
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ValidatedEditTextPreference preference,
+            Object newValue) {
+        mName = newValue.toString();
+        updateSSID(mName);
+        refreshUi();
+        return true;
+    }
+
+    @Override
+    protected void updateState(ValidatedEditTextPreference preference) {
+        super.updateState(preference);
+        preference.setText(mName);
+    }
+
+    private void updateSSID(String ssid) {
+        WifiConfiguration config = getCarWifiApConfig();
+        config.SSID = ssid;
+        setCarWifiApConfig(config);
+    }
+
+    @Override
+    protected String getSummary() {
+        return mName;
+    }
+
+    @Override
+    protected String getDefaultSummary() {
+        return null;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceController.java
new file mode 100644
index 0000000..14f83e0
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceController.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.net.wifi.WifiConfiguration;
+import android.text.InputType;
+import android.text.TextUtils;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.ValidatedEditTextPreference;
+
+import java.util.UUID;
+
+/**
+ * Controls Wifi Hotspot password configuration.
+ *
+ * <p>Note: This controller uses {@link ValidatedEditTextPreference} as opposed to
+ * PasswordEditTextPreference because the input is not obscured by default, and the user is setting
+ * their own password, as opposed to entering password for authentication.
+ */
+public class WifiTetherPasswordPreferenceController extends
+        WifiTetherBasePreferenceController<ValidatedEditTextPreference> {
+
+    protected static final String SHARED_PREFERENCE_PATH =
+            "com.android.car.settings.wifi.WifiTetherPreferenceController";
+    protected static final String KEY_SAVED_PASSWORD =
+            "com.android.car.settings.wifi.SAVED_PASSWORD";
+
+    private static final int HOTSPOT_PASSWORD_MIN_LENGTH = 8;
+    private static final int HOTSPOT_PASSWORD_MAX_LENGTH = 63;
+    private static final ValidatedEditTextPreference.Validator PASSWORD_VALIDATOR =
+            value -> value.length() >= HOTSPOT_PASSWORD_MIN_LENGTH
+                    && value.length() <= HOTSPOT_PASSWORD_MAX_LENGTH;
+
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            mSecurityType = intent.getIntExtra(
+                    WifiTetherSecurityPreferenceController.KEY_SECURITY_TYPE,
+                    /* defaultValue= */ WifiConfiguration.KeyMgmt.NONE);
+            syncPassword();
+        }
+    };
+    private final SharedPreferences mSharedPreferences =
+            getContext().getSharedPreferences(SHARED_PREFERENCE_PATH, Context.MODE_PRIVATE);
+
+    private String mPassword;
+    private int mSecurityType;
+
+    public WifiTetherPasswordPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ValidatedEditTextPreference> getPreferenceType() {
+        return ValidatedEditTextPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+
+        getPreference().setValidator(PASSWORD_VALIDATOR);
+        mSecurityType = getCarWifiApConfig().getAuthType();
+        syncPassword();
+    }
+
+    @Override
+    protected void onStartInternal() {
+        LocalBroadcastManager.getInstance(getContext()).registerReceiver(mReceiver,
+                new IntentFilter(
+                        WifiTetherSecurityPreferenceController.ACTION_SECURITY_TYPE_CHANGED));
+    }
+
+    @Override
+    protected void onStopInternal() {
+        super.onStopInternal();
+        LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ValidatedEditTextPreference preference,
+            Object newValue) {
+        mPassword = newValue.toString();
+        updatePassword(mPassword);
+        refreshUi();
+        return true;
+    }
+
+    @Override
+    protected void updateState(ValidatedEditTextPreference preference) {
+        super.updateState(preference);
+        updatePasswordDisplay();
+        if (TextUtils.isEmpty(mPassword)) {
+            preference.setSummaryInputType(InputType.TYPE_CLASS_TEXT);
+        } else {
+            preference.setSummaryInputType(
+                    InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
+        }
+    }
+
+    @Override
+    protected String getSummary() {
+        return mPassword;
+    }
+
+    @Override
+    protected String getDefaultSummary() {
+        return getContext().getString(R.string.default_password_summary);
+    }
+
+    private void syncPassword() {
+        mPassword = getSyncedPassword();
+        updatePassword(mPassword);
+        refreshUi();
+    }
+
+    private String getSyncedPassword() {
+        if (getCarWifiApConfig().getAuthType() == WifiConfiguration.KeyMgmt.NONE) {
+            return null;
+        }
+
+        if (!TextUtils.isEmpty(getCarWifiApConfig().preSharedKey)) {
+            return getCarWifiApConfig().preSharedKey;
+        }
+
+        if (!TextUtils.isEmpty(
+                mSharedPreferences.getString(KEY_SAVED_PASSWORD, /* defaultValue= */ null))) {
+            return mSharedPreferences.getString(KEY_SAVED_PASSWORD, /* defaultValue= */ null);
+        }
+
+        return generateRandomPassword();
+    }
+
+    private static String generateRandomPassword() {
+        String randomUUID = UUID.randomUUID().toString();
+        // First 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
+        return randomUUID.substring(0, 8) + randomUUID.substring(9, 13);
+    }
+
+    private void updatePassword(String password) {
+        WifiConfiguration config = getCarWifiApConfig();
+        config.preSharedKey = password;
+        setCarWifiApConfig(config);
+
+        if (!TextUtils.isEmpty(password)) {
+            mSharedPreferences.edit().putString(KEY_SAVED_PASSWORD, password).commit();
+        }
+    }
+
+    private void updatePasswordDisplay() {
+        getPreference().setText(mPassword);
+        getPreference().setVisible(mSecurityType != WifiConfiguration.KeyMgmt.NONE);
+        getPreference().setSummary(getSummary());
+    }
+
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherPreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherPreferenceController.java
new file mode 100644
index 0000000..c4f4a8b
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherPreferenceController.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.ConnectivityManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Controls the availability of wifi tethering preference based on whether tethering is supported
+ */
+public class WifiTetherPreferenceController extends PreferenceController<Preference> {
+
+    private final ConnectivityManager mConnectivityManager =
+            (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+
+    public WifiTetherPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return  mConnectivityManager.isTetheringSupported() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceController.java b/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceController.java
new file mode 100644
index 0000000..618bc25
--- /dev/null
+++ b/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceController.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.net.wifi.WifiConfiguration;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Controls WiFi Hotspot Security Type configuration.
+ */
+public class WifiTetherSecurityPreferenceController extends
+        WifiTetherBasePreferenceController<ListPreference> {
+
+    public static final String KEY_SECURITY_TYPE = "KEY_SECURITY_TYPE";
+    public static final String ACTION_SECURITY_TYPE_CHANGED =
+            "com.android.car.settings.wifi.ACTION_WIFI_TETHER_SECURITY_TYPE_CHANGED";
+
+    private int mSecurityType;
+
+    public WifiTetherSecurityPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<ListPreference> getPreferenceType() {
+        return ListPreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        super.onCreateInternal();
+        mSecurityType = getCarWifiApConfig().getAuthType();
+        getPreference().setEntries(
+                getContext().getResources().getStringArray(R.array.wifi_tether_security));
+        String[] entryValues = {Integer.toString(WifiConfiguration.KeyMgmt.WPA2_PSK),
+                Integer.toString(WifiConfiguration.KeyMgmt.NONE)};
+        getPreference().setEntryValues(entryValues);
+        getPreference().setValue(String.valueOf(mSecurityType));
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(ListPreference preference,
+            Object newValue) {
+        mSecurityType = Integer.parseInt(newValue.toString());
+        updateSecurityType();
+        refreshUi();
+        return true;
+    }
+
+    @Override
+    protected void updateState(ListPreference preference) {
+        super.updateState(preference);
+        preference.setValue(Integer.toString(mSecurityType));
+    }
+
+    @Override
+    protected String getSummary() {
+        int stringResId = mSecurityType == WifiConfiguration.KeyMgmt.WPA2_PSK
+                ? R.string.wifi_hotspot_wpa2_personal : R.string.wifi_hotspot_security_none;
+        return getContext().getString(stringResId);
+    }
+
+    @Override
+    protected String getDefaultSummary() {
+        return null;
+    }
+
+    private void updateSecurityType() {
+        WifiConfiguration config = getCarWifiApConfig();
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(mSecurityType);
+
+        if (mSecurityType == WifiConfiguration.KeyMgmt.NONE) {
+            config.preSharedKey = "";
+        } else {
+            config.preSharedKey = getSavedPassword();
+        }
+
+        setCarWifiApConfig(config);
+        broadcastSecurityTypeChanged();
+    }
+
+    private void broadcastSecurityTypeChanged() {
+        Intent intent = new Intent(ACTION_SECURITY_TYPE_CHANGED);
+        intent.putExtra(KEY_SECURITY_TYPE, mSecurityType);
+        LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
+    }
+
+    private String getSavedPassword() {
+        SharedPreferences sp = getContext().getSharedPreferences(
+                WifiTetherPasswordPreferenceController.SHARED_PREFERENCE_PATH,
+                Context.MODE_PRIVATE);
+        String savedPassword =
+                sp.getString(WifiTetherPasswordPreferenceController.KEY_SAVED_PASSWORD,
+                        /* defaultValue= */ null);
+        return savedPassword;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/WifiUtil.java b/src/com/android/car/settings/wifi/WifiUtil.java
index 8d818c9..79db041 100644
--- a/src/com/android/car/settings/wifi/WifiUtil.java
+++ b/src/com/android/car/settings/wifi/WifiUtil.java
@@ -16,18 +16,37 @@
 package com.android.car.settings.wifi;
 
 import android.annotation.DrawableRes;
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
+import android.provider.Settings;
+import android.widget.Toast;
 
 import androidx.annotation.StringRes;
 
 import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.wifi.AccessPoint;
+
+import java.util.regex.Pattern;
 
 /**
  * A collections of util functions for WIFI.
  */
 public class WifiUtil {
+
+    private static final Logger LOG = new Logger(WifiUtil.class);
+
+    /** Value that is returned when we fail to connect wifi. */
+    public static final int INVALID_NET_ID = -1;
+    private static final Pattern HEX_PATTERN = Pattern.compile("^[0-9A-F]+$");
+
     @DrawableRes
     public static int getIconRes(int state) {
         switch (state) {
@@ -72,4 +91,180 @@
     public static boolean isWifiAvailable(Context context) {
         return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI);
     }
+
+    /**
+     * Gets a unique key for a {@link AccessPoint}.
+     */
+    public static String getKey(AccessPoint accessPoint) {
+        return String.valueOf(accessPoint.hashCode());
+    }
+
+    /**
+     * This method is a stripped and negated version of WifiConfigStore.canModifyNetwork.
+     *
+     * @param context Context of caller
+     * @param config  The WiFi config.
+     * @return {@code true} if Settings cannot modify the config due to lockDown.
+     */
+    public static boolean isNetworkLockedDown(Context context, WifiConfiguration config) {
+        if (config == null) {
+            return false;
+        }
+
+        final DevicePolicyManager dpm =
+                (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        final PackageManager pm = context.getPackageManager();
+
+        // Check if device has DPM capability. If it has and dpm is still null, then we
+        // treat this case with suspicion and bail out.
+        if (pm.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN) && dpm == null) {
+            return true;
+        }
+
+        boolean isConfigEligibleForLockdown = false;
+        if (dpm != null) {
+            final ComponentName deviceOwner = dpm.getDeviceOwnerComponentOnAnyUser();
+            if (deviceOwner != null) {
+                final int deviceOwnerUserId = dpm.getDeviceOwnerUserId();
+                try {
+                    final int deviceOwnerUid = pm.getPackageUidAsUser(deviceOwner.getPackageName(),
+                            deviceOwnerUserId);
+                    isConfigEligibleForLockdown = deviceOwnerUid == config.creatorUid;
+                } catch (PackageManager.NameNotFoundException e) {
+                    // don't care
+                }
+            }
+        }
+        if (!isConfigEligibleForLockdown) {
+            return false;
+        }
+
+        final ContentResolver resolver = context.getContentResolver();
+        final boolean isLockdownFeatureEnabled = Settings.Global.getInt(resolver,
+                Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 0) != 0;
+        return isLockdownFeatureEnabled;
+    }
+
+    /**
+     * Returns {@code true} if the provided NetworkCapabilities indicate a captive portal network.
+     */
+    public static boolean canSignIntoNetwork(NetworkCapabilities capabilities) {
+        return (capabilities != null
+                && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL));
+    }
+
+    /**
+     * Returns netId. -1 if connection fails.
+     */
+    public static int connectToAccessPoint(Context context, String ssid, int security,
+            String password, boolean hidden) {
+        WifiManager wifiManager = context.getSystemService(WifiManager.class);
+        WifiConfiguration wifiConfig = new WifiConfiguration();
+        wifiConfig.SSID = String.format("\"%s\"", ssid);
+        wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
+        wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
+        wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
+        wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
+        wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
+        wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
+        wifiConfig.hiddenSSID = hidden;
+        switch (security) {
+            case AccessPoint.SECURITY_NONE:
+                wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+                wifiConfig.allowedAuthAlgorithms.clear();
+                wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
+                wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
+                break;
+            case AccessPoint.SECURITY_WEP:
+                wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+                wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
+                wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
+                wifiConfig.wepKeys[0] = isHexString(password) ? password
+                        : "\"" + password + "\"";
+                wifiConfig.wepTxKeyIndex = 0;
+                break;
+            case AccessPoint.SECURITY_PSK:
+            case AccessPoint.SECURITY_EAP:
+                wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
+                wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
+                wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
+                wifiConfig.preSharedKey = String.format("\"%s\"", password);
+                break;
+            default:
+                throw new IllegalArgumentException("invalid security type");
+        }
+        int netId = wifiManager.addNetwork(wifiConfig);
+        // This only means wifiManager failed writing the new wifiConfig to the db. It doesn't mean
+        // the network is invalid.
+        if (netId == INVALID_NET_ID) {
+            Toast.makeText(context, R.string.wifi_failed_connect_message,
+                    Toast.LENGTH_SHORT).show();
+        } else {
+            wifiManager.enableNetwork(netId, true);
+        }
+        return netId;
+    }
+
+    /** Forget the network specified by {@code accessPoint}. */
+    public static void forget(Context context, AccessPoint accessPoint) {
+        WifiManager wifiManager = context.getSystemService(WifiManager.class);
+        if (!accessPoint.isSaved()) {
+            if (accessPoint.getNetworkInfo() != null
+                    && accessPoint.getNetworkInfo().getState() != NetworkInfo.State.DISCONNECTED) {
+                // Network is active but has no network ID - must be ephemeral.
+                wifiManager.disableEphemeralNetwork(
+                        AccessPoint.convertToQuotedString(accessPoint.getSsidStr()));
+            } else {
+                // Should not happen, but a monkey seems to trigger it
+                LOG.e("Failed to forget invalid network " + accessPoint.getConfig());
+                return;
+            }
+        } else {
+            wifiManager.forget(accessPoint.getConfig().networkId,
+                    new ActionFailedListener(context, R.string.wifi_failed_forget_message));
+        }
+    }
+
+    /** Returns {@code true} if the access point was disabled due to the wrong password. */
+    public static boolean isAccessPointDisabledByWrongPassword(AccessPoint accessPoint) {
+        WifiConfiguration config = accessPoint.getConfig();
+        if (config == null) {
+            return false;
+        }
+        WifiConfiguration.NetworkSelectionStatus networkStatus =
+                config.getNetworkSelectionStatus();
+        if (networkStatus == null || networkStatus.isNetworkEnabled()) {
+            return false;
+        }
+        return networkStatus.getNetworkSelectionDisableReason()
+                == WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD;
+    }
+
+    private static boolean isHexString(String password) {
+        return HEX_PATTERN.matcher(password).matches();
+    }
+
+    /**
+     * A shared implementation of {@link WifiManager.ActionListener} which shows a failure message
+     * in a toast.
+     */
+    public static class ActionFailedListener implements WifiManager.ActionListener {
+        private final Context mContext;
+        @StringRes
+        private final int mFailureMessage;
+
+        public ActionFailedListener(Context context, @StringRes int failureMessage) {
+            mContext = context;
+            mFailureMessage = failureMessage;
+        }
+
+        @Override
+        public void onSuccess() {
+        }
+
+        @Override
+        public void onFailure(int reason) {
+            Toast.makeText(mContext, mFailureMessage, Toast.LENGTH_SHORT).show();
+        }
+    }
 }
diff --git a/src/com/android/car/settings/wifi/details/WifiDetailsBasePreferenceController.java b/src/com/android/car/settings/wifi/details/WifiDetailsBasePreferenceController.java
new file mode 100644
index 0000000..8c23ed3
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiDetailsBasePreferenceController.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.wifi.WifiUtil;
+import com.android.settingslib.wifi.AccessPoint;
+
+/**
+ * Controller for logic pertaining to displaying Wifi information. Only available when wifi is
+ * active.
+ *
+ * <p>Subclasses should use
+ * {@link com.android.car.settings.common.PreferenceController#updateState(Preference)} to render UI
+ * with latest info if desired.
+ *
+ * @param <V> the upper bound on the type of {@link Preference} on which the controller
+ *            expects to operate.
+ */
+public abstract class WifiDetailsBasePreferenceController<V extends Preference> extends
+        PreferenceController<V> implements WifiInfoProvider.Listener {
+
+    private AccessPoint mAccessPoint;
+    private WifiInfoProvider mWifiInfoProvider;
+
+    public WifiDetailsBasePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    /**
+     * Sets all parameters for the controller to run, need to get called as early as possible.
+     */
+    public WifiDetailsBasePreferenceController init(
+            AccessPoint accessPoint, WifiInfoProvider wifiInfoProvider) {
+        mAccessPoint = accessPoint;
+        mWifiInfoProvider = wifiInfoProvider;
+        return this;
+    }
+
+    /** Gets the access poing that this controller was initialized with. */
+    protected AccessPoint getAccessPoint() {
+        return mAccessPoint;
+    }
+
+    /** Gets the wifi info provider that this controller was initialized with. */
+    protected WifiInfoProvider getWifiInfoProvider() {
+        return mWifiInfoProvider;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mWifiInfoProvider.addListener(this);
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mWifiInfoProvider.removeListener(this);
+    }
+
+    @Override
+    public void onWifiConfigurationChanged(WifiConfiguration wifiConfiguration,
+            NetworkInfo networkInfo, WifiInfo wifiInfo) {
+        refreshUi();
+    }
+
+    @Override
+    public void onLinkPropertiesChanged(Network network, LinkProperties lp) {
+        refreshUi();
+    }
+
+    @Override
+    public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
+    }
+
+    @Override
+    public void onWifiChanged(NetworkInfo networkInfo, WifiInfo wifiInfo) {
+        getPreference().setEnabled(true);
+        refreshUi();
+    }
+
+    @Override
+    public void onLost(Network network) {
+        getPreference().setEnabled(false);
+        refreshUi();
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        if (!WifiUtil.isWifiAvailable(getContext())) {
+            return UNSUPPORTED_ON_DEVICE;
+        }
+        return getAccessPoint().isActive() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiDetailsFragment.java b/src/com/android/car/settings/wifi/details/WifiDetailsFragment.java
new file mode 100644
index 0000000..9027df8
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiDetailsFragment.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import android.content.Context;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.LayoutRes;
+import androidx.annotation.StringRes;
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.wifi.WifiUtil;
+import com.android.settingslib.wifi.AccessPoint;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Shows details about a wifi network, including actions related to the network,
+ * e.g. ignore, disconnect, etc. The intent should include information about
+ * access point, use that to render UI, e.g. show SSID etc.
+ */
+public class WifiDetailsFragment extends SettingsFragment
+        implements WifiInfoProvider.Listener {
+    private static final String EXTRA_AP_STATE = "extra_ap_state";
+    private static final Logger LOG = new Logger(WifiDetailsFragment.class);
+
+    private WifiManager mWifiManager;
+    private AccessPoint mAccessPoint;
+    private Button mForgetButton;
+    private Button mConnectButton;
+    private List<WifiDetailsBasePreferenceController> mControllers = new ArrayList<>();
+
+    private WifiInfoProvider mWifiInfoProvider;
+
+    private class ActionFailListener implements WifiManager.ActionListener {
+        @StringRes
+        private final int mMessageResId;
+
+        ActionFailListener(@StringRes int messageResId) {
+            mMessageResId = messageResId;
+        }
+
+        @Override
+        public void onSuccess() {
+        }
+
+        @Override
+        public void onFailure(int reason) {
+            Toast.makeText(getContext(), mMessageResId, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /**
+     * Gets an instance of this class.
+     */
+    public static WifiDetailsFragment getInstance(AccessPoint accessPoint) {
+        WifiDetailsFragment wifiDetailsFragment = new WifiDetailsFragment();
+        Bundle bundle = new Bundle();
+        Bundle accessPointState = new Bundle();
+        accessPoint.saveWifiState(accessPointState);
+        bundle.putBundle(EXTRA_AP_STATE, accessPointState);
+        wifiDetailsFragment.setArguments(bundle);
+        return wifiDetailsFragment;
+    }
+
+    @Override
+    @LayoutRes
+    protected int getActionBarLayoutId() {
+        return R.layout.action_bar_with_button;
+    }
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.wifi_detail_fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mAccessPoint = new AccessPoint(getContext(), getArguments().getBundle(EXTRA_AP_STATE));
+        mWifiManager = context.getSystemService(WifiManager.class);
+        LOG.d("Creating WifiInfoProvider for " + mAccessPoint);
+        if (mWifiInfoProvider == null) {
+            mWifiInfoProvider = new WifiInfoProviderImpl(getContext(), mAccessPoint);
+        }
+        getLifecycle().addObserver(mWifiInfoProvider);
+
+        LOG.d("Creating WifiInfoProvider.Listeners.");
+        mControllers.add(use(
+                WifiSignalStrengthPreferenceController.class, R.string.pk_wifi_signal_strength)
+                .init(mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiFrequencyPreferenceController.class, R.string.pk_wifi_frequency)
+                .init(mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiSecurityPreferenceController.class, R.string.pk_wifi_security)
+                .init(mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiMacAddressPreferenceController.class, R.string.pk_wifi_mac_address)
+                .init(mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiIpAddressPreferenceController.class, R.string.pk_wifi_ip).init(
+                mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiGatewayPreferenceController.class, R.string.pk_wifi_gateway).init(
+                mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiSubnetPreferenceController.class, R.string.pk_wifi_subnet_mask)
+                .init(mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiDnsPreferenceController.class, R.string.pk_wifi_dns).init(
+                mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiLinkSpeedPreferenceController.class, R.string.pk_wifi_link_speed)
+                .init(mAccessPoint, mWifiInfoProvider));
+        mControllers.add(use(WifiIpv6AddressPreferenceController.class, R.string.pk_wifi_ipv6).init(
+                mAccessPoint, mWifiInfoProvider));
+        LOG.d("Done init.");
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        ((TextView) getActivity().findViewById(R.id.title)).setText(mAccessPoint.getSsid());
+
+        mConnectButton = getActivity().findViewById(R.id.action_button2);
+        mConnectButton.setVisibility(View.VISIBLE);
+        mConnectButton.setText(R.string.wifi_setup_connect);
+        mConnectButton.setOnClickListener(v -> {
+            mWifiManager.connect(mAccessPoint.getConfig(),
+                    new ActionFailListener(R.string.wifi_failed_connect_message));
+            goBack();
+        });
+        mForgetButton = getActivity().findViewById(R.id.action_button1);
+        mForgetButton.setText(R.string.forget);
+        mForgetButton.setOnClickListener(v -> {
+            WifiUtil.forget(getContext(), mAccessPoint);
+            goBack();
+        });
+    }
+
+    @Override
+    public void onStart() {
+        super.onStart();
+        mWifiInfoProvider.addListener(this);
+        updateUi();
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+        mWifiInfoProvider.removeListener(this);
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        getLifecycle().removeObserver(mWifiInfoProvider);
+    }
+
+    @Override
+    public void onWifiChanged(NetworkInfo networkInfo, WifiInfo wifiInfo) {
+        updateUi();
+    }
+
+    @Override
+    public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) {
+        updateUi();
+    }
+
+    @Override
+    public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
+        updateUi();
+    }
+
+    @Override
+    public void onLost(Network network) {
+        updateUi();
+    }
+
+    @Override
+    public void onWifiConfigurationChanged(WifiConfiguration wifiConfiguration,
+            NetworkInfo networkInfo, WifiInfo wifiInfo) {
+        updateUi();
+    }
+
+    private void updateUi() {
+        LOG.d("updating.");
+        // No need to fetch LinkProperties and NetworkCapabilities, they are updated by the
+        // callbacks. mNetwork doesn't change except in onResume.
+        if (mWifiInfoProvider.getNetwork() == null
+                || mWifiInfoProvider.getNetworkInfo() == null
+                || mWifiInfoProvider.getWifiInfo() == null) {
+            LOG.d("WIFI not available.");
+            return;
+        }
+
+        mConnectButton.setVisibility(needConnect() ? View.VISIBLE : View.INVISIBLE);
+        mForgetButton.setVisibility(canForgetNetwork() ? View.VISIBLE : View.INVISIBLE);
+        LOG.d("updated.");
+    }
+
+    private boolean needConnect() {
+        return mAccessPoint.isSaved() && !mAccessPoint.isActive();
+    }
+
+    /**
+     * Returns whether the network represented by this fragment can be forgotten.
+     */
+    private boolean canForgetNetwork() {
+        return (mWifiInfoProvider.getWifiInfo() != null
+                && mWifiInfoProvider.getWifiInfo().isEphemeral()) || canModifyNetwork();
+    }
+
+    /**
+     * Returns whether the network represented by this preference can be modified.
+     */
+    private boolean canModifyNetwork() {
+        WifiConfiguration wifiConfig = mWifiInfoProvider.getNetworkConfiguration();
+        LOG.d("wifiConfig is: " + wifiConfig);
+        return wifiConfig != null && !WifiUtil.isNetworkLockedDown(getContext(), wifiConfig);
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiDetailsPreference.java b/src/com/android/car/settings/wifi/details/WifiDetailsPreference.java
new file mode 100644
index 0000000..4e723ba
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiDetailsPreference.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.widget.TextView;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.R;
+
+/**
+ * A Preference to be used with the Wifi Network Detail Fragment that allows a summary text to be
+ * set inside the widget resource
+ */
+public class WifiDetailsPreference extends Preference {
+    private String mDetailText;
+
+    public WifiDetailsPreference(Context context, AttributeSet attributeSet) {
+        super(context, attributeSet);
+        setWidgetLayoutResource(R.layout.summary_preference_widget);
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    WifiDetailsPreference(Context context) {
+        super(context);
+    }
+
+    /**
+     * Sets the detail text.
+     */
+    public void setDetailText(String text) {
+        if (TextUtils.equals(mDetailText, text)) {
+            return;
+        }
+        mDetailText = text;
+        notifyChanged();
+    }
+
+    @Override
+    public void onBindViewHolder(PreferenceViewHolder view) {
+        super.onBindViewHolder(view);
+        TextView textView = ((TextView) view.findViewById(R.id.widget_summary));
+        textView.setText(mDetailText);
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    String getDetailText() {
+        return mDetailText;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiDnsPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiDnsPreferenceController.java
new file mode 100644
index 0000000..2a508fd
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiDnsPreferenceController.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+
+import java.net.InetAddress;
+import java.util.stream.Collectors;
+
+/**
+ * Shows info about Wifi DNS info.
+ */
+public class WifiDnsPreferenceController extends
+        WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+
+    public WifiDnsPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        String dnsServers = getWifiInfoProvider().getLinkProperties().getDnsServers().stream()
+                .map(InetAddress::getHostAddress)
+                .collect(Collectors.joining(System.lineSeparator()));
+
+        if (dnsServers == null) {
+            preference.setVisible(false);
+        } else {
+            preference.setDetailText(dnsServers);
+            preference.setVisible(true);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceController.java
new file mode 100644
index 0000000..3e5f7c6
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceController.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.wifi.AccessPoint;
+
+/**
+ * Shows frequency info about the Wifi connection.
+ */
+public class WifiFrequencyPreferenceController extends
+        WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+    private static final Logger LOG = new Logger(WifiFrequencyPreferenceController.class);
+
+    public WifiFrequencyPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        int frequency = getWifiInfoProvider().getWifiInfo().getFrequency();
+        String band = null;
+        if (frequency >= AccessPoint.LOWER_FREQ_24GHZ
+                && frequency < AccessPoint.HIGHER_FREQ_24GHZ) {
+            band = getContext().getResources().getString(R.string.wifi_band_24ghz);
+        } else if (frequency >= AccessPoint.LOWER_FREQ_5GHZ
+                && frequency < AccessPoint.HIGHER_FREQ_5GHZ) {
+            band = getContext().getResources().getString(R.string.wifi_band_5ghz);
+        } else {
+            LOG.e("Unexpected frequency " + frequency);
+        }
+        preference.setDetailText(band);
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceController.java
new file mode 100644
index 0000000..23bef4f
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceController.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.RouteInfo;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Shows info about Wifi Gateway info.
+ */
+public class WifiGatewayPreferenceController extends
+        WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+
+    public WifiGatewayPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        String gateway = null;
+        for (RouteInfo routeInfo : getWifiInfoProvider().getLinkProperties().getRoutes()) {
+            if (routeInfo.isIPv4Default() && routeInfo.hasGateway()) {
+                gateway = routeInfo.getGateway().getHostAddress();
+                break;
+            }
+        }
+
+        if (gateway == null) {
+            preference.setVisible(false);
+        } else {
+            preference.setDetailText(gateway);
+            preference.setVisible(true);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiInfoProvider.java b/src/com/android/car/settings/wifi/details/WifiInfoProvider.java
new file mode 100644
index 0000000..3008ebe
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiInfoProvider.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+
+import androidx.lifecycle.LifecycleObserver;
+
+/**
+ * Provides Wifi related info.
+ */
+public interface WifiInfoProvider extends LifecycleObserver {
+    /**
+     * Observers of Wifi info changes.
+     */
+    public interface Listener {
+        /**
+         * Called when NetworkInfo and/or WifiInfo is changed.
+         */
+        void onWifiChanged(NetworkInfo networkInfo, WifiInfo wifiInfo);
+
+        /**
+         * Called when network is lost.
+         */
+        void onLost(Network network);
+
+        /**
+         * Called when NetworkCapabilities changed.
+         */
+        void onCapabilitiesChanged(Network network, NetworkCapabilities nc);
+
+        /**
+         * Called when WifiConfiguration changed.
+         */
+        void onWifiConfigurationChanged(WifiConfiguration wifiConfiguration,
+                NetworkInfo networkInfo, WifiInfo wifiInfo);
+
+        /**
+         * Called when LinkProperties changed.
+         */
+        void onLinkPropertiesChanged(Network network, LinkProperties lp);
+    }
+
+    /**
+     * Adds the listener.
+     */
+    void addListener(Listener listener);
+
+    /**
+     * Removes the listener.
+     */
+    void removeListener(Listener listener);
+
+    /**
+     * Removes all listeners.
+     */
+    void clearListeners();
+
+    /**
+     * Getter for NetworkInfo
+     */
+    NetworkInfo getNetworkInfo();
+
+    /**
+     * Getter for WifiInfo
+     */
+    WifiInfo getWifiInfo();
+
+    /**
+     * Getter for Network
+     */
+    Network getNetwork();
+
+    /**
+     * Getter for NetworkCapabilities.
+     */
+    NetworkCapabilities getNetworkCapabilities();
+
+    /**
+     * Getter for NetworkConfiguration.
+     */
+    WifiConfiguration getNetworkConfiguration();
+
+    /**
+     * Getter for LinkProperties.
+     */
+    LinkProperties getLinkProperties();
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiInfoProviderImpl.java b/src/com/android/car/settings/wifi/details/WifiInfoProviderImpl.java
new file mode 100644
index 0000000..3ba3dc2
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiInfoProviderImpl.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
+import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.NetworkRequest;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Handler;
+import android.os.Looper;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.OnLifecycleEvent;
+
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.wifi.AccessPoint;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Provides Wifi related info.
+ */
+public class WifiInfoProviderImpl implements WifiInfoProvider {
+    private static final Logger LOG = new Logger(WifiInfoProviderImpl.class);
+
+    private final AccessPoint mAccessPoint;
+    private final Context mContext;
+    private final Set<Listener> mListeners = new HashSet<>();
+    private final WifiManager mWifiManager;
+    private final IntentFilter mFilter;
+    private final ConnectivityManager mConnectivityManager;
+    private final Handler mHandler;
+    private final Network mNetwork;
+
+    private LinkProperties mLinkProperties;
+    private NetworkCapabilities mNetworkCapabilities;
+    private WifiConfiguration mWifiConfig;
+    private NetworkInfo mNetworkInfo;
+    private WifiInfo mWifiInfo;
+
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            switch (intent.getAction()) {
+                case WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION:
+                    LOG.d("Wifi Config changed.");
+                    if (!intent.getBooleanExtra(WifiManager.EXTRA_MULTIPLE_NETWORKS_CHANGED,
+                            false /* defaultValue */)) {
+                        // only one network changed
+                        WifiConfiguration wifiConfiguration = intent
+                                .getParcelableExtra(WifiManager.EXTRA_WIFI_CONFIGURATION);
+                        if (mAccessPoint.matches(wifiConfiguration)) {
+                            mWifiConfig = wifiConfiguration;
+                        }
+                    }
+                    updateInfo();
+                    for (Listener listener : getListenersCopy()) {
+                        listener.onWifiConfigurationChanged(mWifiConfig, mNetworkInfo, mWifiInfo);
+                    }
+                    break;
+                case WifiManager.NETWORK_STATE_CHANGED_ACTION:
+                case WifiManager.RSSI_CHANGED_ACTION:
+                    LOG.d("wifi changed.");
+                    updateInfo();
+                    for (Listener listener : getListenersCopy()) {
+                        listener.onWifiChanged(mNetworkInfo, mWifiInfo);
+                    }
+                    break;
+            }
+        }
+    };
+
+    private final NetworkRequest mNetworkRequest = new NetworkRequest.Builder()
+            .clearCapabilities().addTransportType(TRANSPORT_WIFI).build();
+
+    // Must be run on the UI thread since it directly manipulates UI state.
+    private final NetworkCallback mNetworkCallback = new NetworkCallback() {
+        @Override
+        public void onLinkPropertiesChanged(Network network, LinkProperties lp) {
+            if (network.equals(mNetwork) && !lp.equals(mLinkProperties)) {
+                mLinkProperties = lp;
+                for (Listener listener : getListenersCopy()) {
+                    listener.onLinkPropertiesChanged(mNetwork, mLinkProperties);
+                }
+            }
+        }
+
+        private boolean hasCapabilityChanged(NetworkCapabilities nc, int cap) {
+            // If this is the first time we get NetworkCapabilities, report that something changed.
+            if (mNetworkCapabilities == null) return true;
+
+            // nc can never be null, see ConnectivityService#callCallbackForRequest.
+            return mNetworkCapabilities.hasCapability(cap) != nc.hasCapability(cap);
+        }
+
+        @Override
+        public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
+            // If the network just validated or lost Internet access, refresh network state.
+            if (network.equals(mNetwork) && !nc.equals(mNetworkCapabilities)) {
+                if (hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
+                        || hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL)) {
+                    mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
+                }
+                mNetworkCapabilities = nc;
+                for (Listener listener : getListenersCopy()) {
+                    listener.onCapabilitiesChanged(mNetwork, mNetworkCapabilities);
+                }
+            }
+        }
+
+        @Override
+        public void onLost(Network network) {
+            if (network.equals(mNetwork)) {
+                for (Listener listener : getListenersCopy()) {
+                    listener.onLost(mNetwork);
+                }
+            }
+        }
+    };
+
+    WifiInfoProviderImpl(Context context, AccessPoint accessPoint) {
+        mContext = context;
+        mAccessPoint = accessPoint;
+        mHandler = new Handler(Looper.getMainLooper());
+        mConnectivityManager =
+                mContext.getSystemService(ConnectivityManager.class);
+        mWifiManager = mContext.getSystemService(WifiManager.class);
+        mWifiConfig = mAccessPoint.getConfig();
+        mNetwork = mWifiManager.getCurrentNetwork();
+        mLinkProperties = mConnectivityManager.getLinkProperties(mNetwork);
+        mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork);
+        updateInfo();
+        mFilter = new IntentFilter();
+        mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+        mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
+        mFilter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
+    }
+
+    @Override
+    public void addListener(Listener listener) {
+        mListeners.add(listener);
+    }
+
+    @Override
+    public void removeListener(Listener listener) {
+        mListeners.remove(listener);
+    }
+
+    @Override
+    public void clearListeners() {
+        mListeners.clear();
+    }
+
+    /**
+     * Called when Lifecycle owner onStart is called.
+     */
+    @OnLifecycleEvent(Lifecycle.Event.ON_START)
+    public void onStart() {
+        LOG.d("onStart");
+        mContext.registerReceiver(mReceiver, mFilter);
+        mConnectivityManager.registerNetworkCallback(mNetworkRequest, mNetworkCallback,
+                mHandler);
+        for (Listener listener : getListenersCopy()) {
+            listener.onWifiChanged(mNetworkInfo, mWifiInfo);
+        }
+        LOG.d("Done onStart");
+    }
+
+    /**
+     * Called when Lifecycle owner onStop is called.
+     */
+    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+    public void onStop() {
+        LOG.d("onStop");
+        mContext.unregisterReceiver(mReceiver);
+        mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
+        LOG.d("done onStop");
+    }
+
+    @Override
+    public NetworkInfo getNetworkInfo() {
+        return mNetworkInfo;
+    }
+
+    @Override
+    public WifiInfo getWifiInfo() {
+        return mWifiInfo;
+    }
+
+    @Override
+    public Network getNetwork() {
+        return mNetwork;
+    }
+
+    @Override
+    public NetworkCapabilities getNetworkCapabilities() {
+        return mNetworkCapabilities;
+    }
+
+    @Override
+    public WifiConfiguration getNetworkConfiguration() {
+        return mWifiConfig;
+    }
+
+    @Override
+    public LinkProperties getLinkProperties() {
+        return mLinkProperties;
+    }
+
+    private Collection<Listener> getListenersCopy() {
+        return Collections.unmodifiableCollection(mListeners);
+    }
+
+    private void updateInfo() {
+        // No need to fetch LinkProperties and NetworkCapabilities, they are updated by the
+        // callbacks.
+        mNetworkInfo = mConnectivityManager.getNetworkInfo(mNetwork);
+        mWifiInfo = mWifiManager.getConnectionInfo();
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiIpAddressPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiIpAddressPreferenceController.java
new file mode 100644
index 0000000..3b23bf0
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiIpAddressPreferenceController.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.LinkAddress;
+
+import com.android.car.settings.common.FragmentController;
+
+import java.net.Inet4Address;
+
+/**
+ * Shows info about Wifi IP address.
+ */
+public class WifiIpAddressPreferenceController extends
+        WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+
+    public WifiIpAddressPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        String ipv4Address = null;
+
+        for (LinkAddress addr : getWifiInfoProvider().getLinkProperties().getLinkAddresses()) {
+            if (addr.getAddress() instanceof Inet4Address) {
+                ipv4Address = addr.getAddress().getHostAddress();
+            }
+        }
+
+        if (ipv4Address == null) {
+            preference.setVisible(false);
+        } else {
+            preference.setDetailText(ipv4Address);
+            preference.setVisible(true);
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiIpv6AddressPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiIpv6AddressPreferenceController.java
new file mode 100644
index 0000000..28b85e5
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiIpv6AddressPreferenceController.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.LinkAddress;
+
+import androidx.core.text.BidiFormatter;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+
+import java.net.Inet6Address;
+import java.util.StringJoiner;
+
+/**
+ * Shows info about Wifi IPv6 address.
+ */
+public class WifiIpv6AddressPreferenceController extends
+        WifiDetailsBasePreferenceController<Preference> {
+
+    public WifiIpv6AddressPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        StringJoiner ipv6Addresses = new StringJoiner(System.lineSeparator());
+
+        for (LinkAddress addr : getWifiInfoProvider().getLinkProperties().getLinkAddresses()) {
+            if (addr.getAddress() instanceof Inet6Address) {
+                ipv6Addresses.add(addr.getAddress().getHostAddress());
+            }
+        }
+
+        if (ipv6Addresses.length() > 0) {
+            preference.setSummary(
+                    BidiFormatter.getInstance().unicodeWrap(ipv6Addresses.toString()));
+            preference.setVisible(true);
+        } else {
+            preference.setVisible(false);
+        }
+    }
+}
+
diff --git a/src/com/android/car/settings/wifi/details/WifiLinkSpeedPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiLinkSpeedPreferenceController.java
new file mode 100644
index 0000000..6818e4b
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiLinkSpeedPreferenceController.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Shows info about Wifi link speed info.
+ */
+public class WifiLinkSpeedPreferenceController extends
+        WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+
+    public WifiLinkSpeedPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        int linkSpeedMbps = getWifiInfoProvider().getWifiInfo().getLinkSpeed();
+        preference.setVisible(linkSpeedMbps >= 0);
+        preference.setDetailText(getContext().getString(
+                R.string.link_speed, getWifiInfoProvider().getWifiInfo().getLinkSpeed()));
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceController.java
new file mode 100644
index 0000000..e57847f
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceController.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Shows info about Wifi MAC address.
+ */
+public class WifiMacAddressPreferenceController extends
+        WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+
+    public WifiMacAddressPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        preference.setDetailText(getWifiInfoProvider().getWifiInfo().getMacAddress());
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiSecurityPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiSecurityPreferenceController.java
new file mode 100644
index 0000000..f36344c
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiSecurityPreferenceController.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Shows security info about the Wifi connection.
+ */
+public class WifiSecurityPreferenceController extends
+        WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+    public WifiSecurityPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        preference.setDetailText(getAccessPoint().getSecurityString(false /* concise */));
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceController.java
new file mode 100644
index 0000000..e1fe311
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+
+/**
+ * Shows info about Wifi signal strength.
+ */
+public class WifiSignalStrengthPreferenceController
+        extends WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+
+    private int mRssiSignalLevel = -1;
+    private String[] mSignalStr;
+
+    public WifiSignalStrengthPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mSignalStr = context.getResources().getStringArray(R.array.wifi_signals);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        mRssiSignalLevel = getAccessPoint().getLevel();
+        preference.setDetailText(mSignalStr[mRssiSignalLevel]);
+    }
+}
diff --git a/src/com/android/car/settings/wifi/details/WifiSubnetPreferenceController.java b/src/com/android/car/settings/wifi/details/WifiSubnetPreferenceController.java
new file mode 100644
index 0000000..d7aecdd
--- /dev/null
+++ b/src/com/android/car/settings/wifi/details/WifiSubnetPreferenceController.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2017 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.car.settings.wifi.details;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.net.LinkAddress;
+import android.net.NetworkUtils;
+
+import com.android.car.settings.common.FragmentController;
+
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * Shows info about Wifi subnet.
+ */
+public class WifiSubnetPreferenceController extends
+        WifiDetailsBasePreferenceController<WifiDetailsPreference> {
+
+    public WifiSubnetPreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<WifiDetailsPreference> getPreferenceType() {
+        return WifiDetailsPreference.class;
+    }
+
+    @Override
+    protected void updateState(WifiDetailsPreference preference) {
+        String subnet = null;
+
+        for (LinkAddress addr : getWifiInfoProvider().getLinkProperties().getLinkAddresses()) {
+            if (addr.getAddress() instanceof Inet4Address) {
+                subnet = ipv4PrefixLengthToSubnetMask(addr.getPrefixLength());
+            }
+        }
+
+        if (subnet == null) {
+            preference.setVisible(false);
+        } else {
+            preference.setDetailText(subnet);
+            preference.setVisible(true);
+        }
+    }
+
+    private static String ipv4PrefixLengthToSubnetMask(int prefixLength) {
+        try {
+            InetAddress all = InetAddress.getByAddress(
+                    new byte[]{(byte) 255, (byte) 255, (byte) 255, (byte) 255});
+            return NetworkUtils.getNetworkPart(all, prefixLength).getHostAddress();
+        } catch (UnknownHostException e) {
+            return null;
+        }
+    }
+}
diff --git a/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceController.java b/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceController.java
new file mode 100644
index 0000000..9d3a764
--- /dev/null
+++ b/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceController.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi.preferences;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic to enable falling back to cellular data when wifi is poor. */
+public class CellularFallbackTogglePreferenceController extends
+        PreferenceController<TwoStatePreference> {
+
+    private static final String ENABLED = "1";
+    private static final String DISABLED = null;
+
+    public CellularFallbackTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected int getAvailabilityStatus() {
+        return avoidBadWifiConfigEnabled() ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(cellularFallbackEnabled());
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+        boolean enableCellularFallback = (Boolean) newValue;
+        Settings.Global.putString(getContext().getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI,
+                enableCellularFallback ? ENABLED : DISABLED);
+        return true;
+    }
+
+    /**
+     * See {@link Settings.Global#NETWORK_AVOID_BAD_WIFI} for description of this configuration. In
+     * short, if the device is configured to avoid bad wifi, the option to fallback to cellular is
+     * not shown.
+     */
+    private boolean avoidBadWifiConfigEnabled() {
+        return getContext().getResources().getInteger(R.integer.config_networkAvoidBadWifi) == 1;
+    }
+
+    private boolean cellularFallbackEnabled() {
+        return TextUtils.equals(ENABLED,
+                Settings.Global.getString(getContext().getContentResolver(),
+                        Settings.Global.NETWORK_AVOID_BAD_WIFI));
+    }
+}
diff --git a/src/com/android/car/settings/wifi/preferences/ConfirmEnableWifiScanningDialogFragment.java b/src/com/android/car/settings/wifi/preferences/ConfirmEnableWifiScanningDialogFragment.java
new file mode 100644
index 0000000..168c99b
--- /dev/null
+++ b/src/com/android/car/settings/wifi/preferences/ConfirmEnableWifiScanningDialogFragment.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi.preferences;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.ActivityNotFoundException;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.Logger;
+import com.android.settingslib.HelpUtils;
+
+/** Dialog to request enabling of wifi scanning when user tries to enable auto wifi wakeup. */
+public class ConfirmEnableWifiScanningDialogFragment extends DialogFragment implements
+        DialogInterface.OnClickListener {
+
+    public static final String TAG = "ConfirmEnableWifiScanningDialogFragment";
+    private static final Logger LOG = new Logger(ConfirmEnableWifiScanningDialogFragment.class);
+
+    private WifiScanningEnabledListener mListener;
+
+    /** Sets the wifi scanning enabled listener. */
+    public void setWifiScanningEnabledListener(WifiScanningEnabledListener listener) {
+        mListener = listener;
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(getContext())
+                .setTitle(R.string.wifi_settings_scanning_required_title)
+                .setPositiveButton(R.string.wifi_settings_scanning_required_turn_on, this)
+                .setNegativeButton(R.string.cancel, null);
+
+        // Only show "learn more" if there is a help page to show
+        if (!TextUtils.isEmpty(getContext().getString(R.string.help_uri_wifi_scanning_required))) {
+            builder.setNeutralButton(R.string.learn_more, this);
+        }
+
+        return builder.create();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        switch (which) {
+            case DialogInterface.BUTTON_POSITIVE:
+                if (mListener != null) {
+                    mListener.onWifiScanningEnabled();
+                }
+                break;
+            case DialogInterface.BUTTON_NEUTRAL:
+                openHelpPage();
+                break;
+            case DialogInterface.BUTTON_NEGATIVE:
+            default:
+                // do nothing
+        }
+    }
+
+    private void openHelpPage() {
+        Intent intent = HelpUtils.getHelpIntent(getContext(),
+                getContext().getString(R.string.help_uri_wifi_scanning_required),
+                getContext().getClass().getName());
+        if (intent != null) {
+            try {
+                startActivity(intent);
+            } catch (ActivityNotFoundException e) {
+                LOG.e("Activity was not found for intent, " + intent.toString());
+            }
+        }
+    }
+
+    /** Listener for when the dialog is confirmed and the wifi scanning is enabled. */
+    public interface WifiScanningEnabledListener {
+        /** Actions to take when wifi scanning is enabled. */
+        void onWifiScanningEnabled();
+    }
+}
diff --git a/src/com/android/car/settings/wifi/preferences/WifiPreferencesFragment.java b/src/com/android/car/settings/wifi/preferences/WifiPreferencesFragment.java
new file mode 100644
index 0000000..5a73fef
--- /dev/null
+++ b/src/com/android/car/settings/wifi/preferences/WifiPreferencesFragment.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi.preferences;
+
+import androidx.annotation.XmlRes;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/** Screen to control wifi specific configurations. */
+public class WifiPreferencesFragment extends SettingsFragment {
+
+    @Override
+    @XmlRes
+    protected int getPreferenceScreenResId() {
+        return R.xml.wifi_preferences_fragment;
+    }
+}
diff --git a/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceController.java b/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceController.java
new file mode 100644
index 0000000..363037f
--- /dev/null
+++ b/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceController.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi.preferences;
+
+import android.app.Service;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.location.LocationManager;
+import android.provider.Settings;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.style.URLSpan;
+import android.widget.Toast;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic to allow auto-enabling of wifi near saved networks. */
+public class WifiWakeupTogglePreferenceController extends
+        PreferenceController<TwoStatePreference> implements
+        ConfirmEnableWifiScanningDialogFragment.WifiScanningEnabledListener {
+
+    private static final Logger LOG = new Logger(WifiWakeupTogglePreferenceController.class);
+    private final LocationManager mLocationManager;
+
+    public WifiWakeupTogglePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE);
+    }
+
+    @Override
+    protected Class<TwoStatePreference> getPreferenceType() {
+        return TwoStatePreference.class;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        ConfirmEnableWifiScanningDialogFragment dialogFragment =
+                (ConfirmEnableWifiScanningDialogFragment) getFragmentController().findDialogByTag(
+                        ConfirmEnableWifiScanningDialogFragment.TAG);
+        if (dialogFragment != null) {
+            dialogFragment.setWifiScanningEnabledListener(this);
+        }
+    }
+
+    @Override
+    protected void updateState(TwoStatePreference preference) {
+        preference.setChecked(getWifiWakeupEnabled()
+                && getWifiScanningEnabled()
+                && mLocationManager.isLocationEnabled());
+        if (!mLocationManager.isLocationEnabled()) {
+            preference.setSummary(getNoLocationSummary());
+        } else {
+            preference.setSummary(R.string.wifi_wakeup_summary);
+        }
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(TwoStatePreference preference) {
+        if (!mLocationManager.isLocationEnabled()) {
+            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+            getContext().startActivity(intent);
+        } else if (getWifiWakeupEnabled()) {
+            setWifiWakeupEnabled(false);
+        } else if (!getWifiScanningEnabled()) {
+            showScanningDialog();
+        } else {
+            setWifiWakeupEnabled(true);
+        }
+
+        refreshUi();
+        return true;
+    }
+
+    private boolean getWifiWakeupEnabled() {
+        return Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1;
+    }
+
+    private void setWifiWakeupEnabled(boolean enabled) {
+        Settings.Global.putInt(getContext().getContentResolver(),
+                Settings.Global.WIFI_WAKEUP_ENABLED,
+                enabled ? 1 : 0);
+    }
+
+    private boolean getWifiScanningEnabled() {
+        return Settings.Global.getInt(getContext().getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1;
+    }
+
+    private void enableWifiScanning() {
+        Settings.Global.putInt(getContext().getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 1);
+        Toast.makeText(
+                getContext(),
+                getContext().getString(R.string.wifi_settings_scanning_required_enabled),
+                Toast.LENGTH_SHORT).show();
+    }
+
+    private CharSequence getNoLocationSummary() {
+        String highlightedWord = "link";
+        CharSequence locationText = getContext()
+                .getText(R.string.wifi_wakeup_summary_no_location);
+
+        SpannableString msg = new SpannableString(locationText);
+        int startIndex = locationText.toString().indexOf(highlightedWord);
+        if (startIndex < 0) {
+            LOG.e("Cannot create URL span");
+            return locationText;
+        }
+        msg.setSpan(new URLSpan((String) null), startIndex, startIndex + highlightedWord.length(),
+                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        return msg;
+    }
+
+    private void showScanningDialog() {
+        ConfirmEnableWifiScanningDialogFragment dialogFragment =
+                new ConfirmEnableWifiScanningDialogFragment();
+        dialogFragment.setWifiScanningEnabledListener(this);
+        getFragmentController().showDialog(dialogFragment,
+                ConfirmEnableWifiScanningDialogFragment.TAG);
+    }
+
+    @Override
+    public void onWifiScanningEnabled() {
+        enableWifiScanning();
+        if (mLocationManager.isLocationEnabled()) {
+            setWifiWakeupEnabled(true);
+        }
+        refreshUi();
+    }
+}
diff --git a/tests/robotests/Android.mk b/tests/robotests/Android.mk
index 2d0626d..7992d51 100644
--- a/tests/robotests/Android.mk
+++ b/tests/robotests/Android.mk
@@ -1,46 +1,50 @@
-#############################################
-# Car Settings Robolectric test target. #
-#############################################
-LOCAL_PATH:= $(call my-dir)
+#############################################################
+# Car Settings Robolectric test target.                     #
+#############################################################
+LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := CarSettingsRoboTests
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_JAVA_RESOURCE_DIRS := config
 
-# Include the testing libraries
 LOCAL_JAVA_LIBRARIES := \
-    android.car \
-    robolectric_android-all-stub \
     Robolectric_all-target \
+    robolectric_android-all-stub \
     mockito-robolectric-prebuilt \
-    truth-prebuilt
+    truth-prebuilt \
+    testng \
+    android.car
 
-LOCAL_INSTRUMENTATION_FOR := CarSettings
+LOCAL_INSTRUMENTATION_FOR := CarSettingsForTesting
 
 LOCAL_MODULE_TAGS := optional
 
+# Generate test_config.properties
+include external/robolectric-shadows/gen_test_config.mk
+
 include $(BUILD_STATIC_JAVA_LIBRARY)
 
 #############################################################
-# Car Settings runner target to run the previous target. #
+# Car Settings runner target to run the previous target.    #
 #############################################################
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := RunCarSettingsRoboTests
 
 LOCAL_JAVA_LIBRARIES := \
-    android.car \
-    CarSettingsRoboTests \
-    android.car \
-    robolectric_android-all-stub \
     Robolectric_all-target \
+    robolectric_android-all-stub \
     mockito-robolectric-prebuilt \
-    truth-prebuilt
+    truth-prebuilt \
+    testng \
+    CarSettingsRoboTests \
+    android.car
 
-LOCAL_TEST_PACKAGE := CarSettings
+LOCAL_TEST_PACKAGE := CarSettingsForTesting
 
 LOCAL_INSTRUMENT_SOURCE_DIRS := $(dir $(LOCAL_PATH))../src
 
diff --git a/tests/robotests/AndroidManifest.xml b/tests/robotests/AndroidManifest.xml
deleted file mode 100644
index 77fd39c..0000000
--- a/tests/robotests/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2016 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.
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          coreApp="true"
-          package="com.android.car.settings.robotests">
-    <application/>
-
-</manifest>
diff --git a/tests/robotests/config/robolectric.properties b/tests/robotests/config/robolectric.properties
index 8568e15..01124da 100644
--- a/tests/robotests/config/robolectric.properties
+++ b/tests/robotests/config/robolectric.properties
@@ -13,6 +13,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-manifest=packages/apps/Car/Settings/tests/robotests/AndroidManifest.xml
 sdk=NEWEST_SDK
-shadows=com.android.car.settings.testutils.CarSettingsShadowResources, com.android.car.settings.testutils.ShadowCar
+shadows=com.android.car.settings.testutils.ShadowCar
diff --git a/tests/robotests/res/drawable/test_icon.png b/tests/robotests/res/drawable/test_icon.png
new file mode 100644
index 0000000..a1cf83e
--- /dev/null
+++ b/tests/robotests/res/drawable/test_icon.png
Binary files differ
diff --git a/tests/robotests/res/values/arrays.xml b/tests/robotests/res/values/arrays.xml
new file mode 100644
index 0000000..0b92530
--- /dev/null
+++ b/tests/robotests/res/values/arrays.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<resources>
+    <string-array name="entries" translatable="false">
+        <item>Choose me!</item>
+        <item>No, me!</item>
+        <item>What about me?!</item>
+    </string-array>
+
+    <string-array name="entry_values" translatable="false">
+        <item>alpha</item>
+        <item>beta</item>
+        <item>charlie</item>
+    </string-array>
+</resources>
diff --git a/tests/robotests/res/values/config.xml b/tests/robotests/res/values/config.xml
new file mode 100644
index 0000000..8e168b0
--- /dev/null
+++ b/tests/robotests/res/values/config.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 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.
+-->
+
+<resources>
+    <!-- replace with simple fragment for testing purpose . -->
+    <string name="config_settings_hierarchy_root_fragment" translatable="false">com.android.car.settings.testutils.DummyFragment</string>
+    <!-- explicitly set to unset string for testing purpose -->
+    <string name="config_defaultAssistantComponentName" translatable="false">#+UNSET</string>
+    <!-- Whether exit button in settings' root action bar should be shown or not -->
+    <bool name="config_show_settings_root_exit_icon">true</bool>
+</resources>
diff --git a/tests/robotests/res/values/internal_resources.xml b/tests/robotests/res/values/internal_resources.xml
new file mode 100644
index 0000000..90c541e
--- /dev/null
+++ b/tests/robotests/res/values/internal_resources.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 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.
+-->
+
+<resources>
+    <bool name="config_automatic_brightness_available">true</bool>
+    <integer name="config_networkAvoidBadWifi">0</integer>
+
+    <!-- Progress bar preference resources -->
+    <color name="config_progress_background_tint">@android:color/white</color>
+    <color name="white_disabled_material">@android:color/white</color>
+</resources>
diff --git a/tests/robotests/res/values/preference_keys.xml b/tests/robotests/res/values/preference_keys.xml
new file mode 100644
index 0000000..f76feae
--- /dev/null
+++ b/tests/robotests/res/values/preference_keys.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 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.
+-->
+<!-- Namespaced with "tpk" (Test Preference Key) to avoid conflicts. -->
+<resources>
+    <!-- SettingsFragmentTest -->
+    <string name="tpk_fake_controller" translatable="false">fake_controller</string>
+    <string name="tpk_edit_text_preference" translatable="false">edit_text_preference</string>
+    <string name="tpk_list_preference" translatable="false">list_preference</string>
+
+    <string name="tpk_two_action_preference" translatable="false">two_action_preference</string>
+</resources>
diff --git a/tests/robotests/res/values/strings.xml b/tests/robotests/res/values/strings.xml
new file mode 100644
index 0000000..aed9f9e
--- /dev/null
+++ b/tests/robotests/res/values/strings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 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.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="test_volume_call" translatable="false">Call Volume</string>
+    <string name="test_volume_music" translatable="false">Music Volume</string>
+
+    <!-- AccountListPreferenceControllerTest and AddAccountPreferenceControllerTest -->
+    <string name="account_type1_label" translatable="false">Type 1</string>
+    <string name="account_type2_label" translatable="false">Type 2</string>
+    <string name="account_type3_label" translatable="false">Type 3</string>
+
+    <string name="bt_rename_dialog_title" translatable="false">Rename Title</string>
+    <string name="bt_profile_name" translatable="false">Profile Name</string>
+
+    <string name="test_positive_button_label" translatable="false">Positive Button</string>
+    <string name="test_negative_button_label" translatable="false">Negative Button</string>
+
+    <string name="fake_title" translatable="false">fake_title</string>
+    <string name="fake_summary" translatable="false">fake_summary</string>
+    <string name="fake_category" translatable="false">fake_category</string>
+</resources>
diff --git a/tests/robotests/res/xml/preference_controller_list_helper_fail_invalid_controller.xml b/tests/robotests/res/xml/preference_controller_list_helper_fail_invalid_controller.xml
new file mode 100644
index 0000000..32a8722
--- /dev/null
+++ b/tests/robotests/res/xml/preference_controller_list_helper_fail_invalid_controller.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <Preference
+        android:key="key"
+        settings:controller="com.android.car.settings.common.NonExistentPreferenceController"/>
+</PreferenceScreen>
diff --git a/tests/robotests/res/xml/preference_controller_list_helper_fail_missing_key.xml b/tests/robotests/res/xml/preference_controller_list_helper_fail_missing_key.xml
new file mode 100644
index 0000000..acbb5ae
--- /dev/null
+++ b/tests/robotests/res/xml/preference_controller_list_helper_fail_missing_key.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <Preference
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/tests/robotests/res/xml/preference_controller_list_helper_success.xml b/tests/robotests/res/xml/preference_controller_list_helper_success.xml
new file mode 100644
index 0000000..de81979
--- /dev/null
+++ b/tests/robotests/res/xml/preference_controller_list_helper_success.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <Preference
+        android:key="key1"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <Preference
+        android:key="key2"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+    <!-- Preferences without controllers should be skipped by the list helper. -->
+    <Preference
+        android:key="key3"/>
+</PreferenceScreen>
diff --git a/tests/robotests/res/xml/preference_parser.xml b/tests/robotests/res/xml/preference_parser.xml
new file mode 100644
index 0000000..8d02f1d
--- /dev/null
+++ b/tests/robotests/res/xml/preference_parser.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res-auto"
+                  android:key="fake_title_key"
+                  android:title="screen_title"
+                  settings:controller="com.android.car.settings.common.FakePreferenceController">
+    <Preference
+        android:key="key1"
+        settings:controller="com.android.car.settings.common.FakePreferenceController"/>
+    <PreferenceCategory
+        android:key="key2"
+        settings:controller="com.android.car.settings.common.FakePreferenceController"/>
+    <com.android.car.settings.common.LogicalPreferenceGroup
+        android:key="key3"
+        settings:controller="com.android.car.settings.common.FakePreferenceController"/>
+</PreferenceScreen>
diff --git a/tests/robotests/res/xml/settings_fragment.xml b/tests/robotests/res/xml/settings_fragment.xml
new file mode 100644
index 0000000..0498c50
--- /dev/null
+++ b/tests/robotests/res/xml/settings_fragment.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="screen_title">
+    <Preference
+        android:key="@string/tpk_fake_controller"
+        settings:controller="com.android.car.settings.common.FakePreferenceController"/>
+    <EditTextPreference
+        android:key="@string/tpk_edit_text_preference"/>
+    <ListPreference
+        android:entries="@array/entries"
+        android:entryValues="@array/entry_values"
+        android:key="@string/tpk_list_preference"/>
+</PreferenceScreen>
diff --git a/tests/robotests/res/xml/test_car_volume_items.xml b/tests/robotests/res/xml/test_car_volume_items.xml
new file mode 100644
index 0000000..3ac7903
--- /dev/null
+++ b/tests/robotests/res/xml/test_car_volume_items.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 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.
+-->
+
+<!--
+  We use a separate test file due to the difficulty accessing android internal resources in tests.
+-->
+<carVolumeItems xmlns:car="http://schemas.android.com/apk/res-auto">
+    <item car:usage="voice_communication"
+          car:titleText="@string/test_volume_call"
+          car:icon="@drawable/test_icon"/>
+    <item car:usage="voice_communication_signalling"
+          car:titleText="@string/test_volume_call"
+          car:icon="@drawable/test_icon"/>
+    <item car:usage="media"
+          car:titleText="@string/test_volume_music"
+          car:icon="@drawable/test_icon"/>
+</carVolumeItems>
diff --git a/tests/robotests/res/xml/test_user_details_base_fragment.xml b/tests/robotests/res/xml/test_user_details_base_fragment.xml
new file mode 100644
index 0000000..851425e
--- /dev/null
+++ b/tests/robotests/res/xml/test_user_details_base_fragment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2018 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
+    android:title="screen_title">
+    <Preference
+        android:key="@string/tpk_fake_controller"
+        settings:controller="com.android.car.settings.common.FakePreferenceController"/>
+</PreferenceScreen>
diff --git a/tests/robotests/res/xml/two_action_preference_action_shown_not_specified.xml b/tests/robotests/res/xml/two_action_preference_action_shown_not_specified.xml
new file mode 100644
index 0000000..bbf93fc
--- /dev/null
+++ b/tests/robotests/res/xml/two_action_preference_action_shown_not_specified.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <!-- Note that action_shown is not specified -->
+    <com.android.car.settings.common.ButtonPreference
+        android:key="@string/tpk_two_action_preference"
+        android:widgetLayout="@layout/details_preference_widget"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+</PreferenceScreen>
diff --git a/tests/robotests/res/xml/two_action_preference_hidden.xml b/tests/robotests/res/xml/two_action_preference_hidden.xml
new file mode 100644
index 0000000..b703345
--- /dev/null
+++ b/tests/robotests/res/xml/two_action_preference_hidden.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <com.android.car.settings.common.ButtonPreference
+        android:key="@string/tpk_two_action_preference"
+        android:widgetLayout="@layout/details_preference_widget"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+        settings:actionShown="false"/>
+</PreferenceScreen>
diff --git a/tests/robotests/res/xml/two_action_preference_shown.xml b/tests/robotests/res/xml/two_action_preference_shown.xml
new file mode 100644
index 0000000..428519b
--- /dev/null
+++ b/tests/robotests/res/xml/two_action_preference_shown.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <com.android.car.settings.common.ButtonPreference
+        android:key="@string/tpk_two_action_preference"
+        android:widgetLayout="@layout/details_preference_widget"
+        settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
+        settings:actionShown="true"/>
+</PreferenceScreen>
diff --git a/tests/robotests/src/com/android/car/settings/CarSettingsRobolectricTestRunner.java b/tests/robotests/src/com/android/car/settings/CarSettingsRobolectricTestRunner.java
index 4ede838..f3f2e31 100644
--- a/tests/robotests/src/com/android/car/settings/CarSettingsRobolectricTestRunner.java
+++ b/tests/robotests/src/com/android/car/settings/CarSettingsRobolectricTestRunner.java
@@ -13,95 +13,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.car.settings;
 
-import androidx.annotation.NonNull;
+package com.android.car.settings;
 
 import org.junit.runners.model.InitializationError;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.manifest.AndroidManifest;
-import org.robolectric.res.Fs;
-import org.robolectric.res.ResourcePath;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
 
 /**
- * Custom test runner for the testing of BluetoothPairingDialogs. This is needed because the
- * default behavior for robolectric is just to grab the resource directory in the target package.
- * We want to override this to add several spanning different projects.
+ * TODO: Remove this and use RobolectricTestRunner in all tests.
  */
 public class CarSettingsRobolectricTestRunner extends RobolectricTestRunner {
-
-    private static final String AAR_VERSION_APP_COMPAT = "1.0.0-alpha1";
-    private static final String AAR_VERSION_CAR = "1.0.0-alpha3";
-    private static final String SUPPORT_RESOURCE_PATH_TEMPLATE =
-            "jar:file:prebuilts/sdk/current/androidx/m2repository/androidx/"
-                    + "%1$s/%1$s/%2$s/%1$s-%2$s.aar!/res";
-
     /**
      * We don't actually want to change this behavior, so we just call super.
      */
     public CarSettingsRobolectricTestRunner(Class<?> testClass) throws InitializationError {
         super(testClass);
     }
-
-    private static ResourcePath createResourcePath(@NonNull String filePath) {
-        try {
-            return new ResourcePath(null, Fs.fromURL(new URL(filePath)), null);
-        } catch (MalformedURLException e) {
-            throw new RuntimeException("CarSettingsobolectricTestRunner failure", e);
-        }
-    }
-
-    /**
-     * Create the resource path for a support library component's JAR.
-     */
-    private static String createSupportResourcePathFromJar(@NonNull String componentId,
-            @NonNull String version) {
-        return String.format(SUPPORT_RESOURCE_PATH_TEMPLATE, componentId, version);
-    }
-
-    /**
-     * We are going to create our own custom manifest so that we can add multiple resource
-     * paths to it. This lets us access resources in both Settings and SettingsLib in our tests.
-     */
-    @Override
-    protected AndroidManifest getAppManifest(Config config) {
-        // Using the manifest file's relative path, we can figure out the application directory.
-        final String appRoot = "packages/apps/Car/Settings/";
-        final String manifestPath = appRoot + "/AndroidManifest.xml";
-        final String resDir = appRoot + "/res";
-        final String assetsDir = appRoot + config.assetDir();
-
-        // By adding any resources from libraries we need to the AndroidManifest, we can access
-        // them from within the parallel universe's resource loader.
-        return new AndroidManifest(Fs.fileFromPath(manifestPath), Fs.fileFromPath(resDir),
-            Fs.fileFromPath(assetsDir)) {
-            @Override
-            public List<ResourcePath> getIncludedResourcePaths() {
-                List<ResourcePath> paths = super.getIncludedResourcePaths();
-                paths.add(createResourcePath("file:packages/apps/Car/Settings/res"));
-
-                // Support library resources. These need to point to the prebuilts of support
-                // library and not the source.
-                paths.add(createResourcePath(createSupportResourcePathFromJar("appcompat",
-                        AAR_VERSION_APP_COMPAT)));
-                paths.add(createResourcePath(createSupportResourcePathFromJar("car",
-                        AAR_VERSION_CAR)));
-
-                paths.add(createResourcePath("file:packages/apps/Car/libs/car-stream-ui-lib/res "));
-                paths.add(createResourcePath("file:packages/apps/Car/libs/car-list/res"));
-                paths.add(createResourcePath("file:frameworks/base/packages/SettingsLib/res"));
-                paths.add(createResourcePath(
-                        "file:frameworks/opt/setupwizard/library/gingerbread/res"));
-                paths.add(createResourcePath(
-                        "file:frameworks/opt/setupwizard/library/main/res"));
-
-                return paths;
-            }
-        };
-    }
 }
diff --git a/tests/robotests/src/com/android/car/settings/TestConfig.java b/tests/robotests/src/com/android/car/settings/TestConfig.java
deleted file mode 100644
index 51570ea..0000000
--- a/tests/robotests/src/com/android/car/settings/TestConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2016 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.car.settings;
-
-public class TestConfig {
-    public static final int SDK_VERSION = 23;
-    public static final String MANIFEST_PATH =
-            "packages/apps/Car/Settings/AndroidManifest.xml";
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountAutoSyncPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountAutoSyncPreferenceControllerTest.java
new file mode 100644
index 0000000..218faf1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountAutoSyncPreferenceControllerTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.robolectric.RuntimeEnvironment.application;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit tests for {@link AccountAutoSyncPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowContentResolver.class, ShadowCarUserManagerHelper.class})
+public class AccountAutoSyncPreferenceControllerTest {
+    private static final int USER_ID = 0;
+    private static final UserHandle USER_HANDLE = new UserHandle(USER_ID);
+
+    private PreferenceControllerTestHelper<AccountAutoSyncPreferenceController> mHelper;
+    private SwitchPreference mSwitchPreference;
+    private AccountAutoSyncPreferenceController mController;
+    private ConfirmationDialogFragment mDialog;
+
+    @Mock
+    private CarUserManagerHelper mMockCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mMockCarUserManagerHelper);
+        when(mMockCarUserManagerHelper.getCurrentProcessUserInfo())
+                .thenReturn(new UserInfo(USER_ID, "name", 0));
+
+        Context context = RuntimeEnvironment.application;
+        mSwitchPreference = new SwitchPreference(application);
+        mHelper = new PreferenceControllerTestHelper<>(application,
+                AccountAutoSyncPreferenceController.class, mSwitchPreference);
+        mController = mHelper.getController();
+        mDialog = new ConfirmationDialogFragment.Builder(context).build();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testOnCreate_hasPreviousDialog_dialogListenerSet() {
+        when(mHelper.getMockFragmentController().findDialogByTag(
+                ConfirmationDialogFragment.TAG)).thenReturn(mDialog);
+        mHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mDialog.getConfirmListener()).isNotNull();
+    }
+
+    @Test
+    public void refreshUi_masterSyncOn_preferenceShouldBeChecked() {
+        mHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        ContentResolver.setMasterSyncAutomaticallyAsUser(true, USER_ID);
+
+        mController.refreshUi();
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_masterSyncOff_preferenceShouldNotBeChecked() {
+        ContentResolver.setMasterSyncAutomaticallyAsUser(false, USER_ID);
+        mHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceClicked_shouldOpenDialog() {
+        mSwitchPreference.performClick();
+
+        verify(mHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class), eq(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void onConfirm_shouldTogglePreference() {
+        // Set the preference as unchecked first so that the state is known
+        mHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        ContentResolver.setMasterSyncAutomaticallyAsUser(false, USER_ID);
+        mController.refreshUi();
+
+        assertThat(mSwitchPreference.isChecked()).isFalse();
+
+        Bundle arguments = new Bundle();
+        arguments.putBoolean(AccountAutoSyncPreferenceController.KEY_ENABLING, true);
+        arguments.putParcelable(AccountAutoSyncPreferenceController.KEY_USER_HANDLE, USER_HANDLE);
+        mController.mConfirmListener.onConfirm(arguments);
+
+        assertThat(mSwitchPreference.isChecked()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java
new file mode 100644
index 0000000..2a9c08f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsFragmentTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.robolectric.RuntimeEnvironment.application;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/**
+ * Tests for the {@link AccountDetailsFragment}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowAccountManager.class,
+        ShadowContentResolver.class})
+public class AccountDetailsFragmentTest {
+    private static final String DIALOG_TAG = "confirmRemoveAccount";
+    private final Account mAccount = new Account("Name", "com.acct");
+    private final UserInfo mUserInfo = new UserInfo(/* id= */ 0, /* name= */ "name", /* flags= */
+            0);
+    private final CharSequence mAccountLabel = "Type 1";
+
+    private Context mContext;
+    private BaseTestActivity mActivity;
+    private AccountDetailsFragment mFragment;
+    @Mock
+    private CarUserManagerHelper mMockCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mMockCarUserManagerHelper);
+
+        mContext = application;
+        // Add the account to the official list of accounts
+        getShadowAccountManager().addAccount(mAccount);
+
+        mActivity = Robolectric.setupActivity(BaseTestActivity.class);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowContentResolver.reset();
+        mActivity.clearOnBackPressedFlag();
+    }
+
+    @Test
+    public void onActivityCreated_titleShouldBeSet() {
+        initFragment();
+
+        TextView title = mFragment.requireActivity().findViewById(R.id.title);
+        assertThat(title.getText()).isEqualTo(mAccountLabel);
+    }
+
+    @Test
+    public void cannotModifyUsers_removeAccountButtonShouldNotBeVisible() {
+        doReturn(false).when(mMockCarUserManagerHelper).canCurrentProcessModifyAccounts();
+        initFragment();
+
+        Button removeAccountButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        assertThat(removeAccountButton.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void canModifyUsers_removeAccountButtonShouldBeVisible() {
+        doReturn(true).when(mMockCarUserManagerHelper).canCurrentProcessModifyAccounts();
+        initFragment();
+
+        Button removeAccountButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        assertThat(removeAccountButton.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void onRemoveAccountButtonClicked_canModifyUsers_shouldShowConfirmRemoveAccountDialog() {
+        doReturn(true).when(mMockCarUserManagerHelper).canCurrentProcessModifyAccounts();
+        initFragment();
+
+        Button removeAccountButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        removeAccountButton.performClick();
+
+        Fragment dialogFragment =
+                mFragment.requireActivity().getSupportFragmentManager().findFragmentByTag(
+                        DIALOG_TAG);
+
+        assertThat(dialogFragment).isNotNull();
+        assertThat(dialogFragment).isInstanceOf(
+                AccountDetailsFragment.ConfirmRemoveAccountDialogFragment.class);
+    }
+
+    @Test
+    public void accountExists_accountStillExists_shouldBeTrue() {
+        initFragment();
+
+        // Nothing has happened to the account so this should return true;
+        assertThat(mFragment.accountExists()).isTrue();
+    }
+
+    @Test
+    public void accountExists_accountWasRemoved_shouldBeFalse() {
+        initFragment();
+
+        // Clear accounts so that the account being displayed appears to have been removed
+        getShadowAccountManager().removeAllAccounts();
+        assertThat(mFragment.accountExists()).isFalse();
+    }
+
+    @Test
+    public void onAccountsUpdate_accountDoesNotExist_shouldGoBack() {
+        initFragment();
+
+        // Clear accounts so that the account being displayed appears to have been removed
+        getShadowAccountManager().removeAllAccounts();
+        mFragment.onAccountsUpdate(null);
+
+        assertThat(mActivity.getOnBackPressedFlag()).isTrue();
+    }
+
+    private void initFragment() {
+        mFragment = AccountDetailsFragment.newInstance(mAccount, mAccountLabel, mUserInfo);
+        mActivity.launchFragment(mFragment);
+    }
+
+    private ShadowAccountManager getShadowAccountManager() {
+        return Shadow.extract(AccountManager.get(mContext));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java
new file mode 100644
index 0000000..0b375f4
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsPreferenceControllerTest.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.robolectric.RuntimeEnvironment.application;
+import static org.testng.Assert.assertThrows;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.os.UserHandle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link AccountDetailsPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class,
+        ShadowApplicationPackageManager.class})
+public class AccountDetailsPreferenceControllerTest {
+    private static final String ACCOUNT_NAME = "Name";
+    private static final String ACCOUNT_TYPE = "com.acct";
+    private final Account mAccount = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
+    private final UserHandle mUserHandle = new UserHandle(0);
+
+    private AccountDetailsPreferenceController mController;
+    private Preference mPreference;
+
+    @Before
+    public void setUp() {
+        PreferenceControllerTestHelper<AccountDetailsPreferenceController> helper =
+                new PreferenceControllerTestHelper<>(application,
+                        AccountDetailsPreferenceController.class);
+        mController = helper.getController();
+        mController.setAccount(mAccount);
+        mController.setUserHandle(mUserHandle);
+
+        mPreference = new Preference(application);
+        helper.setPreference(mPreference);
+        helper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowContentResolver.reset();
+    }
+
+    @Test
+    public void checkInitialized_accountSetAndUserHandleSet_doesNothing() {
+        mController = new PreferenceControllerTestHelper<>(application,
+                AccountDetailsPreferenceController.class).getController();
+        mController.setAccount(mAccount);
+        mController.setUserHandle(mUserHandle);
+
+        mController.checkInitialized();
+    }
+
+    @Test
+    public void checkInitialized_nullAccount_throwsIllegalStateException() {
+        mController = new PreferenceControllerTestHelper<>(application,
+                AccountDetailsPreferenceController.class).getController();
+        mController.setUserHandle(mUserHandle);
+
+        assertThrows(IllegalStateException.class, () -> mController.checkInitialized());
+    }
+
+    @Test
+    public void checkInitialized_nullUserHandle_throwsIllegalStateException() {
+        mController = new PreferenceControllerTestHelper<>(application,
+                AccountDetailsPreferenceController.class).getController();
+        mController.setAccount(mAccount);
+
+        assertThrows(IllegalStateException.class, () -> mController.checkInitialized());
+    }
+
+    @Test
+    public void refreshUi_shouldSetTitle() {
+        mController.refreshUi();
+
+        assertThat(mPreference.getTitle().toString()).isEqualTo(ACCOUNT_NAME);
+    }
+
+    @Test
+    public void refreshUi_shouldSetIcon() {
+        // Add authenticator description with icon resource
+        addAuthenticator(/* type= */ ACCOUNT_TYPE, /* labelRes= */
+                R.string.account_type1_label, /* iconId= */ R.drawable.ic_add);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getIcon()).isNotNull();
+        assertThat(Shadows.shadowOf(mPreference.getIcon()).getCreatedFromResId()).isEqualTo(
+                R.drawable.ic_add);
+    }
+
+    private void addAuthenticator(String type, int labelRes, int iconId) {
+        getShadowAccountManager().addAuthenticator(
+                new AuthenticatorDescription(type, "com.android.car.settings",
+                        labelRes, iconId, /* smallIconId= */ 0, /* prefId= */ 0,
+                        /* customTokens= */ false));
+    }
+
+    private ShadowAccountManager getShadowAccountManager() {
+        return Shadow.extract(AccountManager.get(application));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsSettingControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsSettingControllerTest.java
new file mode 100644
index 0000000..326f56c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsSettingControllerTest.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright 2019 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+import static org.robolectric.RuntimeEnvironment.application;
+import static org.testng.Assert.assertThrows;
+
+import android.accounts.Account;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ExtraSettingsLoader;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Unit test for {@link AccountDetailsSettingController}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class,
+        ShadowApplicationPackageManager.class})
+public class AccountDetailsSettingControllerTest {
+
+    private static final String ACCOUNT_NAME = "account_name";
+    private static final String MATCHING_ACCOUNT_TYPE = "account_type";
+    private static final String ACCOUNT_ACCESS_ID = "account_access_id";
+    private static final String METADATA_IA_ACCOUNT = "com.android.settings.ia.account";
+    private static final String NOT_MATCHING_ACCOUNT_TYPE = "com.android.settings.ia.account";
+
+    private Context mContext;
+    private PreferenceGroup mPreference;
+    @Mock
+    private ExtraSettingsLoader mExtraSettingsLoader;
+    private AccountDetailsSettingController mAccountDetailsSettingController;
+    private Account mAccount = new Account(ACCOUNT_NAME, MATCHING_ACCOUNT_TYPE, ACCOUNT_ACCESS_ID);
+    private List<Preference> mPreferenceList;
+    private HashMap<Preference, Bundle> mPreferenceBundleMap;
+    PreferenceControllerTestHelper<AccountDetailsSettingController> mHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+
+        mHelper = new PreferenceControllerTestHelper<>(application,
+                AccountDetailsSettingController.class);
+
+        mAccountDetailsSettingController = mHelper.getController();
+        mAccountDetailsSettingController.setAccount(mAccount);
+
+        mPreferenceList = new ArrayList<>();
+        mPreferenceBundleMap = new HashMap<>();
+        mPreference = new LogicalPreferenceGroup(application);
+        mPreference.setIntent(new Intent());
+        mHelper.setPreference(mPreference);
+    }
+
+    @Test
+    public void checkInitialized_accountSetAndUserHandleSet_doesNothing() {
+        mAccountDetailsSettingController = new PreferenceControllerTestHelper<>(application,
+                AccountDetailsSettingController.class).getController();
+        mAccountDetailsSettingController.setAccount(mAccount);
+
+        mAccountDetailsSettingController.checkInitialized();
+    }
+
+    @Test
+    public void checkInitialized_nullAccount_throwsIllegalStateException() {
+        assertThrows(IllegalStateException.class,
+                () -> new PreferenceControllerTestHelper<>(mContext,
+                        AccountDetailsSettingController.class,
+                        new LogicalPreferenceGroup(mContext)));
+    }
+
+    @Test
+    public void addExtraSettings_preferenceEmpty_shouldNotAddAnyPreferences() {
+        mHelper.markState(Lifecycle.State.STARTED);
+
+        setupMockSettingLoaderAndRefreshUI();
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void addExtraSettings_preferenceEmpty_isNotVisible() {
+        mHelper.markState(Lifecycle.State.STARTED);
+
+        setupMockSettingLoaderAndRefreshUI();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void addExtraSettings_accountTypeNotEqual_shouldNotAddAnyPreferences() {
+        mHelper.markState(Lifecycle.State.STARTED);
+        Preference preference = new Preference(mContext);
+        mPreferenceList.add(preference);
+        Bundle bundle = new Bundle();
+        bundle.putString(METADATA_IA_ACCOUNT, NOT_MATCHING_ACCOUNT_TYPE);
+        mPreferenceBundleMap.put(preference, bundle);
+
+        setupMockSettingLoaderAndRefreshUI();
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void addExtraSettings_accountTypeNotEqual_isNotVisible() {
+        mHelper.markState(Lifecycle.State.STARTED);
+        Preference preference = new Preference(mContext);
+        mPreferenceList.add(preference);
+        Bundle bundle = new Bundle();
+        bundle.putString(METADATA_IA_ACCOUNT, NOT_MATCHING_ACCOUNT_TYPE);
+        mPreferenceBundleMap.put(preference, bundle);
+
+        setupMockSettingLoaderAndRefreshUI();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void addExtraSettings_accountTypeEqual_shouldAddPreferences() {
+        Preference preference = new Preference(mContext);
+        mPreferenceList.add(preference);
+        Bundle bundle = new Bundle();
+        bundle.putString(METADATA_IA_ACCOUNT, MATCHING_ACCOUNT_TYPE);
+        mPreferenceBundleMap.put(preference, bundle);
+
+        setupMockSettingLoaderAndRefreshUI();
+        mHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void addExtraSettings_accountTypeEqual_isVisible() {
+        Preference preference = new Preference(mContext);
+        mPreferenceList.add(preference);
+        Bundle bundle = new Bundle();
+        bundle.putString(METADATA_IA_ACCOUNT, MATCHING_ACCOUNT_TYPE);
+        mPreferenceBundleMap.put(preference, bundle);
+
+        setupMockSettingLoaderAndRefreshUI();
+        mHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    private void setupMockSettingLoaderAndRefreshUI() {
+        when(mExtraSettingsLoader.loadPreferences(any())).thenReturn(mPreferenceBundleMap);
+
+        mAccountDetailsSettingController.setExtraSettingsLoader(mExtraSettingsLoader);
+        mAccountDetailsSettingController.refreshUi();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java
new file mode 100644
index 0000000..f70d499
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountDetailsWithSyncStatusPreferenceControllerTest.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2019 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.robolectric.RuntimeEnvironment.application;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SyncAdapterType;
+import android.content.SyncStatusInfo;
+import android.content.SyncStatusObserver;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.ProviderInfo;
+import android.os.UserHandle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link AccountDetailsWithSyncStatusPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowAccountManager.class, ShadowContentResolver.class,
+        ShadowApplicationPackageManager.class})
+public class AccountDetailsWithSyncStatusPreferenceControllerTest {
+    private static final int SYNCABLE = 1;
+    private static final String AUTHORITY = "authority";
+    private static final String ACCOUNT_NAME = "Name";
+    private static final String ACCOUNT_TYPE = "com.acct";
+    private final Account mAccount = new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
+    private final UserHandle mUserHandle = new UserHandle(0);
+
+    private Context mContext;
+    private AccountDetailsWithSyncStatusPreferenceController mController;
+    private Preference mPreference;
+
+    @Before
+    public void setUp() {
+        mContext = application;
+        PreferenceControllerTestHelper<AccountDetailsWithSyncStatusPreferenceController> helper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        AccountDetailsWithSyncStatusPreferenceController.class);
+        mController = helper.getController();
+        mController.setAccount(mAccount);
+        mController.setUserHandle(mUserHandle);
+
+        mPreference = new Preference(application);
+        helper.setPreference(mPreference);
+        helper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowContentResolver.reset();
+    }
+
+    @Test
+    public void refreshUi_syncIsNotFailing_summaryShouldBeBlank() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo("");
+    }
+
+    @Test
+    public void refreshUi_syncIsFailing_summaryShouldBeSet() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        // Turns on automatic sync for the the sync adapter.
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
+                mUserHandle.getIdentifier());
+        // Sets the sync adapter's last failure time and message so it appears to have failed
+        // previously.
+        SyncStatusInfo status = new SyncStatusInfo(0);
+        status.lastFailureTime = 10;
+        status.lastFailureMesg = "too-many-deletions";
+        ShadowContentResolver.setSyncStatus(mAccount, AUTHORITY, status);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.sync_is_failing));
+    }
+
+    @Test
+    public void onSyncStatusChanged_summaryShouldUpdated() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        // Make sure the summary is blank first
+        mController.refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo("");
+
+        // Turns on automatic sync for the the sync adapter.
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
+                mUserHandle.getIdentifier());
+        // Sets the sync adapter's last failure time and message so it appears to have failed
+        // previously.
+        SyncStatusInfo status = new SyncStatusInfo(0);
+        status.lastFailureTime = 10;
+        status.lastFailureMesg = "too-many-deletions";
+        ShadowContentResolver.setSyncStatus(mAccount, AUTHORITY, status);
+
+        SyncStatusObserver listener = ShadowContentResolver.getStatusChangeListener();
+        listener.onStatusChanged(/* which= */ 0);
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.sync_is_failing));
+    }
+
+    private void setUpVisibleSyncAdapters(String... authorities) {
+        SyncAdapterType[] syncAdapters = new SyncAdapterType[authorities.length];
+        for (int i = 0; i < authorities.length; i++) {
+            String authority = authorities[i];
+            // Adds a sync adapter type that has the right account type and is visible.
+            SyncAdapterType syncAdapterType = new SyncAdapterType(authority,
+                    ACCOUNT_TYPE, /* userVisible */ true, /* supportsUploading */ true);
+            syncAdapters[i] = syncAdapterType;
+
+            // Sets that the sync adapter is syncable.
+            ShadowContentResolver.setIsSyncable(mAccount, authority, /* syncable= */ SYNCABLE);
+
+            // Sets provider info with a label for the sync adapter.
+            ProviderInfo info = new ProviderInfo();
+            info.authority = authority;
+            info.name = authority;
+            // Set an application info to avoid an NPE
+            info.applicationInfo = new ApplicationInfo();
+            ProviderInfo[] providers = {info};
+
+            PackageInfo packageInfo = new PackageInfo();
+            packageInfo.packageName = authority;
+            packageInfo.providers = providers;
+            getShadowApplicationManager().addPackage(packageInfo);
+        }
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+    }
+
+    private ShadowApplicationPackageManager getShadowApplicationManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java
new file mode 100644
index 0000000..9da11e4
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountListPreferenceControllerTest.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+import static org.robolectric.RuntimeEnvironment.application;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit tests for {@link AccountListPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowContentResolver.class,
+        ShadowAccountManager.class})
+public class AccountListPreferenceControllerTest {
+    private static final int USER_ID = 0;
+    private static final String USER_NAME = "name";
+    private static final int NOT_THIS_USER_ID = 1;
+    private PreferenceControllerTestHelper<AccountListPreferenceController> mHelper;
+    private AccountManager mAccountManager = AccountManager.get(application);
+    private PreferenceCategory mPreferenceCategory;
+    private AccountListPreferenceController mController;
+    private FragmentController mFragmentController;
+
+    @Mock
+    private CarUserManagerHelper mMockCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        // Set up user info
+        ShadowCarUserManagerHelper.setMockInstance(mMockCarUserManagerHelper);
+        doReturn(new UserInfo(USER_ID, USER_NAME, 0)).when(
+                mMockCarUserManagerHelper).getCurrentProcessUserInfo();
+        doReturn(true).when(
+                mMockCarUserManagerHelper).canCurrentProcessModifyAccounts();
+
+        // Add authenticated account types so that they are listed below
+        addAuthenticator(/* type= */ "com.acct1", /* labelRes= */ R.string.account_type1_label);
+        addAuthenticator(/* type= */ "com.acct2", /* labelRes= */ R.string.account_type2_label);
+
+        mPreferenceCategory = new PreferenceCategory(application);
+        mHelper = new PreferenceControllerTestHelper<>(application,
+                AccountListPreferenceController.class, mPreferenceCategory);
+        mHelper.markState(Lifecycle.State.CREATED);
+        mController = mHelper.getController();
+        mFragmentController = mHelper.getMockFragmentController();
+    }
+
+    @After
+    public void reset() {
+        removeAllAccounts();
+        ShadowContentResolver.reset();
+    }
+
+    @Test
+    public void onCreate_preferenceCategoryTitleShouldBeSet() {
+        String expectedTitle = application.getString(R.string.account_list_title, "name");
+        assertThat(mPreferenceCategory.getTitle()).isEqualTo(expectedTitle);
+    }
+
+    @Test
+    public void refreshUi_hasNoAccounts_shouldDisplayNoAccountPref() {
+        mController.refreshUi();
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        Preference noAccountPref = mPreferenceCategory.getPreference(0);
+
+        assertThat(noAccountPref.getTitle()).isEqualTo(
+                application.getString(R.string.no_accounts_added));
+    }
+
+    @Test
+    public void refreshUi_hasAccounts_shouldDisplayAccounts() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+
+        Preference firstPref = mPreferenceCategory.getPreference(0);
+        assertThat(firstPref.getTitle()).isEqualTo("Account1");
+        assertThat(firstPref.getSummary()).isEqualTo("Type 1");
+
+        Preference secondPref = mPreferenceCategory.getPreference(1);
+        assertThat(secondPref.getTitle()).isEqualTo("Account2");
+        assertThat(secondPref.getSummary()).isEqualTo("Type 2");
+    }
+
+    @Test
+    public void refreshUi_hasUnauthenticatedAccount_shouldNotDisplayAccount() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+        // There is not authenticator for account type "com.acct3" so this account should not
+        // appear in the list of displayed accounts.
+        addAccount(/* name= */ "Account3", /* type= */ "com.acct3");
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+
+        Preference firstPref = mPreferenceCategory.getPreference(0);
+        assertThat(firstPref.getTitle()).isEqualTo("Account1");
+        assertThat(firstPref.getSummary()).isEqualTo("Type 1");
+
+        Preference secondPref = mPreferenceCategory.getPreference(1);
+        assertThat(secondPref.getTitle()).isEqualTo("Account2");
+        assertThat(secondPref.getSummary()).isEqualTo("Type 2");
+    }
+
+    @Test
+    public void onAccountsUpdate_isThisUser_shouldForceUpdate() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+
+        mController.refreshUi();
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+
+        getShadowAccountManager().removeAllAccounts();
+        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
+
+        mController.onAccountsUpdate(new UserHandle(USER_ID));
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        Preference firstPref = mPreferenceCategory.getPreference(0);
+        assertThat(firstPref.getTitle()).isEqualTo("Account3");
+        assertThat(firstPref.getSummary()).isEqualTo("Type 1");
+    }
+
+    @Test
+    public void onAccountsUpdate_updatedUserIsNotCurrentUser_shouldNotForceUpdate() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+
+        mController.refreshUi();
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+
+        getShadowAccountManager().removeAllAccounts();
+        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
+
+        mController.onAccountsUpdate(new UserHandle(NOT_THIS_USER_ID));
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void onUsersUpdate_shouldForceUpdate() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        addAccount(/* name= */ "Account2", /* type= */ "com.acct2");
+
+        mController.refreshUi();
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
+
+        getShadowAccountManager().removeAllAccounts();
+        addAccount(/* name= */ "Account3", /* type= */ "com.acct1");
+
+        mController.onUsersUpdate();
+
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        Preference firstPref = mPreferenceCategory.getPreference(0);
+        assertThat(firstPref.getTitle()).isEqualTo("Account3");
+        assertThat(firstPref.getSummary()).isEqualTo("Type 1");
+    }
+
+    @Test
+    public void onAccountPreferenceClicked_shouldLaunchAccountDetailsFragment() {
+        addAccount(/* name= */ "Account1", /* type= */ "com.acct1");
+        mController.refreshUi();
+
+        Preference firstPref = mPreferenceCategory.getPreference(0);
+        firstPref.performClick();
+
+        verify(mFragmentController).launchFragment(any(AccountDetailsFragment.class));
+    }
+
+    private void addAccount(String name, String type) {
+        getShadowAccountManager().addAccount(new Account(name, type));
+    }
+
+    private void removeAllAccounts() {
+        getShadowAccountManager().removeAllAccounts();
+    }
+
+    private void addAuthenticator(String type, int labelRes) {
+        getShadowAccountManager().addAuthenticator(
+                new AuthenticatorDescription(type, "com.android.car.settings",
+                        labelRes, 0, 0, 0, false));
+    }
+
+    private ShadowAccountManager getShadowAccountManager() {
+        return Shadow.extract(mAccountManager);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountSettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountSettingsFragmentTest.java
new file mode 100644
index 0000000..bf3da2e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountSettingsFragmentTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.pm.UserInfo;
+import android.view.View;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for AccountSettingsFragment class.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowAccountManager.class,
+        ShadowContentResolver.class})
+public class AccountSettingsFragmentTest {
+    private BaseTestActivity mActivity;
+    private AccountSettingsFragment mFragment;
+
+    @Mock
+    private CarUserManagerHelper mMockCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        // Set up user info
+        ShadowCarUserManagerHelper.setMockInstance(mMockCarUserManagerHelper);
+        doReturn(new UserInfo()).when(
+                mMockCarUserManagerHelper).getCurrentProcessUserInfo();
+
+        mActivity = Robolectric.setupActivity(BaseTestActivity.class);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void cannotModifyUsers_addAccountButtonShouldNotBeVisible() {
+        doReturn(false).when(mMockCarUserManagerHelper).canCurrentProcessModifyAccounts();
+        initFragment();
+
+        Button addAccountButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        assertThat(addAccountButton.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void canModifyUsers_addAccountButtonShouldBeVisible() {
+        doReturn(true).when(mMockCarUserManagerHelper).canCurrentProcessModifyAccounts();
+        initFragment();
+
+        Button addAccountButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        assertThat(addAccountButton.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void clickAddAccountButton_shouldOpenChooseAccountFragment() {
+        doReturn(true).when(mMockCarUserManagerHelper).canCurrentProcessModifyAccounts();
+        initFragment();
+
+        Button addAccountButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        addAccountButton.performClick();
+
+        assertThat(mFragment.getFragmentManager().findFragmentById(
+                R.id.fragment_container)).isInstanceOf(ChooseAccountFragment.class);
+    }
+
+    private void initFragment() {
+        mFragment = new AccountSettingsFragment();
+        mActivity.launchFragment(mFragment);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsFragmentTest.java
new file mode 100644
index 0000000..37ce2a4
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsFragmentTest.java
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.robolectric.RuntimeEnvironment.application;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.content.SyncAdapterType;
+import android.content.SyncInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Tests for the {@link AccountSyncDetailsFragment}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowContentResolver.class, ShadowAccountManager.class})
+public class AccountSyncDetailsFragmentTest {
+    private static final int USER_ID = 3;
+    private static final String ACCOUNT_TYPE = "com.acct1";
+    private static final String AUTHORITY = "authority";
+    private static final String AUTHORITY_2 = "authority2";
+
+    private final Account mAccount = new Account("Name", ACCOUNT_TYPE);
+    private final UserHandle mUserHandle = new UserHandle(USER_ID);
+
+    private BaseTestActivity mActivity;
+    private AccountSyncDetailsFragment mFragment;
+    @Mock
+    ShadowContentResolver.SyncListener mMockSyncListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mActivity = Robolectric.setupActivity(BaseTestActivity.class);
+        ShadowContentResolver.setSyncListener(mMockSyncListener);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowContentResolver.reset();
+    }
+
+    @Test
+    public void onInit_doesNotHaveActiveSyncs_actionButtonShouldSaySyncNow() {
+        initFragment();
+
+        Button syncButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        assertThat(syncButton.getText()).isEqualTo(
+                application.getString(R.string.sync_button_sync_now));
+    }
+
+    @Test
+    public void onInit_hasActiveSyncs_actionButtonShouldSayCancelSync() {
+        SyncInfo syncInfo = mock(SyncInfo.class);
+        List<SyncInfo> syncs = new ArrayList<>();
+        syncs.add(syncInfo);
+        ShadowContentResolver.setCurrentSyncs(syncs);
+
+        initFragment();
+
+        Button syncButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        assertThat(syncButton.getText()).isEqualTo(
+                application.getString(R.string.sync_button_sync_cancel));
+    }
+
+    @Test
+    public void onButtonClicked_doesNotHaveActiveSyncs_shouldSyncSyncableAdapters() {
+        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
+        initFragment();
+
+        Button syncButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        syncButton.performClick();
+
+        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
+        verify(mMockSyncListener, times(2)).onSyncRequested(eq(mAccount), argument.capture(),
+                eq(USER_ID), any(Bundle.class));
+
+        List<String> values = argument.getAllValues();
+
+        assertThat(values).contains(AUTHORITY);
+        assertThat(values).contains(AUTHORITY_2);
+    }
+
+    @Test
+    public void onButtonClicked_doesNotHaveActiveSyncs_oneTimeSyncIsOff_shouldNotSyncOffAdapters() {
+        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
+        // Turns off one time sync and automatic sync for the adapter
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ true, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY_2, /* sync= */ false,
+                USER_ID);
+        initFragment();
+
+        Button syncButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        syncButton.performClick();
+
+        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
+        verify(mMockSyncListener, times(1)).onSyncRequested(eq(mAccount), argument.capture(),
+                eq(USER_ID), any(Bundle.class));
+
+        List<String> values = argument.getAllValues();
+
+        assertThat(values).contains(AUTHORITY);
+        assertThat(values).doesNotContain(AUTHORITY_2);
+    }
+
+    @Test
+    public void onButtonClicked_doesNotHaveActiveSyncs_oneTimeSyncIsOn_shouldSyncOffAdapters() {
+        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
+        // Turns on one time sync and turns off automatic sync for the adapter
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ false, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY_2, /* sync= */ false,
+                USER_ID);
+        initFragment();
+
+        Button syncButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        syncButton.performClick();
+
+        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
+        verify(mMockSyncListener, times(2)).onSyncRequested(eq(mAccount), argument.capture(),
+                eq(USER_ID), any(Bundle.class));
+
+        List<String> values = argument.getAllValues();
+
+        assertThat(values).contains(AUTHORITY);
+        assertThat(values).contains(AUTHORITY_2);
+    }
+
+    @Test
+    public void onButtonClicked_doesHaveActiveSyncs_shouldCancelSyncForSyncableAdapters() {
+        // Add active syncs
+        SyncInfo syncInfo = mock(SyncInfo.class);
+        List<SyncInfo> syncs = new ArrayList<>();
+        syncs.add(syncInfo);
+        ShadowContentResolver.setCurrentSyncs(syncs);
+
+        setUpSyncAdapters(AUTHORITY, AUTHORITY_2);
+        initFragment();
+
+        Button syncButton = mFragment.requireActivity().findViewById(R.id.action_button1);
+        syncButton.performClick();
+
+        ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
+        verify(mMockSyncListener, times(2)).onSyncCanceled(eq(mAccount), argument.capture(),
+                eq(USER_ID));
+
+        List<String> values = argument.getAllValues();
+
+        assertThat(values).contains(AUTHORITY);
+        assertThat(values).contains(AUTHORITY_2);
+    }
+
+    private void initFragment() {
+        mFragment = AccountSyncDetailsFragment.newInstance(mAccount, mUserHandle);
+        mActivity.launchFragment(mFragment);
+    }
+
+    private void setUpSyncAdapters(String... authorities) {
+        SyncAdapterType[] syncAdapters = new SyncAdapterType[authorities.length];
+        for (int i = 0; i < authorities.length; i++) {
+            String authority = authorities[i];
+            // Adds a sync adapter type that has the right account type and is visible.
+            SyncAdapterType syncAdapterType = new SyncAdapterType(authority,
+                    ACCOUNT_TYPE, /* userVisible */ true, /* supportsUploading */ true);
+            syncAdapters[i] = syncAdapterType;
+
+            // Sets that the sync adapter is syncable.
+            ShadowContentResolver.setIsSyncable(mAccount, authority, /* syncable= */ 1);
+        }
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceControllerTest.java
new file mode 100644
index 0000000..9e0fe78
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceControllerTest.java
@@ -0,0 +1,543 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.robolectric.RuntimeEnvironment.application;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SyncAdapterType;
+import android.content.SyncInfo;
+import android.content.SyncStatusInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.ProviderInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Unit test for {@link AccountSyncDetailsPreferenceController}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowContentResolver.class, ShadowApplicationPackageManager.class,
+        ShadowAccountManager.class})
+public class AccountSyncDetailsPreferenceControllerTest {
+    private static final int SYNCABLE = 1;
+    private static final int NOT_SYNCABLE = 0;
+
+    private static final int USER_ID = 3;
+    private static final int NOT_USER_ID = 5;
+
+    private static final String AUTHORITY = "authority";
+    private static final String ACCOUNT_TYPE = "com.acct1";
+    private static final String DIFFERENT_ACCOUNT_TYPE = "com.acct2";
+
+    private final Account mAccount = new Account("acct1", ACCOUNT_TYPE);
+    private final UserHandle mUserHandle = new UserHandle(USER_ID);
+    @Mock
+    ShadowContentResolver.SyncListener mMockSyncListener;
+    private Context mContext;
+    private AccountSyncDetailsPreferenceController mController;
+    private LogicalPreferenceGroup mPreferenceGroup;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = application;
+        ShadowContentResolver.setSyncListener(mMockSyncListener);
+
+        PreferenceControllerTestHelper<AccountSyncDetailsPreferenceController> helper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        AccountSyncDetailsPreferenceController.class);
+        mController = helper.getController();
+        mController.setAccount(mAccount);
+        mController.setUserHandle(mUserHandle);
+
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        helper.setPreference(mPreferenceGroup);
+
+        helper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowContentResolver.reset();
+    }
+
+    @Test
+    public void refreshUi_syncAdapterDoesNotHaveSameAccountType_shouldNotBeShown() {
+        // Adds a sync adapter type that is visible but does not have the right account type.
+        SyncAdapterType syncAdapterType = new SyncAdapterType(AUTHORITY,
+                DIFFERENT_ACCOUNT_TYPE, /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_syncAdapterIsNotVisible_shouldNotBeShown() {
+        // Adds a sync adapter type that has the right account type but is not visible.
+        SyncAdapterType syncAdapterType = new SyncAdapterType(AUTHORITY,
+                ACCOUNT_TYPE, /* userVisible */ false, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_syncAdapterIsNotSyncable_shouldNotBeShown() {
+        // Adds a sync adapter type that has the right account type and is visible.
+        SyncAdapterType syncAdapterType = new SyncAdapterType(AUTHORITY,
+                ACCOUNT_TYPE, /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        // Sets that the sync adapter to not syncable.
+        ShadowContentResolver.setIsSyncable(mAccount, AUTHORITY, /* syncable= */ NOT_SYNCABLE);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_syncAdapterDoesNotHaveProviderInfo_shouldNotBeShown() {
+        // Adds a sync adapter type that has the right account type and is visible.
+        SyncAdapterType syncAdapterType = new SyncAdapterType(AUTHORITY,
+                ACCOUNT_TYPE, /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        // Sets that the sync adapter to syncable.
+        ShadowContentResolver.setIsSyncable(mAccount, AUTHORITY, /* syncable= */ SYNCABLE);
+
+        // However, no provider info is set for the sync adapter, so it shouldn't be visible.
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_providerInfoDoesNotHaveLabel_shouldNotBeShown() {
+        // Adds a sync adapter type that has the right account type and is visible.
+        SyncAdapterType syncAdapterType = new SyncAdapterType(AUTHORITY,
+                ACCOUNT_TYPE, /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        // Sets that the sync adapter to syncable.
+        ShadowContentResolver.setIsSyncable(mAccount, AUTHORITY, /* syncable= */ SYNCABLE);
+        // Sets provider info for the sync adapter but it does not have a label.
+        ProviderInfo info = new ProviderInfo();
+        info.authority = AUTHORITY;
+        info.name = "";
+
+        ProviderInfo[] providers = {info};
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = AUTHORITY;
+        packageInfo.providers = providers;
+        getShadowApplicationManager().addPackage(packageInfo);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_providerLabelShouldBeSet() {
+        // Adds a sync adapter type that has the right account type and is visible.
+        SyncAdapterType syncAdapterType = new SyncAdapterType(AUTHORITY,
+                ACCOUNT_TYPE, /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        // Sets that the sync adapter to syncable.
+        ShadowContentResolver.setIsSyncable(mAccount, AUTHORITY, /* syncable= */ SYNCABLE);
+        // Sets provider info for the sync adapter with a label.
+        ProviderInfo info = new ProviderInfo();
+        info.authority = AUTHORITY;
+        info.name = "label";
+
+        ProviderInfo[] providers = {info};
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = AUTHORITY;
+        packageInfo.providers = providers;
+        getShadowApplicationManager().addPackage(packageInfo);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        Preference pref = mPreferenceGroup.getPreference(0);
+        assertThat(pref.getTitle()).isEqualTo("label");
+    }
+
+    @Test
+    public void refreshUi_masterSyncOff_syncDisabled_shouldNotBeChecked() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Turns off master sync and automatic sync for the adapter.
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ true, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ false,
+                USER_ID);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        SyncPreference pref = (SyncPreference) mPreferenceGroup.getPreference(0);
+        assertThat(pref.isChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_masterSyncOn_syncDisabled_shouldBeChecked() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Turns on master sync and turns off automatic sync for the adapter.
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ false, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ false,
+                USER_ID);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        SyncPreference pref = (SyncPreference) mPreferenceGroup.getPreference(0);
+        assertThat(pref.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_masterSyncOff_syncEnabled_shouldBeChecked() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Turns off master sync and turns on automatic sync for the adapter.
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ true, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
+                USER_ID);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        SyncPreference pref = (SyncPreference) mPreferenceGroup.getPreference(0);
+        assertThat(pref.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_syncDisabled_summaryShouldBeSet() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Turns off automatic sync for the the sync adapter.
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ false,
+                mUserHandle.getIdentifier());
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        Preference pref = mPreferenceGroup.getPreference(0);
+        assertThat(pref.getSummary()).isEqualTo(mContext.getString(R.string.sync_disabled));
+    }
+
+    @Test
+    public void refreshUi_syncEnabled_activelySyncing_summaryShouldBeSet() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Turns on automatic sync for the the sync adapter.
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
+                mUserHandle.getIdentifier());
+        // Adds the sync adapter to the list of currently syncing adapters.
+        SyncInfo syncInfo = new SyncInfo(/* authorityId= */ 0, mAccount, AUTHORITY, /* startTime= */
+                0);
+        List<SyncInfo> syncs = new ArrayList<>();
+        syncs.add(syncInfo);
+        ShadowContentResolver.setCurrentSyncs(syncs);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        Preference pref = mPreferenceGroup.getPreference(0);
+        assertThat(pref.getSummary()).isEqualTo(mContext.getString(R.string.sync_in_progress));
+    }
+
+    @Test
+    public void refreshUi_syncEnabled_syncHasHappened_summaryShouldBeSet() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Turns on automatic sync for the the sync adapter.
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
+                mUserHandle.getIdentifier());
+        // Sets the sync adapter's last successful sync time.
+        SyncStatusInfo status = new SyncStatusInfo(0);
+        status.setLastSuccess(0, 83091);
+        ShadowContentResolver.setSyncStatus(mAccount, AUTHORITY, status);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        Preference pref = mPreferenceGroup.getPreference(0);
+
+        String expectedTimeString = mController.formatSyncDate(new Date(83091));
+        assertThat(pref.getSummary()).isEqualTo(
+                mContext.getString(R.string.last_synced, expectedTimeString));
+    }
+
+    @Test
+    public void refreshUi_activelySyncing_notInitialSync_shouldHaveActiveSyncIcon() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Adds the sync adapter to the list of currently syncing adapters.
+        SyncInfo syncInfo = new SyncInfo(/* authorityId= */ 0, mAccount, AUTHORITY, /* startTime= */
+                0);
+        List<SyncInfo> syncs = new ArrayList<>();
+        syncs.add(syncInfo);
+        ShadowContentResolver.setCurrentSyncs(syncs);
+        // Sets the sync adapter's initializing state to false (i.e. it's not performing an
+        // initial sync).
+        SyncStatusInfo status = new SyncStatusInfo(0);
+        status.initialize = false;
+        ShadowContentResolver.setSyncStatus(mAccount, AUTHORITY, status);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        Preference pref = mPreferenceGroup.getPreference(0);
+
+        assertThat(Shadows.shadowOf(pref.getIcon()).getCreatedFromResId()).isEqualTo(
+                R.drawable.ic_sync_anim);
+    }
+
+    @Test
+    public void refreshUi_syncPending_notInitialSync_shouldHaveActiveSyncIcon() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Sets the sync adapter's initializing state to false (i.e. it's not performing an
+        // initial sync).
+        // Also sets the the sync status to pending
+        SyncStatusInfo status = new SyncStatusInfo(0);
+        status.initialize = false;
+        status.pending = true;
+        ShadowContentResolver.setSyncStatus(mAccount, AUTHORITY, status);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        Preference pref = mPreferenceGroup.getPreference(0);
+
+        assertThat(Shadows.shadowOf(pref.getIcon()).getCreatedFromResId()).isEqualTo(
+                R.drawable.ic_sync);
+    }
+
+    @Test
+    public void refreshUi_syncFailed_shouldHaveProblemSyncIcon() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+        // Turns on automatic sync for the the sync adapter.
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
+                mUserHandle.getIdentifier());
+        // Sets the sync adapter's last failure time and message so it appears to have failed
+        // previously.
+        SyncStatusInfo status = new SyncStatusInfo(0);
+        status.lastFailureTime = 10;
+        status.lastFailureMesg = "too-many-deletions";
+        ShadowContentResolver.setSyncStatus(mAccount, AUTHORITY, status);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        Preference pref = mPreferenceGroup.getPreference(0);
+
+        assertThat(Shadows.shadowOf(pref.getIcon()).getCreatedFromResId()).isEqualTo(
+                R.drawable.ic_sync_problem);
+    }
+
+    @Test
+    public void refreshUi_noSyncStatus_shouldHaveNoIcon() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        Preference pref = mPreferenceGroup.getPreference(0);
+
+        assertThat(pref.getIcon()).isNull();
+        assertThat(pref.isIconSpaceReserved()).isTrue();
+    }
+
+    @Test
+    public void onAccountsUpdate_correctUserId_shouldForceUpdatePreferences() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        ShadowContentResolver.reset();
+        mController.onAccountsUpdate(mUserHandle);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onAccountsUpdate_incorrectUserId_shouldNotForceUpdatePreferences() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        ShadowContentResolver.reset();
+        mController.onAccountsUpdate(new UserHandle(NOT_USER_ID));
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onSyncPreferenceClicked_preferenceUnchecked_shouldSetSyncAutomaticallyOff() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        // Turns off one time sync and turns on automatic sync for the adapter so the preference is
+        // checked.
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ true, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
+                USER_ID);
+
+        mController.refreshUi();
+        SyncPreference pref = (SyncPreference) mPreferenceGroup.getPreference(0);
+        pref.performClick();
+
+        assertThat(ContentResolver.getSyncAutomaticallyAsUser(mAccount, AUTHORITY,
+                USER_ID)).isFalse();
+    }
+
+    @Test
+    public void onSyncPreferenceClicked_preferenceUnchecked_shouldCancelSync() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        // Turns off one time sync and turns on automatic sync for the adapter so the preference is
+        // checked.
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ true, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ true,
+                USER_ID);
+
+        mController.refreshUi();
+        SyncPreference pref = (SyncPreference) mPreferenceGroup.getPreference(0);
+        pref.performClick();
+
+        verify(mMockSyncListener).onSyncCanceled(eq(mAccount), eq(AUTHORITY), eq(USER_ID));
+    }
+
+    @Test
+    public void onSyncPreferenceClicked_preferenceChecked_shouldSetSyncAutomaticallyOn() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        // Turns off one time sync and automatic sync for the adapter so the preference is
+        // unchecked.
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ true, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ false,
+                USER_ID);
+
+        mController.refreshUi();
+        SyncPreference pref = (SyncPreference) mPreferenceGroup.getPreference(0);
+        pref.performClick();
+
+        assertThat(ContentResolver.getSyncAutomaticallyAsUser(mAccount, AUTHORITY,
+                USER_ID)).isTrue();
+    }
+
+    @Test
+    public void onSyncPreferenceClicked_preferenceChecked_masterSyncOff_shouldRequestSync() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        // Turns off master sync and automatic sync for the adapter so the preference is unchecked.
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ false, USER_ID);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, AUTHORITY, /* sync= */ false,
+                USER_ID);
+
+        mController.refreshUi();
+        SyncPreference pref = (SyncPreference) mPreferenceGroup.getPreference(0);
+
+        // Sets master sync off
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ false, USER_ID);
+        pref.performClick();
+
+        verify(mMockSyncListener).onSyncRequested(eq(mAccount), eq(AUTHORITY), eq(USER_ID),
+                any(Bundle.class));
+    }
+
+    @Test
+    public void onSyncPreferenceClicked_oneTimeSyncOn_shouldRequestSync() {
+        setUpVisibleSyncAdapters(AUTHORITY);
+
+        // Turns on one time sync mode
+        ContentResolver.setMasterSyncAutomaticallyAsUser(/* sync= */ false, USER_ID);
+
+        mController.refreshUi();
+        SyncPreference pref = (SyncPreference) mPreferenceGroup.getPreference(0);
+        pref.performClick();
+
+        verify(mMockSyncListener).onSyncRequested(eq(mAccount), eq(AUTHORITY), eq(USER_ID),
+                any(Bundle.class));
+    }
+
+    private void setUpVisibleSyncAdapters(String... authorities) {
+        SyncAdapterType[] syncAdapters = new SyncAdapterType[authorities.length];
+        for (int i = 0; i < authorities.length; i++) {
+            String authority = authorities[i];
+            // Adds a sync adapter type that has the right account type and is visible.
+            SyncAdapterType syncAdapterType = new SyncAdapterType(authority,
+                    ACCOUNT_TYPE, /* userVisible */ true, /* supportsUploading */ true);
+            syncAdapters[i] = syncAdapterType;
+
+            // Sets that the sync adapter is syncable.
+            ShadowContentResolver.setIsSyncable(mAccount, authority, /* syncable= */ SYNCABLE);
+
+            // Sets provider info with a label for the sync adapter.
+            ProviderInfo info = new ProviderInfo();
+            info.authority = authority;
+            info.name = "label";
+            ProviderInfo[] providers = {info};
+
+            PackageInfo packageInfo = new PackageInfo();
+            packageInfo.packageName = authority;
+            packageInfo.providers = providers;
+            getShadowApplicationManager().addPackage(packageInfo);
+        }
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+    }
+
+    private ShadowApplicationPackageManager getShadowApplicationManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountSyncPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncPreferenceControllerTest.java
new file mode 100644
index 0000000..aa940d1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncPreferenceControllerTest.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.robolectric.RuntimeEnvironment.application;
+
+import android.accounts.Account;
+import android.content.ContentResolver;
+import android.content.SyncAdapterType;
+import android.os.UserHandle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+/**
+ * Unit test for {@link AccountSyncPreferenceController}.
+ *
+ * <p>Largely copied from {@link com.android.settings.accounts.AccountSyncPreferenceControllerTest}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowContentResolver.class})
+public class AccountSyncPreferenceControllerTest {
+    private static final int SYNCABLE = 1;
+    private static final int NOT_SYNCABLE = 0;
+
+    private final Account mAccount = new Account("acct1", "type1");
+    private final int mUserId = 3;
+    private final UserHandle mUserHandle = new UserHandle(mUserId);
+
+    private AccountSyncPreferenceController mController;
+    private FragmentController mMockFragmentController;
+    private Preference mPreference;
+
+    @Before
+    public void setUp() {
+        PreferenceControllerTestHelper<AccountSyncPreferenceController> helper =
+                new PreferenceControllerTestHelper<>(application,
+                        AccountSyncPreferenceController.class);
+        mController = helper.getController();
+        mMockFragmentController = helper.getMockFragmentController();
+
+        mController.setAccount(mAccount);
+        mController.setUserHandle(mUserHandle);
+
+        mPreference = new Preference(application);
+        helper.setPreference(mPreference);
+        helper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowContentResolver.reset();
+    }
+
+    @Test
+    public void refreshUi_notSameAccountType_shouldNotCount() {
+        // Adds a sync adapter type that has a visible user, is syncable, and syncs automatically
+        // but does not have the right account type.
+        SyncAdapterType syncAdapterType = new SyncAdapterType("authority", /* accountType */
+                "type5", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        ContentResolver.setIsSyncable(mAccount, "authority", SYNCABLE);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount,
+                "authority", /* sync= */ true, /* userId= */ mUserId);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(application.getString(R.string.account_sync_summary_all_off));
+    }
+
+    @Test
+    public void refreshUi_adapterInvisible_shouldNotCount() {
+        // Adds a sync adapter type that has the right account type, is syncable, and syncs
+        // automatically, but doesn't have a visible user
+        SyncAdapterType syncAdapterType = new SyncAdapterType("authority",
+                /* accountType */ "type1", /* userVisible */ false, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        ContentResolver.setIsSyncable(mAccount, "authority", SYNCABLE);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, "authority", /* sync= */
+                true, /* userId= */ mUserId);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(application.getString(R.string.account_sync_summary_all_off));
+    }
+
+    @Test
+    public void refreshUi_notSyncable_shouldNotCount() {
+        // Adds a sync adapter type that is the right account type and a visible user, but is not
+        // syncable
+        SyncAdapterType syncAdapterType = new SyncAdapterType("authority", /* accountType */
+                "type1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        ContentResolver.setIsSyncable(mAccount, "authority", NOT_SYNCABLE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(application.getString(R.string.account_sync_summary_all_off));
+    }
+
+    @Test
+    public void refreshUi_masterAutomaticSyncIgnoredAndAccountSyncDisabled_shouldNotCount() {
+        // Adds a sync adapter type that is the right account type, has a visible user, and is
+        // syncable, but has master automatic sync ignored and account-level sync disabled
+        SyncAdapterType syncAdapterType = new SyncAdapterType("authority", /* accountType */
+                "type1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        ContentResolver.setIsSyncable(mAccount, "authority", SYNCABLE);
+        ContentResolver.setMasterSyncAutomaticallyAsUser(true, mUserId);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, "authority", /* sync= */
+                false, /* userId= */ mUserId);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(application.getString(R.string.account_sync_summary_all_off));
+    }
+
+    @Test
+    public void refreshUi_masterAutomaticSyncUsed_shouldCount() {
+        // Adds a sync adapter type that is the right account type, has a visible user, is
+        // syncable, and has master-level automatic syncing enabled
+        SyncAdapterType syncAdapterType = new SyncAdapterType("authority", /* accountType */
+                "type1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        ContentResolver.setIsSyncable(mAccount, "authority", SYNCABLE);
+        ContentResolver.setMasterSyncAutomaticallyAsUser(false, mUserId);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(application.getString(R.string.account_sync_summary_all_on));
+    }
+
+    @Test
+    public void refreshUi_automaticSyncEnabled_shouldCount() {
+        // Adds a sync adapter type that is the right account type, has a visible user, is
+        // syncable, and has account-level automatic syncing enabled
+        SyncAdapterType syncAdapterType = new SyncAdapterType("authority", /* accountType */
+                "type1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+        ContentResolver.setIsSyncable(mAccount, "authority", SYNCABLE);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, "authority", /* sync= */
+                true, /* userId= */ mUserId);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(application.getString(R.string.account_sync_summary_all_on));
+    }
+
+    @Test
+    public void refreshUi_someEnabled_shouldSetSummary() {
+        SyncAdapterType syncAdapterType1 = new SyncAdapterType("authority1", /* accountType */
+                "type1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType syncAdapterType2 = new SyncAdapterType("authority2", /* accountType */
+                "type1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType syncAdapterType3 = new SyncAdapterType("authority3", /* accountType */
+                "type1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType syncAdapterType4 = new SyncAdapterType("authority4", /* accountType */
+                "type1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters =
+                {syncAdapterType1, syncAdapterType2, syncAdapterType3, syncAdapterType4};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+
+        // Enable sync for the first three authorities and disable it for the fourth one
+        ContentResolver.setIsSyncable(mAccount, "authority1", SYNCABLE);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, "authority1", /* sync= */
+                true, /* userId= */ mUserId);
+
+        ContentResolver.setIsSyncable(mAccount, "authority2", SYNCABLE);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, "authority2", /* sync= */
+                true, /* userId= */ mUserId);
+
+        ContentResolver.setIsSyncable(mAccount, "authority3", SYNCABLE);
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, "authority3", /* sync= */
+                true, /* userId= */ mUserId);
+
+        ContentResolver.setSyncAutomaticallyAsUser(mAccount, "authority4", /* sync= */
+                false, /* userId= */ mUserId);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(application.getString(R.string.account_sync_summary_some_on, 3, 4));
+    }
+
+    @Test
+    public void handlePreferenceClicked_shouldLaunchAccountSyncDetailsFragment() {
+        mController.refreshUi();
+        mController.handlePreferenceClicked(mPreference);
+
+        verify(mMockFragmentController).launchFragment(any(AccountSyncDetailsFragment.class));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountsEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountsEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..4cc9d71
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountsEntryPreferenceControllerTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link AccountsEntryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class AccountsEntryPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private AccountsEntryPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+
+        mController = new PreferenceControllerTestHelper<>(RuntimeEnvironment.application,
+                AccountsEntryPreferenceController.class).getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_cannotModifyAccounts_disabledForUser() {
+        when(mCarUserManagerHelper.canCurrentProcessModifyAccounts()).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_canModifyAccounts_available() {
+        when(mCarUserManagerHelper.canCurrentProcessModifyAccounts()).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountsItemProviderTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountsItemProviderTest.java
deleted file mode 100644
index e74a161..0000000
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountsItemProviderTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.accounts;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.car.user.CarUserManagerHelper;
-import android.content.Context;
-import android.content.pm.UserInfo;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import com.android.car.settings.CarSettingsRobolectricTestRunner;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(CarSettingsRobolectricTestRunner.class)
-public class AccountsItemProviderTest {
-    @Mock
-    private AccountManagerHelper mAccountManagerHelper;
-    @Mock
-    private UserManager mUserManager;
-    @Mock
-    private AccountManager mAccountManager;
-    @Mock
-    private Context mContext;
-    @Mock
-    private CarUserManagerHelper mCarUserManagerHelper;
-
-    private AccountsItemProvider mProvider;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
-        when(mContext.getSystemService(Context.ACCOUNT_SERVICE)).thenReturn(mAccountManager);
-        when(mContext.getApplicationContext()).thenReturn(mContext);
-        when(mUserManager.getUserInfo(UserHandle.myUserId())).thenReturn(new UserInfo());
-        when(mAccountManagerHelper.getAccountsForCurrentUser()).thenReturn(new ArrayList<>());
-
-        mCarUserManagerHelper = new CarUserManagerHelper(mContext);
-        mProvider = new AccountsItemProvider(
-                RuntimeEnvironment.application,
-                null,
-                mCarUserManagerHelper,
-                mAccountManagerHelper);
-    }
-
-    @Test
-    public void testAccountsAreSorted() {
-        Account account1 = new Account("g name", "g test type");
-        Account account2 = new Account("b name", "t test type");
-        Account account3 = new Account("a name", "g test type");
-        Account account4 = new Account("a name", "p test type");
-        List<Account> accounts = Arrays.asList(account1, account2, account3, account4);
-
-        when(mAccountManagerHelper.getAccountsForCurrentUser()).thenReturn(accounts);
-        when(mAccountManagerHelper.getLabelForType("g test type")).thenReturn("g test type");
-        when(mAccountManagerHelper.getLabelForType("t test type")).thenReturn("t test type");
-        when(mAccountManagerHelper.getLabelForType("p test type")).thenReturn("p test type");
-
-        assertThat(mProvider.getSortedUserAccounts())
-                .containsExactly(account3, account1, account4, account2).inOrder();
-    }
-
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java
new file mode 100644
index 0000000..b706ff7
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/accounts/ChooseAccountPreferenceControllerTest.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2018 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.car.settings.accounts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+import static org.robolectric.RuntimeEnvironment.application;
+
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Intent;
+import android.content.SyncAdapterType;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowContentResolver;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/** Unit tests for {@link ChooseAccountPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowContentResolver.class,
+        ShadowAccountManager.class})
+public class ChooseAccountPreferenceControllerTest {
+    private static final int ADD_ACCOUNT_REQUEST_CODE = 1;
+    private static final int USER_ID = 0;
+
+    PreferenceControllerTestHelper<ChooseAccountPreferenceController> mHelper;
+    private PreferenceGroup mPreferenceGroup;
+    private ChooseAccountPreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mMockCarUserManagerHelper;
+
+    private AccountManager mAccountManager = AccountManager.get(application);
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        // Set up user info
+        ShadowCarUserManagerHelper.setMockInstance(mMockCarUserManagerHelper);
+        doReturn(new UserInfo(USER_ID, "name", 0)).when(
+                mMockCarUserManagerHelper).getCurrentProcessUserInfo();
+
+        // Add authenticated account types
+        addAuthenticator(/* type= */ "com.acct1", /* label= */ R.string.account_type1_label);
+        addAuthenticator(/* type= */ "com.acct2", /* label= */ R.string.account_type2_label);
+
+        mPreferenceGroup = new LogicalPreferenceGroup(application);
+        mHelper = new PreferenceControllerTestHelper<>(application,
+                ChooseAccountPreferenceController.class, mPreferenceGroup);
+        // Mark state as started so the AuthenticatorHelper listener is attached.
+        mHelper.markState(Lifecycle.State.STARTED);
+        mController = mHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowContentResolver.reset();
+    }
+
+    @Test
+    public void refreshUi_authenticatorPreferencesShouldBeSet() {
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        Preference acct1Pref = mPreferenceGroup.getPreference(0);
+        assertThat(acct1Pref.getTitle()).isEqualTo("Type 1");
+
+        Preference acct2Pref = mPreferenceGroup.getPreference(1);
+        assertThat(acct2Pref.getTitle()).isEqualTo("Type 2");
+    }
+
+    @Test
+    public void refreshUi_hasAccountTypeFilter_shouldFilterAccounts() {
+        // Add a filter that should filter out the second account type (com.acct2)
+        Set<String> accountTypesFilter = new HashSet<>();
+        accountTypesFilter.add("com.acct1");
+        mController.setAccountTypesFilter(accountTypesFilter);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        Preference acct1Pref = mPreferenceGroup.getPreference(0);
+        assertThat(acct1Pref.getTitle()).isEqualTo("Type 1");
+    }
+
+    @Test
+    public void refreshUi_hasAccountExclusionFilter_shouldFilterAccounts() {
+        // Add a filter that should filter out the first account type (com.acct1)
+        Set<String> accountExclusionTypesFilter = new HashSet<>();
+        accountExclusionTypesFilter.add("com.acct1");
+        mController.setAccountTypesExclusionFilter(accountExclusionTypesFilter);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        Preference acct1Pref = mPreferenceGroup.getPreference(0);
+        assertThat(acct1Pref.getTitle()).isEqualTo("Type 2");
+    }
+
+    @Test
+    public void refreshUi_doesNotHaveAuthoritiesInFilter_shouldNotBeShown() {
+        // Adds a sync adapter type for the com.acct1 account type that does not have the same
+        // authority as the one passed to someAuthority
+        SyncAdapterType syncAdapterType = new SyncAdapterType("someAuthority",
+                "com.acct1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+
+        mController.setAuthorities(Collections.singletonList("someOtherAuthority"));
+
+        // Force an authenticator refresh so the authorities are refreshed
+        mController.getAuthenticatorHelper().onReceive(application, null);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        Preference acct2Pref = mPreferenceGroup.getPreference(0);
+        assertThat(acct2Pref.getTitle()).isEqualTo("Type 2");
+    }
+
+    @Test
+    public void refreshUi_hasAuthoritiesInFilter_shouldBeShown() {
+        // Adds a sync adapter type for the com.acct1 account type that has the same authority as
+        // the one passed to someAuthority
+        SyncAdapterType syncAdapterType = new SyncAdapterType("someAuthority",
+                "com.acct1", /* userVisible */ true, /* supportsUploading */ true);
+        SyncAdapterType[] syncAdapters = {syncAdapterType};
+        ShadowContentResolver.setSyncAdapterTypes(syncAdapters);
+
+        mController.setAuthorities(Collections.singletonList("someAuthority"));
+
+        // Force an authenticator refresh so the authorities are refreshed
+        mController.getAuthenticatorHelper().onReceive(application, null);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        Preference acct1Pref = mPreferenceGroup.getPreference(0);
+        assertThat(acct1Pref.getTitle()).isEqualTo("Type 1");
+
+        Preference acct2Pref = mPreferenceGroup.getPreference(1);
+        assertThat(acct2Pref.getTitle()).isEqualTo("Type 2");
+    }
+
+    @Test
+    public void onAccountsUpdate_currentUserUpdated_shouldForceUpdate() {
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        addAuthenticator(/* type= */ "com.acct3", /* label= */ R.string.account_type3_label);
+
+        // Trigger an account update via the authenticator helper so that the state matches what
+        // it would be during actual execution.
+        mController.getAuthenticatorHelper().onReceive(application, null);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+        Preference acct3Pref = mPreferenceGroup.getPreference(2);
+        assertThat(acct3Pref.getTitle()).isEqualTo("Type 3");
+    }
+
+    @Test
+    public void onPreferenceClick_shouldStartActivity() {
+        Preference acct1Pref = mPreferenceGroup.getPreference(0);
+        acct1Pref.performClick();
+
+        ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
+
+        verify(mHelper.getMockFragmentController()).startActivityForResult(captor.capture(),
+                anyInt(), any(ActivityResultCallback.class));
+
+        Intent intent = captor.getValue();
+        assertThat(intent.getComponent().getClassName()).isEqualTo(
+                AddAccountActivity.class.getName());
+        assertThat(intent.getStringExtra(AddAccountActivity.EXTRA_SELECTED_ACCOUNT)).isEqualTo(
+                "com.acct1");
+    }
+
+    @Test
+    public void onAccountAdded_shouldGoBack() {
+        Preference acct1Pref = mPreferenceGroup.getPreference(0);
+        acct1Pref.performClick();
+
+        ArgumentCaptor<ActivityResultCallback> captor = ArgumentCaptor.forClass(
+                ActivityResultCallback.class);
+
+        verify(mHelper.getMockFragmentController()).startActivityForResult(any(Intent.class),
+                anyInt(), captor.capture());
+
+        ActivityResultCallback callback = captor.getValue();
+        callback.processActivityResult(ADD_ACCOUNT_REQUEST_CODE, /* resultCode= */ 0, /* data= */
+                null);
+
+        verify(mHelper.getMockFragmentController()).goBack();
+    }
+
+    private void addAuthenticator(String type, int labelRes) {
+        getShadowAccountManager().addAuthenticator(
+                new AuthenticatorDescription(type, "com.android.car.settings",
+                        labelRes, 0, 0, 0, false));
+    }
+
+    private ShadowAccountManager getShadowAccountManager() {
+        return Shadow.extract(mAccountManager);
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..031236c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/AppPermissionsEntryPreferenceControllerTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2019 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PermissionGroupInfo;
+import android.content.pm.PermissionInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowPackageManager;
+
+/** Unit test for {@link AppPermissionsEntryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AppPermissionsEntryPreferenceControllerTest {
+
+    private Context mContext;
+    private Preference mPreference;
+    private AppPermissionsEntryPreferenceController mController;
+
+    private PermissionInfo mPermLocation;
+    private PermissionInfo mPermMic;
+    private PermissionInfo mPermCamera;
+    private PermissionInfo mPermSms;
+    private PermissionInfo mPermContacts;
+    private PermissionInfo mPermPhone;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        PreferenceControllerTestHelper<AppPermissionsEntryPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        AppPermissionsEntryPreferenceController.class, mPreference);
+        mController = controllerHelper.getController();
+        controllerHelper.markState(Lifecycle.State.STARTED);
+
+        mPermLocation = new PermissionInfo();
+        mPermLocation.name = "Permission1";
+        mPermLocation.group = "android.permission-group.LOCATION";
+        PermissionGroupInfo groupLocation = new PermissionGroupInfo();
+        groupLocation.name = mPermLocation.group;
+        groupLocation.nonLocalizedLabel = "Location";
+        getShadowPackageManager().addPermissionGroupInfo(groupLocation);
+
+        mPermMic = new PermissionInfo();
+        mPermMic.name = "Permission2";
+        mPermMic.group = "android.permission-group.MICROPHONE";
+        PermissionGroupInfo groupMic = new PermissionGroupInfo();
+        groupMic.name = mPermMic.group;
+        groupMic.nonLocalizedLabel = "Microphone";
+        getShadowPackageManager().addPermissionGroupInfo(groupMic);
+
+        mPermCamera = new PermissionInfo();
+        mPermCamera.name = "Permission3";
+        mPermCamera.group = "android.permission-group.CAMERA";
+        PermissionGroupInfo groupCamera = new PermissionGroupInfo();
+        groupCamera.name = mPermCamera.group;
+        groupCamera.nonLocalizedLabel = "Camera";
+        getShadowPackageManager().addPermissionGroupInfo(groupCamera);
+
+        mPermSms = new PermissionInfo();
+        mPermSms.name = "Permission4";
+        mPermSms.group = "android.permission-group.SMS";
+        PermissionGroupInfo groupSms = new PermissionGroupInfo();
+        groupSms.name = mPermSms.group;
+        groupSms.nonLocalizedLabel = "Sms";
+        getShadowPackageManager().addPermissionGroupInfo(groupSms);
+
+        mPermContacts = new PermissionInfo();
+        mPermContacts.name = "Permission5";
+        mPermContacts.group = "android.permission-group.CONTACTS";
+        PermissionGroupInfo groupContacts = new PermissionGroupInfo();
+        groupContacts.name = mPermContacts.group;
+        groupContacts.nonLocalizedLabel = "Contacts";
+        getShadowPackageManager().addPermissionGroupInfo(groupContacts);
+
+        mPermPhone = new PermissionInfo();
+        mPermPhone.name = "Permission6";
+        mPermPhone.group = "android.permission-group.PHONE";
+        PermissionGroupInfo groupPhone = new PermissionGroupInfo();
+        groupPhone.name = mPermPhone.group;
+        groupPhone.nonLocalizedLabel = "Phone";
+
+        getShadowPackageManager().addPermissionGroupInfo(groupPhone);
+    }
+
+
+    @Test
+    public void refreshUi_noGrantedPermissions_setsNullSummary() {
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isNull();
+    }
+
+    @Test
+    public void refreshUi_grantedPermissions_aboveMax_setsSummary_maxCountDefinedByController() {
+        setupPackageWithPermissions(mPermLocation, mPermMic, mPermCamera, mPermSms);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                "Apps using location, microphone, and camera");
+    }
+
+    @Test
+    public void refreshUi_grantedPermissions_setsSummary_inOrderDefinedByController() {
+        setupPackageWithPermissions(mPermPhone, mPermMic, mPermContacts, mPermSms);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo("Apps using microphone, sms, and contacts");
+    }
+
+    @Test
+    public void refreshUi_grantedPermissions_onlyTwo_setsSummary() {
+        setupPackageWithPermissions(mPermLocation, mPermCamera);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo("Apps using location and camera");
+    }
+
+    @Test
+    public void refreshUi_grantedPermissions_onlyOne_setsSummary() {
+        setupPackageWithPermissions(mPermCamera);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo("Apps using camera");
+    }
+
+    private void setupPackageWithPermissions(PermissionInfo... permissions) {
+        PackageInfo info = new PackageInfo();
+        info.packageName = "fake.package.name";
+        info.permissions = permissions;
+        getShadowPackageManager().addPackage(info);
+    }
+
+    private ShadowPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java
new file mode 100644
index 0000000..b6647af
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java
@@ -0,0 +1,637 @@
+/*
+ * Copyright 2019 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.Signature;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowActivityManager;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowDevicePolicyManager;
+import com.android.car.settings.testutils.ShadowIconDrawableFactory;
+import com.android.car.settings.testutils.ShadowPermissionControllerManager;
+import com.android.car.settings.testutils.ShadowSmsApplication;
+import com.android.car.settings.testutils.ShadowUserManager;
+import com.android.car.settings.testutils.ShadowUtils;
+import com.android.settingslib.Utils;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+/** Unit test for {@link ApplicationDetailsFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {
+        ShadowActivityManager.class,
+        ShadowApplicationPackageManager.class,
+        ShadowCarUserManagerHelper.class,
+        ShadowDevicePolicyManager.class,
+        ShadowIconDrawableFactory.class,
+        ShadowPermissionControllerManager.class,
+        ShadowSmsApplication.class,
+        ShadowUserManager.class,
+        ShadowUtils.class})
+public class ApplicationDetailsFragmentTest {
+
+    private static final String PACKAGE_NAME = "com.android.car.settings.test";
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    private Context mContext;
+    private TestActivity mActivity;
+    private ActivityController<TestActivity> mController;
+    private ApplicationDetailsFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        int userId = UserHandle.myUserId();
+        UserInfo userInfo = new UserInfo();
+        userInfo.id = userId;
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(userId);
+        when(mCarUserManagerHelper.getAllUsers()).thenReturn(Collections.singletonList(userInfo));
+        UserManager mockUserManager = mock(UserManager.class);
+        when(mockUserManager.getUserInfo(userId)).thenReturn(userInfo);
+        ShadowUserManager.setInstance(mockUserManager);
+
+        mContext = RuntimeEnvironment.application;
+        getShadowUserManager().addProfile(userId, userId, "profileName", /* profileFlags= */ 0);
+
+        mActivity = new TestActivity();
+        mController = ActivityController.of(mActivity);
+        mController.create();
+
+        mFragment = ApplicationDetailsFragment.getInstance(PACKAGE_NAME);
+    }
+
+    @After
+    public void tearDown() {
+        // Prevent caching from interfering across tests.
+        ReflectionHelpers.setStaticField(ApplicationsState.class, "sInstance", null);
+        ReflectionHelpers.setStaticField(Utils.class, "sSystemSignature", null);
+        ShadowApplicationPackageManager.reset();
+        ShadowCarUserManagerHelper.reset();
+        ShadowDevicePolicyManager.reset();
+        ShadowSmsApplication.reset();
+        ShadowUserManager.reset();
+        ShadowUtils.reset();
+    }
+
+    @Test
+    public void onStart_packageNotExplicitlyStopped_enablesForceStopButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findForceStopButton(mActivity).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onStart_packageHasActiveAdmins_disablesForceStopButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        getShadowDevicePolicyManager().setPackageHasActiveAdmins(
+                PACKAGE_NAME, /* hasActiveAdmins= */ true);
+        mController.start();
+
+        assertThat(findForceStopButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_appsControlUserRestriction_disablesForceStopButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_APPS_CONTROL)).thenReturn(true);
+        mController.start();
+
+        assertThat(findForceStopButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_packageExplicitlyStopped_queriesPackageRestart() {
+        int uid = 123;
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.uid = uid;
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_STOPPED;
+
+        mController.start();
+
+        Intent broadcast = mActivity.getMostRecentOrderedBroadcastIntent();
+        assertThat(broadcast).isNotNull();
+        assertThat(broadcast.getAction()).isEqualTo(Intent.ACTION_QUERY_PACKAGE_RESTART);
+        assertThat(broadcast.getStringArrayExtra(Intent.EXTRA_PACKAGES)).isEqualTo(
+                new String[]{PACKAGE_NAME});
+        assertThat(broadcast.getIntExtra(Intent.EXTRA_UID, 0)).isEqualTo(uid);
+    }
+
+    @Test
+    public void onStart_packageExplicitlyStopped_success_enablesForceStopButton() {
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_STOPPED;
+        mController.start();
+        BroadcastReceiver receiver = mActivity.getMostRecentOrderedBroadcastResultReceiver();
+        receiver.setPendingResult(
+                new BroadcastReceiver.PendingResult(Activity.RESULT_OK,
+                        "resultData",
+                        /* resultExtras= */ null,
+                        BroadcastReceiver.PendingResult.TYPE_UNREGISTERED,
+                        /* ordered= */ true,
+                        /* sticky= */ false,
+                        /* token= */ null,
+                        UserHandle.myUserId(),
+                        /* flags= */ 0));
+        receiver.onReceive(mContext, mActivity.getMostRecentOrderedBroadcastIntent());
+
+        assertThat(findForceStopButton(mActivity).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onStart_packageExplicitlyStopped_failure_disablesForceStopButton() {
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_STOPPED;
+        mController.start();
+        BroadcastReceiver receiver = mActivity.getMostRecentOrderedBroadcastResultReceiver();
+        receiver.setPendingResult(
+                new BroadcastReceiver.PendingResult(Activity.RESULT_CANCELED,
+                        "resultData",
+                        /* resultExtras= */ null,
+                        BroadcastReceiver.PendingResult.TYPE_UNREGISTERED,
+                        /* ordered= */ true,
+                        /* sticky= */ false,
+                        /* token= */ null,
+                        UserHandle.myUserId(),
+                        /* flags= */ 0));
+        receiver.onReceive(mContext, mActivity.getMostRecentOrderedBroadcastIntent());
+
+        assertThat(findForceStopButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_bundledApp_showsDisableButton() {
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findDisableButton(mActivity).getText()).isEqualTo(
+                mContext.getString(R.string.disable_text));
+    }
+
+    @Test
+    public void onStart_bundledApp_notEnabled_showsEnableButton() {
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        packageInfo.applicationInfo.enabled = false;
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findDisableButton(mActivity).getText()).isEqualTo(
+                mContext.getString(R.string.enable_text));
+    }
+
+    @Test
+    public void onStart_bundledApp_enabled_disableUntilUsed_showsEnableButton() {
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        packageInfo.applicationInfo.enabledSetting =
+                PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findDisableButton(mActivity).getText()).isEqualTo(
+                mContext.getString(R.string.enable_text));
+    }
+
+    @Test
+    public void onStart_bundledApp_homePackage_disablesDisableButton() {
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        getShadowPackageManager().addPackage(packageInfo);
+
+        ResolveInfo homeActivity = new ResolveInfo();
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = PACKAGE_NAME;
+        homeActivity.activityInfo = activityInfo;
+
+        getShadowPackageManager().setHomeActivities(Collections.singletonList(homeActivity));
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findDisableButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_bundledApp_systemPackage_disablesDisableButton() {
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        Signature[] signatures = new Signature[]{new Signature(PACKAGE_NAME.getBytes())};
+        packageInfo.signatures = signatures;
+        getShadowPackageManager().addPackage(packageInfo);
+
+        PackageInfo systemPackage = createPackageInfoWithApplicationInfo("android");
+        systemPackage.signatures = signatures;
+        getShadowPackageManager().addPackage(systemPackage);
+
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findDisableButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_bundledApp_enabledApp_keepEnabledPackage_disablesDisableButton() {
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+
+        ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(PACKAGE_NAME, "cls"));
+        mController.start();
+
+        assertThat(findDisableButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_appNotBundled_showsUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).getText()).isEqualTo(
+                mContext.getString(R.string.uninstall_text));
+    }
+
+    @Test
+    public void onStart_packageHasActiveAdmins_disablesUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        getShadowDevicePolicyManager().setPackageHasActiveAdmins(
+                PACKAGE_NAME, /* hasActiveAdmins= */ true);
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_deviceProvisioningPackage_disablesUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        ShadowUtils.setDeviceProvisioningPackage(PACKAGE_NAME);
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_uninstallQueued_disablesUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        getShadowDevicePolicyManager().setIsUninstallInQueue(true);
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_noDefaultHome_onlyHomeApp_disablesUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+
+        ResolveInfo homeActivity = new ResolveInfo();
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = PACKAGE_NAME;
+        homeActivity.activityInfo = activityInfo;
+
+        getShadowPackageManager().setHomeActivities(Collections.singletonList(homeActivity));
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_noDefaultHome_multipleHomeApps_enablesUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+
+        ResolveInfo homeActivity = new ResolveInfo();
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = PACKAGE_NAME;
+        homeActivity.activityInfo = activityInfo;
+
+        ResolveInfo altHomeActivity = new ResolveInfo();
+        ActivityInfo altActivityInfo = new ActivityInfo();
+        altActivityInfo.packageName = PACKAGE_NAME + ".Someotherhome";
+        altHomeActivity.activityInfo = altActivityInfo;
+
+        getShadowPackageManager().setHomeActivities(Arrays.asList(homeActivity, altHomeActivity));
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onStart_defaultHomeApp_disablesUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+
+        ResolveInfo homeActivity = new ResolveInfo();
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = PACKAGE_NAME;
+        homeActivity.activityInfo = activityInfo;
+
+        ResolveInfo altHomeActivity = new ResolveInfo();
+        ActivityInfo altActivityInfo = new ActivityInfo();
+        altActivityInfo.packageName = PACKAGE_NAME + ".Someotherhome";
+        altHomeActivity.activityInfo = altActivityInfo;
+
+        getShadowPackageManager().setHomeActivities(Arrays.asList(homeActivity, altHomeActivity));
+        getShadowPackageManager().setDefaultHomeActivity(new ComponentName(PACKAGE_NAME, "cls"));
+        mActivity.launchFragment(mFragment);
+
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_appsControlUserRestriction_disablesUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_APPS_CONTROL)).thenReturn(true);
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onStart_uninstallAppsRestriction_disablesUninstallButton() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_UNINSTALL_APPS)).thenReturn(true);
+        mController.start();
+
+        assertThat(findUninstallButton(mActivity).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void forceStopClicked_showsDialog() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+        mController.start();
+
+        findForceStopButton(mActivity).performClick();
+
+        assertThat(mFragment.getFragmentManager().findFragmentByTag(
+                ApplicationDetailsFragment.FORCE_STOP_CONFIRM_DIALOG_TAG)).isInstanceOf(
+                ConfirmationDialogFragment.class);
+    }
+
+    @Test
+    public void forceStopDialogConfirmed_forceStopsPackage() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+        mController.start();
+        findForceStopButton(mActivity).performClick();
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+
+        dialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+
+        assertThat(getShadowActivityManager().getMostRecentlyStoppedPackage()).isEqualTo(
+                PACKAGE_NAME);
+    }
+
+    @Test
+    public void disableClicked_showsDialog() {
+        // Use bundled app to get disable button.
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+        mController.start();
+
+        findDisableButton(mActivity).performClick();
+
+        assertThat(mFragment.getFragmentManager().findFragmentByTag(
+                ApplicationDetailsFragment.DISABLE_CONFIRM_DIALOG_TAG)).isInstanceOf(
+                ConfirmationDialogFragment.class);
+    }
+
+    @Test
+    public void disableDialogConfirmed_disablesPackage() {
+        // Use bundled app to get disable button.
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+        mController.start();
+        findDisableButton(mActivity).performClick();
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+
+        dialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+
+        assertThat(
+                mContext.getPackageManager().getApplicationEnabledSetting(PACKAGE_NAME)).isEqualTo(
+                PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER);
+    }
+
+    @Test
+    public void enableClicked_enablesPackage() {
+        // Use disabled bundled app to get enable button.
+        PackageInfo packageInfo = createPackageInfoWithApplicationInfo(PACKAGE_NAME);
+        packageInfo.applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        packageInfo.applicationInfo.enabled = false;
+        getShadowPackageManager().addPackage(packageInfo);
+        mActivity.launchFragment(mFragment);
+        mController.start();
+
+        findDisableButton(mActivity).performClick();
+
+        assertThat(
+                mContext.getPackageManager().getApplicationEnabledSetting(PACKAGE_NAME)).isEqualTo(
+                PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
+    }
+
+    @Test
+    public void uninstallClicked_startsUninstallActivity() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+        mController.start();
+
+        findUninstallButton(mActivity).performClick();
+
+        Intent intent = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_UNINSTALL_PACKAGE);
+        assertThat(intent.getBooleanExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, false)).isTrue();
+        assertThat(intent.getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)).isTrue();
+        assertThat(intent.getData().toString()).isEqualTo("package:" + PACKAGE_NAME);
+    }
+
+    @Test
+    public void processActivityResult_uninstall_resultOk_goesBack() {
+        getShadowPackageManager().addPackage(createPackageInfoWithApplicationInfo(PACKAGE_NAME));
+        mActivity.launchFragment(mFragment);
+        mController.start();
+        findUninstallButton(mActivity).performClick();
+
+        mFragment.processActivityResult(ApplicationDetailsFragment.UNINSTALL_REQUEST_CODE,
+                Activity.RESULT_OK, /* data= */ null);
+
+        assertThat(mActivity.getOnBackPressedFlag()).isTrue();
+    }
+
+    private Button findForceStopButton(Activity activity) {
+        return activity.findViewById(R.id.action_button2);
+    }
+
+    private Button findDisableButton(Activity activity) {
+        // Same button is used with a different handler.  This method is purely for readability.
+        return findUninstallButton(activity);
+    }
+
+    private Button findUninstallButton(Activity activity) {
+        return activity.findViewById(R.id.action_button1);
+    }
+
+    private PackageInfo createPackageInfoWithApplicationInfo(String packageName) {
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = packageName;
+        packageInfo.applicationInfo = createApplicationInfo(packageName);
+        return packageInfo;
+    }
+
+    private ApplicationInfo createApplicationInfo(String packageName) {
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = packageName;
+        applicationInfo.sourceDir =
+                RuntimeEnvironment.getTempDirectory()
+                        .createIfNotExists(applicationInfo.packageName + "-sourceDir")
+                        .toAbsolutePath()
+                        .toString();
+        return applicationInfo;
+    }
+
+    private ShadowUserManager getShadowUserManager() {
+        return Shadow.extract(UserManager.get(mContext));
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+
+    private ShadowDevicePolicyManager getShadowDevicePolicyManager() {
+        return Shadow.extract(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE));
+    }
+
+    private ShadowActivityManager getShadowActivityManager() {
+        return Shadow.extract(mContext.getSystemService(Context.ACTIVITY_SERVICE));
+    }
+
+    /** We extend the test activity here to add functionality that isn't useful elsewhere. */
+    private static class TestActivity extends BaseTestActivity {
+
+        private Intent mOrderedBroadcastIntent;
+        private BroadcastReceiver mOrderedBroadcastResultReceiver;
+
+        @Override
+        public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
+                String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler,
+                int initialCode, String initialData, Bundle initialExtras) {
+            mOrderedBroadcastIntent = intent;
+            mOrderedBroadcastResultReceiver = resultReceiver;
+        }
+
+        Intent getMostRecentOrderedBroadcastIntent() {
+            return mOrderedBroadcastIntent;
+        }
+
+        BroadcastReceiver getMostRecentOrderedBroadcastResultReceiver() {
+            return mOrderedBroadcastResultReceiver;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationListItemManagerTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationListItemManagerTest.java
new file mode 100644
index 0000000..78702cd
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/ApplicationListItemManagerTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.storage.VolumeInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+
+/** Unit test for {@link ApplicationListItemManager}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ApplicationListItemManagerTest {
+    private static final String LABEL = "label";
+    private static final String SIZE_STR = "12.34 MB";
+    private static final String SOURCE = "source";
+    private static final int UID = 12;
+
+    private Context mContext;
+    private ApplicationListItemManager mApplicationListItemManager;
+
+    @Mock
+    private VolumeInfo mVolumeInfo;
+    @Mock
+    private Lifecycle mLifecycle;
+    @Mock
+    private ApplicationsState mAppState;
+    @Mock
+    ApplicationsState.AppFilter mAppFilter;
+    @Mock
+    ApplicationListItemManager.AppListItemListener mAppListItemListener1;
+    @Mock
+    ApplicationListItemManager.AppListItemListener mAppListItemListener2;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mApplicationListItemManager = new ApplicationListItemManager(mVolumeInfo, mLifecycle,
+                mAppState);
+    }
+
+    @Test
+    public void startLoading_shouldStartNewSession() {
+        mApplicationListItemManager.startLoading(mAppFilter, /* param= */ null);
+
+        verify(mAppState).newSession(any(), eq(mLifecycle));
+    }
+
+    @Test
+    public void onRebuildComplete_shouldNotifyRegisteredListener() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        apps.add(appEntry);
+
+        mApplicationListItemManager.registerListener(mAppListItemListener1);
+        mApplicationListItemManager.registerListener(mAppListItemListener2);
+        mApplicationListItemManager.onRebuildComplete(apps);
+
+        verify(mAppListItemListener1).onDataLoaded(apps);
+        verify(mAppListItemListener2).onDataLoaded(apps);
+    }
+
+    @Test
+    public void onRebuildComplete_unRegisterOneListener_shouldNotifyRegisteredListener() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        apps.add(appEntry);
+
+        mApplicationListItemManager.registerListener(mAppListItemListener1);
+        mApplicationListItemManager.registerListener(mAppListItemListener2);
+        mApplicationListItemManager.unregisterlistener(mAppListItemListener2);
+        mApplicationListItemManager.onRebuildComplete(apps);
+
+        verify(mAppListItemListener1).onDataLoaded(apps);
+        verify(mAppListItemListener2, times(0)).onDataLoaded(apps);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationPreferenceControllerTest.java
new file mode 100644
index 0000000..ecfd20a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/ApplicationPreferenceControllerTest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.testng.Assert.assertThrows;
+
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ApplicationPreferenceControllerTest {
+    private static final String PACKAGE_NAME = "Test Package Name";
+
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<ApplicationPreferenceController>
+            mPreferenceControllerHelper;
+    private ApplicationPreferenceController mController;
+    @Mock
+    private ApplicationsState mMockAppState;
+    @Mock
+    private ApplicationsState.AppEntry mMockAppEntry;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = spy(RuntimeEnvironment.application);
+        mMockAppEntry.label = PACKAGE_NAME;
+
+        mPreference = new Preference(context);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                ApplicationPreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+    }
+
+    @Test
+    public void testCheckInitialized_noAppState_throwException() {
+        mController.setAppEntry(mMockAppEntry);
+        assertThrows(IllegalStateException.class,
+                () -> mPreferenceControllerHelper.setPreference(mPreference));
+    }
+
+    @Test
+    public void testCheckInitialized_noAppEntry_throwException() {
+        mController.setAppState(mMockAppState);
+        assertThrows(IllegalStateException.class,
+                () -> mPreferenceControllerHelper.setPreference(mPreference));
+    }
+
+    @Test
+    public void testRefreshUi_hasResolveInfo_setTitle() {
+        mController.setAppEntry(mMockAppEntry);
+        mController.setAppState(mMockAppState);
+        mPreferenceControllerHelper.setPreference(mPreference);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+        assertThat(mPreference.getTitle()).isEqualTo(PACKAGE_NAME);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java
new file mode 100644
index 0000000..ed26ea1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/ApplicationsSettingsPreferenceControllerTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+
+/** Unit test for {@link ApplicationsSettingsPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ApplicationsSettingsPreferenceControllerTest {
+
+    private static final String SOURCE = "source";
+    private static final int UID = 12;
+    private static final String LABEL = "label";
+    private static final String SIZE_STR = "12.34 MB";
+
+    private Context mContext;
+    private LogicalPreferenceGroup mLogicalPreferenceGroup;
+    private PreferenceControllerTestHelper<ApplicationsSettingsPreferenceController>
+            mPreferenceControllerHelper;
+    private ApplicationsSettingsPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mLogicalPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                ApplicationsSettingsPreferenceController.class, mLogicalPreferenceGroup);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void defaultInitialize_hasNoPreference() {
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onDataLoaded_addPreference_hasOnePreference() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        apps.add(appEntry);
+
+        mController.onDataLoaded(apps);
+
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mLogicalPreferenceGroup.getPreference(0).getTitle()).isEqualTo(LABEL);
+        assertThat(mLogicalPreferenceGroup.getPreference(0).getSummary()).isEqualTo(SIZE_STR);
+    }
+
+    @Test
+    public void preferenceClick_launchesDetailFragment() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        apps.add(appEntry);
+
+        mController.onDataLoaded(apps);
+
+        Preference preference = mLogicalPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        verify(mPreferenceControllerHelper.getMockFragmentController()).launchFragment(
+                any(ApplicationDetailsFragment.class));
+    }
+
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationsUtilsTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationsUtilsTest.java
new file mode 100644
index 0000000..a5b5b51
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/ApplicationsUtilsTest.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2019 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.pm.UserInfo;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowDefaultDialerManager;
+import com.android.car.settings.testutils.ShadowSmsApplication;
+
+import org.junit.After;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Collections;
+
+/** Unit test for {@link ApplicationsUtils}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowDefaultDialerManager.class, ShadowSmsApplication.class})
+public class ApplicationsUtilsTest {
+
+    private static final String PACKAGE_NAME = "com.android.car.settings.test";
+
+    @After
+    public void tearDown() {
+        ShadowDefaultDialerManager.reset();
+        ShadowSmsApplication.reset();
+    }
+
+    @Test
+    public void isKeepEnabledPackage_defaultDialerApplication_returnsTrue() {
+        ShadowDefaultDialerManager.setDefaultDialerApplication(PACKAGE_NAME);
+
+        assertThat(ApplicationsUtils.isKeepEnabledPackage(RuntimeEnvironment.application,
+                PACKAGE_NAME)).isTrue();
+    }
+
+    @Test
+    public void isKeepEnabledPackage_defaultSmsApplication_returnsTrue() {
+        ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(PACKAGE_NAME, "cls"));
+
+        assertThat(ApplicationsUtils.isKeepEnabledPackage(RuntimeEnvironment.application,
+                PACKAGE_NAME)).isTrue();
+    }
+
+    @Test
+    public void isKeepEnabledPackage_returnsFalse() {
+        assertThat(ApplicationsUtils.isKeepEnabledPackage(RuntimeEnvironment.application,
+                PACKAGE_NAME)).isFalse();
+    }
+
+    @Test
+    public void isProfileOrDeviceOwner_profileOwner_returnsTrue() {
+        UserInfo userInfo = new UserInfo();
+        userInfo.id = 123;
+        DevicePolicyManager dpm = mock(DevicePolicyManager.class);
+        CarUserManagerHelper um = mock(CarUserManagerHelper.class);
+        when(um.getAllUsers()).thenReturn(Collections.singletonList(userInfo));
+        when(dpm.getProfileOwnerAsUser(userInfo.id)).thenReturn(
+                new ComponentName(PACKAGE_NAME, "cls"));
+
+        assertThat(ApplicationsUtils.isProfileOrDeviceOwner(PACKAGE_NAME, dpm, um)).isTrue();
+    }
+
+    @Test
+    public void isProfileOrDeviceOwner_deviceOwner_returnsTrue() {
+        DevicePolicyManager dpm = mock(DevicePolicyManager.class);
+        when(dpm.isDeviceOwnerAppOnAnyUser(PACKAGE_NAME)).thenReturn(true);
+
+        assertThat(ApplicationsUtils.isProfileOrDeviceOwner(PACKAGE_NAME, dpm,
+                mock(CarUserManagerHelper.class))).isTrue();
+    }
+
+    @Test
+    public void isProfileOrDeviceOwner_returnsFalse() {
+        assertThat(ApplicationsUtils.isProfileOrDeviceOwner(PACKAGE_NAME,
+                mock(DevicePolicyManager.class), mock(CarUserManagerHelper.class))).isFalse();
+    }
+
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java
new file mode 100644
index 0000000..90630ea
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/NotificationsPreferenceControllerTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.INotificationManager;
+import android.app.NotificationChannel;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class NotificationsPreferenceControllerTest {
+    private static final String PKG_NAME = "package.name";
+    private static final int UID = 1001010;
+    private Context mContext;
+    private NotificationsPreferenceController mController;
+    private PreferenceControllerTestHelper<NotificationsPreferenceController>
+            mPreferenceControllerHelper;
+    private TwoStatePreference mTwoStatePreference;
+    @Mock
+    private INotificationManager mMockManager;
+    @Mock
+    private NotificationChannel mMockChannel;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        mTwoStatePreference = new SwitchPreference(mContext);
+
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                NotificationsPreferenceController.class, mTwoStatePreference);
+        mController = mPreferenceControllerHelper.getController();
+        mController.mNotificationManager = mMockManager;
+
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = PKG_NAME;
+
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = PKG_NAME;
+        packageInfo.applicationInfo = applicationInfo;
+        packageInfo.applicationInfo.uid = UID;
+        mController.setPackageInfo(packageInfo);
+    }
+
+    @Test
+    public void onCreate_notificationEnabled_isChecked() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(true);
+
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onCreate_notificationDisabled_isNotChecked() throws Exception {
+        when(mMockManager.areNotificationsEnabledForPackage(PKG_NAME, UID)).thenReturn(false);
+
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void callChangeListener_setEnable_enablingNotification() throws Exception {
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(false);
+
+        mTwoStatePreference.callChangeListener(true);
+
+        verify(mMockManager).setNotificationsEnabledForPackage(PKG_NAME, UID, true);
+    }
+
+    @Test
+    public void callChangeListener_setDisable_disablingNotification() throws Exception {
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(false);
+
+        mTwoStatePreference.callChangeListener(false);
+
+        verify(mMockManager).setNotificationsEnabledForPackage(PKG_NAME, UID, false);
+    }
+
+    @Test
+    public void callChangeListener_onlyHasDefaultChannel_updateChannel() throws Exception {
+        when(mMockManager.onlyHasDefaultChannel(PKG_NAME, UID)).thenReturn(true);
+        when(mMockManager
+                .getNotificationChannelForPackage(
+                        PKG_NAME, UID, NotificationChannel.DEFAULT_CHANNEL_ID, true))
+                .thenReturn(mMockChannel);
+
+        mTwoStatePreference.callChangeListener(true);
+
+        verify(mMockManager).updateNotificationChannelForPackage(PKG_NAME, UID, mMockChannel);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/PermissionsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/PermissionsPreferenceControllerTest.java
new file mode 100644
index 0000000..445383d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/PermissionsPreferenceControllerTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowPermissionControllerManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowPermissionControllerManager.class})
+public class PermissionsPreferenceControllerTest {
+
+    private static final String PACKAGE_NAME = "Test Package Name";
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<PermissionsPreferenceController>
+        mPreferenceControllerHelper;
+    private PermissionsPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+            PermissionsPreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+        mPreference = new Preference(mContext);
+    }
+
+    @Test
+    public void testCheckInitialized_noResolveInfo_throwException() {
+        assertThrows(IllegalStateException.class,
+            () -> mPreferenceControllerHelper.setPreference(mPreference));
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_navigateToNextActivity() {
+        // Setup so the controller knows about the preference.
+        mController.setPackageName(PACKAGE_NAME);
+        mPreferenceControllerHelper.setPreference(mPreference);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual.getAction()).isEqualTo(Intent.ACTION_MANAGE_APP_PERMISSIONS);
+        assertThat(actual.getStringExtra(Intent.EXTRA_PACKAGE_NAME)).isEqualTo(PACKAGE_NAME);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/VersionPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/VersionPreferenceControllerTest.java
new file mode 100644
index 0000000..aa53c6c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/VersionPreferenceControllerTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2018 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.car.settings.applications;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class VersionPreferenceControllerTest {
+    private static final String TEST_VERSION_NAME = "9";
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<VersionPreferenceController> mPreferenceControllerHelper;
+    private VersionPreferenceController mController;
+    private PackageInfo mPackageInfo;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                VersionPreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+        mPreference = new Preference(mContext);
+
+        mPackageInfo = new PackageInfo();
+        mPackageInfo.versionName = TEST_VERSION_NAME;
+    }
+
+    @Test
+    public void testCheckInitialized_noPackageInfo_throwException() {
+        assertThrows(IllegalStateException.class,
+                () -> mPreferenceControllerHelper.setPreference(mPreference));
+    }
+
+    @Test
+    public void testRefreshUi_hasPackageInfo_setTitle() {
+        mController.setPackageInfo(mPackageInfo);
+        mPreferenceControllerHelper.setPreference(mPreference);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+        assertThat(mPreference.getTitle()).isEqualTo(
+                mContext.getString(R.string.application_version_label, TEST_VERSION_NAME));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/assist/AssistConfigBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/assist/AssistConfigBasePreferenceControllerTest.java
new file mode 100644
index 0000000..5b99a3e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/assist/AssistConfigBasePreferenceControllerTest.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+
+import com.google.common.collect.Iterables;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowContentResolver;
+
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowSecureSettings.class})
+public class AssistConfigBasePreferenceControllerTest {
+
+    private static class TestAssistConfigBasePreferenceController extends
+            AssistConfigBasePreferenceController {
+
+        private int mNumCallsToUpdateState;
+
+        TestAssistConfigBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+            mNumCallsToUpdateState = 0;
+        }
+
+        public int getNumCallsToUpdateState() {
+            return mNumCallsToUpdateState;
+        }
+
+        @Override
+        protected void updateState(TwoStatePreference preference) {
+            mNumCallsToUpdateState++;
+        }
+
+        @Override
+        protected List<Uri> getSettingUris() {
+            return Collections.singletonList(
+                    Settings.Secure.getUriFor(Settings.Secure.ASSIST_STRUCTURE_ENABLED));
+        }
+    }
+
+    private static final int TEST_USER_ID = 10;
+    private static final String TEST_PACKAGE_NAME = "com.test.package";
+    private static final String TEST_SERVICE = "TestService";
+
+    private Context mContext;
+    private TwoStatePreference mTwoStatePreference;
+    private PreferenceControllerTestHelper<TestAssistConfigBasePreferenceController>
+            mControllerHelper;
+    private TestAssistConfigBasePreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER_ID);
+
+        mContext = RuntimeEnvironment.application;
+        mTwoStatePreference = new SwitchPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestAssistConfigBasePreferenceController.class, mTwoStatePreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasAssistComponent_isAvailable() {
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
+                key, TEST_USER_ID);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_noAssistComponent_conditionallyUnavailable() {
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void onStart_registersObserver() {
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
+                key, TEST_USER_ID);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Secure.getUriFor(Settings.Secure.ASSISTANT))).isNotEmpty();
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Secure.getUriFor(Settings.Secure.ASSIST_STRUCTURE_ENABLED))).isNotEmpty();
+    }
+
+    @Test
+    public void onStop_unregistersObserver() {
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
+                key, TEST_USER_ID);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Secure.getUriFor(Settings.Secure.ASSISTANT))).isEmpty();
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Secure.getUriFor(Settings.Secure.ASSIST_STRUCTURE_ENABLED))).isEmpty();
+    }
+
+    @Test
+    public void onChange_changeRegisteredSetting_callsRefreshUi() {
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
+                key, TEST_USER_ID);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        int currentCount = mController.getNumCallsToUpdateState();
+
+        ContentObserver observer = Iterables.get(getShadowContentResolver().getContentObservers(
+                Settings.Secure.getUriFor(Settings.Secure.ASSIST_STRUCTURE_ENABLED)), 0);
+        observer.onChange(/* selfChange= */ false,
+                Settings.Secure.getUriFor(Settings.Secure.ASSIST_STRUCTURE_ENABLED));
+
+        assertThat(mController.getNumCallsToUpdateState()).isEqualTo(currentCount + 1);
+    }
+
+    private ShadowContentResolver getShadowContentResolver() {
+        return (ShadowContentResolver) Shadows.shadowOf(mContext.getContentResolver());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..97c5264
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceControllerTest.java
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.database.ContentObserver;
+import android.provider.Settings;
+import android.service.voice.VoiceInteractionServiceInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+import com.android.car.settings.testutils.ShadowVoiceInteractionServiceInfo;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import com.google.common.collect.Iterables;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplicationPackageManager;
+import org.robolectric.shadows.ShadowContentResolver;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class, ShadowCarUserManagerHelper.class,
+        ShadowVoiceInteractionServiceInfo.class})
+public class DefaultVoiceInputPickerEntryPreferenceControllerTest {
+
+    private static final String TEST_PACKAGE = "com.android.car.settings.testutils";
+    private static final String TEST_ASSIST = "TestAssistService";
+    private static final String TEST_VOICE = "TestVoiceService";
+    private static final String TEST_SETTINGS_CLASS = "TestSettingsActivity";
+    private static final int TEST_USER_ID = 10;
+
+    private Context mContext;
+    private DefaultVoiceInputPickerEntryPreferenceController mController;
+    private PreferenceControllerTestHelper<DefaultVoiceInputPickerEntryPreferenceController>
+            mControllerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        CarUserManagerHelper carUserManagerHelper = mock(CarUserManagerHelper.class);
+        ShadowCarUserManagerHelper.setMockInstance(carUserManagerHelper);
+
+        mContext = RuntimeEnvironment.application;
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DefaultVoiceInputPickerEntryPreferenceController.class,
+                new ButtonPreference(mContext));
+        mController = mControllerHelper.getController();
+
+        // Set user.
+        when(carUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER_ID);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowSecureSettings.reset();
+        ShadowVoiceInteractionServiceInfo.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_sameComponents_returnsConditionallyUnavailable() {
+        setCurrentAssistant(new ComponentName(TEST_PACKAGE, TEST_VOICE));
+        setCurrentVoiceService(new ComponentName(TEST_PACKAGE, TEST_VOICE));
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_bothNull_returnsConditionallyUnavailable() {
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_differentComponents_returnsAvailable() {
+        setCurrentAssistant(new ComponentName(TEST_PACKAGE, TEST_ASSIST));
+        setCurrentVoiceService(new ComponentName(TEST_PACKAGE, TEST_VOICE));
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                PreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_assistNull_returnsAvailable() {
+        setCurrentVoiceService(new ComponentName(TEST_PACKAGE, TEST_VOICE));
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                PreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_voiceInputNull_returnsAvailable() {
+        setCurrentAssistant(new ComponentName(TEST_PACKAGE, TEST_ASSIST));
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                PreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void onStart_registersObserver() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Secure.getUriFor(Settings.Secure.ASSISTANT))).isNotEmpty();
+    }
+
+    @Test
+    public void onStop_unregistersObserver() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Secure.getUriFor(Settings.Secure.ASSISTANT))).isEmpty();
+    }
+
+    @Test
+    public void onChange_changeRegisteredSetting_callsRefreshUi() {
+        setCurrentVoiceService(new ComponentName(TEST_PACKAGE, TEST_VOICE));
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(PreferenceController.AVAILABLE);
+
+        setCurrentAssistant(new ComponentName(TEST_PACKAGE, TEST_VOICE));
+        ContentObserver observer = Iterables.get(getShadowContentResolver().getContentObservers(
+                Settings.Secure.getUriFor(Settings.Secure.ASSISTANT)), 0);
+        observer.onChange(/* selfChange= */ false,
+                Settings.Secure.getUriFor(Settings.Secure.ASSISTANT));
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(
+                PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getCurrentDefaultAppInfo_providerHasCurrentService_returnsValidDefaultAppInfo() {
+        // This is used so tht the VoiceInputInfoProvider returns a valid service.
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE;
+        resolveInfo.serviceInfo.name = TEST_VOICE;
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, resolveInfo);
+
+        // Create new controller to rerun the constructor with the new shadow package manager.
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DefaultVoiceInputPickerEntryPreferenceController.class,
+                new ButtonPreference(mContext));
+        mController = mControllerHelper.getController();
+
+        ComponentName voiceService = new ComponentName(TEST_PACKAGE, TEST_VOICE);
+        setCurrentVoiceService(voiceService);
+
+        assertThat(mController.getCurrentDefaultAppInfo()).isNotNull();
+    }
+
+    @Test
+    public void getCurrentDefaultAppInfo_providerHasNoService_returnsNull() {
+        assertThat(mController.getCurrentDefaultAppInfo()).isNull();
+    }
+
+    @Test
+    public void getSettingIntent_nullInput_returnsNull() {
+        assertThat(mController.getSettingIntent(null)).isEqualTo(null);
+    }
+
+    @Test
+    public void getSettingIntent_inputIsWrongType_returnsNull() {
+        DefaultAppInfo info = mock(DefaultAppInfo.class);
+        assertThat(mController.getSettingIntent(info)).isEqualTo(null);
+    }
+
+    @Test
+    public void getSettingIntent_validInput_returnsIntent() {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE;
+        resolveInfo.serviceInfo.name = TEST_VOICE;
+
+        ShadowVoiceInteractionServiceInfo.setSettingsActivity(resolveInfo.serviceInfo,
+                TEST_SETTINGS_CLASS);
+        VoiceInteractionServiceInfo interactionServiceInfo = new VoiceInteractionServiceInfo(
+                mContext.getPackageManager(), resolveInfo.serviceInfo);
+        VoiceInputInfoProvider.VoiceInputInfo info =
+                new VoiceInputInfoProvider.VoiceInteractionInfo(mContext, interactionServiceInfo);
+
+        DefaultVoiceInputServiceInfo serviceInfo = new DefaultVoiceInputServiceInfo(mContext,
+                mContext.getPackageManager(), TEST_USER_ID, info, true);
+        Intent settingIntent = mController.getSettingIntent(serviceInfo);
+
+        assertThat(settingIntent.getAction()).isEqualTo(Intent.ACTION_MAIN);
+        assertThat(settingIntent.getComponent()).isEqualTo(
+                new ComponentName(TEST_PACKAGE, TEST_SETTINGS_CLASS));
+    }
+
+    private void setCurrentVoiceService(ComponentName service) {
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_INTERACTION_SERVICE, service.flattenToString());
+    }
+
+    private void setCurrentAssistant(ComponentName assist) {
+        Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
+                assist.flattenToString(), TEST_USER_ID);
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+
+    private ShadowContentResolver getShadowContentResolver() {
+        return (ShadowContentResolver) Shadows.shadowOf(mContext.getContentResolver());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceControllerTest.java
new file mode 100644
index 0000000..84e8572
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceControllerTest.java
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.provider.Settings;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+import com.android.car.settings.testutils.ShadowVoiceInteractionServiceInfo;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplicationPackageManager;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class, ShadowVoiceInteractionServiceInfo.class,
+        ShadowCarUserManagerHelper.class})
+public class DefaultVoiceInputPickerPreferenceControllerTest {
+
+    private static final String TEST_PACKAGE_NAME = "com.test.package";
+    private static final String TEST_SERVICE = "TestService";
+    private static final String TEST_OTHER_SERVICE = "TestOtherService";
+    private static final String TEST_RECOGNIZER = "TestRecognizer";
+    private static final int TEST_USER_ID = 10;
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<DefaultVoiceInputPickerPreferenceController>
+            mControllerHelper;
+    private DefaultVoiceInputPickerPreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+
+        mContext = RuntimeEnvironment.application;
+
+        // Set user.
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER_ID);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSecureSettings.reset();
+        ShadowCarUserManagerHelper.reset();
+        ShadowVoiceInteractionServiceInfo.reset();
+    }
+
+    @Test
+    public void getCandidates_voiceInteractionService_hasOneElement() {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        resolveInfo.serviceInfo.name = TEST_SERVICE;
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, resolveInfo);
+        setupController();
+
+        assertThat(mController.getCandidates()).hasSize(1);
+    }
+
+    @Test
+    public void getCandidates_voiceRecognitionService_hasOneElement() {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        resolveInfo.serviceInfo.name = TEST_RECOGNIZER;
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_RECOGNITION_SERVICE_TAG, resolveInfo);
+        setupController();
+
+        assertThat(mController.getCandidates()).hasSize(1);
+    }
+
+    @Test
+    public void getCandidates_oneIsSameAsAssistant_hasTwoElements() {
+        ResolveInfo interactionInfo = new ResolveInfo();
+        interactionInfo.serviceInfo = new ServiceInfo();
+        interactionInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        interactionInfo.serviceInfo.name = TEST_SERVICE;
+        interactionInfo.serviceInfo.applicationInfo = new ApplicationInfo();
+        interactionInfo.serviceInfo.applicationInfo.nonLocalizedLabel = "1";
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, interactionInfo);
+
+        ResolveInfo interactionInfo2 = new ResolveInfo();
+        interactionInfo2.serviceInfo = new ServiceInfo();
+        interactionInfo2.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        interactionInfo2.serviceInfo.name = TEST_OTHER_SERVICE;
+        interactionInfo2.serviceInfo.applicationInfo = new ApplicationInfo();
+        interactionInfo2.serviceInfo.applicationInfo.nonLocalizedLabel = "2";
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, interactionInfo2);
+
+        ComponentName voiceInteraction = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE);
+        setCurrentAssistant(voiceInteraction);
+        setCurrentVoiceInteractionService(voiceInteraction);
+
+        setupController();
+
+        assertThat(mController.getCandidates()).hasSize(2);
+    }
+
+    @Test
+    public void getCandidates_oneIsSameAsAssistant_sameOneIsEnabled() {
+        ResolveInfo interactionInfo = new ResolveInfo();
+        interactionInfo.serviceInfo = new ServiceInfo();
+        interactionInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        interactionInfo.serviceInfo.name = TEST_SERVICE;
+        interactionInfo.serviceInfo.applicationInfo = new ApplicationInfo();
+        interactionInfo.serviceInfo.applicationInfo.nonLocalizedLabel = "1";
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, interactionInfo);
+
+        ResolveInfo interactionInfo2 = new ResolveInfo();
+        interactionInfo2.serviceInfo = new ServiceInfo();
+        interactionInfo2.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        interactionInfo2.serviceInfo.name = TEST_OTHER_SERVICE;
+        interactionInfo2.serviceInfo.applicationInfo = new ApplicationInfo();
+        interactionInfo2.serviceInfo.applicationInfo.nonLocalizedLabel = "2";
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, interactionInfo2);
+
+        ComponentName voiceInteraction = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE);
+        setCurrentAssistant(voiceInteraction);
+        setCurrentVoiceInteractionService(voiceInteraction);
+
+        setupController();
+
+        DefaultAppInfo defaultAppInfo = null;
+        for (DefaultAppInfo info : mController.getCandidates()) {
+            if (info.componentName.equals(new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE))) {
+                defaultAppInfo = info;
+            }
+        }
+        assertThat(defaultAppInfo).isNotNull();
+        assertThat(defaultAppInfo.enabled).isTrue();
+    }
+
+    @Test
+    public void getCandidates_oneIsSameAsAssistant_differentOneIsDisabled() {
+        ResolveInfo interactionInfo = new ResolveInfo();
+        interactionInfo.serviceInfo = new ServiceInfo();
+        interactionInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        interactionInfo.serviceInfo.name = TEST_SERVICE;
+        interactionInfo.serviceInfo.applicationInfo = new ApplicationInfo();
+        interactionInfo.serviceInfo.applicationInfo.nonLocalizedLabel = "1";
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, interactionInfo);
+
+        ResolveInfo interactionInfo2 = new ResolveInfo();
+        interactionInfo2.serviceInfo = new ServiceInfo();
+        interactionInfo2.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        interactionInfo2.serviceInfo.name = TEST_OTHER_SERVICE;
+        interactionInfo2.serviceInfo.applicationInfo = new ApplicationInfo();
+        interactionInfo2.serviceInfo.applicationInfo.nonLocalizedLabel = "2";
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, interactionInfo2);
+
+        ComponentName voiceInteraction = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE);
+        setCurrentAssistant(voiceInteraction);
+        setCurrentVoiceInteractionService(voiceInteraction);
+
+        setupController();
+
+        DefaultAppInfo defaultAppInfo = null;
+        for (DefaultAppInfo info : mController.getCandidates()) {
+            if (info.componentName.equals(
+                    new ComponentName(TEST_PACKAGE_NAME, TEST_OTHER_SERVICE))) {
+                defaultAppInfo = info;
+            }
+        }
+        assertThat(defaultAppInfo).isNotNull();
+        assertThat(defaultAppInfo.enabled).isFalse();
+    }
+
+    @Test
+    public void getCurrentDefaultKey_defaultIsNull_returnsNull() {
+        setupController();
+
+        assertThat(mController.getCurrentDefaultKey()).isNull();
+    }
+
+    @Test
+    public void getCurrentDefaultKey_defaultExists_returnsComponentName() {
+        setupController();
+
+        ComponentName cn = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE);
+        setCurrentVoiceInteractionService(cn);
+
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo(cn.flattenToString());
+    }
+
+    @Test
+    public void setCurrentDefault_typeVoiceInteractionInfo_setsServices() {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        resolveInfo.serviceInfo.name = TEST_SERVICE;
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, resolveInfo);
+        ShadowVoiceInteractionServiceInfo.setRecognitionService(resolveInfo.serviceInfo,
+                TEST_RECOGNIZER);
+        setupController();
+
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        String recognizer = new ComponentName(TEST_PACKAGE_NAME, TEST_RECOGNIZER).flattenToString();
+        mController.setCurrentDefault(key);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_INTERACTION_SERVICE)).isEqualTo(key);
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_RECOGNITION_SERVICE)).isEqualTo(recognizer);
+    }
+
+    @Test
+    public void setCurrentDefault_typeVoiceRecognitionInfo_setsRecognitionService() {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        resolveInfo.serviceInfo.name = TEST_RECOGNIZER;
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_RECOGNITION_SERVICE_TAG, resolveInfo);
+        setupController();
+
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_RECOGNIZER).flattenToString();
+        mController.setCurrentDefault(key);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_INTERACTION_SERVICE)).isEmpty();
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_RECOGNITION_SERVICE)).isEqualTo(key);
+    }
+
+    private void setupController() {
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DefaultVoiceInputPickerPreferenceController.class,
+                new LogicalPreferenceGroup(mContext));
+        mController = mControllerHelper.getController();
+    }
+
+    private void setCurrentVoiceInteractionService(ComponentName service) {
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_INTERACTION_SERVICE, service.flattenToString());
+    }
+
+    private void setCurrentAssistant(ComponentName assist) {
+        Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
+                assist.flattenToString(), TEST_USER_ID);
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/assist/ScreenshotContextPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/assist/ScreenshotContextPreferenceControllerTest.java
new file mode 100644
index 0000000..efd0934
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/assist/ScreenshotContextPreferenceControllerTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ScreenshotContextPreferenceControllerTest {
+
+    private static final int TEST_USER_ID = 10;
+    private static final String TEST_PACKAGE_NAME = "com.test.package";
+    private static final String TEST_SERVICE = "TestService";
+
+    private Context mContext;
+    private TwoStatePreference mTwoStatePreference;
+    private PreferenceControllerTestHelper<ScreenshotContextPreferenceController>
+            mControllerHelper;
+    private ScreenshotContextPreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER_ID);
+
+        mContext = RuntimeEnvironment.application;
+        mTwoStatePreference = new SwitchPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                ScreenshotContextPreferenceController.class, mTwoStatePreference);
+        mController = mControllerHelper.getController();
+
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
+                key, TEST_USER_ID);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void refreshUi_screenshotEnabled_preferenceChecked() {
+        mTwoStatePreference.setChecked(false);
+
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_SCREENSHOT_ENABLED, 1);
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_screenshotDisabled_preferenceUnchecked() {
+        mTwoStatePreference.setChecked(true);
+
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_SCREENSHOT_ENABLED, 0);
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_structureEnabled_preferenceEnabled() {
+        mTwoStatePreference.setEnabled(false);
+
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1);
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_structureDisabled_preferenceDisabled() {
+        mTwoStatePreference.setEnabled(true);
+
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 0);
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void callChangeListener_toggleTrue_screenshotEnabled() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_SCREENSHOT_ENABLED, 0);
+        mTwoStatePreference.callChangeListener(true);
+
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_SCREENSHOT_ENABLED, 0)).isEqualTo(1);
+    }
+
+    @Test
+    public void callChangeListener_toggleFalse_screenshotDisabled() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_SCREENSHOT_ENABLED, 1);
+        mTwoStatePreference.callChangeListener(false);
+
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_SCREENSHOT_ENABLED, 1)).isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/assist/TextContextPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/assist/TextContextPreferenceControllerTest.java
new file mode 100644
index 0000000..7b915ea
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/assist/TextContextPreferenceControllerTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class TextContextPreferenceControllerTest {
+
+    private static final int TEST_USER_ID = 10;
+    private static final String TEST_PACKAGE_NAME = "com.test.package";
+    private static final String TEST_SERVICE = "TestService";
+
+    private Context mContext;
+    private TwoStatePreference mTwoStatePreference;
+    private PreferenceControllerTestHelper<TextContextPreferenceController>
+            mControllerHelper;
+    private TextContextPreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER_ID);
+
+        mContext = RuntimeEnvironment.application;
+        mTwoStatePreference = new SwitchPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TextContextPreferenceController.class, mTwoStatePreference);
+        mController = mControllerHelper.getController();
+
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
+                key, TEST_USER_ID);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void refreshUi_contextEnabled_preferenceChecked() {
+        mTwoStatePreference.setChecked(false);
+
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1);
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_contextDisabled_preferenceUnchecked() {
+        mTwoStatePreference.setChecked(true);
+
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 0);
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void callChangeListener_toggleTrue_contextEnabled() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 0);
+        mTwoStatePreference.callChangeListener(true);
+
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 0)).isEqualTo(1);
+    }
+
+    @Test
+    public void callChangeListener_toggleFalse_contextDisabled() {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1);
+        mTwoStatePreference.callChangeListener(false);
+
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ASSIST_STRUCTURE_ENABLED, 1)).isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/assist/VoiceInputInfoProviderTest.java b/tests/robotests/src/com/android/car/settings/applications/assist/VoiceInputInfoProviderTest.java
new file mode 100644
index 0000000..34361e7
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/assist/VoiceInputInfoProviderTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowVoiceInteractionServiceInfo;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplicationPackageManager;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class, ShadowVoiceInteractionServiceInfo.class})
+public class VoiceInputInfoProviderTest {
+
+    private static final String TEST_PACKAGE = "test.package";
+    private static final String TEST_CLASS = "Class1";
+    private static final String TEST_RECOGNITION_SERVICE = "Recognition1";
+
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+    }
+
+    @After
+    public void tearDown() {
+        ShadowVoiceInteractionServiceInfo.reset();
+    }
+
+    @Test
+    public void getInteractionInfoList_hasElement() {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE;
+        resolveInfo.serviceInfo.name = TEST_CLASS;
+        ShadowVoiceInteractionServiceInfo.setRecognitionService(resolveInfo.serviceInfo,
+                TEST_RECOGNITION_SERVICE);
+
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_INTERACTION_SERVICE_TAG, resolveInfo);
+
+        VoiceInputInfoProvider provider = new VoiceInputInfoProvider(mContext);
+        assertThat(provider.getVoiceInteractionInfoList()).hasSize(1);
+    }
+
+    @Test
+    public void getRecognitionInfoList_hasElement() {
+        ResolveInfo otherInfo = new ResolveInfo();
+        otherInfo.serviceInfo = new ServiceInfo();
+        otherInfo.serviceInfo.packageName = TEST_PACKAGE;
+        otherInfo.serviceInfo.name = TEST_RECOGNITION_SERVICE;
+
+        getShadowPackageManager().addResolveInfoForIntent(
+                VoiceInputInfoProvider.VOICE_RECOGNITION_SERVICE_TAG, otherInfo);
+
+        VoiceInputInfoProvider provider = new VoiceInputInfoProvider(mContext);
+        assertThat(provider.getVoiceRecognitionInfoList()).hasSize(1);
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/assist/VoiceInputUtilsTest.java b/tests/robotests/src/com/android/car/settings/applications/assist/VoiceInputUtilsTest.java
new file mode 100644
index 0000000..7b2b47a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/assist/VoiceInputUtilsTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.assist;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.provider.Settings;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class})
+public class VoiceInputUtilsTest {
+
+    private static final String TEST_PACKAGE = "test.package";
+    private static final String TEST_CLASS_1 = "Class1";
+    private static final String TEST_CLASS_2 = "Class2";
+
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void getCurrentService_nullInteraction_nullRecognition_returnsNull() {
+        assertThat(VoiceInputUtils.getCurrentService(mContext)).isNull();
+    }
+
+    @Test
+    public void getCurrentService_emptyInteraction_emptyRecognition_returnsNull() {
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_INTERACTION_SERVICE, "");
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_RECOGNITION_SERVICE, "");
+        assertThat(VoiceInputUtils.getCurrentService(mContext)).isNull();
+    }
+
+    @Test
+    public void getCurrentService_hasInteraction_returnsInteraction() {
+        ComponentName interaction = new ComponentName(TEST_PACKAGE, TEST_CLASS_1);
+        ComponentName recognition = new ComponentName(TEST_PACKAGE, TEST_CLASS_2);
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_INTERACTION_SERVICE, interaction.flattenToString());
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_RECOGNITION_SERVICE, recognition.flattenToString());
+        assertThat(VoiceInputUtils.getCurrentService(mContext)).isEqualTo(interaction);
+    }
+
+    @Test
+    public void getCurrentService_noInteraction_hasRecognition_returnsRecogntion() {
+        ComponentName recognition = new ComponentName(TEST_PACKAGE, TEST_CLASS_2);
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_INTERACTION_SERVICE, "");
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.VOICE_RECOGNITION_SERVICE, recognition.flattenToString());
+        assertThat(VoiceInputUtils.getCurrentService(mContext)).isEqualTo(recognition);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java
new file mode 100644
index 0000000..955f2d0
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppEntryBasePreferenceControllerTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DefaultAppEntryBasePreferenceControllerTest {
+    private static final CharSequence TEST_LABEL = "Test Label";
+
+    private static class TestDefaultAppEntryBasePreferenceController extends
+            DefaultAppEntryBasePreferenceController<Preference> {
+
+        private DefaultAppInfo mDefaultAppInfo;
+
+        TestDefaultAppEntryBasePreferenceController(Context context,
+                String preferenceKey, FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<Preference> getPreferenceType() {
+            return Preference.class;
+        }
+
+        @Nullable
+        @Override
+        protected DefaultAppInfo getCurrentDefaultAppInfo() {
+            return mDefaultAppInfo;
+        }
+
+        protected void setCurrentDefaultAppInfo(DefaultAppInfo defaultAppInfo) {
+            mDefaultAppInfo = defaultAppInfo;
+        }
+    }
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<TestDefaultAppEntryBasePreferenceController>
+            mControllerHelper;
+    private TestDefaultAppEntryBasePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestDefaultAppEntryBasePreferenceController.class,
+                mPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @Test
+    public void refreshUi_hasDefaultAppWithLabel_summaryAndIconAreSet() {
+        DefaultAppInfo defaultAppInfo = mock(DefaultAppInfo.class);
+        when(defaultAppInfo.loadLabel()).thenReturn(TEST_LABEL);
+        when(defaultAppInfo.loadIcon()).thenReturn(mContext.getDrawable(R.drawable.test_icon));
+        mController.setCurrentDefaultAppInfo(defaultAppInfo);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(TEST_LABEL);
+        assertThat(mPreference.getIcon()).isNotNull();
+    }
+
+    @Test
+    public void refreshUi_hasDefaultAppWithoutLabel_summaryAndIconAreNotSet() {
+        DefaultAppInfo defaultAppInfo = mock(DefaultAppInfo.class);
+        when(defaultAppInfo.loadLabel()).thenReturn(null);
+        when(defaultAppInfo.loadIcon()).thenReturn(null);
+        mController.setCurrentDefaultAppInfo(defaultAppInfo);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.app_list_preference_none));
+        assertThat(mPreference.getIcon()).isNull();
+    }
+
+    @Test
+    public void refreshUi_hasNoDefaultApp_summaryAndIconAreNotSet() {
+        mController.setCurrentDefaultAppInfo(null);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.app_list_preference_none));
+        assertThat(mPreference.getIcon()).isNull();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java
new file mode 100644
index 0000000..a28af16
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppUtilsTest.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DefaultAppUtilsTest {
+
+    @Test
+    public void setSafeIcon_smallerThanLimit() {
+        Context context = RuntimeEnvironment.application;
+        Drawable drawable = context.getDrawable(R.drawable.test_icon);
+        int height = drawable.getMinimumHeight();
+        int width = drawable.getMinimumWidth();
+
+        // Set to some value larger than current height or width;
+        int testMaxDimensions = Math.max(height, width) + 1;
+        Preference preference = new Preference(context);
+        DefaultAppUtils.setSafeIcon(preference, drawable, testMaxDimensions);
+
+        assertThat(preference.getIcon().getMinimumHeight()).isEqualTo(height);
+        assertThat(preference.getIcon().getMinimumWidth()).isEqualTo(width);
+    }
+
+    @Test
+    public void setSafeIcon_largerThanLimit() {
+        Context context = RuntimeEnvironment.application;
+        Drawable drawable = context.getDrawable(R.drawable.test_icon);
+        int height = drawable.getMinimumHeight();
+        int width = drawable.getMinimumWidth();
+
+        // Set to some value smaller than current height or width;
+        int testMaxDimensions = Math.min(height, width) - 1;
+        Preference preference = new Preference(context);
+        DefaultAppUtils.setSafeIcon(preference, drawable, testMaxDimensions);
+
+        assertThat(preference.getIcon().getMinimumHeight()).isEqualTo(testMaxDimensions);
+        assertThat(preference.getIcon().getMinimumWidth()).isEqualTo(testMaxDimensions);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java
new file mode 100644
index 0000000..aeea7bb
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerBasePreferenceControllerTest.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.text.TextUtils;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import com.google.android.collect.Lists;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DefaultAppsPickerBasePreferenceControllerTest {
+
+    private static class TestDefaultAppsPickerBasePreferenceController extends
+            DefaultAppsPickerBasePreferenceController {
+
+        private List<DefaultAppInfo> mCandidates;
+        private String mKey;
+        private CharSequence mMessage;
+        private boolean mIncludeNone = true;
+
+        TestDefaultAppsPickerBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        public void setTestCandidates(List<DefaultAppInfo> candidates) {
+            mCandidates = candidates;
+        }
+
+        public void setTestMessage(String s) {
+            mMessage = s;
+        }
+
+        public void setIncludeNonePreference(boolean include) {
+            mIncludeNone = include;
+        }
+
+        @Override
+        protected List<DefaultAppInfo> getCandidates() {
+            return mCandidates;
+        }
+
+        @Override
+        protected String getCurrentDefaultKey() {
+            return mKey;
+        }
+
+        @Override
+        protected void setCurrentDefault(String key) {
+            mKey = key;
+        }
+
+        @Override
+        protected CharSequence getConfirmationMessage(DefaultAppInfo info) {
+            return mMessage;
+        }
+
+        @Override
+        protected boolean includeNonePreference() {
+            return mIncludeNone;
+        }
+    }
+
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<TestDefaultAppsPickerBasePreferenceController>
+            mControllerHelper;
+    private TestDefaultAppsPickerBasePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestDefaultAppsPickerBasePreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+    }
+
+    @Test
+    public void refreshUi_noCandidates_hasSingleNoneElement() {
+        mController.setCurrentDefault("");
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        // Has the "None" element.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getTitle()).isEqualTo(
+                mContext.getString(R.string.app_list_preference_none));
+        assertThat(preference.getIcon()).isNotNull();
+        assertThat(preference.getSummary()).isEqualTo(
+                mContext.getString(R.string.default_app_selected_app));
+    }
+
+    @Test
+    public void refreshUi_noCandidates_noNoneElement() {
+        mController.setCurrentDefault("");
+        mController.setIncludeNonePreference(false);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        // None element removed.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_hasAdditionalCandidate_hasTwoElements() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void refreshUi_hasAdditionalCandidateAsDefault_secondElementIsSelected() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+        mController.setCurrentDefault(testKey);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.findPreference(testKey).getSummary()).isEqualTo(
+                mContext.getString(R.string.default_app_selected_app));
+    }
+
+    @Test
+    public void performClick_currentDefaultApp_nothingHappened() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+        mController.setCurrentDefault(testKey);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        Preference currentDefault = mPreferenceGroup.findPreference(testKey);
+        Preference otherOption = mPreferenceGroup.getPreference(0);
+
+        assertThat(TextUtils.isEmpty(currentDefault.getSummary())).isFalse();
+        assertThat(TextUtils.isEmpty(otherOption.getSummary())).isTrue();
+
+        currentDefault.performClick();
+
+        assertThat(TextUtils.isEmpty(currentDefault.getSummary())).isFalse();
+        assertThat(TextUtils.isEmpty(otherOption.getSummary())).isTrue();
+    }
+
+    @Test
+    public void performClick_otherOptionNoMessage_otherOptionSelected() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+        mController.setCurrentDefault(testKey);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        Preference currentDefault = mPreferenceGroup.findPreference(testKey);
+        Preference otherOption = mPreferenceGroup.getPreference(0);
+
+        assertThat(TextUtils.isEmpty(currentDefault.getSummary())).isFalse();
+        assertThat(TextUtils.isEmpty(otherOption.getSummary())).isTrue();
+
+        otherOption.performClick();
+
+        assertThat(TextUtils.isEmpty(currentDefault.getSummary())).isTrue();
+        assertThat(TextUtils.isEmpty(otherOption.getSummary())).isFalse();
+    }
+
+    @Test
+    public void performClick_otherOptionHasMessage_dialogOpened() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+        mController.setCurrentDefault(testKey);
+        mController.setTestMessage("Non-empty message");
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        Preference currentDefault = mPreferenceGroup.findPreference(testKey);
+        Preference otherOption = mPreferenceGroup.getPreference(0);
+
+        assertThat(TextUtils.isEmpty(currentDefault.getSummary())).isFalse();
+        assertThat(TextUtils.isEmpty(otherOption.getSummary())).isTrue();
+
+        otherOption.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void performClick_otherOptionNoMessage_newKeySet() {
+        String testKey = "testKey";
+
+        DefaultAppInfo testApp = mock(DefaultAppInfo.class);
+        when(testApp.getKey()).thenReturn(testKey);
+        mController.setTestCandidates(Lists.newArrayList(testApp));
+
+        // Currently, the testApp is the default selection.
+        mController.setCurrentDefault(testKey);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        // This preference represents the "None" option.
+        Preference otherOption = mPreferenceGroup.getPreference(0);
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo(testKey);
+
+        otherOption.performClick();
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo("");
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerEntryBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerEntryBasePreferenceControllerTest.java
new file mode 100644
index 0000000..8119755
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAppsPickerEntryBasePreferenceControllerTest.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DefaultAppsPickerEntryBasePreferenceControllerTest {
+
+    private static final Intent TEST_INTENT = new Intent(Settings.ACTION_SETTINGS);
+
+    private static class TestDefaultAppsPickerEntryBasePreferenceController extends
+            DefaultAppsPickerEntryBasePreferenceController {
+
+        private final DefaultAppInfo mDefaultAppInfo;
+        private Intent mSettingIntent;
+
+        TestDefaultAppsPickerEntryBasePreferenceController(Context context,
+                String preferenceKey, FragmentController fragmentController,
+                CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+            mDefaultAppInfo = mock(DefaultAppInfo.class);
+        }
+
+        @Nullable
+        @Override
+        protected Intent getSettingIntent(@Nullable DefaultAppInfo info) {
+            return mSettingIntent;
+        }
+
+        protected void setSettingIntent(Intent settingIntent) {
+            mSettingIntent = settingIntent;
+        }
+
+        @Nullable
+        @Override
+        protected DefaultAppInfo getCurrentDefaultAppInfo() {
+            return mDefaultAppInfo;
+        }
+    }
+
+    private Context mContext;
+    private ButtonPreference mButtonPreference;
+    private PreferenceControllerTestHelper<TestDefaultAppsPickerEntryBasePreferenceController>
+            mControllerHelper;
+    private TestDefaultAppsPickerEntryBasePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mButtonPreference = new ButtonPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestDefaultAppsPickerEntryBasePreferenceController.class, mButtonPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @Test
+    public void refreshUi_hasSettingIntent_actionButtonIsVisible() {
+        mController.setSettingIntent(TEST_INTENT);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mButtonPreference.isActionShown()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_hasNoSettingIntent_actionButtonIsNotVisible() {
+        mController.setSettingIntent(null);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mButtonPreference.isActionShown()).isFalse();
+    }
+
+    @Test
+    public void performButtonClick_launchesIntent() {
+        mController.setSettingIntent(TEST_INTENT);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mButtonPreference.performButtonClick();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual.getAction()).isEqualTo(TEST_INTENT.getAction());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..9ab0536
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceControllerTest.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.app.role.RoleManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.provider.Settings;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+import com.android.car.settings.testutils.ShadowVoiceInteractionServiceInfo;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class, ShadowVoiceInteractionServiceInfo.class,
+        ShadowCarUserManagerHelper.class, ShadowApplicationPackageManager.class})
+public class DefaultAssistantPickerEntryPreferenceControllerTest {
+
+    private static final String TEST_PACKAGE = "com.android.car.settings.testutils";
+    private static final String TEST_CLASS = "BaseTestActivity";
+    private static final String TEST_SETTINGS_CLASS = "TestSettingsActivity";
+    private static final String TEST_COMPONENT =
+            new ComponentName(TEST_PACKAGE, TEST_CLASS).flattenToString();
+    private static final int TEST_USER_ID = 10;
+
+    private Context mContext;
+    private ButtonPreference mButtonPreference;
+    private DefaultAssistantPickerEntryPreferenceController mController;
+    private PreferenceControllerTestHelper<DefaultAssistantPickerEntryPreferenceController>
+            mControllerHelper;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+
+        mContext = RuntimeEnvironment.application;
+        mButtonPreference = new ButtonPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DefaultAssistantPickerEntryPreferenceController.class, mButtonPreference);
+        mController = mControllerHelper.getController();
+
+        // Set user.
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER_ID);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowVoiceInteractionServiceInfo.reset();
+    }
+
+    @Test
+    public void getCurrentDefaultAppInfo_noAssistant_returnsNull() {
+        assertThat(mController.getCurrentDefaultAppInfo()).isNull();
+    }
+
+    @Test
+    public void getCurrentDefaultAppInfo_hasService_returnsDefaultAppInfo() {
+        Settings.Secure.putStringForUser(mContext.getContentResolver(),
+                Settings.Secure.ASSISTANT, TEST_COMPONENT, TEST_USER_ID);
+
+        DefaultAppInfo info = mController.getCurrentDefaultAppInfo();
+        assertThat(info.getKey()).isEqualTo(TEST_COMPONENT);
+    }
+
+    @Test
+    public void getSettingIntent_noAssistant_returnsNull() {
+        DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+                TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
+        assertThat(mController.getSettingIntent(info)).isNull();
+    }
+
+    @Test
+    public void getSettingIntent_hasAssistant_noAssistSupport_returnsNull() {
+        Settings.Secure.putStringForUser(mContext.getContentResolver(),
+                Settings.Secure.ASSISTANT, TEST_COMPONENT, TEST_USER_ID);
+
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE;
+        resolveInfo.serviceInfo.name = TEST_CLASS;
+
+        ShadowVoiceInteractionServiceInfo.setSupportsAssist(resolveInfo.serviceInfo, false);
+        ShadowVoiceInteractionServiceInfo.setSettingsActivity(resolveInfo.serviceInfo,
+                TEST_SETTINGS_CLASS);
+
+        Intent intent =
+                DefaultAssistantPickerEntryPreferenceController.ASSISTANT_SERVICE.setComponent(
+                        ComponentName.unflattenFromString(TEST_COMPONENT));
+        getShadowApplicationManager().addResolveInfoForIntent(intent, resolveInfo);
+
+        DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+                TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
+
+        assertThat(mController.getSettingIntent(info)).isNull();
+    }
+
+    @Test
+    public void getSettingIntent_hasAssistant_supportsAssist_noSettingsActivity_returnsNull() {
+        Settings.Secure.putStringForUser(mContext.getContentResolver(),
+                Settings.Secure.ASSISTANT, TEST_COMPONENT, TEST_USER_ID);
+
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE;
+        resolveInfo.serviceInfo.name = TEST_CLASS;
+
+        ShadowVoiceInteractionServiceInfo.setSupportsAssist(resolveInfo.serviceInfo, true);
+        ShadowVoiceInteractionServiceInfo.setSettingsActivity(resolveInfo.serviceInfo, null);
+
+        Intent intent =
+                DefaultAssistantPickerEntryPreferenceController.ASSISTANT_SERVICE.setComponent(
+                        ComponentName.unflattenFromString(TEST_COMPONENT));
+        getShadowApplicationManager().addResolveInfoForIntent(intent, resolveInfo);
+
+        DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+                TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
+
+        assertThat(mController.getSettingIntent(info)).isNull();
+    }
+
+    @Test
+    public void getSettingIntent_hasAssistant_supportsAssist_hasSettingsActivity_returnsIntent() {
+        Settings.Secure.putStringForUser(mContext.getContentResolver(),
+                Settings.Secure.ASSISTANT, TEST_COMPONENT, TEST_USER_ID);
+
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE;
+        resolveInfo.serviceInfo.name = TEST_CLASS;
+
+        ShadowVoiceInteractionServiceInfo.setSupportsAssist(resolveInfo.serviceInfo, true);
+        ShadowVoiceInteractionServiceInfo.setSettingsActivity(resolveInfo.serviceInfo,
+                TEST_SETTINGS_CLASS);
+
+        Intent intent =
+                DefaultAssistantPickerEntryPreferenceController.ASSISTANT_SERVICE.setComponent(
+                        ComponentName.unflattenFromString(TEST_COMPONENT));
+        getShadowApplicationManager().addResolveInfoForIntent(intent, resolveInfo);
+
+        DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+                TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
+
+        Intent result = mController.getSettingIntent(info);
+        assertThat(result.getAction()).isEqualTo(Intent.ACTION_MAIN);
+        assertThat(result.getComponent()).isEqualTo(
+                new ComponentName(TEST_PACKAGE, TEST_SETTINGS_CLASS));
+    }
+
+    @Test
+    public void performClick_permissionControllerExists_startsPermissionController() {
+        String testPackage = "com.test.permissions";
+        getShadowApplicationManager().setPermissionControllerPackageName(testPackage);
+        mButtonPreference.performClick();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual.getAction()).isEqualTo(Intent.ACTION_MANAGE_DEFAULT_APP);
+    }
+
+    @Test
+    public void performClick_permissionControllerExists_intentHasPackageName() {
+        String testPackage = "com.test.permissions";
+        getShadowApplicationManager().setPermissionControllerPackageName(testPackage);
+        mButtonPreference.performClick();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual.getPackage()).isEqualTo(testPackage);
+    }
+
+    @Test
+    public void performClick_permissionControllerExists_intentHasRole() {
+        String testPackage = "com.test.permissions";
+        getShadowApplicationManager().setPermissionControllerPackageName(testPackage);
+        mButtonPreference.performClick();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual.getStringExtra(Intent.EXTRA_ROLE_NAME)).isEqualTo(
+                RoleManager.ROLE_ASSISTANT);
+    }
+
+    @Test
+    public void performClick_permissionControllerDoesntExist_doesNotStartPermissionController() {
+        mButtonPreference.performClick();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual).isNull();
+    }
+
+    private ShadowApplicationPackageManager getShadowApplicationManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..cba714c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceControllerTest.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.provider.Settings;
+import android.service.autofill.AutofillService;
+import android.view.autofill.AutofillManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAutofillServiceInfo;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+import com.android.settingslib.applications.DefaultAppInfo;
+
+import com.google.android.collect.Lists;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowPackageManager;
+
+import java.util.Collections;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class, ShadowAutofillServiceInfo.class})
+public class DefaultAutofillPickerEntryPreferenceControllerTest {
+
+    private static final String TEST_PACKAGE = "com.android.car.settings.testutils";
+    private static final String TEST_CLASS = "BaseTestActivity";
+    private static final String TEST_OTHER_CLASS = "BaseTestOtherActivity";
+    private static final String TEST_COMPONENT =
+            new ComponentName(TEST_PACKAGE, TEST_CLASS).flattenToString();
+    private static final int TEST_USER_ID = 10;
+
+    private Context mContext;
+    private ButtonPreference mButtonPreference;
+    private DefaultAutofillPickerEntryPreferenceController mController;
+    private PreferenceControllerTestHelper<DefaultAutofillPickerEntryPreferenceController>
+            mControllerHelper;
+    @Mock
+    private AutofillManager mAutofillManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Shadows.shadowOf(RuntimeEnvironment.application).setSystemService(
+                Context.AUTOFILL_MANAGER_SERVICE, mAutofillManager);
+        mContext = RuntimeEnvironment.application;
+        mButtonPreference = new ButtonPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DefaultAutofillPickerEntryPreferenceController.class, mButtonPreference);
+        mController = mControllerHelper.getController();
+
+        Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE,
+                "");
+    }
+
+    @After
+    public void tearDown() {
+        ShadowAutofillServiceInfo.reset();
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_autofillManagerIsNull_unsupportedOnDevice() {
+        Shadows.shadowOf(RuntimeEnvironment.application).setSystemService(
+                Context.AUTOFILL_MANAGER_SERVICE, null);
+
+        // Reinitialize so that it uses the system service set in this test.
+        ButtonPreference preference = new ButtonPreference(mContext);
+        PreferenceControllerTestHelper<DefaultAutofillPickerEntryPreferenceController> helper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        DefaultAutofillPickerEntryPreferenceController.class, preference);
+        DefaultAutofillPickerEntryPreferenceController controller = helper.getController();
+
+        assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_autofillNotSupported_unsupportedOnDevice() {
+        when(mAutofillManager.isAutofillSupported()).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_autofillSupported_isAvailable() {
+        when(mAutofillManager.isAutofillSupported()).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getCurrentDefaultAppInfo_noService_returnsNull() {
+        Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE,
+                "");
+
+        assertThat(mController.getCurrentDefaultAppInfo()).isNull();
+    }
+
+    @Test
+    public void getCurrentDefaultAppInfo_hasService_returnsDefaultAppInfo() {
+        Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE,
+                TEST_COMPONENT);
+
+        DefaultAppInfo info = mController.getCurrentDefaultAppInfo();
+        assertThat(info.getKey()).isEqualTo(TEST_COMPONENT);
+    }
+
+    @Test
+    public void getSettingIntent_nullDefaultAppInfo_returnsNull() {
+        assertThat(mController.getSettingIntent(null)).isNull();
+    }
+
+    @Test
+    public void getSettingIntent_noServiceInterface_returnsNull() {
+        Intent intent = new Intent(AutofillService.SERVICE_INTERFACE);
+        ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
+        shadowPackageManager.addResolveInfoForIntent(intent, Collections.emptyList());
+
+        DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+                TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
+
+        assertThat(mController.getSettingIntent(info)).isNull();
+    }
+
+    @Test
+    public void getSettingIntent_hasServiceInterface_returnsIntent() {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = new ServiceInfo();
+        resolveInfo.serviceInfo.packageName = TEST_PACKAGE;
+        resolveInfo.serviceInfo.name = TEST_CLASS;
+
+        ShadowAutofillServiceInfo.setSettingsActivity(TEST_OTHER_CLASS);
+
+        Intent intent = new Intent(AutofillService.SERVICE_INTERFACE);
+        ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
+        shadowPackageManager.addResolveInfoForIntent(intent, Lists.newArrayList(resolveInfo));
+
+        DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+                TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
+
+        Intent result = mController.getSettingIntent(info);
+        assertThat(result.getAction()).isEqualTo(Intent.ACTION_MAIN);
+        assertThat(result.getComponent()).isEqualTo(
+                new ComponentName(TEST_PACKAGE, TEST_OTHER_CLASS));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceControllerTest.java
new file mode 100644
index 0000000..4a15e47
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceControllerTest.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.defaultapps;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.Manifest;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.provider.Settings;
+import android.service.autofill.AutofillService;
+
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowPackageManager;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class})
+public class DefaultAutofillPickerPreferenceControllerTest {
+
+    private static final String TEST_PACKAGE_NAME = "com.test.package";
+    private static final String TEST_SERVICE = "TestService";
+
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private DefaultAutofillPickerPreferenceController mController;
+    private PreferenceControllerTestHelper<DefaultAutofillPickerPreferenceController>
+            mControllerHelper;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DefaultAutofillPickerPreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void getCandidates_hasServiceWithoutPermissions_returnsEmptyList() {
+        ResolveInfo serviceResolveInfo = new ResolveInfo();
+        serviceResolveInfo.serviceInfo = new ServiceInfo();
+        serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
+        serviceResolveInfo.serviceInfo.permission = "";
+        getShadowPackageManager().addResolveInfoForIntent(
+                new Intent(AutofillService.SERVICE_INTERFACE), serviceResolveInfo);
+
+        assertThat(mController.getCandidates()).hasSize(0);
+    }
+
+    @Test
+    public void getCandidates_hasServiceWithBindAutofillServicePermission_returnsService() {
+        ResolveInfo serviceResolveInfo = new ResolveInfo();
+        serviceResolveInfo.serviceInfo = new ServiceInfo();
+        serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
+        serviceResolveInfo.serviceInfo.permission = Manifest.permission.BIND_AUTOFILL_SERVICE;
+        getShadowPackageManager().addResolveInfoForIntent(
+                new Intent(AutofillService.SERVICE_INTERFACE), serviceResolveInfo);
+
+        assertThat(mController.getCandidates()).hasSize(1);
+    }
+
+    @Test
+    public void getCandidates_hasServiceWithBindAutofillPermission_returnsEmptyList() {
+        ResolveInfo serviceResolveInfo = new ResolveInfo();
+        serviceResolveInfo.serviceInfo = new ServiceInfo();
+        serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
+        serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
+        serviceResolveInfo.serviceInfo.permission = Manifest.permission.BIND_AUTOFILL;
+        getShadowPackageManager().addResolveInfoForIntent(
+                new Intent(AutofillService.SERVICE_INTERFACE), serviceResolveInfo);
+
+        assertThat(mController.getCandidates()).hasSize(0);
+    }
+
+    @Test
+    public void getCurrentDefaultKey_secureSettingEmpty_returnsNoneKey() {
+        // Secure Setting not set should return null.
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo(
+                DefaultAppsPickerBasePreferenceController.NONE_PREFERENCE_KEY);
+    }
+
+    @Test
+    public void getCurrentDefaultKey_secureSettingReturnsInvalidString_returnsNoneKey() {
+        Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE,
+                "invalid");
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo(
+                DefaultAppsPickerBasePreferenceController.NONE_PREFERENCE_KEY);
+    }
+
+    @Test
+    public void getCurrentDefaultKey_secureSettingReturnsValidString_returnsCorrectKey() {
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE,
+                key);
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo(key);
+    }
+
+    @Test
+    public void setCurrentDefault_setInvalidKey_getCurrentDefaultKeyReturnsNone() {
+        mController.setCurrentDefault("invalid");
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo(
+                DefaultAppsPickerBasePreferenceController.NONE_PREFERENCE_KEY);
+    }
+
+    @Test
+    public void setCurrentDefault_setValidKey_getCurrentDefaultKeyReturnsKey() {
+        String key = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
+        mController.setCurrentDefault(key);
+        assertThat(mController.getCurrentDefaultKey()).isEqualTo(key);
+    }
+
+    private ShadowPackageManager getShadowPackageManager() {
+        return Shadows.shadowOf(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/AppLinkStatePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/AppLinkStatePreferenceControllerTest.java
new file mode 100644
index 0000000..1e9b365
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/AppLinkStatePreferenceControllerTest.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
+import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
+import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.Arrays;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowApplicationPackageManager.class})
+public class AppLinkStatePreferenceControllerTest {
+
+    private static final int USER_ID = 10;
+    private static final String TEST_PACKAGE_NAME = "com.example.test";
+    private static final int TEST_PACKAGE_ID = 1;
+    private static final String TEST_LABEL = "Test App";
+    private static final String TEST_PATH = "TEST_PATH";
+    private static final String TEST_ACTIVITY = "TestActivity";
+
+    private Context mContext;
+    private ListPreference mPreference;
+    private PreferenceControllerTestHelper<AppLinkStatePreferenceController> mControllerHelper;
+    private AppLinkStatePreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(USER_ID);
+
+        mContext = RuntimeEnvironment.application;
+        mPreference = new ListPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AppLinkStatePreferenceController.class);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowApplicationPackageManager.reset();
+    }
+
+    @Test
+    public void refreshUi_isBrowserApp_isDisabled() {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+
+        setupIsBrowserApp(true);
+
+        mController.setAppEntry(entry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_isNotBrowserApp_noDomainUrls_isDisabled() {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        info.privateFlags = 0;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+
+        setupIsBrowserApp(false);
+
+        mController.setAppEntry(entry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_isNotBrowserApp_hasDomainUrls_isEnabled() {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        info.privateFlags = ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+
+        setupIsBrowserApp(false);
+
+        mController.setAppEntry(entry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_isNotBrowserApp_hasDomainUrls_defaultState_entrySetToAsk() {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        info.privateFlags = ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+
+        setupIsBrowserApp(false);
+
+        mController.setAppEntry(entry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getEntry()).isEqualTo(
+                mContext.getString(R.string.app_link_open_ask));
+    }
+
+    @Test
+    public void refreshUi_isNotBrowserApp_hasDomainUrls_askState_entrySetToAsk() {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        info.privateFlags = ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+
+        setupIsBrowserApp(false);
+        mContext.getPackageManager().updateIntentVerificationStatusAsUser(TEST_PACKAGE_NAME,
+                INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK, USER_ID);
+
+        mController.setAppEntry(entry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getEntry()).isEqualTo(
+                mContext.getString(R.string.app_link_open_ask));
+    }
+
+    @Test
+    public void refreshUi_isNotBrowserApp_hasDomainUrls_alwaysState_entrySetToAlways() {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        info.privateFlags = ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+
+        setupIsBrowserApp(false);
+        mContext.getPackageManager().updateIntentVerificationStatusAsUser(TEST_PACKAGE_NAME,
+                INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS, USER_ID);
+
+        mController.setAppEntry(entry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getEntry()).isEqualTo(
+                mContext.getString(R.string.app_link_open_always));
+    }
+
+    @Test
+    public void refreshUi_isNotBrowserApp_hasDomainUrls_neverState_entrySetToNever() {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        info.privateFlags = ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+
+        setupIsBrowserApp(false);
+        mContext.getPackageManager().updateIntentVerificationStatusAsUser(TEST_PACKAGE_NAME,
+                INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER, USER_ID);
+
+        mController.setAppEntry(entry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getEntry()).isEqualTo(
+                mContext.getString(R.string.app_link_open_never));
+    }
+
+    private void setupIsBrowserApp(boolean isBrowserApp) {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.activityInfo = new ActivityInfo();
+        resolveInfo.handleAllWebDataURI = isBrowserApp;
+        AppLaunchSettingsBasePreferenceController.sBrowserIntent.setPackage(TEST_PACKAGE_NAME);
+        getShadowPackageManager().addResolveInfoForIntent(
+                AppLaunchSettingsBasePreferenceController.sBrowserIntent,
+                Arrays.asList(resolveInfo));
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceControllerTest.java
new file mode 100644
index 0000000..453b938
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceControllerTest.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.hardware.usb.IUsbManager;
+import android.os.RemoteException;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowIUsbManager;
+import com.android.settingslib.applications.AppUtils;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowApplicationPackageManager.class,
+        ShadowIUsbManager.class})
+public class ClearDefaultsPreferenceControllerTest {
+
+    private static final int USER_ID = 10;
+    private static final String TEST_PACKAGE_NAME = "com.example.test";
+    private static final int TEST_PACKAGE_ID = 1;
+    private static final String TEST_LABEL = "Test App";
+    private static final String TEST_PATH = "TEST_PATH";
+    private static final String TEST_ACTIVITY = "TestActivity";
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<ClearDefaultsPreferenceController> mControllerHelper;
+    private ClearDefaultsPreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private IUsbManager mIUsbManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        ShadowIUsbManager.setInstance(mIUsbManager);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(USER_ID);
+
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                ClearDefaultsPreferenceController.class);
+        mController = mControllerHelper.getController();
+
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+
+        mController.setAppEntry(entry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowIUsbManager.reset();
+        ShadowApplicationPackageManager.reset();
+    }
+
+    @Test
+    public void refreshUi_hasPreferredActivities_hasSummary() {
+        IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
+        filter.addCategory(Intent.CATEGORY_HOME);
+        ComponentName name = new ComponentName(TEST_PACKAGE_NAME, TEST_ACTIVITY);
+        getShadowPackageManager().addPreferredActivity(filter, 0, null, name);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary().toString()).isNotEmpty();
+    }
+
+    @Test
+    public void refreshUi_isDefaultBrowser_hasSummary() {
+        mContext.getPackageManager().setDefaultBrowserPackageNameAsUser(TEST_PACKAGE_NAME, USER_ID);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary().toString()).isNotEmpty();
+    }
+
+    @Test
+    public void refreshUi_hasUsbDefaults_hasSummary() throws RemoteException {
+        when(mIUsbManager.hasDefaults(TEST_PACKAGE_NAME, USER_ID)).thenReturn(true);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary().toString()).isNotEmpty();
+    }
+
+    @Test
+    public void refreshUi_autoLaunchDisabled_hasNoSummary() {
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isNull();
+    }
+
+    @Test
+    public void performClick_hasUsbManager_hasPreferredActivities_clearsPreferredActivities() {
+        IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
+        filter.addCategory(Intent.CATEGORY_HOME);
+        ComponentName name = new ComponentName(TEST_PACKAGE_NAME, TEST_ACTIVITY);
+        getShadowPackageManager().addPreferredActivity(filter, 0, null, name);
+        assertThat(AppUtils.hasPreferredActivities(mContext.getPackageManager(),
+                TEST_PACKAGE_NAME)).isTrue();
+        mController.refreshUi();
+        mPreference.performClick();
+
+        assertThat(AppUtils.hasPreferredActivities(mContext.getPackageManager(),
+                TEST_PACKAGE_NAME)).isFalse();
+    }
+
+    @Test
+    public void performClick_hasUsbManager_isDefaultBrowser_clearsDefaultBrowser() {
+        mContext.getPackageManager().setDefaultBrowserPackageNameAsUser(TEST_PACKAGE_NAME, USER_ID);
+        assertThat(mContext.getPackageManager().getDefaultBrowserPackageNameAsUser(
+                USER_ID)).isNotNull();
+        mController.refreshUi();
+        mPreference.performClick();
+
+        assertThat(
+                mContext.getPackageManager().getDefaultBrowserPackageNameAsUser(USER_ID)).isNull();
+    }
+
+    @Test
+    public void performClick_hasUsbDefaults_clearsUsbDefaults() throws RemoteException {
+        when(mIUsbManager.hasDefaults(TEST_PACKAGE_NAME, USER_ID)).thenReturn(true);
+        mController.refreshUi();
+        mPreference.performClick();
+
+        verify(mIUsbManager).clearDefaults(TEST_PACKAGE_NAME, USER_ID);
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java
new file mode 100644
index 0000000..412f782
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import static android.content.pm.UserInfo.FLAG_ADMIN;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.UserManager;
+
+import androidx.lifecycle.LifecycleOwner;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationsState;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowIconDrawableFactory;
+import com.android.car.settings.testutils.ShadowUserManager;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.ArrayList;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowUserManager.class, ShadowCarUserManagerHelper.class,
+        ShadowIconDrawableFactory.class, ShadowApplicationsState.class})
+public class DomainAppPreferenceControllerTest {
+
+    private static final int USER_ID = 10;
+    private static final String TEST_PACKAGE_NAME = "com.android.test.package";
+    private static final int TEST_PACKAGE_ID = 1;
+    private static final String TEST_LABEL = "Test App";
+    private static final String TEST_PATH = "TEST_PATH";
+
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<DomainAppPreferenceController> mControllerHelper;
+    private DomainAppPreferenceController mController;
+    private Lifecycle mLifecycle;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private ApplicationsState mApplicationsState;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowApplicationsState.setInstance(mApplicationsState);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(USER_ID);
+
+        mContext = RuntimeEnvironment.application;
+        getShadowUserManager().addProfile(USER_ID, USER_ID, "Test Name", /* profileFlags= */
+                FLAG_ADMIN);
+
+        when(mApplicationsState.newSession(any(), any())).thenReturn(
+                mock(ApplicationsState.Session.class));
+
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DomainAppPreferenceController.class);
+        mController = mControllerHelper.getController();
+
+        LifecycleOwner lifecycleOwner = () -> mLifecycle;
+        mLifecycle = new Lifecycle(lifecycleOwner);
+        mController.setLifecycle(mLifecycle);
+
+        mControllerHelper.setPreference(mPreferenceGroup);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationsState.reset();
+        ShadowCarUserManagerHelper.reset();
+        ShadowUserManager.reset();
+    }
+
+    @Test
+    public void checkInitialized_noLifecycle_throwsError() {
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DomainAppPreferenceController.class);
+
+        assertThrows(IllegalStateException.class,
+                () -> mControllerHelper.setPreference(mPreferenceGroup));
+    }
+
+    @Test
+    public void onRebuildComplete_sessionLoadsValues_preferenceGroupHasValues() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+        entry.label = TEST_LABEL;
+        apps.add(entry);
+        mController.mApplicationStateCallbacks.onRebuildComplete(apps);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void performClick_startsApplicationLaunchSettingsFragmentWithPackageName() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        ApplicationsState.AppEntry entry = new ApplicationsState.AppEntry(mContext, info,
+                TEST_PACKAGE_ID);
+        entry.label = TEST_LABEL;
+        apps.add(entry);
+        mController.mApplicationStateCallbacks.onRebuildComplete(apps);
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        ArgumentCaptor<ApplicationLaunchSettingsFragment> captor = ArgumentCaptor.forClass(
+                ApplicationLaunchSettingsFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(captor.capture());
+
+        String pkgName = captor.getValue().getArguments().getString(
+                ApplicationLaunchSettingsFragment.ARG_PACKAGE_NAME);
+        assertThat(pkgName).isEqualTo(TEST_PACKAGE_NAME);
+    }
+
+    private ShadowUserManager getShadowUserManager() {
+        return Shadow.extract(UserManager.get(mContext));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java
new file mode 100644
index 0000000..70478bc
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsPreferenceControllerTest.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.Arrays;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class, ShadowCarUserManagerHelper.class})
+public class DomainUrlsPreferenceControllerTest {
+
+    private static final int USER_ID = 10;
+    private static final String TEST_PACKAGE_NAME = "com.example.test";
+    private static final int TEST_PACKAGE_ID = 1;
+    private static final String TEST_LABEL = "Test App";
+    private static final String TEST_PATH = "TEST_PATH";
+    private static final String TEST_ACTIVITY = "TestActivity";
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<DomainUrlsPreferenceController> mControllerHelper;
+    private DomainUrlsPreferenceController mController;
+    private ApplicationsState.AppEntry mAppEntry;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(USER_ID);
+
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DomainUrlsPreferenceController.class);
+        mController = mControllerHelper.getController();
+
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = TEST_PACKAGE_NAME;
+        info.uid = TEST_PACKAGE_ID;
+        info.sourceDir = TEST_PATH;
+        mAppEntry = new ApplicationsState.AppEntry(mContext, info, TEST_PACKAGE_ID);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowApplicationPackageManager.reset();
+    }
+
+    @Test
+    public void refreshUi_isBrowserApp_isDisabled() {
+        setupIsBrowserApp(true);
+
+        mController.setAppEntry(mAppEntry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_isNotBrowserApp_isEnabled() {
+        setupIsBrowserApp(false);
+
+        mController.setAppEntry(mAppEntry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_isBrowserApp_summarySet() {
+        setupIsBrowserApp(true);
+
+        mController.setAppEntry(mAppEntry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isNotNull();
+    }
+
+    @Test
+    public void refreshUi_isNotBrowserApp_summarySet() {
+        setupIsBrowserApp(false);
+
+        mController.setAppEntry(mAppEntry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isNotNull();
+    }
+
+    @Test
+    public void performClick_isNotBrowserApp_opensDialog() {
+        setupIsBrowserApp(false);
+
+        mController.setAppEntry(mAppEntry);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mPreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class), eq(ConfirmationDialogFragment.TAG));
+    }
+
+    private void setupIsBrowserApp(boolean isBrowserApp) {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.activityInfo = new ActivityInfo();
+        resolveInfo.handleAllWebDataURI = isBrowserApp;
+        AppLaunchSettingsBasePreferenceController.sBrowserIntent.setPackage(TEST_PACKAGE_NAME);
+        getShadowPackageManager().addResolveInfoForIntent(
+                AppLaunchSettingsBasePreferenceController.sBrowserIntent,
+                Arrays.asList(resolveInfo));
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsUtilsTest.java b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsUtilsTest.java
new file mode 100644
index 0000000..fc0cbcf
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainUrlsUtilsTest.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2019 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.car.settings.applications.managedomainurls;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.IntentFilterVerificationInfo;
+import android.content.pm.PackageManager;
+import android.util.ArraySet;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Arrays;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class})
+public class DomainUrlsUtilsTest {
+
+    private static final String TEST_PACKAGE = "com.test.android.Package";
+    private static final int USER_ID = 10;
+
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+    }
+
+    @Test
+    public void getDomainsSummary_domainStatusSetToNever_showNoneText() {
+        mContext.getPackageManager().updateIntentVerificationStatusAsUser(TEST_PACKAGE,
+                PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER, USER_ID);
+
+        assertThat(DomainUrlsUtils.getDomainsSummary(mContext, TEST_PACKAGE, USER_ID,
+                new ArraySet<>())).isEqualTo(mContext.getString(R.string.domain_urls_summary_none));
+    }
+
+    @Test
+    public void getDomainsSummary_domainStatusSet_noDomains_showNoneText() {
+        mContext.getPackageManager().updateIntentVerificationStatusAsUser(TEST_PACKAGE,
+                PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK, USER_ID);
+
+        assertThat(DomainUrlsUtils.getDomainsSummary(mContext, TEST_PACKAGE, USER_ID,
+                new ArraySet<>())).isEqualTo(mContext.getString(R.string.domain_urls_summary_none));
+    }
+
+    @Test
+    public void getDomainsSummary_domainStatusSet_oneDomain_showSingleDomain() {
+        mContext.getPackageManager().updateIntentVerificationStatusAsUser(TEST_PACKAGE,
+                PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK, USER_ID);
+        ArraySet<String> domains = new ArraySet<>();
+        domains.add("test.domain.com");
+
+        assertThat(DomainUrlsUtils.getDomainsSummary(mContext, TEST_PACKAGE, USER_ID,
+                domains)).isEqualTo(
+                mContext.getString(R.string.domain_urls_summary_one, domains.valueAt(0)));
+    }
+
+    @Test
+    public void getDomainsSummary_domainStatusSet_multipleDomain_showMultipleDomains() {
+        mContext.getPackageManager().updateIntentVerificationStatusAsUser(TEST_PACKAGE,
+                PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK, USER_ID);
+        ArraySet<String> domains = new ArraySet<>();
+        domains.add("test.domain.com");
+        domains.add("test.domain2.com");
+
+        assertThat(DomainUrlsUtils.getDomainsSummary(mContext, TEST_PACKAGE, USER_ID,
+                domains)).isEqualTo(
+                mContext.getString(R.string.domain_urls_summary_some, domains.valueAt(0)));
+    }
+
+    @Test
+    public void getHandledDomains_includeIntentFilterVerificationInfoDomains() {
+        PackageManager pm = mock(PackageManager.class);
+        String domain = "test.domain.com";
+        ArraySet<String> domains = new ArraySet<>();
+        domains.add(domain);
+        IntentFilterVerificationInfo info = new IntentFilterVerificationInfo(TEST_PACKAGE, domains);
+        when(pm.getIntentFilterVerifications(TEST_PACKAGE)).thenReturn(Arrays.asList(info));
+
+        assertThat(DomainUrlsUtils.getHandledDomains(pm, TEST_PACKAGE)).hasSize(1);
+        assertThat(DomainUrlsUtils.getHandledDomains(pm, TEST_PACKAGE)).contains(domain);
+    }
+
+    @Test
+    public void getHandledDomains_includeBrowsableIntentFiltersWithHttpDataScheme() {
+        PackageManager pm = mock(PackageManager.class);
+        String domain = "test.domain.com";
+        String port = "80";
+        IntentFilter filter = new IntentFilter();
+        filter.addCategory(Intent.CATEGORY_BROWSABLE);
+        filter.addDataScheme(IntentFilter.SCHEME_HTTP);
+        filter.addDataAuthority(new IntentFilter.AuthorityEntry(domain, port));
+        when(pm.getAllIntentFilters(TEST_PACKAGE)).thenReturn(Arrays.asList(filter));
+
+        assertThat(DomainUrlsUtils.getHandledDomains(pm, TEST_PACKAGE)).hasSize(1);
+        assertThat(DomainUrlsUtils.getHandledDomains(pm, TEST_PACKAGE)).contains(domain);
+    }
+
+    @Test
+    public void getHandledDomains_includeBrowsableIntentFiltersWithHttpsDataScheme() {
+        PackageManager pm = mock(PackageManager.class);
+        String domain = "test.domain.com";
+        String port = "80";
+        IntentFilter filter = new IntentFilter();
+        filter.addCategory(Intent.CATEGORY_BROWSABLE);
+        filter.addDataScheme(IntentFilter.SCHEME_HTTPS);
+        filter.addDataAuthority(new IntentFilter.AuthorityEntry(domain, port));
+        when(pm.getAllIntentFilters(TEST_PACKAGE)).thenReturn(Arrays.asList(filter));
+
+        assertThat(DomainUrlsUtils.getHandledDomains(pm, TEST_PACKAGE)).hasSize(1);
+        assertThat(DomainUrlsUtils.getHandledDomains(pm, TEST_PACKAGE)).contains(domain);
+    }
+
+    @Test
+    public void getHandledDomains_excludeBrowsableIntentFiltersWithOtherDataScheme() {
+        PackageManager pm = mock(PackageManager.class);
+        String domain = "test.domain.com";
+        String port = "80";
+        IntentFilter filter = new IntentFilter();
+        filter.addCategory(Intent.CATEGORY_BROWSABLE);
+        filter.addDataAuthority(new IntentFilter.AuthorityEntry(domain, port));
+        when(pm.getAllIntentFilters(TEST_PACKAGE)).thenReturn(Arrays.asList(filter));
+
+        assertThat(DomainUrlsUtils.getHandledDomains(pm, TEST_PACKAGE)).isEmpty();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppEntryListManagerTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppEntryListManagerTest.java
new file mode 100644
index 0000000..96143f9
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppEntryListManagerTest.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.os.Looper;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowApplicationsState;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Unit test for {@link AppEntryListManager}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationsState.class})
+public class AppEntryListManagerTest {
+
+    @Mock
+    private ApplicationsState mApplicationsState;
+    @Mock
+    private ApplicationsState.Session mSession;
+    @Mock
+    private AppEntryListManager.ExtraInfoBridge mExtraInfoBridge;
+    @Mock
+    private AppEntryListManager.AppFilterProvider mFilterProvider;
+    @Mock
+    private AppEntryListManager.Callback mCallback;
+    @Captor
+    private ArgumentCaptor<ApplicationsState.Callbacks> mSessionCallbacksCaptor;
+    @Captor
+    private ArgumentCaptor<List<AppEntry>> mEntriesCaptor;
+
+    private AppEntryListManager mAppEntryListManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowApplicationsState.setInstance(mApplicationsState);
+        when(mApplicationsState.newSession(mSessionCallbacksCaptor.capture())).thenReturn(mSession);
+        when(mApplicationsState.getBackgroundLooper()).thenReturn(Looper.getMainLooper());
+
+        mAppEntryListManager = new AppEntryListManager(RuntimeEnvironment.application);
+        mAppEntryListManager.init(mExtraInfoBridge, mFilterProvider, mCallback);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationsState.reset();
+    }
+
+    @Test
+    public void start_resumesSession() {
+        mAppEntryListManager.start();
+
+        verify(mSession).onResume();
+    }
+
+    @Test
+    public void onPackageListChanged_loadsExtraInfo() {
+        mSessionCallbacksCaptor.getValue().onPackageListChanged();
+
+        verify(mExtraInfoBridge).loadExtraInfo(any());
+    }
+
+    @Test
+    public void onLoadEntriesComplete_loadsExtraInfo() {
+        mSessionCallbacksCaptor.getValue().onLoadEntriesCompleted();
+
+        verify(mExtraInfoBridge).loadExtraInfo(any());
+    }
+
+    @Test
+    public void stop_pausesSession() {
+        mAppEntryListManager.stop();
+
+        verify(mSession).onPause();
+    }
+
+    @Test
+    public void destroy_destroysSession() {
+        mAppEntryListManager.destroy();
+
+        verify(mSession).onDestroy();
+    }
+
+    @Test
+    public void forceUpdate_loadsExtraInfo() {
+        ArrayList<AppEntry> entries = new ArrayList<>();
+        entries.add(mock(AppEntry.class));
+        when(mSession.getAllApps()).thenReturn(entries);
+
+        mAppEntryListManager.forceUpdate();
+
+        verify(mExtraInfoBridge).loadExtraInfo(entries);
+    }
+
+    @Test
+    public void forceUpdate_forEntry_loadsExtraInfo() {
+        AppEntry entry = mock(AppEntry.class);
+
+        mAppEntryListManager.forceUpdate(entry);
+
+        verify(mExtraInfoBridge).loadExtraInfo(mEntriesCaptor.capture());
+        assertThat(mEntriesCaptor.getValue()).containsExactly(entry);
+    }
+
+    @Test
+    public void loadingFinished_rebuildsSession() {
+        ApplicationsState.AppFilter appFilter = mock(ApplicationsState.AppFilter.class);
+        when(mFilterProvider.getAppFilter()).thenReturn(appFilter);
+
+        mSessionCallbacksCaptor.getValue().onLoadEntriesCompleted();
+
+        verify(mSession).rebuild(eq(appFilter),
+                eq(ApplicationsState.ALPHA_COMPARATOR), /* foreground= */ eq(false));
+    }
+
+    @Test
+    public void onRebuildComplete_callsCallback() {
+        ArrayList<AppEntry> entries = new ArrayList<>();
+        entries.add(mock(AppEntry.class));
+
+        mSessionCallbacksCaptor.getValue().onRebuildComplete(entries);
+
+        verify(mCallback).onAppEntryListChanged(entries);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppOpsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppOpsPreferenceControllerTest.java
new file mode 100644
index 0000000..b8e70f3
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppOpsPreferenceControllerTest.java
@@ -0,0 +1,300 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.Manifest;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.Looper;
+import android.os.RemoteException;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAppOpsManager;
+import com.android.car.settings.testutils.ShadowApplicationsState;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/** Unit test for {@link AppOpsPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowAppOpsManager.class, ShadowApplicationsState.class})
+public class AppOpsPreferenceControllerTest {
+
+    private static final int APP_OP_CODE = AppOpsManager.OP_WRITE_SETTINGS;
+    private static final String PERMISSION = Manifest.permission.WRITE_SETTINGS;
+    private static final int NEGATIVE_MODE = AppOpsManager.MODE_ERRORED;
+
+    @Mock
+    private AppEntryListManager mAppEntryListManager;
+    @Mock
+    private ApplicationsState mApplicationsState;
+    @Captor
+    private ArgumentCaptor<AppEntryListManager.Callback> mCallbackCaptor;
+
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<AppOpsPreferenceController> mControllerHelper;
+    private AppOpsPreferenceController mController;
+
+    @Before
+    public void setUp() throws RemoteException {
+        MockitoAnnotations.initMocks(this);
+        ShadowApplicationsState.setInstance(mApplicationsState);
+        when(mApplicationsState.getBackgroundLooper()).thenReturn(Looper.getMainLooper());
+
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AppOpsPreferenceController.class);
+        mController = mControllerHelper.getController();
+        mController.init(APP_OP_CODE, PERMISSION, NEGATIVE_MODE);
+        mController.mAppEntryListManager = mAppEntryListManager;
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        verify(mAppEntryListManager).init(any(AppStateAppOpsBridge.class), any(),
+                mCallbackCaptor.capture());
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationsState.reset();
+    }
+
+    @Test
+    public void checkInitialized_noOpCode_throwsIllegalStateException() {
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AppOpsPreferenceController.class);
+        mController = mControllerHelper.getController();
+
+        mController.init(AppOpsManager.OP_NONE, PERMISSION, NEGATIVE_MODE);
+
+        assertThrows(IllegalStateException.class,
+                () -> mControllerHelper.setPreference(mPreferenceGroup));
+    }
+
+    @Test
+    public void checkInitialized_noPermission_throwsIllegalStateException() {
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AppOpsPreferenceController.class);
+        mController = mControllerHelper.getController();
+
+        mController.init(APP_OP_CODE, /* permission= */ null, NEGATIVE_MODE);
+
+        assertThrows(IllegalStateException.class,
+                () -> mControllerHelper.setPreference(mPreferenceGroup));
+    }
+
+    @Test
+    public void checkInitialized_noNegativeOpMode_throwsIllegalStateException() {
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AppOpsPreferenceController.class);
+        mController = mControllerHelper.getController();
+
+        mController.init(APP_OP_CODE, PERMISSION, AppOpsManager.MODE_DEFAULT);
+
+        assertThrows(IllegalStateException.class,
+                () -> mControllerHelper.setPreference(mPreferenceGroup));
+    }
+
+    @Test
+    public void onStart_startsListManager() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        verify(mAppEntryListManager).start();
+    }
+
+    @Test
+    public void onStop_stopsListManager() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        verify(mAppEntryListManager).stop();
+    }
+
+    @Test
+    public void onDestroy_destroysListManager() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        verify(mAppEntryListManager).destroy();
+    }
+
+    @Test
+    public void onAppEntryListChanged_addsPreferencesForEntries() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        List<AppEntry> entries = Arrays.asList(
+                createAppEntry("test.package", /* uid= */ 1, /* isOpPermissible= */ true),
+                createAppEntry("another.test.package", /* uid= */ 2, /* isOpPermissible= */ false));
+
+        mCallbackCaptor.getValue().onAppEntryListChanged(entries);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+        assertThat(((TwoStatePreference) mPreferenceGroup.getPreference(0)).isChecked()).isTrue();
+        assertThat(((TwoStatePreference) mPreferenceGroup.getPreference(1)).isChecked()).isFalse();
+    }
+
+    @Test
+    public void onPreferenceChange_checkedState_setsAppOpModeAllowed() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        String packageName = "test.package";
+        int uid = 1;
+        List<AppEntry> entries = Collections.singletonList(
+                createAppEntry(packageName, uid, /* isOpPermissible= */ false));
+        mCallbackCaptor.getValue().onAppEntryListChanged(entries);
+        TwoStatePreference appPref = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+
+        appPref.performClick();
+
+        assertThat(getShadowAppOpsManager().getMode(APP_OP_CODE, uid, packageName)).isEqualTo(
+                AppOpsManager.MODE_ALLOWED);
+    }
+
+    @Test
+    public void onPreferenceChange_uncheckedState_setsNegativeAppOpMode() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        String packageName = "test.package";
+        int uid = 1;
+        List<AppEntry> entries = Collections.singletonList(
+                createAppEntry(packageName, uid, /* isOpPermissible= */ true));
+        mCallbackCaptor.getValue().onAppEntryListChanged(entries);
+        TwoStatePreference appPref = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+
+        appPref.performClick();
+
+        assertThat(getShadowAppOpsManager().getMode(APP_OP_CODE, uid, packageName)).isEqualTo(
+                NEGATIVE_MODE);
+    }
+
+    @Test
+    public void onPreferenceChange_updatesEntry() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        List<AppEntry> entries = Collections.singletonList(
+                createAppEntry("test.package", /* uid= */ 1, /* isOpPermissible= */ false));
+        mCallbackCaptor.getValue().onAppEntryListChanged(entries);
+        TwoStatePreference appPref = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+
+        appPref.performClick();
+
+        verify(mAppEntryListManager).forceUpdate(entries.get(0));
+    }
+
+    @Test
+    public void showSystem_updatesEntries() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mController.setShowSystem(true);
+
+        verify(mAppEntryListManager).forceUpdate();
+    }
+
+    @Test
+    public void appFilter_showingSystemApps_keepsSystemEntries() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mController.setShowSystem(true);
+        ArgumentCaptor<AppEntryListManager.AppFilterProvider> filterCaptor =
+                ArgumentCaptor.forClass(AppEntryListManager.AppFilterProvider.class);
+        verify(mAppEntryListManager).init(any(), filterCaptor.capture(), any());
+        ApplicationsState.AppFilter filter = filterCaptor.getValue().getAppFilter();
+
+        AppEntry systemApp = createAppEntry("test.package", /* uid= */ 1, /* isOpPermissible= */
+                false);
+        systemApp.info.flags |= ApplicationInfo.FLAG_SYSTEM;
+
+        assertThat(filter.filterApp(systemApp)).isTrue();
+    }
+
+    @Test
+    public void appFilter_notShowingSystemApps_removesSystemEntries() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        // Not showing system by default.
+        ArgumentCaptor<AppEntryListManager.AppFilterProvider> filterCaptor =
+                ArgumentCaptor.forClass(AppEntryListManager.AppFilterProvider.class);
+        verify(mAppEntryListManager).init(any(), filterCaptor.capture(), any());
+        ApplicationsState.AppFilter filter = filterCaptor.getValue().getAppFilter();
+
+        AppEntry systemApp = createAppEntry("test.package", /* uid= */ 1, /* isOpPermissible= */
+                false);
+        systemApp.info.flags |= ApplicationInfo.FLAG_SYSTEM;
+
+        assertThat(filter.filterApp(systemApp)).isFalse();
+    }
+
+    @Test
+    public void appFilter_removesNullExtraInfoEntries() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        ArgumentCaptor<AppEntryListManager.AppFilterProvider> filterCaptor =
+                ArgumentCaptor.forClass(AppEntryListManager.AppFilterProvider.class);
+        verify(mAppEntryListManager).init(any(), filterCaptor.capture(), any());
+        ApplicationsState.AppFilter filter = filterCaptor.getValue().getAppFilter();
+
+        AppEntry appEntry = createAppEntry("test.package", /* uid= */ 1, /* isOpPermissible= */
+                false);
+        appEntry.extraInfo = null;
+
+        assertThat(filter.filterApp(appEntry)).isFalse();
+    }
+
+    private AppEntry createAppEntry(String packageName, int uid, boolean isOpPermissible) {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = packageName;
+        info.uid = uid;
+
+        AppStateAppOpsBridge.PermissionState extraInfo = mock(
+                AppStateAppOpsBridge.PermissionState.class);
+        when(extraInfo.isPermissible()).thenReturn(isOpPermissible);
+
+        AppEntry appEntry = mock(AppEntry.class);
+        appEntry.info = info;
+        appEntry.label = packageName;
+        appEntry.extraInfo = extraInfo;
+
+        return appEntry;
+    }
+
+    private ShadowAppOpsManager getShadowAppOpsManager() {
+        return Shadow.extract(mContext.getSystemService(Context.APP_OPS_SERVICE));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppStateAppOpsBridgeTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppStateAppOpsBridgeTest.java
new file mode 100644
index 0000000..718edde
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppStateAppOpsBridgeTest.java
@@ -0,0 +1,297 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.Manifest;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ParceledListSlice;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.applications.specialaccess.AppStateAppOpsBridge.PermissionState;
+import com.android.car.settings.testutils.ShadowAppOpsManager;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.AdditionalMatchers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowUserManager;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/** Unit test for {@link AppStateAppOpsBridge}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowAppOpsManager.class})
+public class AppStateAppOpsBridgeTest {
+
+    private static final int APP_OP_CODE = AppOpsManager.OP_WRITE_SETTINGS;
+    private static final String PERMISSION = Manifest.permission.WRITE_SETTINGS;
+
+    @Mock
+    private IPackageManager mIPackageManager;
+    @Mock
+    private ParceledListSlice<PackageInfo> mParceledPackages;
+    @Mock
+    private ParceledListSlice<PackageInfo> mParceledPackagesOtherProfile;
+
+    private List<PackageInfo> mPackages;
+
+    private Context mContext;
+    private AppOpsManager mAppOpsManager;
+    private AppStateAppOpsBridge mBridge;
+
+    @Before
+    public void setUp() throws RemoteException {
+        MockitoAnnotations.initMocks(this);
+        mPackages = new ArrayList<>();
+        when(mIPackageManager.getPackagesHoldingPermissions(
+                AdditionalMatchers.aryEq(new String[]{PERMISSION}),
+                eq(PackageManager.GET_PERMISSIONS),
+                eq(UserHandle.myUserId())))
+                .thenReturn(mParceledPackages);
+        when(mParceledPackages.getList()).thenReturn(mPackages);
+
+        mContext = RuntimeEnvironment.application;
+        mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
+        mBridge = new AppStateAppOpsBridge(mContext, APP_OP_CODE, PERMISSION, mIPackageManager);
+    }
+
+    @Test
+    public void androidPackagesIgnored() throws RemoteException {
+        String packageName = "android";
+        int uid = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo = createPackageInfo(packageName, uid);
+        addPackageWithPermission(packageInfo, AppOpsManager.MODE_ALLOWED);
+        AppEntry entry = createAppEntry(packageInfo);
+
+        mBridge.loadExtraInfo(Collections.singletonList(entry));
+
+        assertThat(entry.extraInfo).isNull();
+    }
+
+    @Test
+    public void selfPackageIgnored() throws RemoteException {
+        String packageName = mContext.getPackageName();
+        int uid = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo = createPackageInfo(packageName, uid);
+        addPackageWithPermission(packageInfo, AppOpsManager.MODE_ALLOWED);
+        AppEntry entry = createAppEntry(packageInfo);
+
+        mBridge.loadExtraInfo(Collections.singletonList(entry));
+
+        assertThat(entry.extraInfo).isNull();
+    }
+
+    @Test
+    public void packagesNotRequestingPermissionIgnored() throws RemoteException {
+        String packageName = "test.package";
+        int uid = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo = createPackageInfo(packageName, uid);
+        packageInfo.requestedPermissions = null;
+        mPackages.add(packageInfo);
+        when(mIPackageManager.isPackageAvailable(packageInfo.packageName,
+                UserHandle.myUserId())).thenReturn(true);
+        AppEntry entry = createAppEntry(packageInfo);
+
+        mBridge.loadExtraInfo(Collections.singletonList(entry));
+
+        assertThat(entry.extraInfo).isNull();
+    }
+
+    @Test
+    public void unavailablePackageIgnored() throws RemoteException {
+        String packageName = "test.package";
+        int uid = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo = createPackageInfo(packageName, uid);
+        addPackageWithPermission(packageInfo, AppOpsManager.MODE_ALLOWED);
+        when(mIPackageManager.isPackageAvailable(packageInfo.packageName,
+                UserHandle.myUserId())).thenReturn(false);
+        AppEntry entry = createAppEntry(packageInfo);
+
+        mBridge.loadExtraInfo(Collections.singletonList(entry));
+
+        assertThat(entry.extraInfo).isNull();
+    }
+
+    @Test
+    public void loadsAppOpsExtraInfo_modeAllowed_isPermissible() throws RemoteException {
+        String packageName = "test.package";
+        int uid = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo = createPackageInfo(packageName, uid);
+        addPackageWithPermission(packageInfo, AppOpsManager.MODE_ALLOWED);
+        AppEntry entry = createAppEntry(packageInfo);
+        assertThat(entry.extraInfo).isNull();
+
+        mBridge.loadExtraInfo(Collections.singletonList(entry));
+
+        assertThat(entry.extraInfo).isNotNull();
+        assertThat(((PermissionState) entry.extraInfo).isPermissible()).isTrue();
+    }
+
+    @Test
+    public void loadsAppOpsExtraInfo_modeDefault_isPermissible() throws RemoteException {
+        String packageName = "test.package";
+        int uid = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo = createPackageInfo(packageName, uid);
+        addPackageWithPermission(packageInfo, AppOpsManager.MODE_DEFAULT);
+        AppEntry entry = createAppEntry(packageInfo);
+        assertThat(entry.extraInfo).isNull();
+
+        mBridge.loadExtraInfo(Collections.singletonList(entry));
+
+        assertThat(entry.extraInfo).isNotNull();
+        assertThat(((PermissionState) entry.extraInfo).isPermissible()).isTrue();
+    }
+
+    @Test
+    public void loadsAppOpsExtraInfo_modeIgnored_isNotPermissible() throws RemoteException {
+        String packageName = "test.package";
+        int uid = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo = createPackageInfo(packageName, uid);
+        addPackageWithPermission(packageInfo, AppOpsManager.MODE_IGNORED);
+        AppEntry entry = createAppEntry(packageInfo);
+        assertThat(entry.extraInfo).isNull();
+
+        mBridge.loadExtraInfo(Collections.singletonList(entry));
+
+        assertThat(entry.extraInfo).isNotNull();
+        assertThat(((PermissionState) entry.extraInfo).isPermissible()).isFalse();
+    }
+
+    @Test
+    public void loadsAppOpsExtraInfo_multipleApps() throws RemoteException {
+        String packageName1 = "test.package1";
+        int uid1 = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo1 = createPackageInfo(packageName1, uid1);
+        addPackageWithPermission(packageInfo1, AppOpsManager.MODE_ALLOWED);
+        AppEntry entry1 = createAppEntry(packageInfo1);
+
+        String packageName2 = "test.package2";
+        int uid2 = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 2);
+        PackageInfo packageInfo2 = createPackageInfo(packageName2, uid2);
+        addPackageWithPermission(packageInfo2, AppOpsManager.MODE_ALLOWED);
+        AppEntry entry2 = createAppEntry(packageInfo2);
+
+        mBridge.loadExtraInfo(Arrays.asList(entry1, entry2));
+
+        assertThat(entry1.extraInfo).isNotNull();
+        assertThat(entry2.extraInfo).isNotNull();
+    }
+
+    @Test
+    public void loadsAppOpExtraInfo_multipleProfiles() throws RemoteException {
+        String packageName1 = "test.package1";
+        int uid1 = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo1 = createPackageInfo(packageName1, uid1);
+        addPackageWithPermission(packageInfo1, AppOpsManager.MODE_ALLOWED);
+        AppEntry entry1 = createAppEntry(packageInfo1);
+
+        // Add a package for another profile.
+        int otherUserId = UserHandle.myUserId() + 1;
+        String packageName2 = "test.package2";
+        int uid2 = UserHandle.getUid(otherUserId, /* appId= */ 2);
+        PackageInfo packageInfo2 = createPackageInfo(packageName2, uid2);
+        when(mIPackageManager.getPackagesHoldingPermissions(
+                AdditionalMatchers.aryEq(new String[]{PERMISSION}),
+                eq(PackageManager.GET_PERMISSIONS),
+                eq(otherUserId)))
+                .thenReturn(mParceledPackagesOtherProfile);
+        when(mParceledPackagesOtherProfile.getList()).thenReturn(
+                Collections.singletonList(packageInfo2));
+        when(mIPackageManager.isPackageAvailable(packageInfo2.packageName,
+                otherUserId)).thenReturn(true);
+        mAppOpsManager.setMode(APP_OP_CODE, packageInfo2.applicationInfo.uid,
+                packageInfo2.packageName, AppOpsManager.MODE_ALLOWED);
+        AppEntry entry2 = createAppEntry(packageInfo2);
+
+        getShadowUserManager().addUserProfile(UserHandle.of(otherUserId));
+        // Recreate the bridge so it has all user profiles.
+        mBridge = new AppStateAppOpsBridge(mContext, APP_OP_CODE, PERMISSION, mIPackageManager);
+
+        mBridge.loadExtraInfo(Arrays.asList(entry1, entry2));
+
+        assertThat(entry1.extraInfo).isNotNull();
+        assertThat(entry2.extraInfo).isNotNull();
+    }
+
+    @Test
+    public void appEntryNotIncluded_extraInfoCleared() {
+        String packageName = "test.package";
+        int uid = UserHandle.getUid(UserHandle.myUserId(), /* appId= */ 1);
+        PackageInfo packageInfo = createPackageInfo(packageName, uid);
+        AppEntry entry = createAppEntry(packageInfo);
+        entry.extraInfo = new Object();
+
+        mBridge.loadExtraInfo(Collections.singletonList(entry));
+
+        assertThat(entry.extraInfo).isNull();
+    }
+
+    private PackageInfo createPackageInfo(String packageName, int uid) {
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = packageName;
+        applicationInfo.uid = uid;
+
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = packageName;
+        packageInfo.applicationInfo = applicationInfo;
+        packageInfo.requestedPermissions = new String[]{PERMISSION};
+
+        return packageInfo;
+    }
+
+    private void addPackageWithPermission(PackageInfo packageInfo, int mode)
+            throws RemoteException {
+        mPackages.add(packageInfo);
+        when(mIPackageManager.isPackageAvailable(packageInfo.packageName,
+                UserHandle.myUserId())).thenReturn(true);
+        mAppOpsManager.setMode(APP_OP_CODE, packageInfo.applicationInfo.uid,
+                packageInfo.packageName, mode);
+    }
+
+    private AppEntry createAppEntry(PackageInfo packageInfo) {
+        AppEntry appEntry = mock(AppEntry.class);
+        appEntry.info = packageInfo.applicationInfo;
+        return appEntry;
+    }
+
+    private ShadowUserManager getShadowUserManager() {
+        return Shadows.shadowOf(UserManager.get(mContext));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppStatePremiumSmsBridgeTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppStatePremiumSmsBridgeTest.java
new file mode 100644
index 0000000..382917c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/specialaccess/AppStatePremiumSmsBridgeTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.pm.ApplicationInfo;
+import android.os.RemoteException;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.internal.telephony.ISms;
+import com.android.internal.telephony.SmsUsageMonitor;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+
+/** Unit test for {@link AppStatePremiumSmsBridge}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AppStatePremiumSmsBridgeTest {
+
+    @Mock
+    private ISms mSmsManager;
+    private AppStatePremiumSmsBridge mBridge;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mBridge = new AppStatePremiumSmsBridge(mSmsManager);
+    }
+
+    @Test
+    public void loadExtraInfo() throws RemoteException {
+        String package1 = "test.package1";
+        AppEntry appEntry1 = createAppEntry(package1);
+        int value1 = SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW;
+        when(mSmsManager.getPremiumSmsPermission(package1)).thenReturn(value1);
+
+        String package2 = "test.package2";
+        AppEntry appEntry2 = createAppEntry(package2);
+        int value2 = SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW;
+        when(mSmsManager.getPremiumSmsPermission(package2)).thenReturn(value2);
+
+        mBridge.loadExtraInfo(Arrays.asList(appEntry1, appEntry2));
+
+        assertThat(appEntry1.extraInfo).isEqualTo(value1);
+        assertThat(appEntry2.extraInfo).isEqualTo(value2);
+    }
+
+    private AppEntry createAppEntry(String packageName) {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = packageName;
+
+        AppEntry appEntry = mock(AppEntry.class);
+        appEntry.info = info;
+        appEntry.label = packageName;
+
+        return appEntry;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceControllerTest.java
new file mode 100644
index 0000000..de6cd2e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceControllerTest.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.Collections;
+
+/** Unit test for {@link MoreSpecialAccessPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class})
+public class MoreSpecialAccessPreferenceControllerTest {
+
+    private static final String PACKAGE = "test.package";
+
+    private Context mContext;
+    private Preference mPreference;
+    private Intent mIntent;
+    private ResolveInfo mResolveInfo;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mIntent = new Intent(Intent.ACTION_MANAGE_SPECIAL_APP_ACCESSES);
+        mIntent.setPackage(PACKAGE);
+
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = PACKAGE;
+        applicationInfo.name = "TestClass";
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.applicationInfo = applicationInfo;
+
+        mResolveInfo = new ResolveInfo();
+        mResolveInfo.activityInfo = activityInfo;
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationPackageManager.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_noPermissionController_returnsUnsupportedOnDevice() {
+        PreferenceControllerTestHelper<MoreSpecialAccessPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        MoreSpecialAccessPreferenceController.class, mPreference);
+
+        assertThat(controllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+                UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_noResolvedActivity_returnsUnsupportedOnDevice() {
+        getShadowApplicationPackageManager().setPermissionControllerPackageName(PACKAGE);
+
+        PreferenceControllerTestHelper<MoreSpecialAccessPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        MoreSpecialAccessPreferenceController.class, mPreference);
+
+        assertThat(controllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+                UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_resolvedActivity_returnsAvailable() {
+        getShadowApplicationPackageManager().setPermissionControllerPackageName(PACKAGE);
+        getShadowApplicationPackageManager().setResolveInfosForIntent(mIntent,
+                Collections.singletonList(mResolveInfo));
+
+        PreferenceControllerTestHelper<MoreSpecialAccessPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        MoreSpecialAccessPreferenceController.class, mPreference);
+
+        assertThat(controllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+                AVAILABLE);
+    }
+
+    @Test
+    public void preferenceClicked_startsResolvedActivity() {
+        getShadowApplicationPackageManager().setPermissionControllerPackageName(PACKAGE);
+        getShadowApplicationPackageManager().setResolveInfosForIntent(mIntent,
+                Collections.singletonList(mResolveInfo));
+
+        PreferenceControllerTestHelper<MoreSpecialAccessPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        MoreSpecialAccessPreferenceController.class, mPreference);
+        controllerHelper.markState(Lifecycle.State.STARTED);
+
+        mPreference.performClick();
+
+        Intent started = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(started.getAction()).isEqualTo(Intent.ACTION_MANAGE_SPECIAL_APP_ACCESSES);
+        assertThat(started.getPackage()).isEqualTo(PACKAGE);
+    }
+
+    private ShadowApplicationPackageManager getShadowApplicationPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/NotificationAccessPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/NotificationAccessPreferenceControllerTest.java
new file mode 100644
index 0000000..a8cd5c9
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/specialaccess/NotificationAccessPreferenceControllerTest.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.Manifest;
+import android.app.AutomaticZenRule;
+import android.app.NotificationManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.service.notification.NotificationListenerService;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowNotificationManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link NotificationAccessPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class, ShadowNotificationManager.class})
+public class NotificationAccessPreferenceControllerTest {
+
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<NotificationAccessPreferenceController>
+            mControllerHelper;
+    private NotificationAccessPreferenceController mController;
+
+    private ServiceInfo mListenerServiceInfo;
+    private ComponentName mListenerComponent;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                NotificationAccessPreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+
+        mListenerServiceInfo = new ServiceInfo();
+        mListenerServiceInfo.permission = Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE;
+        mListenerServiceInfo.packageName = "com.android.test.package";
+        mListenerServiceInfo.name = "SomeListenerService";
+        mListenerServiceInfo.nonLocalizedLabel = "label";
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.uid = 123;
+        mListenerServiceInfo.applicationInfo = applicationInfo;
+
+        mListenerComponent = new ComponentName(mListenerServiceInfo.packageName,
+                mListenerServiceInfo.name);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationPackageManager.reset();
+    }
+
+    @Test
+    public void onStart_loadsListenerServices() {
+        addNotificationListenerService(mListenerServiceInfo);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onStart_serviceAccessGranted_setsPreferenceChecked() {
+        addNotificationListenerService(mListenerServiceInfo);
+        mContext.getSystemService(NotificationManager.class).setNotificationListenerAccessGranted(
+                mListenerComponent, /* granted= */ true);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        TwoStatePreference preference = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+        assertThat(preference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onStart_serviceAccessNotGranted_setsPreferenceUnchecked() {
+        addNotificationListenerService(mListenerServiceInfo);
+        mContext.getSystemService(NotificationManager.class).setNotificationListenerAccessGranted(
+                mListenerComponent, /* granted= */ false);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        TwoStatePreference preference = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+        assertThat(preference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void preferenceClicked_serviceAccessGranted_showsRevokeConfirmDialog() {
+        addNotificationListenerService(mListenerServiceInfo);
+        mContext.getSystemService(NotificationManager.class).setNotificationListenerAccessGranted(
+                mListenerComponent, /* granted= */ true);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        TwoStatePreference preference = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+
+        preference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(any(
+                ConfirmationDialogFragment.class),
+                eq(NotificationAccessPreferenceController.REVOKE_CONFIRM_DIALOG_TAG));
+    }
+
+    @Test
+    public void preferenceClicked_serviceAccessNotGranted_showsGrantConfirmDialog() {
+        addNotificationListenerService(mListenerServiceInfo);
+        mContext.getSystemService(NotificationManager.class).setNotificationListenerAccessGranted(
+                mListenerComponent, /* granted= */ false);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        TwoStatePreference preference = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+
+        preference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(any(
+                ConfirmationDialogFragment.class),
+                eq(NotificationAccessPreferenceController.GRANT_CONFIRM_DIALOG_TAG));
+    }
+
+    @Test
+    public void revokeConfirmed_revokesNotificationAccess() {
+        addNotificationListenerService(mListenerServiceInfo);
+        NotificationManager notificationManager = mContext.getSystemService(
+                NotificationManager.class);
+        notificationManager.setNotificationListenerAccessGranted(
+                mListenerComponent, /* granted= */ true);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        TwoStatePreference preference = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(NotificationAccessPreferenceController.REVOKE_CONFIRM_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(/* dialog= */ null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(notificationManager.isNotificationListenerAccessGranted(
+                mListenerComponent)).isFalse();
+    }
+
+    @Test
+    public void revokeConfirmed_notificationPolicyAccessNotGranted_removesAutomaticZenRules() {
+        addNotificationListenerService(mListenerServiceInfo);
+        NotificationManager notificationManager = mContext.getSystemService(
+                NotificationManager.class);
+        notificationManager.setNotificationListenerAccessGranted(
+                mListenerComponent, /* granted= */ true);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        TwoStatePreference preference = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(NotificationAccessPreferenceController.REVOKE_CONFIRM_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        // Add a rule to be removed on access revoke.
+        notificationManager.addAutomaticZenRule(mock(AutomaticZenRule.class));
+        assertThat(notificationManager.getAutomaticZenRules()).isNotEmpty();
+
+        notificationManager.setNotificationPolicyAccessGranted(
+                mListenerServiceInfo.packageName, /* granted= */ false);
+        dialogFragment.onClick(/* dialog= */ null, DialogInterface.BUTTON_POSITIVE);
+
+        Robolectric.flushBackgroundThreadScheduler();
+        Robolectric.flushForegroundThreadScheduler();
+
+        assertThat(notificationManager.getAutomaticZenRules()).isEmpty();
+    }
+
+    @Test
+    public void grantConfirmed_grantsNotificationAccess() {
+        addNotificationListenerService(mListenerServiceInfo);
+        NotificationManager notificationManager = mContext.getSystemService(
+                NotificationManager.class);
+        notificationManager.setNotificationListenerAccessGranted(
+                mListenerComponent, /* granted= */ false);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        TwoStatePreference preference = (TwoStatePreference) mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(NotificationAccessPreferenceController.GRANT_CONFIRM_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(/* dialog= */ null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(notificationManager.isNotificationListenerAccessGranted(
+                mListenerComponent)).isTrue();
+    }
+
+    private void addNotificationListenerService(ServiceInfo serviceInfo) {
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.serviceInfo = serviceInfo;
+        getShadowPackageManager().addResolveInfoForIntent(
+                new Intent(NotificationListenerService.SERVICE_INTERFACE), resolveInfo);
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.packageName = serviceInfo.packageName;
+        packageInfo.applicationInfo = serviceInfo.applicationInfo;
+        getShadowPackageManager().addPackage(packageInfo);
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessPreferenceControllerTest.java
new file mode 100644
index 0000000..38c1678
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/specialaccess/PremiumSmsAccessPreferenceControllerTest.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright 2019 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.car.settings.applications.specialaccess;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.Looper;
+import android.os.RemoteException;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationsState;
+import com.android.car.settings.testutils.ShadowISms;
+import com.android.internal.telephony.ISms;
+import com.android.internal.telephony.SmsUsageMonitor;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.ApplicationsState.AppEntry;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/** Unit test for {@link PremiumSmsAccessPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationsState.class, ShadowISms.class})
+public class PremiumSmsAccessPreferenceControllerTest {
+
+    @Mock
+    private AppEntryListManager mAppEntryListManager;
+    @Mock
+    private ApplicationsState mApplicationsState;
+    @Mock
+    private ISms mISms;
+    @Captor
+    private ArgumentCaptor<AppEntryListManager.Callback> mCallbackCaptor;
+
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<PremiumSmsAccessPreferenceController> mControllerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowApplicationsState.setInstance(mApplicationsState);
+        when(mApplicationsState.getBackgroundLooper()).thenReturn(Looper.getMainLooper());
+        ShadowISms.setISms(mISms);
+
+        Context context = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                PremiumSmsAccessPreferenceController.class, mPreferenceGroup);
+        mControllerHelper.getController().mAppEntryListManager = mAppEntryListManager;
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        verify(mAppEntryListManager).init(any(AppStatePremiumSmsBridge.class), any(),
+                mCallbackCaptor.capture());
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationsState.reset();
+        ShadowISms.reset();
+    }
+
+    @Test
+    public void onStart_startsListManager() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        verify(mAppEntryListManager).start();
+    }
+
+    @Test
+    public void onStop_stopsListManager() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        verify(mAppEntryListManager).stop();
+    }
+
+    @Test
+    public void onDestroy_destroysListManager() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        verify(mAppEntryListManager).destroy();
+    }
+
+    @Test
+    public void onAppEntryListChanged_addsPreferencesForEntries() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        List<AppEntry> entries = Arrays.asList(
+                createAppEntry("test.package", /* uid= */ 1,
+                        SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW),
+                createAppEntry("another.test.package", /* uid= */ 2,
+                        SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW));
+
+        mCallbackCaptor.getValue().onAppEntryListChanged(entries);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+        assertThat(((ListPreference) mPreferenceGroup.getPreference(0)).getValue()).isEqualTo(
+                String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW));
+        assertThat(((ListPreference) mPreferenceGroup.getPreference(1)).getValue()).isEqualTo(
+                String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW));
+    }
+
+    @Test
+    public void onPreferenceChange_setsPremiumSmsPermission() throws RemoteException {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        String packageName = "test.package";
+        List<AppEntry> entries = Collections.singletonList(
+                createAppEntry(packageName, /* uid= */ 1,
+                        SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW));
+        mCallbackCaptor.getValue().onAppEntryListChanged(entries);
+        Preference appPref = mPreferenceGroup.getPreference(0);
+        int updatedValue = SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER;
+
+        appPref.getOnPreferenceChangeListener().onPreferenceChange(appPref,
+                String.valueOf(updatedValue));
+
+        verify(mISms).setPremiumSmsPermission(packageName, updatedValue);
+    }
+
+    @Test
+    public void onPreferenceChange_updatesEntry() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        List<AppEntry> entries = Collections.singletonList(
+                createAppEntry("test.package", /* uid= */ 1,
+                        SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW));
+        mCallbackCaptor.getValue().onAppEntryListChanged(entries);
+        Preference appPref = mPreferenceGroup.getPreference(0);
+
+        appPref.getOnPreferenceChangeListener().onPreferenceChange(appPref,
+                String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER));
+
+        verify(mAppEntryListManager).forceUpdate(entries.get(0));
+    }
+
+    @Test
+    public void appFilter_removesUnknownStates() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        ArgumentCaptor<AppEntryListManager.AppFilterProvider> filterCaptor =
+                ArgumentCaptor.forClass(AppEntryListManager.AppFilterProvider.class);
+        verify(mAppEntryListManager).init(any(), filterCaptor.capture(), any());
+        ApplicationsState.AppFilter filter = filterCaptor.getValue().getAppFilter();
+        AppEntry unknownStateApp = createAppEntry("test.package", /* uid= */ 1,
+                SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN);
+
+        assertThat(filter.filterApp(unknownStateApp)).isFalse();
+    }
+
+    private AppEntry createAppEntry(String packageName, int uid, int smsState) {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = packageName;
+        info.uid = uid;
+
+        AppEntry appEntry = mock(AppEntry.class);
+        appEntry.info = info;
+        appEntry.label = packageName;
+        appEntry.extraInfo = smsState;
+
+        return appEntry;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java
new file mode 100644
index 0000000..eb35004
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothAddressPreferenceControllerTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+
+import org.junit.After;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link BluetoothAddressPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothAddressPreferenceControllerTest {
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void refreshUi_setsAddress() {
+        Context context = RuntimeEnvironment.application;
+
+        // Make sure controller is available.
+        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+        String address = "address";
+        getShadowBluetoothAdapter().setAddress(address);
+
+        // Construct controller.
+        Preference preference = new Preference(context);
+        PreferenceControllerTestHelper<BluetoothAddressPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(context,
+                        BluetoothAddressPreferenceController.class,
+                        preference);
+        controllerHelper.markState(Lifecycle.State.CREATED);
+
+        controllerHelper.getController().refreshUi();
+
+        assertThat(preference.getTitle()).isEqualTo(
+                context.getString(R.string.bluetooth_vehicle_mac_address, address));
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java
new file mode 100644
index 0000000..e7f518a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothBondedDevicesPreferenceControllerTest.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.Arrays;
+
+/** Unit test for {@link BluetoothBondedDevicesPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothBondedDevicesPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private CachedBluetoothDevice mBondedCachedDevice;
+    @Mock
+    private BluetoothDevice mBondedDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<BluetoothBondedDevicesPreferenceController>
+            mControllerHelper;
+    private BluetoothBondedDevicesPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Context context = RuntimeEnvironment.application;
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
+                null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        when(mBondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+        when(mBondedCachedDevice.getDevice()).thenReturn(mBondedDevice);
+        BluetoothDevice unbondedDevice = mock(BluetoothDevice.class);
+        when(unbondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        CachedBluetoothDevice unbondedCachedDevice = mock(CachedBluetoothDevice.class);
+        when(unbondedCachedDevice.getDevice()).thenReturn(unbondedDevice);
+
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Arrays.asList(mBondedCachedDevice, unbondedCachedDevice));
+
+        // Make sure controller is available.
+        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                BluetoothBondedDevicesPreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void showsOnlyBondedDevices() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(devicePreference.getCachedDevice()).isEqualTo(mBondedCachedDevice);
+    }
+
+    @Test
+    public void onDeviceBondStateChanged_refreshesUi() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        // Unbond the only bonded device.
+        when(mBondedCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        when(mBondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        mController.onDeviceBondStateChanged(mBondedCachedDevice, BluetoothDevice.BOND_NONE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onDeviceClicked_notConnected_connectsToDevice() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(false);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        verify(mBondedCachedDevice).connect(/* connectAllProfiles= */ true);
+    }
+
+    @Test
+    public void onDeviceClicked_connected_showsDisconnectConfirmDialog() {
+        when(mBondedCachedDevice.isConnected()).thenReturn(true);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(BluetoothDisconnectConfirmDialogFragment.class), isNull());
+    }
+
+    @Test
+    public void devicePreferenceButtonClicked_noUserRestrictions_launchesDetailsFragment() {
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)).thenReturn(false);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(devicePreference.isActionShown()).isTrue();
+        devicePreference.performButtonClick();
+
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(
+                any(BluetoothDeviceDetailsFragment.class));
+    }
+
+    @Test
+    public void devicePreferenceButton_disallowConfigBluetooth_actionStaysHidden() {
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)).thenReturn(true);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(devicePreference.isActionShown()).isFalse();
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceAddressPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceAddressPreferenceControllerTest.java
new file mode 100644
index 0000000..68a901a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceAddressPreferenceControllerTest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+import org.junit.After;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link BluetoothAddressPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothDeviceAddressPreferenceControllerTest {
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void refreshUi_setsAddress() {
+        // Make sure controller is available.
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        String address = "address";
+        CachedBluetoothDevice device = mock(CachedBluetoothDevice.class);
+        when(device.getAddress()).thenReturn(address);
+
+        // Construct controller.
+        Context context = RuntimeEnvironment.application;
+        Preference preference = new Preference(context);
+        PreferenceControllerTestHelper<BluetoothDeviceAddressPreferenceController>
+                controllerHelper = new PreferenceControllerTestHelper<>(context,
+                BluetoothDeviceAddressPreferenceController.class);
+        controllerHelper.getController().setCachedDevice(device);
+        controllerHelper.setPreference(preference);
+        controllerHelper.markState(Lifecycle.State.CREATED);
+
+        controllerHelper.getController().refreshUi();
+
+        assertThat(preference.getTitle()).isEqualTo(
+                context.getString(R.string.bluetooth_device_mac_address, address));
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java
new file mode 100644
index 0000000..cf43354
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceDetailsFragmentTest.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+/** Unit test for {@link BluetoothDeviceDetailsFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothDeviceDetailsFragmentTest {
+
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private Context mContext;
+    private FragmentController<BluetoothDeviceDetailsFragment> mFragmentController;
+    private BluetoothDeviceDetailsFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(mContext, /* onInitCallback= */
+                null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        String address = "00:11:22:33:AA:BB";
+        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(address);
+        when(mCachedDeviceManager.findDevice(device)).thenReturn(mCachedDevice);
+        when(mCachedDevice.getAddress()).thenReturn(address);
+
+        mFragment = BluetoothDeviceDetailsFragment.newInstance(mCachedDevice);
+        mFragmentController = FragmentController.of(mFragment);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void forgetButtonClicked_unpairsDevice() {
+        mFragmentController.setup();
+
+        findForgetButton(mFragment.requireActivity()).performClick();
+
+        verify(mCachedDevice).unpair();
+    }
+
+    @Test
+    public void forgetButtonClicked_goesBack() {
+        mFragmentController.setup();
+
+        findForgetButton(mFragment.requireActivity()).performClick();
+
+        assertThat(
+                ((BaseTestActivity) mFragment.requireActivity()).getOnBackPressedFlag()).isTrue();
+    }
+
+    @Test
+    public void connectionButtonClicked_deviceConnected_disconnectsDevice() {
+        when(mCachedDevice.isConnected()).thenReturn(true);
+        mFragmentController.setup();
+
+        findConnectionButton(mFragment.requireActivity()).performClick();
+
+        verify(mCachedDevice).disconnect();
+    }
+
+    @Test
+    public void connectionButtonClicked_deviceNotConnected_connectsDevice() {
+        when(mCachedDevice.isConnected()).thenReturn(false);
+        mFragmentController.setup();
+
+        findConnectionButton(mFragment.requireActivity()).performClick();
+
+        verify(mCachedDevice).connect(/* connectAllProfiles= */ true);
+    }
+
+    @Test
+    public void deviceConnected_connectionButtonShowsDisconnect() {
+        when(mCachedDevice.isConnected()).thenReturn(true);
+        mFragmentController.setup();
+
+        assertThat(findConnectionButton(mFragment.requireActivity()).getText()).isEqualTo(
+                mContext.getString(R.string.disconnect));
+    }
+
+    @Test
+    public void deviceNotConnected_connectionButtonShowsConnect() {
+        when(mCachedDevice.isConnected()).thenReturn(false);
+        mFragmentController.setup();
+
+        assertThat(findConnectionButton(mFragment.requireActivity()).getText()).isEqualTo(
+                mContext.getString(R.string.connect));
+    }
+
+    @Test
+    public void deviceBusy_connectionButtonDisabled() {
+        when(mCachedDevice.isBusy()).thenReturn(true);
+        mFragmentController.setup();
+
+        assertThat(findConnectionButton(mFragment.requireActivity()).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void deviceNotBusy_connectionButtonEnabled() {
+        when(mCachedDevice.isBusy()).thenReturn(false);
+        mFragmentController.setup();
+
+        assertThat(findConnectionButton(mFragment.requireActivity()).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onStart_listensForDeviceAttributesChanges() {
+        mFragmentController.create().start();
+
+        verify(mCachedDevice).registerCallback(any(CachedBluetoothDevice.Callback.class));
+    }
+
+    @Test
+    public void onStop_stopsListeningForDeviceAttributeChanges() {
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mFragmentController.create().start();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        mFragmentController.stop();
+
+        verify(mCachedDevice).unregisterCallback(callbackCaptor.getValue());
+    }
+
+    @Test
+    public void deviceAttributesChanged_updatesConnectionButtonState() {
+        when(mCachedDevice.isBusy()).thenReturn(true);
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mFragmentController.create().start();
+        assertThat(findConnectionButton(mFragment.requireActivity()).isEnabled()).isFalse();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        when(mCachedDevice.isBusy()).thenReturn(false);
+        callbackCaptor.getValue().onDeviceAttributesChanged();
+
+        assertThat(findConnectionButton(mFragment.requireActivity()).isEnabled()).isTrue();
+    }
+
+    private Button findForgetButton(Activity activity) {
+        return activity.findViewById(R.id.action_button2);
+    }
+
+    private Button findConnectionButton(Activity activity) {
+        return activity.findViewById(R.id.action_button1);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
new file mode 100644
index 0000000..09790b0
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.StringJoiner;
+
+/** Unit test for {@link BluetoothDeviceNamePreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothDeviceNamePreferenceControllerTest {
+
+    @Mock
+    private CachedBluetoothDevice mDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<BluetoothDeviceNamePreferenceController>
+            mControllerHelper;
+    private BluetoothDeviceNamePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
+                null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        // Make sure controller is available.
+        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mPreference = new Preference(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                BluetoothDeviceNamePreferenceController.class);
+        mController = mControllerHelper.getController();
+        mController.setCachedDevice(mDevice);
+        mControllerHelper.setPreference(mPreference);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void refreshUi_setsDeviceNameAsTitle() {
+        String name = "name";
+        when(mDevice.getName()).thenReturn(name);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getTitle()).isEqualTo(name);
+    }
+
+    @Test
+    public void refreshUi_setsCarConnectionSummaryAsSummary() {
+        String summary = "summary";
+        when(mDevice.getCarConnectionSummary()).thenReturn(summary);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(summary);
+    }
+
+    @Test
+    public void refreshUi_setsIcon() {
+        when(mDevice.getBtClass()).thenReturn(
+                new BluetoothClass(BluetoothClass.Device.Major.PHONE));
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getIcon()).isNotNull();
+    }
+
+    @Test
+    public void refreshUi_hearingAidDevice_setsBatteryStatusesAsSummary() {
+        String summary = "summary";
+        when(mDevice.getCarConnectionSummary()).thenReturn(summary);
+        String otherSummary = "other summary";
+        when(mCachedDeviceManager.getSubDeviceSummary(mDevice)).thenReturn("other summary");
+
+        mController.refreshUi();
+
+        String expected = new StringJoiner(System.lineSeparator()).add(summary).add(
+                otherSummary).toString();
+        assertThat(mPreference.getSummary()).isEqualTo(expected);
+    }
+
+    @Test
+    public void preferenceClicked_launchesRenameDialog() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mPreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(RemoteRenameDialogFragment.class), eq(RemoteRenameDialogFragment.TAG));
+    }
+
+    @Test
+    public void preferenceClicked_handled() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        assertThat(
+                mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference)).isTrue();
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java
new file mode 100644
index 0000000..d6c877b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerFragmentTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2019 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.Activity;
+import android.content.Context;
+import android.view.View;
+import android.widget.ProgressBar;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link BluetoothDevicePickerFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothDevicePickerFragmentTest {
+
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private FragmentController<BluetoothDevicePickerFragment> mFragmentController;
+    private BluetoothDevicePickerFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
+                null);
+
+        mFragment = new BluetoothDevicePickerFragment();
+        mFragmentController = FragmentController.of(mFragment);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void onStart_setsBluetoothManagerForegroundActivity() {
+        mFragmentController.create().start();
+
+        assertThat(mLocalBluetoothManager.getForegroundActivity()).isEqualTo(
+                mFragment.requireActivity());
+    }
+
+    @Test
+    public void onStart_showsProgressBar() {
+        mFragmentController.create();
+        ProgressBar progressBar = findProgressBar(mFragment.requireActivity());
+        progressBar.setVisibility(View.GONE);
+
+        mFragmentController.start();
+
+        assertThat(progressBar.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void onStop_clearsBluetoothManagerForegroundActivity() {
+        mFragmentController.create().start().resume().pause().stop();
+
+        assertThat(mLocalBluetoothManager.getForegroundActivity()).isNull();
+    }
+
+    @Test
+    public void onStop_hidesProgressBar() {
+        mFragmentController.setup().onPause();
+        ProgressBar progressBar = findProgressBar(mFragment.requireActivity());
+        progressBar.setVisibility(View.VISIBLE);
+
+        mFragmentController.stop();
+
+        assertThat(progressBar.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    private ProgressBar findProgressBar(Activity activity) {
+        return activity.findViewById(R.id.progress_bar);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerPreferenceControllerTest.java
new file mode 100644
index 0000000..1c4934a4
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePickerPreferenceControllerTest.java
@@ -0,0 +1,311 @@
+/*
+ * Copyright 2019 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothDevicePicker;
+import android.bluetooth.BluetoothUuid;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.os.ParcelUuid;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.Arrays;
+
+/** Unit test for {@link BluetoothDevicePickerPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothDevicePickerPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private CachedBluetoothDevice mUnbondedCachedDevice;
+    @Mock
+    private BluetoothDevice mUnbondedDevice;
+    @Mock
+    private CachedBluetoothDevice mBondedCachedDevice;
+    @Mock
+    private BluetoothDevice mBondedDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<BluetoothDevicePickerPreferenceController>
+            mControllerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Context context = RuntimeEnvironment.application;
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
+                null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        when(mUnbondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        when(mUnbondedCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        when(mUnbondedCachedDevice.getDevice()).thenReturn(mUnbondedDevice);
+        when(mBondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+        when(mBondedCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+        when(mBondedCachedDevice.getDevice()).thenReturn(mBondedDevice);
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Arrays.asList(mUnbondedCachedDevice, mBondedCachedDevice));
+        // Make bonded device appear first in the list.
+        when(mBondedCachedDevice.compareTo(mUnbondedCachedDevice)).thenReturn(-1);
+        when(mUnbondedCachedDevice.compareTo(mBondedCachedDevice)).thenReturn(1);
+
+        // Make sure controller is available.
+        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                BluetoothDevicePickerPreferenceController.class);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void checkInitialized_noLaunchIntentSet_throwsIllegalStateException() {
+        assertThrows(IllegalStateException.class,
+                () -> mControllerHelper.setPreference(mPreferenceGroup));
+    }
+
+    @Test
+    public void onStart_appliesFilterType() {
+        // Setup device to pass the filter.
+        when(mBondedDevice.getUuids()).thenReturn(new ParcelUuid[]{BluetoothUuid.AudioSink});
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ false,
+                BluetoothDevicePicker.FILTER_TYPE_AUDIO, "test.package", "TestClass");
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(((BluetoothDevicePreference) mPreferenceGroup.getPreference(
+                0)).getCachedDevice()).isEqualTo(mBondedCachedDevice);
+    }
+
+    @Test
+    public void onDeviceClicked_bondedDevice_sendsPickedIntent() {
+        ComponentName component = new ComponentName("test.package", "TestClass");
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ true,
+                BluetoothDevicePicker.FILTER_TYPE_ALL, component.getPackageName(),
+                component.getClassName());
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        assertThat(ShadowApplication.getInstance().getBroadcastIntents()).hasSize(1);
+        Intent pickedIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(pickedIntent.getAction()).isEqualTo(
+                BluetoothDevicePicker.ACTION_DEVICE_SELECTED);
+        assertThat(pickedIntent.getComponent()).isEqualTo(component);
+        assertThat((BluetoothDevice) pickedIntent.getParcelableExtra(
+                BluetoothDevice.EXTRA_DEVICE)).isEqualTo(mBondedDevice);
+    }
+
+    @Test
+    public void onDeviceClicked_bondedDevice_goesBack() {
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ true,
+                BluetoothDevicePicker.FILTER_TYPE_ALL, "test.package", "TestClass");
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).goBack();
+    }
+
+    @Test
+    public void onDeviceClicked_unbondedDevice_doesNotNeedAuth_sendsPickedIntent() {
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ false,
+                BluetoothDevicePicker.FILTER_TYPE_ALL, "test.package", "TestClass");
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(1);
+
+        devicePreference.performClick();
+
+        Intent pickedIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(pickedIntent.getAction()).isEqualTo(
+                BluetoothDevicePicker.ACTION_DEVICE_SELECTED);
+    }
+
+    @Test
+    public void onDeviceClicked_unbondedDevice_needsAuth_startsPairing() {
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ true,
+                BluetoothDevicePicker.FILTER_TYPE_ALL, "test.package", "TestClass");
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(1);
+
+        devicePreference.performClick();
+
+        verify(mUnbondedCachedDevice).startPairing();
+    }
+
+    @Test
+    public void onDeviceClicked_unbondedDevice_needsAuth_pairingStartFails_resumesScanning() {
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ true,
+                BluetoothDevicePicker.FILTER_TYPE_ALL, "test.package", "TestClass");
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(1);
+        when(mUnbondedCachedDevice.startPairing()).thenReturn(false);
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+
+        devicePreference.performClick();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+    }
+
+    @Test
+    public void onDeviceBondStateChanged_selectedDeviceBonded_sendsPickedIntent() {
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ true,
+                BluetoothDevicePicker.FILTER_TYPE_ALL, "test.package", "TestClass");
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(1);
+
+        // Select device.
+        devicePreference.performClick();
+        // Device bonds.
+        mControllerHelper.getController().onDeviceBondStateChanged(
+                devicePreference.getCachedDevice(), BluetoothDevice.BOND_BONDED);
+
+        Intent pickedIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(pickedIntent.getAction()).isEqualTo(
+                BluetoothDevicePicker.ACTION_DEVICE_SELECTED);
+    }
+
+    @Test
+    public void onDeviceBondStateChanged_selectedDeviceBonded_goesBack() {
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ true,
+                BluetoothDevicePicker.FILTER_TYPE_ALL, "test.package", "TestClass");
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(1);
+
+        // Select device.
+        devicePreference.performClick();
+        // Device bonds.
+        mControllerHelper.getController().onDeviceBondStateChanged(
+                devicePreference.getCachedDevice(), BluetoothDevice.BOND_BONDED);
+
+        verify(mControllerHelper.getMockFragmentController()).goBack();
+    }
+
+    @Test
+    public void onDestroy_noDeviceSelected_sendsNullPickedIntent() {
+        Intent launchIntent = createLaunchIntent(/* needsAuth= */ true,
+                BluetoothDevicePicker.FILTER_TYPE_ALL, "test.package", "TestClass");
+        mControllerHelper.getController().setLaunchIntent(launchIntent);
+        mControllerHelper.setPreference(mPreferenceGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        Intent pickedIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(pickedIntent.getAction()).isEqualTo(
+                BluetoothDevicePicker.ACTION_DEVICE_SELECTED);
+        assertThat((BluetoothDevice) pickedIntent.getParcelableExtra(
+                BluetoothDevice.EXTRA_DEVICE)).isNull();
+    }
+
+    private Intent createLaunchIntent(boolean needAuth, int filterType, String packageName,
+            String className) {
+        Intent intent = new Intent(BluetoothDevicePicker.ACTION_LAUNCH);
+        intent.putExtra(BluetoothDevicePicker.EXTRA_NEED_AUTH, needAuth);
+        intent.putExtra(BluetoothDevicePicker.EXTRA_FILTER_TYPE, filterType);
+        intent.putExtra(BluetoothDevicePicker.EXTRA_LAUNCH_PACKAGE, packageName);
+        intent.putExtra(BluetoothDevicePicker.EXTRA_LAUNCH_CLASS, className);
+        return intent;
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceControllerTest.java
new file mode 100644
index 0000000..d79578e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceControllerTest.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link BluetoothDevicePreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothDevicePreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private CachedBluetoothDevice mDevice;
+    private Context mContext;
+    private PreferenceControllerTestHelper<TestBluetoothDevicePreferenceController>
+            mControllerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+
+        // Make sure controller is available.
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestBluetoothDevicePreferenceController.class);
+        mControllerHelper.getController().setCachedDevice(mDevice);
+        mControllerHelper.setPreference(new Preference(mContext));
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void setPreference_deviceNotSet_throwsIllegalStateException() {
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestBluetoothDevicePreferenceController.class);
+        assertThrows(IllegalStateException.class,
+                () -> mControllerHelper.setPreference(new Preference(mContext)));
+    }
+
+    @Test
+    public void getAvailabilityStatus_disallowConfigBluetooth_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+                DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void onStart_registersDeviceCallback() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        verify(mDevice).registerCallback(any(CachedBluetoothDevice.Callback.class));
+    }
+
+    @Test
+    public void onStop_unregistersDeviceCallback() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        verify(mDevice).registerCallback(callbackCaptor.capture());
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        verify(mDevice).unregisterCallback(callbackCaptor.getValue());
+    }
+
+    @Test
+    public void started_onDeviceAttributesChanged_refreshesUi() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        verify(mDevice).registerCallback(callbackCaptor.capture());
+        // onCreate, onStart.
+        assertThat(mControllerHelper.getController().getUpdateStateCallCount()).isEqualTo(2);
+
+        callbackCaptor.getValue().onDeviceAttributesChanged();
+
+        // onCreate, onStart, callback.
+        assertThat(mControllerHelper.getController().getUpdateStateCallCount()).isEqualTo(3);
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+
+    /** Concrete impl of {@link BluetoothDevicePreferenceController} for testing. */
+    private static class TestBluetoothDevicePreferenceController extends
+            BluetoothDevicePreferenceController<Preference> {
+
+        private int mUpdateStateCallCount;
+
+        TestBluetoothDevicePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<Preference> getPreferenceType() {
+            return Preference.class;
+        }
+
+        @Override
+        protected void updateState(Preference preference) {
+            mUpdateStateCallCount++;
+        }
+
+        int getUpdateStateCallCount() {
+            return mUpdateStateCallCount;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java
new file mode 100644
index 0000000..b3003f6
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicePreferenceTest.java
@@ -0,0 +1,218 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothClass;
+import android.content.Context;
+import android.os.SystemProperties;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link BluetoothDevicePreference}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class BluetoothDevicePreferenceTest {
+
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    private Context mContext;
+    private BluetoothDevicePreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mPreference = new BluetoothDevicePreference(mContext, mCachedDevice);
+    }
+
+    @Test
+    public void actionIsHiddenByDefault() {
+        assertThat(mPreference.isActionShown()).isFalse();
+    }
+
+    @Test
+    public void onAttached_registersDeviceCallback() {
+        mPreference.onAttached();
+
+        verify(mCachedDevice).registerCallback(any(CachedBluetoothDevice.Callback.class));
+    }
+
+    @Test
+    public void onAttached_setsDeviceNameAsTitle() {
+        String name = "name";
+        when(mCachedDevice.getName()).thenReturn(name);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.getTitle()).isEqualTo(name);
+    }
+
+    @Test
+    public void onAttached_setsCarConnectionSummaryAsSummary() {
+        String summary = "summary";
+        when(mCachedDevice.getCarConnectionSummary()).thenReturn(summary);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.getSummary()).isEqualTo(summary);
+    }
+
+    @Test
+    public void onAttached_setsIcon() {
+        when(mCachedDevice.getBtClass()).thenReturn(
+                new BluetoothClass(BluetoothClass.Device.Major.PHONE));
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.getIcon()).isNotNull();
+    }
+
+    @Test
+    public void onAttached_deviceNotBusy_setsEnabled() {
+        when(mCachedDevice.isBusy()).thenReturn(false);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onAttached_deviceBusy_setsNotEnabled() {
+        when(mCachedDevice.isBusy()).thenReturn(true);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onAttached_deviceNameNotHumanReadable_setsHidden() {
+        when(mCachedDevice.hasHumanReadableName()).thenReturn(false);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void onAttached_deviceNameNotHumanReadable_showWithoutNamesTrue_setsShown() {
+        SystemProperties.set("persist.bluetooth.showdeviceswithoutnames", Boolean.TRUE.toString());
+        when(mCachedDevice.hasHumanReadableName()).thenReturn(false);
+        mPreference = new BluetoothDevicePreference(mContext, mCachedDevice);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void onDetached_unregistersDeviceCallback() {
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mPreference.onAttached();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        mPreference.onDetached();
+
+        verify(mCachedDevice).unregisterCallback(callbackCaptor.getValue());
+    }
+
+    @Test
+    public void onDeviceAttributesChanged_refreshesUi() {
+        String name = "name";
+        when(mCachedDevice.getName()).thenReturn(name);
+        String summary = "summary";
+        when(mCachedDevice.getCarConnectionSummary()).thenReturn(summary);
+        when(mCachedDevice.isBusy()).thenReturn(false);
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mPreference.onAttached();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        assertThat(mPreference.getTitle()).isEqualTo(name);
+        assertThat(mPreference.getSummary()).isEqualTo(summary);
+        assertThat(mPreference.isEnabled()).isTrue();
+
+        String updatedName = "updatedName";
+        when(mCachedDevice.getName()).thenReturn(updatedName);
+        String updatedSummary = "updatedSummary";
+        when(mCachedDevice.getCarConnectionSummary()).thenReturn(updatedSummary);
+        when(mCachedDevice.isBusy()).thenReturn(true);
+
+        callbackCaptor.getValue().onDeviceAttributesChanged();
+
+        assertThat(mPreference.getTitle()).isEqualTo(updatedName);
+        assertThat(mPreference.getSummary()).isEqualTo(updatedSummary);
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void equals_devicesEqual_returnsTrue() {
+        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
+                mCachedDevice);
+
+        assertThat(mPreference.equals(otherPreference)).isTrue();
+    }
+
+    @Test
+    public void equals_devicesNotEqual_returnsFalse() {
+        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
+                mock(CachedBluetoothDevice.class));
+
+        assertThat(mPreference.equals(otherPreference)).isFalse();
+    }
+
+    @Test
+    public void compareTo_sameType_usesDeviceCompareTo() {
+        CachedBluetoothDevice otherDevice = mock(CachedBluetoothDevice.class);
+        BluetoothDevicePreference otherPreference = new BluetoothDevicePreference(mContext,
+                otherDevice);
+        when(mCachedDevice.compareTo(otherDevice)).thenReturn(1);
+        when(otherDevice.compareTo(mCachedDevice)).thenReturn(-1);
+
+        assertThat(mPreference.compareTo(otherPreference)).isEqualTo(1);
+        assertThat(otherPreference.compareTo(mPreference)).isEqualTo(-1);
+    }
+
+    @Test
+    public void compareTo_differentType_fallsBackToDefaultCompare() {
+        mPreference.setOrder(1);
+        Preference otherPreference = new Preference(mContext);
+        otherPreference.setOrder(2);
+
+        assertThat(mPreference.compareTo(otherPreference)).isEqualTo(-1);
+        verify(mCachedDevice, never()).compareTo(any());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilePreferenceTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilePreferenceTest.java
new file mode 100644
index 0000000..5d04587
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilePreferenceTest.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.bluetooth.BluetoothProfile.STATE_CONNECTED;
+import static android.bluetooth.BluetoothProfile.STATE_DISCONNECTED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+import com.android.settingslib.bluetooth.PanProfile;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class BluetoothDeviceProfilePreferenceTest {
+
+    @Mock
+    private LocalBluetoothProfile mProfile;
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    private BluetoothDevice mDevice;
+    private Context mContext;
+    private BluetoothDeviceProfilePreference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice("00:11:22:33:AA:BB");
+        when(mCachedDevice.getDevice()).thenReturn(mDevice);
+        when(mProfile.toString()).thenReturn("key");
+        when(mProfile.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        mPreference = new BluetoothDeviceProfilePreference(mContext, mProfile, mCachedDevice);
+    }
+
+    @Test
+    public void onConstruction_setsProfileStringAsKey() {
+        assertThat(mPreference.getKey()).isEqualTo(mProfile.toString());
+    }
+
+    @Test
+    public void onConstruction_setsProfileNameAsTitle() {
+        assertThat(mPreference.getTitle()).isEqualTo(mContext.getString(R.string.bt_profile_name));
+    }
+
+    @Test
+    public void onAttached_registersDeviceCallback() {
+        mPreference.onAttached();
+
+        verify(mCachedDevice).registerCallback(any(CachedBluetoothDevice.Callback.class));
+    }
+
+    @Test
+    public void onAttached_deviceNotBusy_setsEnabled() {
+        when(mCachedDevice.isBusy()).thenReturn(false);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onAttached_deviceBusy_setsNotEnabled() {
+        when(mCachedDevice.isBusy()).thenReturn(true);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onAttached_preferred_setsChecked() {
+        when(mProfile.isPreferred(mDevice)).thenReturn(true);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onAttached_notPreferred_setsUnchecked() {
+        when(mProfile.isPreferred(mDevice)).thenReturn(false);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onAttached_panProfile_connected_setsChecked() {
+        mProfile = mock(PanProfile.class);
+        when(mProfile.getConnectionStatus(mDevice)).thenReturn(STATE_CONNECTED);
+        when(mProfile.toString()).thenReturn("key");
+        when(mProfile.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        mPreference = new BluetoothDeviceProfilePreference(mContext, mProfile, mCachedDevice);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onAttached_panProfile_notConnected_setsUnchecked() {
+        mProfile = mock(PanProfile.class);
+        when(mProfile.getConnectionStatus(mDevice)).thenReturn(STATE_DISCONNECTED);
+        when(mProfile.toString()).thenReturn("key");
+        when(mProfile.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        mPreference = new BluetoothDeviceProfilePreference(mContext, mProfile, mCachedDevice);
+
+        mPreference.onAttached();
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onDeviceAttributesChanged_refreshesUi() {
+        when(mProfile.isPreferred(mDevice)).thenReturn(false);
+        when(mCachedDevice.isBusy()).thenReturn(false);
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mPreference.onAttached();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        assertThat(mPreference.isEnabled()).isTrue();
+        assertThat(mPreference.isChecked()).isFalse();
+
+        when(mProfile.isPreferred(mDevice)).thenReturn(true);
+        when(mCachedDevice.isBusy()).thenReturn(true);
+
+        callbackCaptor.getValue().onDeviceAttributesChanged();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onDetached_unregistersDeviceCallback() {
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        mPreference.onAttached();
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        mPreference.onDetached();
+
+        verify(mCachedDevice).unregisterCallback(callbackCaptor.getValue());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilesPreferenceControllerTest.java
new file mode 100644
index 0000000..31ecd21
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceProfilesPreferenceControllerTest.java
@@ -0,0 +1,226 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+/** Unit test for {@link BluetoothDeviceProfilesPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothDeviceProfilesPreferenceControllerTest {
+
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    private BluetoothDevice mDevice;
+    private PreferenceGroup mPreferenceGroup;
+    private BluetoothDeviceProfilesPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        mDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice("00:11:22:33:AA:BB");
+        when(mCachedDevice.getDevice()).thenReturn(mDevice);
+
+        // Make sure controller is available.
+        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mPreferenceGroup = new PreferenceCategory(context);
+        PreferenceControllerTestHelper<BluetoothDeviceProfilesPreferenceController>
+                controllerHelper = new PreferenceControllerTestHelper<>(context,
+                BluetoothDeviceProfilesPreferenceController.class);
+        mController = controllerHelper.getController();
+        mController.setCachedDevice(mCachedDevice);
+        controllerHelper.setPreference(mPreferenceGroup);
+        controllerHelper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void refreshUi_addsNewProfiles() {
+        LocalBluetoothProfile profile1 = mock(LocalBluetoothProfile.class);
+        when(profile1.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        when(mCachedDevice.getProfiles()).thenReturn(Collections.singletonList(profile1));
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        LocalBluetoothProfile profile2 = mock(LocalBluetoothProfile.class);
+        when(profile2.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        when(mCachedDevice.getProfiles()).thenReturn(Arrays.asList(profile1, profile2));
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+        BluetoothDeviceProfilePreference profilePreference =
+                (BluetoothDeviceProfilePreference) mPreferenceGroup.getPreference(1);
+        assertThat(profilePreference.getProfile()).isEqualTo(profile2);
+    }
+
+    @Test
+    public void refreshUi_removesRemovedProfiles() {
+        LocalBluetoothProfile profile1 = mock(LocalBluetoothProfile.class);
+        when(profile1.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        LocalBluetoothProfile profile2 = mock(LocalBluetoothProfile.class);
+        when(profile2.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        when(mCachedDevice.getProfiles()).thenReturn(Arrays.asList(profile1, profile2));
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        when(mCachedDevice.getProfiles()).thenReturn(Collections.singletonList(profile2));
+        when(mCachedDevice.getRemovedProfiles()).thenReturn(Collections.singletonList(profile1));
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDeviceProfilePreference profilePreference =
+                (BluetoothDeviceProfilePreference) mPreferenceGroup.getPreference(0);
+        assertThat(profilePreference.getProfile()).isEqualTo(profile2);
+    }
+
+    @Test
+    public void refreshUi_profiles_showsPreference() {
+        LocalBluetoothProfile profile = mock(LocalBluetoothProfile.class);
+        when(profile.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        when(mCachedDevice.getProfiles()).thenReturn(Collections.singletonList(profile));
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_noProfiles_hidesPreference() {
+        when(mCachedDevice.getProfiles()).thenReturn(Collections.emptyList());
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void profileChecked_setsProfilePreferred() {
+        LocalBluetoothProfile profile = mock(LocalBluetoothProfile.class);
+        when(profile.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        when(mCachedDevice.getProfiles()).thenReturn(Collections.singletonList(profile));
+        mController.refreshUi();
+        BluetoothDeviceProfilePreference profilePreference =
+                (BluetoothDeviceProfilePreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(profilePreference.isChecked()).isFalse();
+        profilePreference.performClick();
+
+        verify(profile).setPreferred(mDevice, true);
+    }
+
+    @Test
+    public void profileChecked_connectsToProfile() {
+        LocalBluetoothProfile profile = mock(LocalBluetoothProfile.class);
+        when(profile.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        when(mCachedDevice.getProfiles()).thenReturn(Collections.singletonList(profile));
+        mController.refreshUi();
+        BluetoothDeviceProfilePreference profilePreference =
+                (BluetoothDeviceProfilePreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(profilePreference.isChecked()).isFalse();
+        profilePreference.performClick();
+
+        verify(mCachedDevice).connectProfile(profile);
+    }
+
+    @Test
+    public void profileUnchecked_setsProfileNotPreferred() {
+        LocalBluetoothProfile profile = mock(LocalBluetoothProfile.class);
+        when(profile.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        when(profile.isPreferred(mDevice)).thenReturn(true);
+        when(mCachedDevice.getProfiles()).thenReturn(Collections.singletonList(profile));
+        mController.refreshUi();
+        BluetoothDeviceProfilePreference profilePreference =
+                (BluetoothDeviceProfilePreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(profilePreference.isChecked()).isTrue();
+        profilePreference.performClick();
+
+        verify(profile).setPreferred(mDevice, false);
+    }
+
+    @Test
+    public void profileUnchecked_disconnectsFromProfile() {
+        LocalBluetoothProfile profile = mock(LocalBluetoothProfile.class);
+        when(profile.getNameResource(mDevice)).thenReturn(R.string.bt_profile_name);
+        when(profile.isPreferred(mDevice)).thenReturn(true);
+        when(mCachedDevice.getProfiles()).thenReturn(Collections.singletonList(profile));
+        mController.refreshUi();
+        BluetoothDeviceProfilePreference profilePreference =
+                (BluetoothDeviceProfilePreference) mPreferenceGroup.getPreference(0);
+
+        assertThat(profilePreference.isChecked()).isTrue();
+        profilePreference.performClick();
+
+        verify(mCachedDevice).disconnect(profile);
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceControllerTest.java
new file mode 100644
index 0000000..da7406f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDevicesGroupPreferenceControllerTest.java
@@ -0,0 +1,319 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+/** Unit test for {@link BluetoothDevicesGroupPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothDevicesGroupPreferenceControllerTest {
+
+    @Mock
+    private BluetoothDeviceFilter.Filter mFilter;
+    @Mock
+    private CachedBluetoothDevice mCachedDevice1;
+    @Mock
+    private CachedBluetoothDevice mCachedDevice2;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private BluetoothDevice mDevice1;
+    private PreferenceGroup mPreferenceGroup;
+    private TestBluetoothDevicesGroupPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
+                null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        mDevice1 = BluetoothAdapter.getDefaultAdapter().getRemoteDevice("00:11:22:33:AA:BB");
+        when(mCachedDevice1.getDevice()).thenReturn(mDevice1);
+        BluetoothDevice device2 = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(
+                "BB:AA:33:22:11:00");
+        when(mCachedDevice2.getDevice()).thenReturn(device2);
+
+        // Make sure controller is available.
+        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mPreferenceGroup = new PreferenceCategory(context);
+        PreferenceControllerTestHelper<TestBluetoothDevicesGroupPreferenceController>
+                controllerHelper = new PreferenceControllerTestHelper<>(context,
+                TestBluetoothDevicesGroupPreferenceController.class);
+        mController = controllerHelper.getController();
+        mController.setDeviceFilter(mFilter);
+        controllerHelper.setPreference(mPreferenceGroup);
+        controllerHelper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void refreshUi_filterMatch_addsToGroup() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice1));
+        when(mFilter.matches(mDevice1)).thenReturn(true);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(devicePreference.getCachedDevice()).isEqualTo(mCachedDevice1);
+    }
+
+    @Test
+    public void refreshUi_filterMatch_addsToPreferenceMap() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice1));
+        when(mFilter.matches(mDevice1)).thenReturn(true);
+
+        mController.refreshUi();
+
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(mController.getPreferenceMap()).containsEntry(devicePreference.getCachedDevice(),
+                devicePreference);
+    }
+
+    @Test
+    public void refreshUi_filterMismatch_removesFromGroup() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice1));
+        when(mFilter.matches(mDevice1)).thenReturn(true);
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(devicePreference.getCachedDevice()).isEqualTo(mCachedDevice1);
+
+        when(mFilter.matches(mDevice1)).thenReturn(false);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_filterMismatch_removesFromPreferenceMap() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice1));
+        when(mFilter.matches(mDevice1)).thenReturn(true);
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(devicePreference.getCachedDevice()).isEqualTo(mCachedDevice1);
+
+        when(mFilter.matches(mDevice1)).thenReturn(false);
+        mController.refreshUi();
+
+        assertThat(mController.getPreferenceMap()).doesNotContainKey(mCachedDevice1);
+    }
+
+    @Test
+    public void refreshUi_noDevices_hidesGroup() {
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_devices_showsGroup() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice1));
+        when(mFilter.matches(mDevice1)).thenReturn(true);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isTrue();
+    }
+
+    @Test
+    public void onBluetoothStateChanged_turningOff_clearsPreferences() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice1));
+        when(mFilter.matches(mDevice1)).thenReturn(true);
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+
+        mController.onBluetoothStateChanged(BluetoothAdapter.STATE_TURNING_OFF);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+        assertThat(mController.getPreferenceMap()).isEmpty();
+    }
+
+    @Test
+    public void onDeviceAdded_refreshesUi() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice1));
+        when(mFilter.matches(mDevice1)).thenReturn(true);
+
+        mController.onDeviceAdded(mCachedDevice1);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(devicePreference.getCachedDevice()).isEqualTo(mCachedDevice1);
+    }
+
+    @Test
+    public void onDeviceDeleted_refreshesUi() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Arrays.asList(mCachedDevice1, mCachedDevice2));
+        when(mFilter.matches(any(BluetoothDevice.class))).thenReturn(true);
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice2));
+        mController.onDeviceDeleted(mCachedDevice1);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(devicePreference.getCachedDevice()).isEqualTo(mCachedDevice2);
+    }
+
+    @Test
+    public void onDeviceDeleted_lastDevice_hidesGroup() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice1));
+        when(mFilter.matches(any(BluetoothDevice.class))).thenReturn(true);
+        mController.refreshUi();
+
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(Collections.emptyList());
+        mController.onDeviceDeleted(mCachedDevice1);
+
+        assertThat(mPreferenceGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void preferenceClicked_callsOnDeviceClicked() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Arrays.asList(mCachedDevice1, mCachedDevice2));
+        when(mFilter.matches(any(BluetoothDevice.class))).thenReturn(true);
+        mController.refreshUi();
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(1);
+
+        devicePreference.performClick();
+
+        assertThat(mController.getClickedDevice()).isEqualTo(devicePreference.getCachedDevice());
+    }
+
+    @Test
+    public void preferenceClicked_handled() {
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Arrays.asList(mCachedDevice1, mCachedDevice2));
+        when(mFilter.matches(any(BluetoothDevice.class))).thenReturn(true);
+        mController.refreshUi();
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(1);
+
+        assertThat(devicePreference.getOnPreferenceClickListener().onPreferenceClick(
+                devicePreference)).isTrue();
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+
+    /** Concrete impl of {@link BluetoothDevicesGroupPreferenceController} for testing. */
+    private static class TestBluetoothDevicesGroupPreferenceController extends
+            BluetoothDevicesGroupPreferenceController {
+
+        private BluetoothDeviceFilter.Filter mFilter;
+        private CachedBluetoothDevice mClickedDevice;
+
+        TestBluetoothDevicesGroupPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected BluetoothDeviceFilter.Filter getDeviceFilter() {
+            return mFilter;
+        }
+
+        void setDeviceFilter(BluetoothDeviceFilter.Filter filter) {
+            mFilter = filter;
+        }
+
+        @Override
+        protected void onDeviceClicked(CachedBluetoothDevice cachedDevice) {
+            mClickedDevice = cachedDevice;
+        }
+
+        CachedBluetoothDevice getClickedDevice() {
+            return mClickedDevice;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragmentTest.java
new file mode 100644
index 0000000..1653461
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDisconnectConfirmDialogFragmentTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.AlertDialog;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.DialogInterface;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowDialog;
+import org.robolectric.util.ReflectionHelpers;
+
+/** Unit test for {@link BluetoothDisconnectConfirmDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothDisconnectConfirmDialogFragmentTest {
+
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private BluetoothDisconnectConfirmDialogFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(
+                RuntimeEnvironment.application, /* onInitCallback= */ null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        String address = "00:11:22:33:AA:BB";
+        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(address);
+        when(mCachedDeviceManager.findDevice(device)).thenReturn(mCachedDevice);
+        when(mCachedDevice.getAddress()).thenReturn(address);
+        when(mCachedDevice.isConnected()).thenReturn(true);
+
+        mFragment = BluetoothDisconnectConfirmDialogFragment.newInstance(mCachedDevice);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void confirmDisconnect_disconnectsFromDevice() {
+        AlertDialog dialog = showDialog(mFragment);
+
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        verify(mCachedDevice).disconnect();
+    }
+
+    @Test
+    public void deviceNoLongerConnected_dismiss() {
+        ArgumentCaptor<CachedBluetoothDevice.Callback> callbackCaptor = ArgumentCaptor.forClass(
+                CachedBluetoothDevice.Callback.class);
+        AlertDialog dialog = showDialog(mFragment);
+        verify(mCachedDevice).registerCallback(callbackCaptor.capture());
+
+        when(mCachedDevice.isConnected()).thenReturn(false);
+        callbackCaptor.getValue().onDeviceAttributesChanged();
+
+        assertThat(dialog.isShowing()).isFalse();
+    }
+
+    private AlertDialog showDialog(BluetoothDisconnectConfirmDialogFragment fragment) {
+        BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+        activity.showDialog(fragment, /* tag= */ null);
+        return (AlertDialog) ShadowDialog.getLatestDialog();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..64647f5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothEntryPreferenceControllerTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link BluetoothEntryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class BluetoothEntryPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private BluetoothEntryPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mController = new PreferenceControllerTestHelper<>(RuntimeEnvironment.application,
+                BluetoothEntryPreferenceController.class).getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_bluetoothAvailable_available() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(any())).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_bluetoothAvailable_disallowBluetooth_disabledForUser() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_bluetoothNotAvailable_unsupportedOnDevice() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothNamePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothNamePreferenceControllerTest.java
new file mode 100644
index 0000000..353c7a1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothNamePreferenceControllerTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link BluetoothNamePreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothNamePreferenceControllerTest {
+
+    private static final String NAME = "name";
+    private static final String NAME_UPDATED = "name updated";
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<BluetoothNamePreferenceController> mControllerHelper;
+    private BluetoothNamePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Context context = RuntimeEnvironment.application;
+
+        // Make sure controller is available.
+        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mPreference = new Preference(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                BluetoothNamePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void refreshUi_setsNameAsSummary() {
+        BluetoothAdapter.getDefaultAdapter().setName(NAME);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(NAME);
+    }
+
+    @Test
+    public void refreshUi_noUserRestrictions_setsSelectable() {
+        mController.refreshUi();
+
+        assertThat(mPreference.isSelectable()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_userHasConfigRestriction_setsNotSelectable() {
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)).thenReturn(true);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isSelectable()).isFalse();
+    }
+
+    @Test
+    public void started_localNameChangedBroadcast_updatesSummary() {
+        BluetoothAdapter.getDefaultAdapter().setName(NAME);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreference.getSummary()).isEqualTo(NAME);
+
+        BluetoothAdapter.getDefaultAdapter().setName(NAME_UPDATED);
+        RuntimeEnvironment.application.sendBroadcast(
+                new Intent(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED));
+
+        assertThat(mPreference.getSummary()).isEqualTo(NAME_UPDATED);
+    }
+
+    @Test
+    public void stopped_noUpdateOnLocalNameChangedBroadcast() {
+        BluetoothAdapter.getDefaultAdapter().setName(NAME);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreference.getSummary()).isEqualTo(NAME);
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        BluetoothAdapter.getDefaultAdapter().setName(NAME_UPDATED);
+        RuntimeEnvironment.application.sendBroadcast(
+                new Intent(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED));
+
+        assertThat(mPreference.getSummary()).isEqualTo(NAME);
+    }
+
+    @Test
+    public void preferenceClicked_launchesRenameDialog() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mPreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(LocalRenameDialogFragment.class), eq(LocalRenameDialogFragment.TAG));
+    }
+
+    @Test
+    public void preferenceClicked_handled() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        assertThat(
+                mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference)).isTrue();
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java
new file mode 100644
index 0000000..2073778
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragmentTest.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.app.Activity;
+import android.bluetooth.BluetoothDevice;
+import android.content.Context;
+import android.view.View;
+import android.widget.ProgressBar;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.BluetoothCallback;
+import com.android.settingslib.bluetooth.BluetoothEventManager;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+/** Unit test for {@link BluetoothPairingSelectionFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothPairingSelectionFragmentTest {
+
+    @Mock
+    private BluetoothEventManager mEventManager;
+    private BluetoothEventManager mSaveRealEventManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private FragmentController<BluetoothPairingSelectionFragment> mFragmentController;
+    private BluetoothPairingSelectionFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
+                null);
+        mSaveRealEventManager = mLocalBluetoothManager.getEventManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mEventManager", mEventManager);
+
+        mFragment = new BluetoothPairingSelectionFragment();
+        mFragmentController = FragmentController.of(mFragment);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mEventManager", mSaveRealEventManager);
+    }
+
+    @Test
+    public void onStart_setsBluetoothManagerForegroundActivity() {
+        mFragmentController.create().start();
+
+        assertThat(mLocalBluetoothManager.getForegroundActivity()).isEqualTo(
+                mFragment.requireActivity());
+    }
+
+    @Test
+    public void onStart_registersEventListener() {
+        mFragmentController.create().start();
+
+        verify(mEventManager).registerCallback(any(BluetoothCallback.class));
+    }
+
+    @Test
+    public void onStart_showsProgressBar() {
+        mFragmentController.create();
+        ProgressBar progressBar = findProgressBar(mFragment.requireActivity());
+        progressBar.setVisibility(View.GONE);
+
+        mFragmentController.start();
+
+        assertThat(progressBar.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void onStop_clearsBluetoothManagerForegroundActivity() {
+        mFragmentController.create().start().resume().pause().stop();
+
+        assertThat(mLocalBluetoothManager.getForegroundActivity()).isNull();
+    }
+
+    @Test
+    public void onStop_unregistersEventListener() {
+        ArgumentCaptor<BluetoothCallback> callbackCaptor = ArgumentCaptor.forClass(
+                BluetoothCallback.class);
+        mFragmentController.create().start().resume().pause().stop();
+
+        verify(mEventManager).registerCallback(callbackCaptor.capture());
+        verify(mEventManager).unregisterCallback(callbackCaptor.getValue());
+    }
+
+    @Test
+    public void onStop_hidesProgressBar() {
+        mFragmentController.setup().onPause();
+        ProgressBar progressBar = findProgressBar(mFragment.requireActivity());
+        progressBar.setVisibility(View.VISIBLE);
+
+        mFragmentController.stop();
+
+        assertThat(progressBar.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void onDeviceBondStateChanged_deviceBonded_goesBack() {
+        ArgumentCaptor<BluetoothCallback> callbackCaptor = ArgumentCaptor.forClass(
+                BluetoothCallback.class);
+        mFragmentController.setup();
+        verify(mEventManager).registerCallback(callbackCaptor.capture());
+
+        callbackCaptor.getValue().onDeviceBondStateChanged(mock(CachedBluetoothDevice.class),
+                BluetoothDevice.BOND_BONDED);
+
+        assertThat(
+                ((BaseTestActivity) mFragment.requireActivity()).getOnBackPressedFlag()).isTrue();
+    }
+
+    private ProgressBar findProgressBar(Activity activity) {
+        return activity.findViewById(R.id.progress_bar);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPreferenceControllerTest.java
new file mode 100644
index 0000000..c58f6b4
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothPreferenceControllerTest.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.bluetooth.BluetoothEventManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.util.ReflectionHelpers;
+
+/** Unit test for {@link BluetoothPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private BluetoothEventManager mEventManager;
+    private BluetoothEventManager mSaveRealEventManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private PreferenceControllerTestHelper<TestBluetoothPreferenceController> mControllerHelper;
+    private TestBluetoothPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Context context = RuntimeEnvironment.application;
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
+                null);
+        mSaveRealEventManager = mLocalBluetoothManager.getEventManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mEventManager", mEventManager);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                TestBluetoothPreferenceController.class, new Preference(context));
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mEventManager", mSaveRealEventManager);
+    }
+
+    @Test
+    public void getAvailabilityStatus_bluetoothNotAvailable_unsupportedOnDevice() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_disallowBluetoothUserRestriction_disabledForUser() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_adapterDisabled_conditionallyUnavailable() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().disable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_OFF);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_available() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+        // No user restrictions.
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void onStart_registersEventListener() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        verify(mEventManager).registerCallback(mController);
+    }
+
+    @Test
+    public void onStop_unregistersEventListener() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        verify(mEventManager).unregisterCallback(mController);
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+
+    /** Concrete impl of {@link BluetoothPreferenceController} for testing. */
+    private static class TestBluetoothPreferenceController extends
+            BluetoothPreferenceController<Preference> {
+
+        TestBluetoothPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<Preference> getPreferenceType() {
+            return Preference.class;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothRenameDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothRenameDialogFragmentTest.java
new file mode 100644
index 0000000..e7b8bc2
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothRenameDialogFragmentTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.shadows.ShadowDialog;
+
+/** Unit test for {@link BluetoothRenameDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class BluetoothRenameDialogFragmentTest {
+
+    private TestBluetoothRenameDialogFragment mFragment;
+    private AlertDialog mDialog;
+
+    @Before
+    public void setUp() {
+        BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+        mFragment = new TestBluetoothRenameDialogFragment();
+        activity.showDialog(mFragment, /* tag= */ null);
+        mDialog = (AlertDialog) ShadowDialog.getLatestDialog();
+    }
+
+    @Test
+    public void initialTextIsCurrentDeviceName() {
+        EditText editText = mDialog.findViewById(android.R.id.edit);
+
+        assertThat(editText.getText().toString()).isEqualTo(mFragment.getDeviceName());
+    }
+
+    @Test
+    public void softInputShown() {
+        InputMethodManager imm =
+                (InputMethodManager) RuntimeEnvironment.application.getSystemService(
+                        Context.INPUT_METHOD_SERVICE);
+        assertThat(Shadows.shadowOf(imm).isSoftInputVisible()).isTrue();
+    }
+
+    @Test
+    public void noUserInput_positiveButtonDisabled() {
+        assertThat(mDialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void userInput_positiveButtonEnabled() {
+        EditText editText = mDialog.findViewById(android.R.id.edit);
+        editText.append("1234");
+
+        assertThat(mDialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void userInput_emptyName_positiveButtonDisabled() {
+        EditText editText = mDialog.findViewById(android.R.id.edit);
+        editText.setText("");
+
+        assertThat(mDialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void nameUpdatedByCode_positiveButtonDisabled() {
+        EditText editText = mDialog.findViewById(android.R.id.edit);
+        editText.append("1234");
+
+        mFragment.updateDeviceName();
+
+        assertThat(mDialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void editorDoneAction_dismissesDialog() {
+        EditText editText = mDialog.findViewById(android.R.id.edit);
+
+        editText.onEditorAction(EditorInfo.IME_ACTION_DONE);
+
+        assertThat(mDialog.isShowing()).isFalse();
+    }
+
+    @Test
+    public void editorDoneAction_setsDeviceName() {
+        EditText editText = mDialog.findViewById(android.R.id.edit);
+        String editStr = "1234";
+        String expectedName = mFragment.getDeviceName() + editStr;
+
+        editText.append(editStr);
+        editText.onEditorAction(EditorInfo.IME_ACTION_DONE);
+
+        assertThat(mFragment.getDeviceName()).isEqualTo(expectedName);
+    }
+
+    @Test
+    public void editorDoneAction_emptyName_doesNotSetDeviceName() {
+        EditText editText = mDialog.findViewById(android.R.id.edit);
+        String expectedName = mFragment.getDeviceName();
+        String editStr = "";
+
+        editText.setText(editStr);
+        editText.onEditorAction(EditorInfo.IME_ACTION_DONE);
+
+        assertThat(mFragment.getDeviceName()).isEqualTo(expectedName);
+    }
+
+    @Test
+    public void positiveButtonClicked_setsDeviceName() {
+        EditText editText = mDialog.findViewById(android.R.id.edit);
+        String editStr = "1234";
+        String expectedName = mFragment.getDeviceName() + editStr;
+
+        editText.append(editStr);
+        mDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+
+        assertThat(mFragment.getDeviceName()).isEqualTo(expectedName);
+    }
+
+    /** Concrete impl of {@link BluetoothRenameDialogFragment} for testing. */
+    public static class TestBluetoothRenameDialogFragment extends BluetoothRenameDialogFragment {
+
+        private String mSetDeviceNameArg = "Device Name";
+
+        @Override
+        @StringRes
+        protected int getDialogTitle() {
+            return R.string.bt_rename_dialog_title;
+        }
+
+        @Nullable
+        @Override
+        protected String getDeviceName() {
+            return mSetDeviceNameArg;
+        }
+
+        @Override
+        protected void setDeviceName(String deviceName) {
+            mSetDeviceNameArg = deviceName;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivityTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivityTest.java
new file mode 100644
index 0000000..28477b3
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothRequestPermissionActivityTest.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2019 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowLocalBluetoothAdapter;
+import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowLocalBluetoothAdapter.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothRequestPermissionActivityTest {
+
+    private Context mContext;
+    private ActivityController<BluetoothRequestPermissionActivity> mActivityController;
+    private BluetoothRequestPermissionActivity mActivity;
+    private LocalBluetoothAdapter mAdapter;
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = RuntimeEnvironment.application;
+        mActivityController = ActivityController.of(new BluetoothRequestPermissionActivity());
+        mActivity = mActivityController.get();
+
+        mAdapter = LocalBluetoothManager.getInstance(mContext,
+                /* onInitCallback= */ null).getBluetoothAdapter();
+
+        // Make sure controller is available.
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+    }
+
+    @Test
+    public void onCreate_requestDisableIntent_hasDisableRequestType() {
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getRequestType()).isEqualTo(
+                BluetoothRequestPermissionActivity.REQUEST_DISABLE);
+    }
+
+    @Test
+    public void onCreate_requestDiscoverableIntent_hasDiscoverableRequestType() {
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getRequestType()).isEqualTo(
+                BluetoothRequestPermissionActivity.REQUEST_ENABLE_DISCOVERABLE);
+    }
+
+    @Test
+    public void onCreate_requestDiscoverableIntent_noTimeoutSpecified_hasDefaultTimeout() {
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getTimeout()).isEqualTo(
+                BluetoothRequestPermissionActivity.DEFAULT_DISCOVERABLE_TIMEOUT);
+    }
+
+    @Test
+    public void onCreate_requestDiscoverableIntent_timeoutSpecified_hasTimeout() {
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
+        intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
+                BluetoothRequestPermissionActivity.MAX_DISCOVERABLE_TIMEOUT);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getTimeout()).isEqualTo(
+                BluetoothRequestPermissionActivity.MAX_DISCOVERABLE_TIMEOUT);
+    }
+
+    @Test
+    public void onCreate_requestEnableIntent_hasEnableRequestType() {
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getRequestType()).isEqualTo(
+                BluetoothRequestPermissionActivity.REQUEST_ENABLE);
+    }
+
+    @Test
+    public void onCreate_bluetoothOff_requestDisableIntent_noDialog() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_OFF);
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getCurrentDialog()).isNull();
+    }
+
+    @Test
+    public void onCreate_bluetoothOn_requestDisableIntent_startsDialog() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getCurrentDialog()).isNotNull();
+        assertThat(mActivity.getCurrentDialog().isShowing()).isTrue();
+    }
+
+    @Test
+    public void onCreate_bluetoothOff_requestDiscoverableIntent_startsDialog() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_OFF);
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getCurrentDialog()).isNotNull();
+        assertThat(mActivity.getCurrentDialog().isShowing()).isTrue();
+    }
+
+    @Test
+    public void onCreate_bluetoothOn_requestDiscoverableIntent_startsDialog() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getCurrentDialog()).isNotNull();
+        assertThat(mActivity.getCurrentDialog().isShowing()).isTrue();
+    }
+
+    @Test
+    public void onCreate_bluetoothOff_requestEnableIntent_startsDialog() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_OFF);
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getCurrentDialog()).isNotNull();
+        assertThat(mActivity.getCurrentDialog().isShowing()).isTrue();
+    }
+
+    @Test
+    public void onCreate_bluetoothOn_requestEnableIntent_noDialog() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        assertThat(mActivity.getCurrentDialog()).isNull();
+    }
+
+    @Test
+    public void onPositiveClick_disableDialog_disables() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+        mAdapter.enable();
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        Button button = mActivity.getCurrentDialog().getButton(DialogInterface.BUTTON_POSITIVE);
+        button.performClick();
+
+        assertThat(mAdapter.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onPositiveClick_discoverableDialog_scanModeSet() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+        mAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE);
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        Button button = mActivity.getCurrentDialog().getButton(DialogInterface.BUTTON_POSITIVE);
+        button.performClick();
+
+        assertThat(mAdapter.getScanMode()).isEqualTo(
+                BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
+    }
+
+    @Test
+    public void onPositiveClick_enableDialog_enables() {
+        getShadowLocalBluetoothAdapter().setState(BluetoothAdapter.STATE_OFF);
+        mAdapter.disable();
+
+        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
+        mActivity.setIntent(intent);
+        mActivityController.create();
+
+        Button button = mActivity.getCurrentDialog().getButton(DialogInterface.BUTTON_POSITIVE);
+        button.performClick();
+
+        assertThat(mAdapter.isEnabled()).isTrue();
+    }
+
+    private ShadowLocalBluetoothAdapter getShadowLocalBluetoothAdapter() {
+        return (ShadowLocalBluetoothAdapter) Shadow.extract(mAdapter);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceControllerTest.java
new file mode 100644
index 0000000..3f62452
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothScanningDevicesGroupPreferenceControllerTest.java
@@ -0,0 +1,344 @@
+/*
+ * Copyright 2019 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.Collections;
+
+/** Unit test for {@link BluetoothScanningDevicesGroupPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothScanningDevicesGroupPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    @Mock
+    private BluetoothDevice mDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<TestBluetoothScanningDevicesGroupPreferenceController>
+            mControllerHelper;
+    private TestBluetoothScanningDevicesGroupPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(mContext, /* onInitCallback= */
+                null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        when(mCachedDevice.getDevice()).thenReturn(mDevice);
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Collections.singletonList(mCachedDevice));
+
+        // Make sure controller is available.
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestBluetoothScanningDevicesGroupPreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void disallowConfigBluetooth_doesNotStartScanning() {
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)).thenReturn(true);
+
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isFalse();
+        // User can't scan, but they can still see known devices.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onScanningStateChanged_scanningEnabled_receiveStopped_restartsScanning() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+
+        BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
+        mController.onScanningStateChanged(/* started= */ false);
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+    }
+
+    @Test
+    public void onScanningStateChanged_scanningDisabled_receiveStopped_doesNothing() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        // Set a device bonding to disable scanning.
+        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
+        mController.refreshUi();
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isFalse();
+
+        mController.onScanningStateChanged(/* started= */ false);
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isFalse();
+    }
+
+    @Test
+    public void onDeviceBondStateChanged_refreshesUi() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+
+        // Change state to bonding to cancel scanning on refresh.
+        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
+        when(mDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
+        mController.onDeviceBondStateChanged(mCachedDevice, BluetoothDevice.BOND_BONDING);
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isFalse();
+    }
+
+    @Test
+    public void onDeviceClicked_callsInternal() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        assertThat(mController.getLastClickedDevice()).isEquivalentAccordingToCompareTo(
+                devicePreference.getCachedDevice());
+    }
+
+    @Test
+    public void onDeviceClicked_cancelsScanning() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+
+        devicePreference.performClick();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_noDeviceBonding_startsScanning() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mController.refreshUi();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_noDeviceBonding_enablesGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_noDeviceBonding_setsScanModeConnectableDiscoverable() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mController.refreshUi();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().getScanMode()).isEqualTo(
+                BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
+    }
+
+    @Test
+    public void refreshUi_deviceBonding_stopsScanning() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
+
+        mController.refreshUi();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_deviceBonding_disablesGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_deviceBonding_setsScanModeConnectable() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        when(mCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDING);
+
+        mController.refreshUi();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().getScanMode()).isEqualTo(
+                BluetoothAdapter.SCAN_MODE_CONNECTABLE);
+    }
+
+    @Test
+    public void onStop_stopsScanning() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isFalse();
+    }
+
+    @Test
+    public void onStop_clearsNonBondedDevices() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        verify(mCachedDeviceManager).clearNonBondedDevices();
+    }
+
+    @Test
+    public void onStop_clearsGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isGreaterThan(0);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onStop_setsScanModeConnectable() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().getScanMode()).isEqualTo(
+                BluetoothAdapter.SCAN_MODE_CONNECTABLE);
+    }
+
+    @Test
+    public void discoverableScanModeTimeout_controllerStarted_resetsDiscoverableScanMode() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        BluetoothAdapter.getDefaultAdapter().setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
+        mContext.sendBroadcast(new Intent(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED));
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().getScanMode()).isEqualTo(
+                BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
+    }
+
+    @Test
+    public void discoverableScanModeTimeout_controllerStopped_doesNotResetDiscoverableScanMode() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        BluetoothAdapter.getDefaultAdapter().setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
+        mContext.sendBroadcast(new Intent(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED));
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().getScanMode()).isEqualTo(
+                BluetoothAdapter.SCAN_MODE_CONNECTABLE);
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+
+    private static final class TestBluetoothScanningDevicesGroupPreferenceController extends
+            BluetoothScanningDevicesGroupPreferenceController {
+
+        private CachedBluetoothDevice mLastClickedDevice;
+
+        TestBluetoothScanningDevicesGroupPreferenceController(Context context,
+                String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected void onDeviceClickedInternal(CachedBluetoothDevice cachedDevice) {
+            mLastClickedDevice = cachedDevice;
+        }
+
+        CachedBluetoothDevice getLastClickedDevice() {
+            return mLastClickedDevice;
+        }
+
+        @Override
+        protected BluetoothDeviceFilter.Filter getDeviceFilter() {
+            return BluetoothDeviceFilter.ALL_FILTER;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothSettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothSettingsFragmentTest.java
new file mode 100644
index 0000000..52c7078
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothSettingsFragmentTest.java
@@ -0,0 +1,248 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.bluetooth.BluetoothAdapter.STATE_OFF;
+import static android.bluetooth.BluetoothAdapter.STATE_ON;
+import static android.bluetooth.BluetoothAdapter.STATE_TURNING_OFF;
+import static android.bluetooth.BluetoothAdapter.STATE_TURNING_ON;
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.bluetooth.BluetoothAdapter;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.Switch;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link BluetoothSettingsFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothSettingsFragmentTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private Context mContext;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private FragmentController<BluetoothSettingsFragment> mFragmentController;
+    private BluetoothSettingsFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+
+        mContext = RuntimeEnvironment.application;
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(mContext, /* onInitCallback= */
+                null);
+        mFragment = new BluetoothSettingsFragment();
+        mFragmentController = FragmentController.of(mFragment);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void onStart_setsBluetoothManagerForegroundActivity() {
+        mFragmentController.create().start();
+
+        assertThat(mLocalBluetoothManager.getForegroundActivity()).isEqualTo(
+                mFragment.requireActivity());
+    }
+
+    @Test
+    public void onStart_initializesSwitchState() {
+        getShadowBluetoothAdapter().setState(STATE_ON);
+
+        mFragmentController.create().start();
+
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
+    }
+
+    @Test
+    public void onStop_clearsBluetoothManagerForegroundActivity() {
+        mFragmentController.create().start().resume().pause().stop();
+
+        assertThat(mLocalBluetoothManager.getForegroundActivity()).isNull();
+    }
+
+    @Test
+    public void switchCheckedOn_enablesAdapter() {
+        mFragmentController.setup();
+        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isFalse();
+
+        findSwitch(mFragment.requireActivity()).performClick();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isTrue();
+    }
+
+    @Test
+    public void switchCheckedOff_disablesAdapter() {
+        getShadowBluetoothAdapter().setState(STATE_ON);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        mFragmentController.setup();
+        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isTrue();
+
+        findSwitch(mFragment.requireActivity()).performClick();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_turningOn_setsSwitchChecked() {
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_TURNING_ON);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
+    }
+
+    @Test
+    public void stateChanged_turningOn_setsSwitchDisabled() {
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_TURNING_ON);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_on_setsSwitchChecked() {
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_ON);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
+    }
+
+    @Test
+    public void stateChanged_on_setsSwitchEnabled() {
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_ON);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void stateChanged_on_userRestricted_setsSwitchDisabled() {
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(true);
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_ON);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_turningOff_setsSwitchUnchecked() {
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_TURNING_OFF);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_turningOff_setsSwitchDisabled() {
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_TURNING_OFF);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_off_setsSwitchUnchecked() {
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_OFF);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_off_setsSwitchEnabled() {
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_OFF);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void stateChanged_off_userRestricted_setsSwitchDisabled() {
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(true);
+        mFragmentController.setup();
+
+        sendStateChangedIntent(STATE_OFF);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void stateChanged_fragmentStopped_doesNothing() {
+        mFragmentController.setup();
+        mFragmentController.stop();
+
+        sendStateChangedIntent(STATE_TURNING_ON);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
+    }
+
+    private void sendStateChangedIntent(int state) {
+        Intent intent = new Intent(BluetoothAdapter.ACTION_STATE_CHANGED);
+        intent.putExtra(BluetoothAdapter.EXTRA_STATE, state);
+        mContext.sendBroadcast(intent);
+    }
+
+    private Switch findSwitch(Activity activity) {
+        return activity.findViewById(R.id.toggle_switch);
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java
new file mode 100644
index 0000000..5113708
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.Arrays;
+
+/** Unit test for {@link BluetoothUnbondedDevicesPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class BluetoothUnbondedDevicesPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private CachedBluetoothDevice mUnbondedCachedDevice;
+    @Mock
+    private BluetoothDevice mUnbondedDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<BluetoothUnbondedDevicesPreferenceController>
+            mControllerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Context context = RuntimeEnvironment.application;
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, /* onInitCallback= */
+                null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        when(mUnbondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        when(mUnbondedCachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
+        when(mUnbondedCachedDevice.getDevice()).thenReturn(mUnbondedDevice);
+        BluetoothDevice bondedDevice = mock(BluetoothDevice.class);
+        when(bondedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
+        CachedBluetoothDevice bondedCachedDevice = mock(CachedBluetoothDevice.class);
+        when(bondedCachedDevice.getDevice()).thenReturn(bondedDevice);
+        when(mCachedDeviceManager.getCachedDevicesCopy()).thenReturn(
+                Arrays.asList(mUnbondedCachedDevice, bondedCachedDevice));
+
+        // Make sure controller is available.
+        Shadows.shadowOf(context.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                BluetoothUnbondedDevicesPreferenceController.class, mPreferenceGroup);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void showsOnlyUnbondedDevices() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        assertThat(devicePreference.getCachedDevice()).isEqualTo(mUnbondedCachedDevice);
+    }
+
+    @Test
+    public void onDeviceClicked_startsPairing() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        verify(mUnbondedCachedDevice).startPairing();
+    }
+
+    @Test
+    public void onDeviceClicked_pairingStartFails_resumesScanning() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+        when(mUnbondedCachedDevice.startPairing()).thenReturn(false);
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+
+        devicePreference.performClick();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isDiscovering()).isTrue();
+    }
+
+    @Test
+    public void onDeviceClicked_requestsPhonebookAccess() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        when(mUnbondedCachedDevice.startPairing()).thenReturn(true);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        verify(mUnbondedDevice).setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
+    }
+
+    @Test
+    public void onDeviceClicked_requestsMessageAccess() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        when(mUnbondedCachedDevice.startPairing()).thenReturn(true);
+        BluetoothDevicePreference devicePreference =
+                (BluetoothDevicePreference) mPreferenceGroup.getPreference(0);
+
+        devicePreference.performClick();
+
+        verify(mUnbondedDevice).setMessageAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
+    }
+
+    @Test
+    public void getAvailabilityStatus_disallowConfigBluetooth_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+                DISABLED_FOR_USER);
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/LocalRenameDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/LocalRenameDialogFragmentTest.java
new file mode 100644
index 0000000..e994f3d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/LocalRenameDialogFragmentTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.bluetooth.BluetoothAdapter.EXTRA_LOCAL_NAME;
+import static android.bluetooth.BluetoothAdapter.STATE_ON;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.AlertDialog;
+import android.bluetooth.BluetoothAdapter;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.widget.EditText;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowDialog;
+
+/** Unit test for {@link LocalRenameDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class})
+public class LocalRenameDialogFragmentTest {
+
+    private static final String NAME = "name";
+    private static final String NAME_UPDATED = "name updated";
+
+    private LocalRenameDialogFragment mFragment;
+
+    @Before
+    public void setUp() {
+        mFragment = new LocalRenameDialogFragment();
+        getShadowBluetoothAdapter().setState(STATE_ON);
+        BluetoothAdapter.getDefaultAdapter().enable();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void getDeviceName_adapterEnabled_returnsLocalAdapterName() {
+        BluetoothAdapter.getDefaultAdapter().setName(NAME);
+
+        assertThat(mFragment.getDeviceName()).isEqualTo(NAME);
+    }
+
+    @Test
+    public void getDeviceName_adapterDisabled_returnsNull() {
+        BluetoothAdapter.getDefaultAdapter().setName(NAME);
+        BluetoothAdapter.getDefaultAdapter().disable();
+
+        assertThat(mFragment.getDeviceName()).isNull();
+    }
+
+    @Test
+    public void localNameChangedBroadcast_updatesDeviceName() {
+        BluetoothAdapter.getDefaultAdapter().setName(NAME);
+        AlertDialog dialog = showDialog(mFragment);
+        EditText editText = dialog.findViewById(android.R.id.edit);
+        assertThat(editText.getText().toString()).isEqualTo(NAME);
+
+        BluetoothAdapter.getDefaultAdapter().setName(NAME_UPDATED);
+        Intent intent = new Intent(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
+        intent.putExtra(EXTRA_LOCAL_NAME, NAME_UPDATED);
+        RuntimeEnvironment.application.sendBroadcast(intent);
+
+        assertThat(editText.getText().toString()).isEqualTo(NAME_UPDATED);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void setDeviceName_updatesLocalAdapterName() {
+        BluetoothAdapter.getDefaultAdapter().setName(NAME);
+        AlertDialog dialog = showDialog(mFragment);
+        EditText editText = dialog.findViewById(android.R.id.edit);
+
+        editText.setText(NAME_UPDATED);
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().getName()).isEqualTo(NAME_UPDATED);
+    }
+
+    private AlertDialog showDialog(LocalRenameDialogFragment fragment) {
+        BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+        activity.showDialog(fragment, /* tag= */ null);
+        return (AlertDialog) ShadowDialog.getLatestDialog();
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceControllerTest.java
new file mode 100644
index 0000000..fb425f2
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/PairNewDevicePreferenceControllerTest.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.settingslib.bluetooth.BluetoothEventManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+/** Unit test for {@link PairNewDevicePreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowBluetoothAdapter.class,
+        ShadowBluetoothPan.class})
+public class PairNewDevicePreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private BluetoothEventManager mEventManager;
+    private BluetoothEventManager mSaveRealEventManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<PairNewDevicePreferenceController> mControllerHelper;
+    private PairNewDevicePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(mContext, /* onInitCallback= */
+                null);
+        mSaveRealEventManager = mLocalBluetoothManager.getEventManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mEventManager", mEventManager);
+
+        // Default to available.
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+
+        mPreference = new Preference(mContext);
+        mPreference.setIntent(new Intent());
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                PairNewDevicePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mEventManager", mSaveRealEventManager);
+    }
+
+    @Test
+    public void checkInitialized_noFragmentOrIntent_throwsIllegalStateException() {
+        assertThrows(IllegalStateException.class,
+                () -> new PreferenceControllerTestHelper<>(mContext,
+                        PairNewDevicePreferenceController.class, new Preference(mContext)));
+    }
+
+    @Test
+    public void getAvailabilityStatus_bluetoothNotAvailable_unsupportedOnDevice() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_disallowBluetoothUserRestriction_disabledForUser() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_disallowConfigBluetoothUserRestriction_disabledForUser() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_available() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        // No user restrictions.
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void refreshUi_bluetoothAdapterEnabled_setsEmptySummary() {
+        BluetoothAdapter.getDefaultAdapter().enable();
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary().toString()).isEmpty();
+    }
+
+    @Test
+    public void refreshUi_bluetoothAdapterDisabled_setsTurnOnToPairSummary() {
+        BluetoothAdapter.getDefaultAdapter().disable();
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.bluetooth_pair_new_device_summary));
+    }
+
+    @Test
+    public void bluetoothAdapterStateChangedBroadcast_refreshesUi() {
+        BluetoothAdapter.getDefaultAdapter().enable();
+        mController.refreshUi();
+        assertThat(mPreference.getSummary().toString()).isEmpty();
+
+        BluetoothAdapter.getDefaultAdapter().disable();
+        mContext.sendBroadcast(new Intent(BluetoothAdapter.ACTION_STATE_CHANGED));
+
+        assertThat(mPreference.getSummary().toString()).isNotEmpty();
+    }
+
+    @Test
+    public void preferenceClicked_enablesAdapter() {
+        BluetoothAdapter.getDefaultAdapter().disable();
+
+        mPreference.performClick();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isTrue();
+    }
+
+    @Test
+    public void preferenceClicked_notHandled() {
+        assertThat(mPreference.getOnPreferenceClickListener().onPreferenceClick(
+                mPreference)).isFalse();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/RemoteRenameDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/RemoteRenameDialogFragmentTest.java
new file mode 100644
index 0000000..305842f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/RemoteRenameDialogFragmentTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.AlertDialog;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.DialogInterface;
+import android.widget.EditText;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowDialog;
+import org.robolectric.util.ReflectionHelpers;
+
+/** Unit test for {@link RemoteRenameDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class RemoteRenameDialogFragmentTest {
+
+    private static final String NAME = "name";
+    private static final String NAME_UPDATED = "name updated";
+
+    @Mock
+    private CachedBluetoothDevice mCachedDevice;
+    @Mock
+    private CachedBluetoothDeviceManager mCachedDeviceManager;
+    private CachedBluetoothDeviceManager mSaveRealCachedDeviceManager;
+    private LocalBluetoothManager mLocalBluetoothManager;
+    private RemoteRenameDialogFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mLocalBluetoothManager = LocalBluetoothManager.getInstance(
+                RuntimeEnvironment.application, /* onInitCallback= */ null);
+        mSaveRealCachedDeviceManager = mLocalBluetoothManager.getCachedDeviceManager();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mCachedDeviceManager);
+
+        String address = "00:11:22:33:AA:BB";
+        BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(address);
+        when(mCachedDeviceManager.findDevice(device)).thenReturn(mCachedDevice);
+        when(mCachedDevice.getAddress()).thenReturn(address);
+
+        mFragment = RemoteRenameDialogFragment.newInstance(mCachedDevice);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+        ReflectionHelpers.setField(mLocalBluetoothManager, "mCachedDeviceManager",
+                mSaveRealCachedDeviceManager);
+    }
+
+    @Test
+    public void getDeviceName_returnsCachedDeviceName() {
+        when(mCachedDevice.getName()).thenReturn(NAME);
+        showDialog(mFragment); // Attach the fragment.
+
+        assertThat(mFragment.getDeviceName()).isEqualTo(NAME);
+    }
+
+    @Test
+    public void setDeviceName_updatesCachedDeviceName() {
+        when(mCachedDevice.getName()).thenReturn(NAME);
+        AlertDialog dialog = showDialog(mFragment);
+        EditText editText = dialog.findViewById(android.R.id.edit);
+
+        editText.setText(NAME_UPDATED);
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        verify(mCachedDevice).setName(NAME_UPDATED);
+    }
+
+    private AlertDialog showDialog(RemoteRenameDialogFragment fragment) {
+        BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+        activity.showDialog(fragment, /* tag= */ null);
+        return (AlertDialog) ShadowDialog.getLatestDialog();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/Utf8ByteLengthFilterTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/Utf8ByteLengthFilterTest.java
new file mode 100644
index 0000000..9449a01
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/Utf8ByteLengthFilterTest.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2018 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.car.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.text.InputFilter;
+import android.text.SpannableStringBuilder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/** Unit test for {@link Utf8ByteLengthFilter}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class Utf8ByteLengthFilterTest {
+
+    @Test
+    public void filter_belowMaxBytes_returnsNull() {
+        CharSequence source = "1"; // 1 byte.
+        SpannableStringBuilder dest = new SpannableStringBuilder("abcdefgh"); // 8 bytes.
+        InputFilter lengthFilter = new Utf8ByteLengthFilter(10);
+
+        // Append source to dest.
+        CharSequence filtered = lengthFilter.filter(source, /* start= */ 0, source.length(), dest,
+                dest.length(), dest.length());
+
+        // Source is not filtered.
+        assertThat(filtered).isNull();
+    }
+
+    @Test
+    public void filter_maxBytes_returnsNull() {
+        CharSequence source = "1"; // 1 byte.
+        SpannableStringBuilder dest = new SpannableStringBuilder("abcdefghi"); // 9 bytes.
+        InputFilter lengthFilter = new Utf8ByteLengthFilter(10);
+
+        // Append source to dest.
+        CharSequence filtered = lengthFilter.filter(source, /* start= */ 0, source.length(), dest,
+                dest.length(), dest.length());
+
+        // Source is not filtered.
+        assertThat(filtered).isNull();
+    }
+
+    @Test
+    public void filter_aboveMaxBytes_returnsFilteredSource() {
+        CharSequence source = "12"; // 2 bytes.
+        SpannableStringBuilder dest = new SpannableStringBuilder("abcdefghi"); // 8 bytes.
+        InputFilter lengthFilter = new Utf8ByteLengthFilter(10);
+
+        // Append source to dest.
+        CharSequence filtered = lengthFilter.filter(source, /* start= */ 0, source.length(), dest,
+                dest.length(), dest.length());
+
+        // Source is filtered.
+        assertThat(filtered).isEqualTo("1");
+    }
+
+    // Borrowed from com.android.settings.bluetooth.Utf8ByteLengthFilterTest.
+    @Test
+    public void exerciseFilter() {
+        CharSequence source;
+        SpannableStringBuilder dest;
+        InputFilter lengthFilter = new Utf8ByteLengthFilter(10);
+        InputFilter[] filters = {lengthFilter};
+
+        source = "abc";
+        dest = new SpannableStringBuilder("abcdefgh");
+        dest.setFilters(filters);
+
+        dest.insert(1, source);
+        String expectedString1 = "aabbcdefgh";
+        assertThat(dest.toString()).isEqualTo(expectedString1);
+
+        dest.replace(5, 8, source);
+        String expectedString2 = "aabbcabcgh";
+        assertThat(dest.toString()).isEqualTo(expectedString2);
+
+        dest.insert(2, source);
+        assertThat(dest.toString()).isEqualTo(expectedString2);
+
+        dest.delete(1, 3);
+        String expectedString3 = "abcabcgh";
+        assertThat(dest.toString()).isEqualTo(expectedString3);
+
+        dest.append("12345");
+        String expectedString4 = "abcabcgh12";
+        assertThat(dest.toString()).isEqualTo(expectedString4);
+
+        source = "\u60a8\u597d";  // 2 Chinese chars == 6 bytes in UTF-8
+        dest.replace(8, 10, source);
+        assertThat(dest.toString()).isEqualTo(expectedString3);
+
+        dest.replace(0, 1, source);
+        String expectedString5 = "\u60a8bcabcgh";
+        assertThat(dest.toString()).isEqualTo(expectedString5);
+
+        dest.replace(0, 4, source);
+        String expectedString6 = "\u60a8\u597dbcgh";
+        assertThat(dest.toString()).isEqualTo(expectedString6);
+
+        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";
+        assertThat(dest.toString()).isEqualTo(expectedString7);
+
+        dest.replace(2, 3, source);
+        String expectedString8 = "\u00a3\u00a5\u00a3\u597d";
+        assertThat(dest.toString()).isEqualTo(expectedString8);
+
+        dest.replace(3, 4, source);
+        String expectedString9 = "\u00a3\u00a5\u00a3\u00a3\u00a5";
+        assertThat(dest.toString()).isEqualTo(expectedString9);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/BaseCarSettingsActivityTest.java b/tests/robotests/src/com/android/car/settings/common/BaseCarSettingsActivityTest.java
new file mode 100644
index 0000000..8bae4a1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/BaseCarSettingsActivityTest.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.car.Car;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
+import android.content.Context;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.ShadowCar;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+
+/** Unit test for {@link BaseCarSettingsActivity}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class BaseCarSettingsActivityTest {
+
+    private static final String TEST_TAG = "test_tag";
+
+    private Context mContext;
+    private ActivityController<TestBaseCarSettingsActivity> mActivityController;
+    private TestBaseCarSettingsActivity mActivity;
+
+    @Mock
+    private CarUxRestrictionsManager mMockCarUxRestrictionsManager;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        CarUxRestrictions noSetupRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* time= */ 0).build();
+        when(mMockCarUxRestrictionsManager.getCurrentCarUxRestrictions())
+                .thenReturn(noSetupRestrictions);
+        ShadowCar.setCarManager(Car.CAR_UX_RESTRICTION_SERVICE, mMockCarUxRestrictionsManager);
+        mContext = RuntimeEnvironment.application;
+        mActivityController = ActivityController.of(new TestBaseCarSettingsActivity());
+        mActivity = mActivityController.get();
+        mActivityController.setup();
+    }
+
+    @Test
+    public void onPreferenceStartFragment_launchesFragment() {
+        Preference pref = new Preference(mContext);
+        pref.setFragment(TestFragment.class.getName());
+
+        mActivity.onPreferenceStartFragment(/* caller= */ null, pref);
+
+        assertThat(mActivity.getSupportFragmentManager().findFragmentById(
+                R.id.fragment_container)).isInstanceOf(TestFragment.class);
+    }
+
+    @Test
+    public void launchFragment_dialogFragment_throwsError() {
+        DialogFragment dialogFragment = new DialogFragment();
+
+        assertThrows(IllegalArgumentException.class,
+                () -> mActivity.launchFragment(dialogFragment));
+    }
+
+    @Test
+    public void showDialog_launchDialogFragment_noTag() {
+        DialogFragment dialogFragment = mock(DialogFragment.class);
+        mActivity.showDialog(dialogFragment, /* tag */ null);
+        verify(dialogFragment).show(mActivity.getSupportFragmentManager(), null);
+    }
+
+    @Test
+    public void showDialog_launchDialogFragment_withTag() {
+        DialogFragment dialogFragment = mock(DialogFragment.class);
+        mActivity.showDialog(dialogFragment, TEST_TAG);
+        verify(dialogFragment).show(mActivity.getSupportFragmentManager(), TEST_TAG);
+    }
+
+    @Test
+    public void findDialogByTag_retrieveOriginalDialog() {
+        DialogFragment dialogFragment = new DialogFragment();
+        mActivity.showDialog(dialogFragment, TEST_TAG);
+        assertThat(mActivity.findDialogByTag(TEST_TAG)).isEqualTo(dialogFragment);
+    }
+
+    @Test
+    public void findDialogByTag_notDialogFragment() {
+        TestFragment fragment = new TestFragment();
+        mActivity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
+                fragment, TEST_TAG).commit();
+        assertThat(mActivity.findDialogByTag(TEST_TAG)).isNull();
+    }
+
+    @Test
+    public void findDialogByTag_noSuchFragment() {
+        assertThat(mActivity.findDialogByTag(TEST_TAG)).isNull();
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_topFragmentInBackStackHasUpdatedUxRestrictions() {
+        TestFragment fragmentA = new TestFragment();
+        TestFragment fragmentB = new TestFragment();
+
+        CarUxRestrictions oldUxRestrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
+                /* timestamp= */ 0
+        ).build();
+
+        CarUxRestrictions newUxRestrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP,
+                /* timestamp= */ 0
+        ).build();
+
+        mActivity.launchFragment(fragmentA);
+        mActivity.onUxRestrictionsChanged(oldUxRestrictions);
+        mActivity.launchFragment(fragmentB);
+        mActivity.onUxRestrictionsChanged(newUxRestrictions);
+
+        assertThat(fragmentB.getUxRestrictions().toString())
+                .isEqualTo(newUxRestrictions.toString());
+    }
+
+    @Test
+    public void onBackStackChanged_uxRestrictionsChanged_currentFragmentHasUpdatedUxRestrictions() {
+        TestFragment fragmentA = new TestFragment();
+        TestFragment fragmentB = new TestFragment();
+
+        CarUxRestrictions oldUxRestrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
+                /* timestamp= */ 0
+        ).build();
+
+        CarUxRestrictions newUxRestrictions = new CarUxRestrictions.Builder(
+                /* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP,
+                /* timestamp= */ 0
+        ).build();
+
+        mActivity.launchFragment(fragmentA);
+        mActivity.onUxRestrictionsChanged(oldUxRestrictions);
+        mActivity.launchFragment(fragmentB);
+        mActivity.onUxRestrictionsChanged(newUxRestrictions);
+        mActivity.goBack();
+
+        assertThat(fragmentA.getUxRestrictions().toString())
+                .isEqualTo(newUxRestrictions.toString());
+    }
+
+    /** Simple instance of {@link BaseCarSettingsActivity}. */
+    private static class TestBaseCarSettingsActivity extends BaseCarSettingsActivity {
+
+        @Nullable
+        @Override
+        protected Fragment getInitialFragment() {
+            return new TestFragment();
+        }
+    }
+
+    /** Simple Fragment for testing use. */
+    public static class TestFragment extends Fragment implements
+            CarUxRestrictionsManager.OnUxRestrictionsChangedListener {
+        private CarUxRestrictions mCarUxRestrictions;
+
+        @Override
+        public void onUxRestrictionsChanged(CarUxRestrictions restrictionInfo) {
+            mCarUxRestrictions = restrictionInfo;
+        }
+
+        public CarUxRestrictions getUxRestrictions() {
+            return mCarUxRestrictions;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/ButtonPreferenceTest.java b/tests/robotests/src/com/android/car/settings/common/ButtonPreferenceTest.java
new file mode 100644
index 0000000..f12036d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/ButtonPreferenceTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.view.ContextThemeWrapper;
+import android.view.View;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ButtonPreference.OnButtonClickListener;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ButtonPreferenceTest {
+
+    private PreferenceViewHolder mViewHolder;
+    private ButtonPreference mButtonPreference;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+        Context themedContext = new ContextThemeWrapper(context, R.style.CarSettingTheme);
+
+        View rootView = View.inflate(themedContext, R.layout.two_action_preference, null);
+        mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
+        mButtonPreference = new ButtonPreference(context);
+    }
+
+    @Test
+    public void buttonClicked_callsListener() {
+        mButtonPreference.onBindViewHolder(mViewHolder);
+        OnButtonClickListener listener = mock(OnButtonClickListener.class);
+        mButtonPreference.setOnButtonClickListener(listener);
+
+        mViewHolder.findViewById(android.R.id.widget_frame).performClick();
+
+        verify(listener).onButtonClick(mButtonPreference);
+    }
+
+    @Test
+    public void performButtonClick_listenerSetAndButtonVisible_listenerFired() {
+        ButtonPreference.OnButtonClickListener listener = mock(
+                ButtonPreference.OnButtonClickListener.class);
+        mButtonPreference.setOnButtonClickListener(listener);
+        mButtonPreference.showAction(true);
+
+        mButtonPreference.performButtonClick();
+        verify(listener).onButtonClick(mButtonPreference);
+    }
+
+    @Test
+    public void performButtonClick_listenerSetAndButtonInvisible_listenerNotFired() {
+        ButtonPreference.OnButtonClickListener listener = mock(
+                ButtonPreference.OnButtonClickListener.class);
+        mButtonPreference.setOnButtonClickListener(listener);
+        mButtonPreference.showAction(false);
+
+        mButtonPreference.performButtonClick();
+        verify(listener, never()).onButtonClick(mButtonPreference);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/CarSettingActivityTest.java b/tests/robotests/src/com/android/car/settings/common/CarSettingActivityTest.java
new file mode 100644
index 0000000..09c464b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/CarSettingActivityTest.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.Car;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.provider.Settings;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.datetime.DatetimeSettingsFragment;
+import com.android.car.settings.testutils.DummyFragment;
+import com.android.car.settings.testutils.ShadowCar;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+
+/** Unit test for {@link CarSettingActivity}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class CarSettingActivityTest {
+
+    private static final String TEST_TAG = "test_tag";
+
+    private Context mContext;
+    private ActivityController<CarSettingActivity> mActivityController;
+    private CarSettingActivity mActivity;
+
+    @Mock
+    private CarUxRestrictionsManager mMockCarUxRestrictionsManager;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        CarUxRestrictions noSetupRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* time= */ 0).build();
+        when(mMockCarUxRestrictionsManager.getCurrentCarUxRestrictions())
+                .thenReturn(noSetupRestrictions);
+        ShadowCar.setCarManager(Car.CAR_UX_RESTRICTION_SERVICE, mMockCarUxRestrictionsManager);
+        mContext = RuntimeEnvironment.application;
+        mActivityController = ActivityController.of(new CarSettingActivity());
+        mActivity = mActivityController.get();
+        mActivityController.create();
+    }
+
+    @Test
+    public void launchWithIntent_resolveToFragment() {
+        MockitoAnnotations.initMocks(this);
+        Intent intent = new Intent(Settings.ACTION_DATE_SETTINGS);
+        CarSettingActivity activity =
+                Robolectric.buildActivity(CarSettingActivity.class, intent).setup().get();
+        assertThat(activity.getSupportFragmentManager().findFragmentById(R.id.fragment_container))
+                .isInstanceOf(DatetimeSettingsFragment.class);
+    }
+
+    @Test
+    public void launchWithEmptyIntent_resolveToDefaultFragment() {
+        CarSettingActivity activity =
+                Robolectric.buildActivity(CarSettingActivity.class).setup().get();
+        assertThat(activity.getSupportFragmentManager().findFragmentById(R.id.fragment_container))
+                .isInstanceOf(DummyFragment.class);
+    }
+
+    @Test
+    public void onResume_newIntent_launchesNewFragment() {
+        mActivityController.start().postCreate(null).resume();
+        TestFragment testFragment = new TestFragment();
+        mActivity.launchFragment(testFragment);
+        assertThat(mActivity.getCurrentFragment()).isEqualTo(testFragment);
+
+        mActivity.onNewIntent(new Intent(Settings.ACTION_DATE_SETTINGS));
+        mActivity.onResume();
+
+        assertThat(mActivity.getCurrentFragment()).isNotEqualTo(testFragment);
+    }
+
+    @Test
+    public void onResume_savedInstanceState_doesNotLaunchFragmentFromOldIntent() {
+        mActivityController.start().postCreate(null).resume();
+        Intent intent = new Intent(Settings.ACTION_DATE_SETTINGS);
+        mActivity.onNewIntent(intent);
+        assertThat(mActivity.getCurrentFragment()).isNotInstanceOf(TestFragment.class);
+        mActivity.onResume(); // Showing date time settings (old intent)
+        mActivity.launchFragment(new TestFragment()); // Replace with test fragment.
+
+        // Recreate with saved state (e.g. during config change).
+        Bundle outState = new Bundle();
+        mActivityController.pause().saveInstanceState(outState);
+        mActivityController = ActivityController.of(new CarSettingActivity(), intent);
+        mActivityController.setup(outState);
+
+        // Should still display most recently launched fragment.
+        assertThat(mActivityController.get().getCurrentFragment()).isInstanceOf(TestFragment.class);
+    }
+
+    @Test
+    public void launchFragment_rootFragment_clearsBackStack() {
+        // Add fragment 1
+        TestFragment testFragment1 = new TestFragment();
+        mActivity.launchFragment(testFragment1);
+
+        // Add fragment 2
+        TestFragment testFragment2 = new TestFragment();
+        mActivity.launchFragment(testFragment2);
+
+        // Add root fragment
+        Fragment root = Fragment.instantiate(mContext,
+                mContext.getString(R.string.config_settings_hierarchy_root_fragment));
+        mActivity.launchFragment(root);
+
+        assertThat(mActivity.getSupportFragmentManager().getBackStackEntryCount())
+                .isEqualTo(1);
+    }
+
+    /** Simple Fragment for testing use. */
+    public static class TestFragment extends Fragment {
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java
new file mode 100644
index 0000000..22ed78c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/ConfirmationDialogFragmentTest.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.shadows.ShadowDialog;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ConfirmationDialogFragmentTest {
+
+    private static final String TEST_ARG_KEY = "arg_key";
+    private static final String TEST_ARG_VALUE = "arg_value";
+    private static final String TEST_TITLE = "Test Title";
+    private static final String TEST_MESSAGE = "Test Message";
+
+    private ConfirmationDialogFragment.Builder mDialogFragmentBuilder;
+    private Fragment mFragment;
+    @Mock
+    private ConfirmationDialogFragment.ConfirmListener mConfirmListener;
+    @Mock
+    private ConfirmationDialogFragment.RejectListener mRejectListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mFragment = FragmentController.of(new Fragment()).setup();
+        mDialogFragmentBuilder = new ConfirmationDialogFragment.Builder(
+                RuntimeEnvironment.application);
+        mDialogFragmentBuilder.setTitle(TEST_TITLE);
+        mDialogFragmentBuilder.setMessage(TEST_MESSAGE);
+        mDialogFragmentBuilder.addArgumentString(TEST_ARG_KEY, TEST_ARG_VALUE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowDialog.reset();
+    }
+
+    @Test
+    public void buildDialogFragment_hasTitleAndMessage() {
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
+
+        assertThat(getShadowAlertDialog().getTitle()).isEqualTo(TEST_TITLE);
+        assertThat(getShadowAlertDialog().getMessage()).isEqualTo(TEST_MESSAGE);
+    }
+
+    @Test
+    public void buildDialogFragment_negativeButtonNotSet_negativeButtonNotVisible() {
+        mDialogFragmentBuilder.setPositiveButton(R.string.test_positive_button_label, null);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
+
+        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
+        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()).isEqualTo(
+                View.VISIBLE);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()).isEqualTo(
+                View.GONE);
+    }
+
+    @Test
+    public void buildDialogFragment_positiveButtonNotSet_positiveButtonNotVisible() {
+        mDialogFragmentBuilder.setNegativeButton(R.string.test_negative_button_label, null);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
+
+        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
+        assertThat(dialog.getButton(DialogInterface.BUTTON_POSITIVE).getVisibility()).isEqualTo(
+                View.GONE);
+        assertThat(dialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()).isEqualTo(
+                View.VISIBLE);
+    }
+
+    @Test
+    public void clickPositiveButton_callsCallbackWithArgs() {
+        mDialogFragmentBuilder.setPositiveButton(R.string.test_positive_button_label,
+                mConfirmListener);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
+
+        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+        ArgumentCaptor<Bundle> bundle = ArgumentCaptor.forClass(Bundle.class);
+        verify(mConfirmListener).onConfirm(bundle.capture());
+        assertThat(bundle.getValue().getString(TEST_ARG_KEY)).isEqualTo(TEST_ARG_VALUE);
+    }
+
+    @Test
+    public void clickNegativeButton_callsCallbackWithArgs() {
+        mDialogFragmentBuilder.setNegativeButton(R.string.test_negative_button_label,
+                mRejectListener);
+        ConfirmationDialogFragment dialogFragment = mDialogFragmentBuilder.build();
+        dialogFragment.show(mFragment.getFragmentManager(), ConfirmationDialogFragment.TAG);
+
+        AlertDialog dialog = (AlertDialog) ShadowDialog.getLatestDialog();
+        dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
+        ArgumentCaptor<Bundle> bundle = ArgumentCaptor.forClass(Bundle.class);
+        verify(mRejectListener).onReject(bundle.capture());
+        assertThat(bundle.getValue().getString(TEST_ARG_KEY)).isEqualTo(TEST_ARG_VALUE);
+    }
+
+    private ShadowAlertDialog getShadowAlertDialog() {
+        return ShadowApplication.getInstance().getLatestAlertDialog();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/EditTextPreferenceDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/EditTextPreferenceDialogFragmentTest.java
new file mode 100644
index 0000000..bad3d92
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/EditTextPreferenceDialogFragmentTest.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.WindowManager;
+import android.widget.EditText;
+
+import androidx.preference.EditTextPreference;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.ShadowWindow;
+
+/** Unit test for {@link EditTextPreferenceDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class EditTextPreferenceDialogFragmentTest {
+
+    private Context mContext;
+    private ActivityController<BaseTestActivity> mTestActivityController;
+    private BaseTestActivity mTestActivity;
+    private EditTextPreference mPreference;
+    private EditTextPreferenceDialogFragment mFragment;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mTestActivityController = ActivityController.of(new BaseTestActivity());
+        mTestActivity = mTestActivityController.get();
+        mTestActivityController.setup();
+        TestTargetFragment targetFragment = new TestTargetFragment();
+        mTestActivity.launchFragment(targetFragment);
+        mPreference = new EditTextPreference(mContext);
+        mPreference.setDialogLayoutResource(R.layout.preference_dialog_edittext);
+        mPreference.setKey("key");
+        targetFragment.getPreferenceScreen().addPreference(mPreference);
+        mFragment = EditTextPreferenceDialogFragment
+                .newInstance(mPreference.getKey());
+
+        mFragment.setTargetFragment(targetFragment, /* requestCode= */ 0);
+    }
+
+    @Test
+    public void dialogPopulatedWithPreferenceText() {
+        mPreference.setText("text");
+
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        EditText editTextView = ShadowAlertDialog.getLatestAlertDialog().findViewById(
+                android.R.id.edit);
+
+        assertThat(editTextView.getText().toString()).isEqualTo(mPreference.getText());
+    }
+
+    @Test
+    public void softInputMethodSetOnWindow() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        assertThat(getShadowWindowFromDialog(
+                ShadowAlertDialog.getLatestAlertDialog()).getSoftInputMode()).isEqualTo(
+                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+    }
+
+    @Test
+    public void editTextHasFocus() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        EditText editTextView = ShadowAlertDialog.getLatestAlertDialog().findViewById(
+                android.R.id.edit);
+
+        assertThat(editTextView.hasFocus()).isTrue();
+    }
+
+    @Test
+    public void onDialogClosed_positiveResult_updatesPreference() {
+        String text = "text";
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        EditText editTextView = dialog.findViewById(android.R.id.edit);
+        editTextView.setText(text);
+
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        assertThat(mPreference.getText()).isEqualTo(text);
+    }
+
+    @Test
+    public void onDialogClosed_negativeResult_doesNothing() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        EditText editTextView = dialog.findViewById(android.R.id.edit);
+        editTextView.setText("text");
+
+        dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
+
+        assertThat(mPreference.getText()).isNull();
+    }
+
+    @Test
+    public void instanceStateRetained() {
+        String text = "text";
+        mPreference.setText(text);
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        // Save instance state.
+        Bundle outState = new Bundle();
+        mTestActivityController.pause().saveInstanceState(outState).stop();
+
+        // Recreate everything with saved state.
+        mTestActivityController = ActivityController.of(new BaseTestActivity());
+        mTestActivity = mTestActivityController.get();
+        mTestActivityController.setup(outState);
+
+        // Ensure saved text was applied.
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        EditText editTextView = dialog.findViewById(android.R.id.edit);
+        assertThat(editTextView.getText().toString()).isEqualTo(text);
+    }
+
+
+    private ShadowWindow getShadowWindowFromDialog(AlertDialog dialog) {
+        return (ShadowWindow) Shadow.extract(dialog.getWindow());
+    }
+
+    /** Simple {@link PreferenceFragmentCompat} implementation to serve as the target fragment. */
+    public static class TestTargetFragment extends PreferenceFragmentCompat {
+        @Override
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+            setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/ErrorDialogTest.java b/tests/robotests/src/com/android/car/settings/common/ErrorDialogTest.java
new file mode 100644
index 0000000..e7f7abb
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/ErrorDialogTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.robolectric.RuntimeEnvironment.application;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.DialogTestUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+
+/**
+ * Tests for ErrorDialog.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ErrorDialogTest {
+    private static final String ERROR_DIALOG_TAG = "ErrorDialogTag";
+    private BaseTestActivity mTestActivity;
+    private Fragment mTestFragment;
+
+    @Before
+    public void setUpTestActivity() {
+        MockitoAnnotations.initMocks(this);
+
+        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
+
+        mTestFragment = new Fragment();
+        mTestActivity.launchFragment(mTestFragment);
+    }
+
+    @Test
+    public void testOkDismissesDialog() {
+        ErrorDialog dialog = ErrorDialog.show(mTestFragment, R.string.delete_user_error_title);
+
+        assertThat(isDialogShown()).isTrue(); // Dialog is shown.
+
+        // Invoke cancel.
+        DialogTestUtils.clickPositiveButton(dialog);
+
+        assertThat(isDialogShown()).isFalse(); // Dialog is dismissed.
+    }
+
+    @Test
+    public void testErrorDialogSetsTitle() {
+        int testTitleId = R.string.add_user_error_title;
+        ErrorDialog dialog = ErrorDialog.show(mTestFragment, testTitleId);
+
+        assertThat(DialogTestUtils.getTitle(dialog)).isEqualTo(application.getString(testTitleId));
+    }
+
+    private boolean isDialogShown() {
+        return mTestActivity.getSupportFragmentManager()
+                .findFragmentByTag(ERROR_DIALOG_TAG) != null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/ExtraSettingsLoaderTest.java b/tests/robotests/src/com/android/car/settings/common/ExtraSettingsLoaderTest.java
new file mode 100644
index 0000000..36f6b25
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/ExtraSettingsLoaderTest.java
@@ -0,0 +1,359 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import static com.android.settingslib.drawer.CategoryKey.CATEGORY_DEVICE;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.Map;
+
+/** Unit test for {@link ExtraSettingsLoader}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class})
+public class ExtraSettingsLoaderTest {
+    private Context mContext;
+    private ExtraSettingsLoader mExtraSettingsLoader;
+    private static final String META_DATA_PREFERENCE_CATEGORY = "com.android.settings.category";
+    private static final String FAKE_CATEGORY = "fake_category";
+    private static final String FAKE_TITLE = "fake_title";
+    private static final String FAKE_SUMMARY = "fake_summary";
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        ShadowApplicationPackageManager.setResources(mContext.getResources());
+        mExtraSettingsLoader = new ExtraSettingsLoader(mContext);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationPackageManager.reset();
+    }
+
+    @Test
+    public void testLoadPreference_stringResources_shouldLoadResources() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_SUMMARY, FAKE_SUMMARY);
+        bundle.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+        activityInfo.packageName = "package_name";
+        activityInfo.name = "class_name";
+
+        ResolveInfo resolveInfoSystem = new ResolveInfo();
+        resolveInfoSystem.system = true;
+        resolveInfoSystem.activityInfo = activityInfo;
+
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem);
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        assertThat(preferenceToBundleMap).hasSize(1);
+
+        for (Preference p : preferenceToBundleMap.keySet()) {
+            assertThat(p.getTitle()).isEqualTo(FAKE_TITLE);
+            assertThat(p.getSummary()).isEqualTo(FAKE_SUMMARY);
+        }
+    }
+
+    @Test
+    public void testLoadPreference_metadataBundleIsValue() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_SUMMARY, FAKE_SUMMARY);
+        bundle.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+        activityInfo.packageName = "package_name";
+        activityInfo.name = "class_name";
+
+        ResolveInfo resolveInfoSystem = new ResolveInfo();
+        resolveInfoSystem.system = true;
+        resolveInfoSystem.activityInfo = activityInfo;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem);
+
+        ResolveInfo resolveInfoNonSystem = new ResolveInfo();
+        resolveInfoNonSystem.system = false;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoNonSystem);
+
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        assertThat(preferenceToBundleMap).hasSize(1);
+
+        for (Preference p : preferenceToBundleMap.keySet()) {
+            assertThat(p.getTitle()).isEqualTo(FAKE_TITLE);
+            assertThat(p.getSummary()).isEqualTo(FAKE_SUMMARY);
+
+            Bundle b = preferenceToBundleMap.get(p);
+            assertThat(b.getString(META_DATA_PREFERENCE_TITLE)).isEqualTo(FAKE_TITLE);
+            assertThat(b.getString(META_DATA_PREFERENCE_SUMMARY)).isEqualTo(FAKE_SUMMARY);
+            assertThat(b.getString(META_DATA_PREFERENCE_CATEGORY)).isEqualTo(FAKE_CATEGORY);
+            assertThat(b.getInt(META_DATA_PREFERENCE_ICON)).isNotNull();
+        }
+    }
+
+    @Test
+    public void testLoadPreference_integerResources_shouldLoadResources() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        Bundle bundle = new Bundle();
+        bundle.putInt(META_DATA_PREFERENCE_TITLE, R.string.fake_title);
+        bundle.putInt(META_DATA_PREFERENCE_SUMMARY, R.string.fake_summary);
+        bundle.putInt(META_DATA_PREFERENCE_CATEGORY, R.string.fake_category);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+        activityInfo.packageName = "package_name";
+        activityInfo.name = "class_name";
+
+        ResolveInfo resolveInfoSystem = new ResolveInfo();
+        resolveInfoSystem.system = true;
+        resolveInfoSystem.activityInfo = activityInfo;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem);
+
+        ResolveInfo resolveInfoNonSystem = new ResolveInfo();
+        resolveInfoNonSystem.system = false;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoNonSystem);
+
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        assertThat(preferenceToBundleMap).hasSize(1);
+
+        for (Preference p : preferenceToBundleMap.keySet()) {
+            assertThat(p.getTitle()).isEqualTo(FAKE_TITLE);
+            assertThat(p.getSummary()).isEqualTo(FAKE_SUMMARY);
+            assertThat(p.getIcon()).isNotNull();
+
+        }
+    }
+
+    @Test
+    public void testLoadPreference_noDefaultSummary() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+        activityInfo.packageName = "package_name";
+        activityInfo.name = "class_name";
+
+        ResolveInfo resolveInfoSystem = new ResolveInfo();
+        resolveInfoSystem.system = true;
+        resolveInfoSystem.activityInfo = activityInfo;
+
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem);
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        for (Preference p : preferenceToBundleMap.keySet()) {
+            assertThat(p.getTitle()).isEqualTo(FAKE_TITLE);
+            assertThat(p.getSummary()).isNull();
+
+        }
+    }
+
+    @Test
+    public void testLoadPreference_noCategory_shouldSetToDeviceCategory() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, CATEGORY_DEVICE);
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_SUMMARY, FAKE_SUMMARY);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+        activityInfo.packageName = "package_name";
+        activityInfo.name = "class_name";
+
+        ResolveInfo resolveInfoSystem = new ResolveInfo();
+        resolveInfoSystem.system = true;
+        resolveInfoSystem.activityInfo = activityInfo;
+
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem);
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        assertThat(preferenceToBundleMap).hasSize(1);
+
+        for (Preference p : preferenceToBundleMap.keySet()) {
+            assertThat(p.getTitle()).isEqualTo(FAKE_TITLE);
+            assertThat(p.getSummary()).isEqualTo(FAKE_SUMMARY);
+        }
+    }
+
+    @Test
+    public void testLoadPreference_noCategoryMatched_shouldNotReturnPreferences() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_SUMMARY, FAKE_SUMMARY);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+        activityInfo.packageName = "package_name";
+        activityInfo.name = "class_name";
+
+        ResolveInfo resolveInfoSystem = new ResolveInfo();
+        resolveInfoSystem.system = true;
+        resolveInfoSystem.activityInfo = activityInfo;
+
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem);
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        assertThat(preferenceToBundleMap).isEmpty();
+    }
+
+    @Test
+    public void testLoadPreference_shouldLoadDefaultIcon() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_SUMMARY, FAKE_SUMMARY);
+        bundle.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+        activityInfo.packageName = "package_name";
+        activityInfo.name = "class_name";
+
+        ResolveInfo resolveInfoSystem = new ResolveInfo();
+        resolveInfoSystem.system = true;
+        resolveInfoSystem.activityInfo = activityInfo;
+
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem);
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        for (Preference p : preferenceToBundleMap.keySet()) {
+            assertThat(p.getTitle()).isEqualTo(FAKE_TITLE);
+            assertThat(p.getSummary()).isEqualTo(FAKE_SUMMARY);
+            assertThat(p.getIcon()).isNotNull();
+        }
+    }
+
+    @Test
+    public void testLoadPreference_noSystemApp_returnsNoPreferences() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+
+        ResolveInfo resolveInfoNonSystem1 = new ResolveInfo();
+        resolveInfoNonSystem1.system = false;
+        resolveInfoNonSystem1.activityInfo = activityInfo;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoNonSystem1);
+
+        ResolveInfo resolveInfoNonSystem2 = new ResolveInfo();
+        resolveInfoNonSystem2.system = false;
+        resolveInfoNonSystem2.activityInfo = activityInfo;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoNonSystem2);
+
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        assertThat(preferenceToBundleMap).isEmpty();
+    }
+
+    @Test
+    public void testLoadPreference_systemApp_returnsPreferences() {
+        Intent intent = new Intent();
+        intent.putExtra(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+        Bundle bundle = new Bundle();
+        bundle.putString(META_DATA_PREFERENCE_TITLE, FAKE_TITLE);
+        bundle.putString(META_DATA_PREFERENCE_SUMMARY, FAKE_SUMMARY);
+        bundle.putString(META_DATA_PREFERENCE_CATEGORY, FAKE_CATEGORY);
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.metaData = bundle;
+        activityInfo.packageName = "package_name";
+        activityInfo.name = "class_name";
+
+        ResolveInfo resolveInfoSystem1 = new ResolveInfo();
+        resolveInfoSystem1.system = true;
+        resolveInfoSystem1.activityInfo = activityInfo;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem1);
+
+        ResolveInfo resolveInfoNonSystem1 = new ResolveInfo();
+        resolveInfoNonSystem1.system = false;
+        resolveInfoNonSystem1.activityInfo = activityInfo;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoNonSystem1);
+
+        ResolveInfo resolveInfoSystem2 = new ResolveInfo();
+        resolveInfoSystem2.system = true;
+        resolveInfoSystem2.activityInfo = activityInfo;
+        getShadowPackageManager().addResolveInfoForIntent(intent, resolveInfoSystem2);
+
+        Map<Preference, Bundle> preferenceToBundleMap = mExtraSettingsLoader.loadPreferences(
+                intent);
+
+        assertThat(preferenceToBundleMap).hasSize(2);
+
+        for (Preference p : preferenceToBundleMap.keySet()) {
+            assertThat(p.getTitle()).isEqualTo(FAKE_TITLE);
+            assertThat(p.getSummary()).isEqualTo(FAKE_SUMMARY);
+        }
+    }
+
+    private ShadowApplicationPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
+
diff --git a/tests/robotests/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java
new file mode 100644
index 0000000..0ea2ef5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/ExtraSettingsPreferenceControllerTest.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/** Unit test for {@link ExtraSettingsPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class})
+public class ExtraSettingsPreferenceControllerTest {
+
+    private static final Intent FAKE_INTENT = new Intent();
+
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private ExtraSettingsPreferenceController mController;
+    private PreferenceControllerTestHelper<ExtraSettingsPreferenceController>
+            mPreferenceControllerHelper;
+    private Map<Preference, Bundle> mPreferenceBundleMapEmpty = new HashMap<>();
+    private Map<Preference, Bundle> mPreferenceBundleMap = new HashMap<>();
+
+    @Mock
+    private ExtraSettingsLoader mExtraSettingsLoaderMock;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mPreferenceGroup.setIntent(FAKE_INTENT);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                ExtraSettingsPreferenceController.class, mPreferenceGroup);
+        mController = mPreferenceControllerHelper.getController();
+        Preference preference = new Preference(mContext);
+
+        Bundle bundle = new Bundle();
+        mPreferenceBundleMap = new HashMap<>();
+        mPreferenceBundleMap.put(preference, bundle);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationPackageManager.reset();
+    }
+
+    @Test
+    public void testRefreshUi_notInitializedYet() {
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void testRefreshUi_initialized_noPreferenceAdded() {
+        when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
+                mPreferenceBundleMapEmpty);
+
+        mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+        assertThat(mPreferenceGroup.isVisible()).isEqualTo(false);
+    }
+
+    @Test
+    public void testRefreshUi_noPreferenceAdded_shouldNotBeVisible() {
+        when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
+                mPreferenceBundleMapEmpty);
+
+        mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isEqualTo(false);
+    }
+
+    @Test
+    public void testRefreshUi_initialized_preferenceAdded() {
+        when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
+                mPreferenceBundleMap);
+
+        mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void testRefreshUi_preferenceAdded_shouldBeVisible() {
+        when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
+                mPreferenceBundleMap);
+
+        mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isEqualTo(true);
+    }
+
+    @Test
+    public void testRefreshUi_refreshedTwice_shouldOnlyAddPreferenceOnce() {
+        when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
+                mPreferenceBundleMap);
+
+        mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void testRefreshUi_refreshedTwice_stillBeVisible() {
+        when(mExtraSettingsLoaderMock.loadPreferences(FAKE_INTENT)).thenReturn(
+                mPreferenceBundleMap);
+
+        mController.setExtraSettingsLoader(mExtraSettingsLoaderMock);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isEqualTo(true);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/FakePreferenceController.java b/tests/robotests/src/com/android/car/settings/common/FakePreferenceController.java
new file mode 100644
index 0000000..0762f26
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/FakePreferenceController.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Concrete {@link PreferenceController} with methods for verifying behavior in tests.
+ */
+public class FakePreferenceController extends PreferenceController<Preference> {
+
+    @AvailabilityStatus
+    private int mAvailabilityStatus;
+    private int mCheckInitializedCallCount;
+    private int mOnCreateInternalCallCount;
+    private int mOnStartInternalCallCount;
+    private int mOnResumeInternalCallCount;
+    private int mOnPauseInternalCallCount;
+    private int mOnStopInternalCallCount;
+    private int mOnDestroyInternalCallCount;
+    private int mUpdateStateCallCount;
+    private Preference mUpdateStateArg;
+    private int mHandlePreferenceChangedCallCount;
+    private Preference mHandlePreferenceChangedPreferenceArg;
+    private Object mHandlePreferenceChangedValueArg;
+    private int mHandlePreferenceClickedCallCount;
+    private Preference mHandlePreferenceClickedArg;
+    private boolean mAllIgnoresUxRestrictions = false;
+    private Set<String> mPreferencesIgnoringUxRestrictions = new HashSet<>();
+
+    public FakePreferenceController(Context context, String preferenceKey,
+            FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+        super(context, preferenceKey, fragmentController, uxRestrictions);
+        mAvailabilityStatus = super.getAvailabilityStatus();
+    }
+
+    @Override
+    protected Class<Preference> getPreferenceType() {
+        return Preference.class;
+    }
+
+    @Override
+    protected void checkInitialized() {
+        mCheckInitializedCallCount++;
+    }
+
+    int getCheckInitializedCallCount() {
+        return mCheckInitializedCallCount;
+    }
+
+    @Override
+    @AvailabilityStatus
+    protected int getAvailabilityStatus() {
+        return mAvailabilityStatus;
+    }
+
+    void setAvailabilityStatus(@AvailabilityStatus int availabilityStatus) {
+        mAvailabilityStatus = availabilityStatus;
+    }
+
+    @Override
+    protected void onCreateInternal() {
+        mOnCreateInternalCallCount++;
+    }
+
+    int getOnCreateInternalCallCount() {
+        return mOnCreateInternalCallCount;
+    }
+
+    @Override
+    protected void onStartInternal() {
+        mOnStartInternalCallCount++;
+    }
+
+    int getOnStartInternalCallCount() {
+        return mOnStartInternalCallCount;
+    }
+
+    @Override
+    protected void onResumeInternal() {
+        mOnResumeInternalCallCount++;
+    }
+
+    int getOnResumeInternalCallCount() {
+        return mOnResumeInternalCallCount;
+    }
+
+    @Override
+    protected void onPauseInternal() {
+        mOnPauseInternalCallCount++;
+    }
+
+    int getOnPauseInternalCallCount() {
+        return mOnPauseInternalCallCount;
+    }
+
+    @Override
+    protected void onStopInternal() {
+        mOnStopInternalCallCount++;
+    }
+
+    int getOnStopInternalCallCount() {
+        return mOnStopInternalCallCount;
+    }
+
+    @Override
+    protected void onDestroyInternal() {
+        mOnDestroyInternalCallCount++;
+    }
+
+    int getOnDestroyInternalCallCount() {
+        return mOnDestroyInternalCallCount;
+    }
+
+    @Override
+    protected void updateState(Preference preference) {
+        mUpdateStateArg = preference;
+        mUpdateStateCallCount++;
+    }
+
+    Preference getUpdateStateArg() {
+        return mUpdateStateArg;
+    }
+
+    int getUpdateStateCallCount() {
+        return mUpdateStateCallCount;
+    }
+
+    @Override
+    protected boolean handlePreferenceChanged(Preference preference, Object newValue) {
+        mHandlePreferenceChangedCallCount++;
+        mHandlePreferenceChangedPreferenceArg = preference;
+        mHandlePreferenceChangedValueArg = newValue;
+        return super.handlePreferenceChanged(preference, newValue);
+    }
+
+    int getHandlePreferenceChangedCallCount() {
+        return mHandlePreferenceChangedCallCount;
+    }
+
+    Preference getHandlePreferenceChangedPreferenceArg() {
+        return mHandlePreferenceChangedPreferenceArg;
+    }
+
+    Object getHandlePreferenceChangedValueArg() {
+        return mHandlePreferenceChangedValueArg;
+    }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        mHandlePreferenceClickedCallCount++;
+        mHandlePreferenceClickedArg = preference;
+        return super.handlePreferenceClicked(preference);
+    }
+
+    int getHandlePreferenceClickedCallCount() {
+        return mHandlePreferenceClickedCallCount;
+    }
+
+    Preference getHandlePreferenceClickedArg() {
+        return mHandlePreferenceClickedArg;
+    }
+
+    @Override
+    protected boolean isUxRestrictionsIgnored(boolean allIgnores, Set preferencesThatIgnore) {
+        return super.isUxRestrictionsIgnored(mAllIgnoresUxRestrictions,
+                mPreferencesIgnoringUxRestrictions);
+    }
+
+    protected void setUxRestrictionsIgnoredConfig(boolean allIgnore, Set preferencesThatIgnore) {
+        mAllIgnoresUxRestrictions = allIgnore;
+        mPreferencesIgnoringUxRestrictions = preferencesThatIgnore;
+    }
+
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/MasterSwitchPreferenceTest.java b/tests/robotests/src/com/android/car/settings/common/MasterSwitchPreferenceTest.java
new file mode 100644
index 0000000..c39281c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/MasterSwitchPreferenceTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.appcompat.view.ContextThemeWrapper;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class MasterSwitchPreferenceTest {
+
+    private PreferenceViewHolder mViewHolder;
+    private MasterSwitchPreference mMasterSwitchPreference;
+    @Mock
+    private MasterSwitchPreference.OnSwitchToggleListener mListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        Context themedContext = new ContextThemeWrapper(context, R.style.CarSettingTheme);
+        View rootView = View.inflate(themedContext, R.layout.two_action_preference, null);
+        View.inflate(themedContext, R.layout.master_switch_widget,
+                rootView.findViewById(android.R.id.widget_frame));
+        mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
+        mMasterSwitchPreference = new MasterSwitchPreference(context);
+
+        mMasterSwitchPreference.onBindViewHolder(mViewHolder);
+        mMasterSwitchPreference.setSwitchChecked(false);
+        mMasterSwitchPreference.setSwitchToggleListener(mListener);
+    }
+
+    @Test
+    public void widgetClicked_callsListener() {
+        mViewHolder.findViewById(android.R.id.widget_frame).performClick();
+
+        verify(mListener).onToggle(mMasterSwitchPreference, true);
+    }
+
+    @Test
+    public void widgetClicked_togglesSwitchState() {
+        mViewHolder.findViewById(android.R.id.widget_frame).performClick();
+
+        assertThat(mMasterSwitchPreference.isSwitchChecked()).isTrue();
+    }
+
+    @Test
+    public void setSwitchState_listenerSetAndButtonVisible_oppositeBool_callsListener() {
+        mMasterSwitchPreference.setSwitchChecked(true);
+        verify(mListener).onToggle(mMasterSwitchPreference, true);
+    }
+
+    @Test
+    public void setSwitchState_listenerSetAndButtonVisible_oppositeBool_togglesSwitchState() {
+        mMasterSwitchPreference.setSwitchChecked(true);
+        assertThat(mMasterSwitchPreference.isSwitchChecked()).isTrue();
+    }
+
+    @Test
+    public void setSwitchState_listenerSetAndButtonVisible_sameBool_listenerNotCalled() {
+        mMasterSwitchPreference.setSwitchChecked(false);
+        verify(mListener, never()).onToggle(eq(mMasterSwitchPreference), anyBoolean());
+    }
+
+    @Test
+    public void setSwitchState_listenerSetAndButtonInvisible_oppositeBool_listenerNotCalled() {
+        mMasterSwitchPreference.showAction(false);
+
+        mMasterSwitchPreference.setSwitchChecked(true);
+        verify(mListener, never()).onToggle(eq(mMasterSwitchPreference), anyBoolean());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/PasswordEditTextPreferenceDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/PasswordEditTextPreferenceDialogFragmentTest.java
new file mode 100644
index 0000000..647b641
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/PasswordEditTextPreferenceDialogFragmentTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.InputType;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.EditText;
+
+import androidx.preference.EditTextPreference;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.shadows.ShadowAlertDialog;
+
+/** Unit test for {@link EditTextPreferenceDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class PasswordEditTextPreferenceDialogFragmentTest {
+
+    private Context mContext;
+    private ActivityController<BaseTestActivity> mTestActivityController;
+    private BaseTestActivity mTestActivity;
+    private EditTextPreference mPreference;
+    private PasswordEditTextPreferenceDialogFragment mFragment;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mTestActivityController = ActivityController.of(new BaseTestActivity());
+        mTestActivity = mTestActivityController.get();
+        mTestActivityController.setup();
+        TestTargetFragment targetFragment = new TestTargetFragment();
+        mTestActivity.launchFragment(targetFragment);
+        mPreference = new PasswordEditTextPreference(mContext);
+        mPreference.setDialogLayoutResource(R.layout.preference_dialog_password_edittext);
+        mPreference.setKey("key");
+        targetFragment.getPreferenceScreen().addPreference(mPreference);
+        mFragment = PasswordEditTextPreferenceDialogFragment.newInstance(mPreference.getKey());
+        mFragment.setTargetFragment(targetFragment, /* requestCode= */ 0);
+    }
+
+    @Test
+    public void onStart_inputTypeSetToPassword_shouldRevealShowPasswordCheckBoxUnchecked() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        CheckBox checkBox = dialog.findViewById(R.id.checkbox);
+
+        assertThat(checkBox.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(!checkBox.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onCheckBoxChecked_shouldRevealRawPassword() {
+        String testPassword = "TEST_PASSWORD";
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        CheckBox checkBox = dialog.findViewById(R.id.checkbox);
+        EditText editText = dialog.findViewById(android.R.id.edit);
+        editText.setText(testPassword);
+        checkBox.performClick();
+
+        assertThat(editText.getInputType()).isEqualTo(InputType.TYPE_CLASS_TEXT
+                | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
+        assertThat(editText.getText().toString()).isEqualTo(testPassword);
+    }
+
+    @Test
+    public void onCheckBoxUnchecked_shouldObscureRawPassword() {
+        String testPassword = "TEST_PASSWORD";
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        CheckBox checkBox = dialog.findViewById(R.id.checkbox);
+        EditText editText = dialog.findViewById(android.R.id.edit);
+        editText.setText(testPassword);
+        // Performing click twice to simulate uncheck
+        checkBox.performClick();
+        checkBox.performClick();
+
+        assertThat(editText.getInputType()).isEqualTo((InputType.TYPE_CLASS_TEXT
+                | InputType.TYPE_TEXT_VARIATION_PASSWORD));
+        assertThat(editText.getText().toString()).isEqualTo(testPassword);
+    }
+
+    /** Simple {@link PreferenceFragmentCompat} implementation to serve as the target fragment. */
+    public static class TestTargetFragment extends PreferenceFragmentCompat {
+        @Override
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+            setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/PreferenceControllerListHelperTest.java b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerListHelperTest.java
new file mode 100644
index 0000000..9871f28
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerListHelperTest.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.testng.Assert.assertThrows;
+
+import android.car.drivingstate.CarUxRestrictions;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Unit test for {@link PreferenceControllerListHelper}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class PreferenceControllerListHelperTest {
+
+    private static final CarUxRestrictions UX_RESTRICTIONS =
+            new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                    CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+    @Test
+    public void getControllers_returnsList() {
+        List<String> validKeys = Arrays.asList("key1", "key2");
+        List<PreferenceController> controllers =
+                PreferenceControllerListHelper.getPreferenceControllersFromXml(
+                        RuntimeEnvironment.application,
+                        R.xml.preference_controller_list_helper_success,
+                        mock(FragmentController.class),
+                        UX_RESTRICTIONS);
+
+        assertThat(controllers).hasSize(validKeys.size());
+        List<String> foundKeys = new ArrayList<>();
+        for (PreferenceController controller : controllers) {
+            assertThat(controller).isInstanceOf(DefaultRestrictionsPreferenceController.class);
+            foundKeys.add(controller.getPreferenceKey());
+        }
+        assertThat(foundKeys).containsAllIn(validKeys);
+    }
+
+    @Test
+    public void getControllers_invalidController_throwsIllegalArgumentException() {
+        assertThrows(IllegalArgumentException.class,
+                () -> PreferenceControllerListHelper.getPreferenceControllersFromXml(
+                        RuntimeEnvironment.application,
+                        R.xml.preference_controller_list_helper_fail_invalid_controller,
+                        mock(FragmentController.class), UX_RESTRICTIONS));
+    }
+
+    @Test
+    public void getControllers_missingKey_throwsIllegalArgumentException() {
+        assertThrows(IllegalArgumentException.class,
+                () -> PreferenceControllerListHelper.getPreferenceControllersFromXml(
+                        RuntimeEnvironment.application,
+                        R.xml.preference_controller_list_helper_fail_missing_key,
+                        mock(FragmentController.class), UX_RESTRICTIONS));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java
new file mode 100644
index 0000000..b51db10
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java
@@ -0,0 +1,396 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.testng.Assert.assertThrows;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.InOrder;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Unit test for {@link PreferenceController}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class PreferenceControllerTest {
+
+    private static final CarUxRestrictions LIMIT_STRINGS_UX_RESTRICTIONS =
+            new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                    CarUxRestrictions.UX_RESTRICTIONS_LIMIT_STRING_LENGTH, /* timestamp= */
+                    0).build();
+    private static final CarUxRestrictions NO_SETUP_UX_RESTRICTIONS =
+            new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                    CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, /* timestamp= */ 0).build();
+
+    private static final CarUxRestrictions BASELINE_UX_RESTRICTIONS =
+            new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                    CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+    private PreferenceControllerTestHelper<FakePreferenceController> mControllerHelper;
+    private FakePreferenceController mController;
+    private Context mContext;
+
+    @Mock
+    private Preference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                FakePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @Test
+    public void setPreference_wrongType_throwsIllegalArgumentException() {
+        PreferenceControllerTestHelper<WrongTypePreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext, WrongTypePreferenceController.class);
+
+        assertThrows(IllegalArgumentException.class, () -> controllerHelper.setPreference(
+                new Preference(mContext)));
+    }
+
+    @Test
+    public void setPreference_correctType_setsPreference() {
+        assertThat(mController.getPreference()).isEqualTo(mPreference);
+    }
+
+    @Test
+    public void setPreference_callsCheckInitialized() {
+        assertThat(mController.getCheckInitializedCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void setPreference_registersOnPreferenceChangeListener() {
+        ArgumentCaptor<Preference.OnPreferenceChangeListener> listenerArgumentCaptor =
+                ArgumentCaptor.forClass(Preference.OnPreferenceChangeListener.class);
+        Object newValue = new Object();
+
+        verify(mPreference).setOnPreferenceChangeListener(listenerArgumentCaptor.capture());
+        listenerArgumentCaptor.getValue().onPreferenceChange(mPreference, newValue);
+
+        assertThat(mController.getHandlePreferenceChangedCallCount()).isEqualTo(1);
+        assertThat(mController.getHandlePreferenceChangedPreferenceArg()).isEqualTo(mPreference);
+        assertThat(mController.getHandlePreferenceChangedValueArg()).isEqualTo(newValue);
+    }
+
+    @Test
+    public void setPreference_registersOnPreferenceClickListener() {
+        ArgumentCaptor<Preference.OnPreferenceClickListener> listenerArgumentCaptor =
+                ArgumentCaptor.forClass(Preference.OnPreferenceClickListener.class);
+
+        verify(mPreference).setOnPreferenceClickListener(listenerArgumentCaptor.capture());
+        listenerArgumentCaptor.getValue().onPreferenceClick(mPreference);
+
+        assertThat(mController.getHandlePreferenceClickedCallCount()).isEqualTo(1);
+        assertThat(mController.getHandlePreferenceClickedArg()).isEqualTo(mPreference);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_updatesUxRestrictions() {
+        mController.onUxRestrictionsChanged(NO_SETUP_UX_RESTRICTIONS);
+
+        assertThat(mController.getUxRestrictions()).isEqualTo(NO_SETUP_UX_RESTRICTIONS);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_created_available_updatesState() {
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        mController.onUxRestrictionsChanged(LIMIT_STRINGS_UX_RESTRICTIONS);
+
+        // onCreate, onUxRestrictionsChanged.
+        assertThat(mController.getUpdateStateCallCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_notCreated_available_doesNotUpdateState() {
+        mController.onUxRestrictionsChanged(LIMIT_STRINGS_UX_RESTRICTIONS);
+
+        assertThat(mController.getUpdateStateCallCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_created_restricted_preferenceDisabled() {
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        mController.onUxRestrictionsChanged(NO_SETUP_UX_RESTRICTIONS);
+
+        verify(mPreference).setEnabled(false);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_created_restricted_unrestricted_preferenceEnabled() {
+        InOrder orderVerifier = inOrder(mPreference);
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.onUxRestrictionsChanged(NO_SETUP_UX_RESTRICTIONS);
+        mController.onUxRestrictionsChanged(BASELINE_UX_RESTRICTIONS);
+
+        // setEnabled(true) called on Create.
+        orderVerifier.verify(mPreference).setEnabled(true);
+
+        // setEnabled(false) called with the first UXR change event.
+        orderVerifier.verify(mPreference).setEnabled(false);
+
+        // setEnabled(true) called with the second UXR change event.
+        orderVerifier.verify(mPreference).setEnabled(true);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_restricted_allPreferencesIgnore_preferenceEnabled() {
+        // mPreference cannot be a Mock here because its real methods need to be invoked.
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                FakePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+
+        Set preferencesIgnoringUxRestrictions = new HashSet();
+        mController.setUxRestrictionsIgnoredConfig(/* allIgnores= */ true,
+                preferencesIgnoringUxRestrictions);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.onUxRestrictionsChanged(NO_SETUP_UX_RESTRICTIONS);
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_restricted_thisPreferenceIgnores_preferenceEnabled() {
+        // mPreference cannot be a Mock here because its real methods need to be invoked.
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                FakePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+
+        Set preferencesIgnoringUxRestrictions = new HashSet();
+        preferencesIgnoringUxRestrictions.add(PreferenceControllerTestHelper.getKey());
+        mController.setUxRestrictionsIgnoredConfig(/* allIgnores= */ false,
+                preferencesIgnoringUxRestrictions);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.onUxRestrictionsChanged(NO_SETUP_UX_RESTRICTIONS);
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_restricted_uxRestrictionsNotIgnored_preferenceDisabled() {
+        // mPreference cannot be a Mock here because its real methods need to be invoked.
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                FakePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+
+        Set preferencesIgnoringUxRestrictions = new HashSet();
+        mController.setUxRestrictionsIgnoredConfig(/* allIgnores= */ false,
+                preferencesIgnoringUxRestrictions);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.onUxRestrictionsChanged(NO_SETUP_UX_RESTRICTIONS);
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void getAvailabilityStatus_defaultsToAvailable() {
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void refreshUi_notCreated_doesNothing() {
+        mController.refreshUi();
+
+        verify(mPreference, never()).setVisible(anyBoolean());
+        assertThat(mController.getUpdateStateCallCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_created_available_preferenceShown() {
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        mController.refreshUi();
+
+        // onCreate, refreshUi.
+        verify(mPreference, times(2)).setVisible(true);
+    }
+
+    @Test
+    public void refreshUi_created_notAvailable_preferenceHidden() {
+        mController.setAvailabilityStatus(CONDITIONALLY_UNAVAILABLE);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        mController.refreshUi();
+
+        // onCreate, refreshUi.
+        verify(mPreference, times(2)).setVisible(false);
+    }
+
+    @Test
+    public void refreshUi_created_available_updatesState() {
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        mController.refreshUi();
+
+        // onCreate, refreshUi.
+        assertThat(mController.getUpdateStateCallCount()).isEqualTo(2);
+        assertThat(mController.getUpdateStateArg()).isEqualTo(mPreference);
+    }
+
+    @Test
+    public void refreshUi_created_notAvailable_doesNotUpdateState() {
+        mController.setAvailabilityStatus(CONDITIONALLY_UNAVAILABLE);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        mController.refreshUi();
+
+        assertThat(mController.getUpdateStateCallCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void lifecycle_unsupportedOnDevice_doesNotCallSubclassHooks() {
+        mController.setAvailabilityStatus(UNSUPPORTED_ON_DEVICE);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.markState(Lifecycle.State.DESTROYED);
+
+        assertThat(mController.getOnCreateInternalCallCount()).isEqualTo(0);
+        assertThat(mController.getOnStartInternalCallCount()).isEqualTo(0);
+        assertThat(mController.getOnResumeInternalCallCount()).isEqualTo(0);
+        assertThat(mController.getOnPauseInternalCallCount()).isEqualTo(0);
+        assertThat(mController.getOnStopInternalCallCount()).isEqualTo(0);
+        assertThat(mController.getOnDestroyInternalCallCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onCreate_unsupportedOnDevice_hidesPreference() {
+        mController.setAvailabilityStatus(UNSUPPORTED_ON_DEVICE);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        verify(mPreference).setVisible(false);
+    }
+
+    @Test
+    public void onCreate_callsSubclassHook() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mController.getOnCreateInternalCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onCreate_available_updatesState() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mController.getUpdateStateCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onStart_callsSubclassHook() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mController.getOnStartInternalCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onStart_available_updatesState() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        // onCreate, onStart.
+        assertThat(mController.getUpdateStateCallCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void onResume_callsSubclassHook() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_RESUME);
+
+        assertThat(mController.getOnResumeInternalCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onPause_callsSubclassHook() {
+        mControllerHelper.markState(Lifecycle.State.RESUMED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_PAUSE);
+
+        assertThat(mController.getOnPauseInternalCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onStop_callsSubclassHook() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(mController.getOnStopInternalCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onDestroy_callsSubclassHook() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        assertThat(mController.getOnDestroyInternalCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void handlePreferenceChanged_defaultReturnsTrue() {
+        assertThat(mController.handlePreferenceChanged(mPreference, new Object())).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceClicked_defaultReturnsFalse() {
+        assertThat(mController.handlePreferenceClicked(mPreference)).isFalse();
+    }
+
+    /** For testing passing the wrong type of preference to the controller. */
+    private static class WrongTypePreferenceController extends
+            PreferenceController<PreferenceGroup> {
+
+        WrongTypePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<PreferenceGroup> getPreferenceType() {
+            return PreferenceGroup.class;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTestHelper.java b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTestHelper.java
new file mode 100644
index 0000000..3ed36af
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTestHelper.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import static androidx.lifecycle.Lifecycle.Event.ON_CREATE;
+import static androidx.lifecycle.Lifecycle.Event.ON_DESTROY;
+import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE;
+import static androidx.lifecycle.Lifecycle.Event.ON_RESUME;
+import static androidx.lifecycle.Lifecycle.Event.ON_START;
+import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
+import static androidx.lifecycle.Lifecycle.State.CREATED;
+import static androidx.lifecycle.Lifecycle.State.DESTROYED;
+import static androidx.lifecycle.Lifecycle.State.INITIALIZED;
+import static androidx.lifecycle.Lifecycle.State.RESUMED;
+import static androidx.lifecycle.Lifecycle.State.STARTED;
+
+import static org.mockito.Mockito.mock;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+
+import org.robolectric.util.ReflectionHelpers;
+import org.robolectric.util.ReflectionHelpers.ClassParameter;
+
+/**
+ * Helper for testing {@link PreferenceController} classes.
+ *
+ * @param <T> the type of preference controller under test.
+ */
+public class PreferenceControllerTestHelper<T extends PreferenceController> {
+
+    private static final String PREFERENCE_KEY = "preference_key";
+
+    private static final CarUxRestrictions UX_RESTRICTIONS =
+            new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                    CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
+
+    private Lifecycle.State mState = INITIALIZED;
+
+    private final FragmentController mMockFragmentController;
+    private final T mPreferenceController;
+    private final PreferenceScreen mScreen;
+    private boolean mSetPreferenceCalled;
+
+    /**
+     * Constructs a new helper. Call {@link #setPreference(Preference)} once initialization on the
+     * controller is complete to associate the controller with a preference.
+     *
+     * @param context                  the {@link Context} to use to instantiate the preference
+     *                                 controller.
+     * @param preferenceControllerType the class type under test.
+     */
+    public PreferenceControllerTestHelper(Context context, Class<T> preferenceControllerType) {
+        mMockFragmentController = mock(FragmentController.class);
+        mPreferenceController = ReflectionHelpers.callConstructor(preferenceControllerType,
+                ClassParameter.from(Context.class, context),
+                ClassParameter.from(String.class, PREFERENCE_KEY),
+                ClassParameter.from(FragmentController.class, mMockFragmentController),
+                ClassParameter.from(CarUxRestrictions.class, UX_RESTRICTIONS));
+        mScreen = new PreferenceManager(context).createPreferenceScreen(context);
+    }
+
+    /**
+     * Convenience constructor for a new helper for controllers which do not need to do additional
+     * initialization before a preference is set.
+     *
+     * @param preference the {@link Preference} to associate with the controller.
+     */
+    public PreferenceControllerTestHelper(Context context, Class<T> preferenceControllerType,
+            Preference preference) {
+        this(context, preferenceControllerType);
+        setPreference(preference);
+    }
+
+    /**
+     * Associates the controller with the given preference. This should only be called once.
+     */
+    public void setPreference(Preference preference) {
+        if (mSetPreferenceCalled) {
+            throw new IllegalStateException(
+                    "setPreference should only be called once. Create a new helper if needed.");
+        }
+        preference.setKey(PREFERENCE_KEY);
+        mScreen.addPreference(preference);
+        mPreferenceController.setPreference(preference);
+        mSetPreferenceCalled = true;
+    }
+
+    /**
+     * Returns the {@link PreferenceController} of this helper.
+     */
+    public T getController() {
+        return mPreferenceController;
+    }
+
+    /**
+     * Returns a mock {@link FragmentController} that can be used to verify controller navigation
+     * and stub finding dialog fragments.
+     */
+    public FragmentController getMockFragmentController() {
+        return mMockFragmentController;
+    }
+
+    /**
+     * Sends a {@link Lifecycle.Event} to the controller. This is preferred over calling the
+     * controller's lifecycle methods directly as it ensures intermediate events are dispatched.
+     * For example, sending {@link Lifecycle.Event#ON_START} to an
+     * {@link Lifecycle.State#INITIALIZED} controller will dispatch
+     * {@link Lifecycle.Event#ON_CREATE} and {@link Lifecycle.Event#ON_START} while moving the
+     * controller to the {@link Lifecycle.State#STARTED} state.
+     */
+    public void sendLifecycleEvent(Lifecycle.Event event) {
+        markState(getStateAfter(event));
+    }
+
+    /**
+     * Move the {@link PreferenceController} to the given {@code state}. This is preferred over
+     * calling the controller's lifecycle methods directly as it ensures intermediate events are
+     * dispatched. For example, marking the {@link Lifecycle.State#STARTED} state on an
+     * {@link Lifecycle.State#INITIALIZED} controller will also send the
+     * {@link Lifecycle.Event#ON_CREATE} and {@link Lifecycle.Event#ON_START} events.
+     */
+    public void markState(Lifecycle.State state) {
+        while (mState != state) {
+            while (mState.compareTo(state) > 0) {
+                dispatchEvent(downEvent(mState));
+            }
+            while (mState.compareTo(state) < 0) {
+                dispatchEvent(upEvent(mState));
+            }
+        }
+    }
+
+    public static String getKey() {
+        return PREFERENCE_KEY;
+    }
+
+    /*
+     * Ideally we would use androidx.lifecycle.LifecycleRegistry to drive the lifecycle changes.
+     * However, doing so led to test flakiness with an unknown root cause. We dispatch state
+     * changes manually for now, borrowing from LifecycleRegistry's implementation, pending
+     * further investigation.
+     */
+
+    @NonNull
+    private Lifecycle getLifecycle() {
+        throw new UnsupportedOperationException();
+    }
+
+    private void dispatchEvent(Lifecycle.Event event) {
+        switch (event) {
+            case ON_CREATE:
+                mScreen.onAttached();
+                mPreferenceController.onCreate(this::getLifecycle);
+                break;
+            case ON_START:
+                mPreferenceController.onStart(this::getLifecycle);
+                break;
+            case ON_RESUME:
+                mPreferenceController.onResume(this::getLifecycle);
+                break;
+            case ON_PAUSE:
+                mPreferenceController.onPause(this::getLifecycle);
+                break;
+            case ON_STOP:
+                mPreferenceController.onStop(this::getLifecycle);
+                break;
+            case ON_DESTROY:
+                mScreen.onDetached();
+                mPreferenceController.onDestroy(this::getLifecycle);
+                break;
+            case ON_ANY:
+                throw new IllegalArgumentException();
+        }
+
+        mState = getStateAfter(event);
+    }
+
+    private static Lifecycle.State getStateAfter(Lifecycle.Event event) {
+        switch (event) {
+            case ON_CREATE:
+            case ON_STOP:
+                return CREATED;
+            case ON_START:
+            case ON_PAUSE:
+                return STARTED;
+            case ON_RESUME:
+                return RESUMED;
+            case ON_DESTROY:
+                return DESTROYED;
+            case ON_ANY:
+                break;
+        }
+        throw new IllegalArgumentException("Unexpected event value " + event);
+    }
+
+    private static Lifecycle.Event downEvent(Lifecycle.State state) {
+        switch (state) {
+            case INITIALIZED:
+                throw new IllegalArgumentException();
+            case CREATED:
+                return ON_DESTROY;
+            case STARTED:
+                return ON_STOP;
+            case RESUMED:
+                return ON_PAUSE;
+            case DESTROYED:
+                throw new IllegalArgumentException();
+        }
+        throw new IllegalArgumentException("Unexpected state value " + state);
+    }
+
+    private static Lifecycle.Event upEvent(Lifecycle.State state) {
+        switch (state) {
+            case INITIALIZED:
+            case DESTROYED:
+                return ON_CREATE;
+            case CREATED:
+                return ON_START;
+            case STARTED:
+                return ON_RESUME;
+            case RESUMED:
+                throw new IllegalArgumentException();
+        }
+        throw new IllegalArgumentException("Unexpected state value " + state);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/PreferenceUtilTest.java b/tests/robotests/src/com/android/car/settings/common/PreferenceUtilTest.java
new file mode 100644
index 0000000..d95e631
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/PreferenceUtilTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class PreferenceUtilTest {
+
+    @Test
+    public void testCheckPreferenceType_true() {
+        Preference preference = new SwitchPreference(RuntimeEnvironment.application);
+        assertThat(PreferenceUtil.checkPreferenceType(preference, SwitchPreference.class)).isTrue();
+    }
+
+    @Test
+    public void testCheckPreferenceType_superclass_true() {
+        Preference preference = new SwitchPreference(RuntimeEnvironment.application);
+        assertThat(
+                PreferenceUtil.checkPreferenceType(preference, TwoStatePreference.class)).isTrue();
+    }
+
+    @Test
+    public void testCheckPreferenceType_false() {
+        Preference preference = new ListPreference(RuntimeEnvironment.application);
+        assertThat(
+                PreferenceUtil.checkPreferenceType(preference, TwoStatePreference.class)).isFalse();
+    }
+
+    // Test should succeed without throwing an exception.
+    @Test
+    public void testRequirePreferenceType_true() {
+        Preference preference = new SwitchPreference(RuntimeEnvironment.application);
+        PreferenceUtil.requirePreferenceType(preference, SwitchPreference.class);
+    }
+
+    // Test should succeed without throwing an exception.
+    @Test
+    public void testRequirePreferenceType_superclass_true() {
+        Preference preference = new SwitchPreference(RuntimeEnvironment.application);
+        PreferenceUtil.requirePreferenceType(preference, TwoStatePreference.class);
+    }
+
+    @Test
+    public void testRequirePreferenceType_false() {
+        Preference preference = new ListPreference(RuntimeEnvironment.application);
+        assertThrows(IllegalArgumentException.class,
+                () -> PreferenceUtil.requirePreferenceType(preference, TwoStatePreference.class));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/PreferenceXmlParserTest.java b/tests/robotests/src/com/android/car/settings/common/PreferenceXmlParserTest.java
new file mode 100644
index 0000000..e989e74
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/PreferenceXmlParserTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.os.Bundle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Unit test for {@link PreferenceXmlParser}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class PreferenceXmlParserTest {
+
+    @Test
+    public void extractMetadata_keyAndControllerName() throws IOException, XmlPullParserException {
+        List<Bundle> metadata = PreferenceXmlParser.extractMetadata(
+                RuntimeEnvironment.application, R.xml.preference_parser,
+                PreferenceXmlParser.MetadataFlag.FLAG_NEED_KEY
+                        | PreferenceXmlParser.MetadataFlag.FLAG_NEED_PREF_CONTROLLER);
+
+        assertThat(metadata).hasSize(4);
+        for (Bundle bundle : metadata) {
+            assertThat(bundle.getString(PreferenceXmlParser.METADATA_KEY)).isNotNull();
+            assertThat(bundle.getString(PreferenceXmlParser.METADATA_CONTROLLER)).isNotNull();
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/ProgressBarPreferenceTest.java b/tests/robotests/src/com/android/car/settings/common/ProgressBarPreferenceTest.java
new file mode 100644
index 0000000..171d622
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/ProgressBarPreferenceTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ProgressBarPreferenceTest {
+
+    private static final String TEST_LABEL = "TEST_LABEL";
+
+    private Context mContext;
+    private PreferenceViewHolder mViewHolder;
+    private ProgressBarPreference mProgressBarPreference;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        View rootView = View.inflate(mContext, R.layout.progress_bar_preference,
+                /* root= */ null);
+        mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
+        mProgressBarPreference = new ProgressBarPreference(mContext);
+    }
+
+    @Test
+    public void setMinLabel_setsText() {
+        mProgressBarPreference.setMinLabel(TEST_LABEL);
+        mProgressBarPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getMinLabel().getText()).isEqualTo(TEST_LABEL);
+    }
+
+    @Test
+    public void setMaxLabel_setsText() {
+        mProgressBarPreference.setMaxLabel(TEST_LABEL);
+        mProgressBarPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getMaxLabel().getText()).isEqualTo(TEST_LABEL);
+    }
+
+    @Test
+    public void setMin_setsMin() {
+        mProgressBarPreference.setMin(10);
+        mProgressBarPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getProgressBar().getMin()).isEqualTo(10);
+    }
+
+    @Test
+    public void setMax_setsMax() {
+        mProgressBarPreference.setMax(1000);
+        mProgressBarPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getProgressBar().getMax()).isEqualTo(1000);
+    }
+
+    @Test
+    public void setProgress_setsProgress() {
+        mProgressBarPreference.setProgress(40);
+        mProgressBarPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getProgressBar().getProgress()).isEqualTo(40);
+    }
+
+    private ProgressBar getProgressBar() {
+        return (ProgressBar) mViewHolder.findViewById(android.R.id.progress);
+    }
+
+    private TextView getMinLabel() {
+        return (TextView) mViewHolder.findViewById(android.R.id.text1);
+    }
+
+    private TextView getMaxLabel() {
+        return (TextView) mViewHolder.findViewById(android.R.id.text2);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/SettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/SettingsFragmentTest.java
new file mode 100644
index 0000000..a19e3dd
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/SettingsFragmentTest.java
@@ -0,0 +1,310 @@
+/*
+ * Copyright 2018 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.testng.Assert.assertThrows;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.widget.FrameLayout;
+
+import androidx.fragment.app.DialogFragment;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.DummyFragment;
+import com.android.car.settings.testutils.FragmentController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link SettingsFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class SettingsFragmentTest {
+
+    private static final String TEST_TAG = "test_tag";
+
+    private Context mContext;
+    private FragmentController<TestSettingsFragment> mFragmentController;
+    private SettingsFragment mFragment;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mFragmentController = FragmentController.of(new TestSettingsFragment());
+        mFragment = mFragmentController.get();
+    }
+
+    @Test
+    public void use_returnsController() {
+        mFragmentController.setup();
+        assertThat(mFragment.use(FakePreferenceController.class,
+                R.string.tpk_fake_controller)).isNotNull();
+    }
+
+    @Test
+    public void onAttach_registersLifecycleObservers() {
+        mFragmentController.create();
+        FakePreferenceController controller = mFragment.use(FakePreferenceController.class,
+                R.string.tpk_fake_controller);
+        assertThat(controller.getOnCreateInternalCallCount()).isEqualTo(1);
+        mFragmentController.destroy();
+        assertThat(controller.getOnDestroyInternalCallCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_propagatesToControllers() {
+        mFragmentController.setup();
+        FakePreferenceController controller = mFragment.use(FakePreferenceController.class,
+                R.string.tpk_fake_controller);
+        CarUxRestrictions uxRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_NO_KEYBOARD, /* timestamp= */ 0).build();
+        mFragment.onUxRestrictionsChanged(uxRestrictions);
+        assertThat(controller.getUxRestrictions()).isEqualTo(uxRestrictions);
+    }
+
+    @Test
+    public void onDisplayPreferenceDialog_editTextPreference_showsDialog() {
+        mFragmentController.setup();
+
+        mFragment.getPreferenceScreen().findPreference(
+                mContext.getString(R.string.tpk_edit_text_preference)).performClick();
+
+        assertThat(mFragment.getFragmentManager().findFragmentByTag(
+                SettingsFragment.DIALOG_FRAGMENT_TAG)).isInstanceOf(
+                EditTextPreferenceDialogFragment.class);
+    }
+
+    @Test
+    public void onDisplayPreferenceDialog_listPreference_showsDialog() {
+        mFragmentController.setup();
+
+        mFragment.getPreferenceScreen().findPreference(
+                mContext.getString(R.string.tpk_list_preference)).performClick();
+
+        assertThat(mFragment.getFragmentManager().findFragmentByTag(
+                SettingsFragment.DIALOG_FRAGMENT_TAG)).isInstanceOf(
+                SettingsListPreferenceDialogFragment.class);
+    }
+
+    @Test
+    public void onDisplayPreferenceDialog_unknownPreferenceType_throwsIllegalArgumentException() {
+        mFragmentController.setup();
+
+        assertThrows(IllegalArgumentException.class,
+                () -> mFragment.onDisplayPreferenceDialog(new Preference(mContext)));
+    }
+
+    @Test
+    public void onDisplayPreferenceDialog_alreadyShowing_doesNothing() {
+        mFragmentController.setup();
+
+        // Show a dialog.
+        mFragment.getPreferenceScreen().findPreference(
+                mContext.getString(R.string.tpk_edit_text_preference)).performClick();
+        assertThat(mFragment.getFragmentManager().findFragmentByTag(
+                SettingsFragment.DIALOG_FRAGMENT_TAG)).isInstanceOf(
+                EditTextPreferenceDialogFragment.class);
+
+        // Attempt to show another.
+        mFragment.getPreferenceScreen().findPreference(
+                mContext.getString(R.string.tpk_list_preference)).performClick();
+
+        // Assert only one shown at a time.
+        assertThat(mFragment.getFragmentManager().findFragmentByTag(
+                SettingsFragment.DIALOG_FRAGMENT_TAG)).isInstanceOf(
+                EditTextPreferenceDialogFragment.class);
+    }
+
+    @Test
+    public void launchFragment_otherFragment_opensFragment() {
+        mFragmentController.setup();
+        TestSettingsFragment otherFragment = new TestSettingsFragment();
+        mFragment.launchFragment(otherFragment);
+        assertThat(
+                mFragment.getFragmentManager().findFragmentById(R.id.fragment_container)).isEqualTo(
+                otherFragment);
+    }
+
+    @Test
+    public void launchFragment_dialogFragment_throwsError() {
+        mFragmentController.setup();
+        DialogFragment dialogFragment = new DialogFragment();
+        assertThrows(IllegalArgumentException.class,
+                () -> mFragment.launchFragment(dialogFragment));
+    }
+
+    @Test
+    public void showDialog_noTag_launchesDialogFragment() {
+        mFragmentController.setup();
+        DialogFragment dialogFragment = mock(DialogFragment.class);
+        mFragment.showDialog(dialogFragment, /* tag */ null);
+        verify(dialogFragment).show(mFragment.getFragmentManager(), null);
+    }
+
+    @Test
+    public void showDialog_withTag_launchesDialogFragment() {
+        mFragmentController.setup();
+        DialogFragment dialogFragment = mock(DialogFragment.class);
+        mFragment.showDialog(dialogFragment, TEST_TAG);
+        verify(dialogFragment).show(mFragment.getFragmentManager(), TEST_TAG);
+    }
+
+    @Test
+    public void findDialogByTag_retrieveOriginalDialog_returnsDialog() {
+        mFragmentController.setup();
+        DialogFragment dialogFragment = new DialogFragment();
+        mFragment.showDialog(dialogFragment, TEST_TAG);
+        assertThat(mFragment.findDialogByTag(TEST_TAG)).isEqualTo(dialogFragment);
+    }
+
+    @Test
+    public void findDialogByTag_notDialogFragment_returnsNull() {
+        mFragmentController.setup();
+        TestSettingsFragment fragment = new TestSettingsFragment();
+        mFragment.getFragmentManager().beginTransaction().add(fragment, TEST_TAG).commit();
+        assertThat(mFragment.findDialogByTag(TEST_TAG)).isNull();
+    }
+
+    @Test
+    public void findDialogByTag_noSuchFragment_returnsNull() {
+        mFragmentController.setup();
+        assertThat(mFragment.findDialogByTag(TEST_TAG)).isNull();
+    }
+
+    @Test
+    public void startActivityForResult_largeRequestCode_throwsError() {
+        mFragmentController.setup();
+        assertThrows(() -> mFragment.startActivityForResult(new Intent(), 0xffff,
+                mock(ActivityResultCallback.class)));
+    }
+
+    @Test
+    public void startActivityForResult_tooManyRequests_throwsError() {
+        mFragmentController.setup();
+        assertThrows(() -> {
+            for (int i = 0; i < 0xff; i++) {
+                mFragment.startActivityForResult(new Intent(), i,
+                        mock(ActivityResultCallback.class));
+            }
+        });
+    }
+
+    @Test
+    public void startIntentSenderForResult_largeRequestCode_throwsError() {
+        mFragmentController.setup();
+        assertThrows(
+                () -> mFragment.startIntentSenderForResult(
+                        mock(IntentSender.class), /* requestCode= */ 0xffff,
+                        /* fillInIntent= */null, /* flagsMask= */ 0,
+                        /* flagsValues= */0, /* options= */ null,
+                        mock(ActivityResultCallback.class)));
+    }
+
+    @Test
+    public void startIntentSenderForResult_tooManyRequests_throwsError() {
+        mFragmentController.setup();
+        assertThrows(() -> {
+            for (int i = 0; i < 0xff; i++) {
+                mFragment.startIntentSenderForResult(
+                        mock(IntentSender.class), /* requestCode= */ 0xffff,
+                        /* fillInIntent= */null, /* flagsMask= */ 0,
+                        /* flagsValues= */0, /* options= */ null,
+                        mock(ActivityResultCallback.class));
+            }
+        });
+    }
+
+    @Test
+    public void onActivityResult_hasValidRequestCode_triggersOnActivityResult() {
+        mFragmentController.setup();
+        ActivityResultCallback callback = mock(ActivityResultCallback.class);
+
+        int reqCode = 100;
+        int resCode = -1;
+        mFragment.startActivityForResult(new Intent(), reqCode, callback);
+        int fragmentReqCode = (1 << 8) + reqCode;
+        mFragment.onActivityResult(fragmentReqCode, resCode, new Intent());
+        verify(callback).processActivityResult(eq(reqCode), eq(resCode), any(Intent.class));
+    }
+
+    @Test
+    public void onActivityResult_wrongRequestCode_doesntTriggerOnActivityResult() {
+        mFragmentController.setup();
+        ActivityResultCallback callback = mock(ActivityResultCallback.class);
+
+        int reqCode = 100;
+        int resCode = -1;
+        mFragment.startActivityForResult(new Intent(), reqCode,
+                callback);
+        int fragmentReqCode = (2 << 8) + reqCode;
+        mFragment.onActivityResult(fragmentReqCode, resCode, new Intent());
+        verify(callback, never()).processActivityResult(anyInt(), anyInt(),
+                any(Intent.class));
+    }
+
+    @Test
+    public void onActivityCreated_hasAppIconIfRoot() {
+        mFragmentController.setup();
+        DummyFragment otherFragment = new DummyFragment();
+        mFragment.launchFragment(otherFragment);
+
+        FrameLayout actionBarContainer =
+                otherFragment.requireActivity().findViewById(R.id.action_bar);
+
+        assertThat(actionBarContainer.requireViewById(R.id.back_button).getTag(R.id.back_button))
+                .isEqualTo(R.drawable.ic_launcher_settings);
+    }
+
+    @Test
+    public void onActivityCreated_hasBackArrowIconIfNotRoot() {
+        mFragmentController.setup();
+
+        TestSettingsFragment otherFragment1 = new TestSettingsFragment();
+        mFragment.launchFragment(otherFragment1);
+
+        TestSettingsFragment otherFragment2 = new TestSettingsFragment();
+        mFragment.launchFragment(otherFragment2);
+
+        FrameLayout actionBarContainer =
+                otherFragment2.requireActivity().findViewById(R.id.action_bar);
+
+        assertThat(actionBarContainer.requireViewById(R.id.back_button).getTag(R.id.back_button))
+                .isEqualTo(R.drawable.ic_arrow_back);
+    }
+
+    /** Concrete {@link SettingsFragment} for testing. */
+    public static class TestSettingsFragment extends SettingsFragment {
+        @Override
+        protected int getPreferenceScreenResId() {
+            return R.xml.settings_fragment;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/SettingsListPreferenceDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/SettingsListPreferenceDialogFragmentTest.java
new file mode 100644
index 0000000..88310de
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/SettingsListPreferenceDialogFragmentTest.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.ShadowApplication;
+
+/** Unit test for {@link SettingsListPreferenceDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class SettingsListPreferenceDialogFragmentTest {
+
+    private ActivityController<BaseTestActivity> mTestActivityController;
+    private BaseTestActivity mTestActivity;
+    private ListPreference mPreference;
+    private SettingsListPreferenceDialogFragment mFragment;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+
+        mTestActivityController = ActivityController.of(new BaseTestActivity());
+        mTestActivity = mTestActivityController.get();
+        mTestActivityController.setup();
+
+        EditTextPreferenceDialogFragmentTest.TestTargetFragment targetFragment =
+                new EditTextPreferenceDialogFragmentTest.TestTargetFragment();
+        mTestActivity.launchFragment(targetFragment);
+        mPreference = new ListPreference(context);
+        mPreference.setDialogLayoutResource(R.layout.preference_dialog_edittext);
+        mPreference.setKey("key");
+        mPreference.setEntries(R.array.entries);
+        mPreference.setEntryValues(R.array.entry_values);
+        targetFragment.getPreferenceScreen().addPreference(mPreference);
+
+        mFragment = SettingsListPreferenceDialogFragment.newInstance(mPreference.getKey());
+        mFragment.setTargetFragment(targetFragment, /* requestCode= */ 0);
+    }
+
+    @Test
+    public void dialogPopulatedWithPreferenceEntries() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        assertThat(getShadowAlertDialog().getItems()).isEqualTo(mPreference.getEntries());
+    }
+
+    @Test
+    public void itemSelected_dismissesDialog() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        getShadowAlertDialog().clickOnItem(1);
+
+        assertThat(getShadowAlertDialog().hasBeenDismissed()).isTrue();
+    }
+
+    @Test
+    public void itemSelected_setsPreferenceValue() {
+        mPreference.setValueIndex(0);
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        getShadowAlertDialog().clickOnItem(1);
+
+        assertThat(mPreference.getValue()).isEqualTo(mPreference.getEntryValues()[1]);
+    }
+
+    @Test
+    public void onDialogClosed_negativeResult_doesNothing() {
+        mPreference.setValueIndex(0);
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+
+        dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
+
+        assertThat(mPreference.getValue()).isEqualTo(mPreference.getEntryValues()[0]);
+    }
+
+    @Test
+    public void instanceStateRetained() {
+        mPreference.setValueIndex(0);
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        // Save instance state.
+        Bundle outState = new Bundle();
+        mTestActivityController.pause().saveInstanceState(outState).stop();
+
+        // Recreate everything with saved state.
+        mTestActivityController = ActivityController.of(new BaseTestActivity());
+        mTestActivity = mTestActivityController.get();
+        mTestActivityController.setup(outState);
+
+        // Ensure saved entries were applied.
+        assertThat(getShadowAlertDialog().getItems()).isEqualTo(mPreference.getEntries());
+    }
+
+    private ShadowAlertDialog getShadowAlertDialog() {
+        return ShadowApplication.getInstance().getLatestAlertDialog();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/SettingsPreferenceDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/SettingsPreferenceDialogFragmentTest.java
new file mode 100644
index 0000000..3de4496
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/SettingsPreferenceDialogFragmentTest.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.View;
+import android.view.WindowManager;
+
+import androidx.preference.DialogPreference;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.shadows.ShadowWindow;
+
+/** Unit test for {@link SettingsPreferenceDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class SettingsPreferenceDialogFragmentTest {
+
+    private ActivityController<BaseTestActivity> mTestActivityController;
+    private BaseTestActivity mTestActivity;
+    private DialogPreference mPreference;
+    private TestSettingsPreferenceDialogFragment mFragment;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+
+        mTestActivityController = ActivityController.of(new BaseTestActivity());
+        mTestActivity = mTestActivityController.get();
+        mTestActivityController.setup();
+
+        TestTargetFragment targetFragment = new TestTargetFragment();
+        mTestActivity.launchFragment(targetFragment);
+        mPreference = new TestDialogPreference(context);
+        mPreference.setKey("key");
+        targetFragment.getPreferenceScreen().addPreference(mPreference);
+
+        mFragment = TestSettingsPreferenceDialogFragment.newInstance(mPreference.getKey());
+        mFragment.setTargetFragment(targetFragment, /* requestCode= */ 0);
+    }
+
+    @Test
+    public void dialogFieldsPopulatedWithPreferenceFields() {
+        mPreference.setDialogTitle("title");
+        mPreference.setPositiveButtonText("positive button text");
+        mPreference.setNegativeButtonText("negative button text");
+        mPreference.setDialogMessage("dialog message");
+
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        assertThat(getShadowAlertDialog().getTitle()).isEqualTo(mPreference.getDialogTitle());
+        assertThat(ShadowAlertDialog.getLatestAlertDialog().getButton(
+                DialogInterface.BUTTON_POSITIVE).getText()).isEqualTo(
+                mPreference.getPositiveButtonText());
+        assertThat(ShadowAlertDialog.getLatestAlertDialog().getButton(
+                DialogInterface.BUTTON_NEGATIVE).getText()).isEqualTo(
+                mPreference.getNegativeButtonText());
+        assertThat(getShadowAlertDialog().getMessage()).isEqualTo(mPreference.getDialogMessage());
+    }
+
+    @Test
+    public void dialogMessage_messageViewShown() {
+        mPreference.setDialogTitle("title");
+        mPreference.setPositiveButtonText("positive button text");
+        mPreference.setNegativeButtonText("negative button text");
+        mPreference.setDialogMessage("dialog message");
+
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        View messageView = ShadowAlertDialog.getLatestAlertDialog().findViewById(
+                android.R.id.message);
+
+        assertThat(messageView.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void noDialogMessage_messageViewHidden() {
+        mPreference.setDialogTitle("title");
+        mPreference.setPositiveButtonText("positive button text");
+        mPreference.setNegativeButtonText("negative button text");
+
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        View messageView = ShadowAlertDialog.getLatestAlertDialog().findViewById(
+                android.R.id.message);
+
+        assertThat(messageView.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void getPreference_returnsDialogRequestingPreference() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        assertThat(mFragment.getPreference()).isEqualTo(mPreference);
+    }
+
+    @Test
+    public void dialogClosed_positiveButton_callsOnDialogClosed() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        assertThat(mFragment.getDialogClosedResult()).isEqualTo(Boolean.TRUE);
+    }
+
+    @Test
+    public void dialogClosed_negativeButton_callsOnDialogClosed() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+
+        dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
+
+        assertThat(mFragment.getDialogClosedResult()).isEqualTo(Boolean.FALSE);
+    }
+
+    @Test
+    public void subclassNeedsInputMethod_softInputModeSetOnWindow() {
+        mFragment.setNeedsInputMethod(true);
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        assertThat(getShadowWindowFromDialog(
+                ShadowAlertDialog.getLatestAlertDialog()).getSoftInputMode()).isEqualTo(
+                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+    }
+
+    @Test
+    public void subclassDoesNotNeedInputMethod_noWindowSoftInputMode() {
+        mFragment.setNeedsInputMethod(false);
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        assertThat(getShadowWindowFromDialog(
+                ShadowAlertDialog.getLatestAlertDialog()).getSoftInputMode()).isEqualTo(0);
+    }
+
+    @Test
+    public void instanceStateRetained() {
+        String dialogTitle = "dialog title";
+        String positiveButtonText = "positive button text";
+        String negativeButtonText = "negative button text";
+        String dialogMessage = "dialog message";
+        mPreference.setDialogTitle(dialogTitle);
+        mPreference.setPositiveButtonText(positiveButtonText);
+        mPreference.setNegativeButtonText(negativeButtonText);
+        mPreference.setDialogMessage(dialogMessage);
+
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        // Save instance state.
+        Bundle outState = new Bundle();
+        mTestActivityController.pause().saveInstanceState(outState).stop();
+
+        // Recreate everything with saved state.
+        mTestActivityController = ActivityController.of(new BaseTestActivity());
+        mTestActivity = mTestActivityController.get();
+        mTestActivityController.setup(outState);
+
+        // Ensure saved fields were applied.
+        assertThat(getShadowAlertDialog().getTitle()).isEqualTo(dialogTitle);
+        assertThat(ShadowAlertDialog.getLatestAlertDialog().getButton(
+                DialogInterface.BUTTON_POSITIVE).getText()).isEqualTo(positiveButtonText);
+        assertThat(ShadowAlertDialog.getLatestAlertDialog().getButton(
+                DialogInterface.BUTTON_NEGATIVE).getText()).isEqualTo(negativeButtonText);
+        assertThat(getShadowAlertDialog().getMessage()).isEqualTo(dialogMessage);
+    }
+
+    private ShadowAlertDialog getShadowAlertDialog() {
+        return ShadowApplication.getInstance().getLatestAlertDialog();
+    }
+
+    private ShadowWindow getShadowWindowFromDialog(AlertDialog dialog) {
+        return (ShadowWindow) Shadow.extract(dialog.getWindow());
+    }
+
+    /** Concrete implementation of the fragment under test. */
+    public static class TestSettingsPreferenceDialogFragment extends
+            SettingsPreferenceDialogFragment {
+
+        private Boolean mDialogClosedResult;
+        private boolean mNeedsInputMethod;
+
+        static TestSettingsPreferenceDialogFragment newInstance(String key) {
+            TestSettingsPreferenceDialogFragment fragment =
+                    new TestSettingsPreferenceDialogFragment();
+            Bundle b = new Bundle(/* capacity= */ 1);
+            b.putString(ARG_KEY, key);
+            fragment.setArguments(b);
+            return fragment;
+        }
+
+        @Override
+        protected boolean needInputMethod() {
+            return mNeedsInputMethod;
+        }
+
+        void setNeedsInputMethod(boolean needsInputMethod) {
+            mNeedsInputMethod = needsInputMethod;
+        }
+
+        @Override
+        protected void onDialogClosed(boolean positiveResult) {
+            mDialogClosedResult = positiveResult;
+        }
+
+        Boolean getDialogClosedResult() {
+            return mDialogClosedResult;
+        }
+    }
+
+    /** Concrete implementation of {@link DialogPreference} for testing use. */
+    private static class TestDialogPreference extends DialogPreference {
+        TestDialogPreference(Context context) {
+            super(context);
+        }
+    }
+
+    /** Simple {@link PreferenceFragmentCompat} implementation to serve as the target fragment. */
+    public static class TestTargetFragment extends PreferenceFragmentCompat {
+        @Override
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+            setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/TwoActionPreferenceTest.java b/tests/robotests/src/com/android/car/settings/common/TwoActionPreferenceTest.java
new file mode 100644
index 0000000..5cce802
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/TwoActionPreferenceTest.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2018 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.ContextThemeWrapper;
+import android.view.View;
+
+import androidx.annotation.XmlRes;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class TwoActionPreferenceTest {
+
+    private static class TestTwoActionPreference extends TwoActionPreference {
+
+        TestTwoActionPreference(Context context) {
+            super(context);
+        }
+
+        @Override
+        protected void onBindWidgetFrame(View actionContainer) {
+            // Intentionally empty.
+        }
+    }
+
+    private Context mContext;
+    private PreferenceViewHolder mViewHolder;
+    private TestTwoActionPreference mTestTwoActionPreference;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        Context themedContext = new ContextThemeWrapper(mContext, R.style.CarSettingTheme);
+        View rootView = View.inflate(themedContext, R.layout.two_action_preference,
+                null);
+        mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
+        mTestTwoActionPreference = new TestTwoActionPreference(mContext);
+    }
+
+    @Test
+    public void showAction_true_buttonVisible() {
+        mTestTwoActionPreference.showAction(true);
+        mTestTwoActionPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(mViewHolder.findViewById(
+                R.id.action_widget_container).getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void showAction_false_buttonGone() {
+        mTestTwoActionPreference.showAction(false);
+        mTestTwoActionPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(mViewHolder.findViewById(
+                R.id.action_widget_container).getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void isActionShown_true() {
+        mTestTwoActionPreference.showAction(true);
+        assertThat(mTestTwoActionPreference.isActionShown()).isTrue();
+    }
+
+    @Test
+    public void isActionShown_false() {
+        mTestTwoActionPreference.showAction(false);
+        assertThat(mTestTwoActionPreference.isActionShown()).isFalse();
+    }
+
+    @Test
+    public void preferenceConstructed_attrDefined_actionShown() {
+        TestSettingsFragment fragment = TestSettingsFragment.newInstance(
+                R.xml.two_action_preference_shown);
+        FragmentController.of(fragment).setup();
+
+        TwoActionPreference preference =
+                (TwoActionPreference) fragment.getPreferenceScreen().findPreference(
+                        mContext.getString(R.string.tpk_two_action_preference));
+
+        assertThat(preference.isActionShown()).isTrue();
+    }
+
+    @Test
+    public void preferenceConstructed_defaultValue_actionShown() {
+        TestSettingsFragment fragment = TestSettingsFragment.newInstance(
+                R.xml.two_action_preference_action_shown_not_specified);
+        FragmentController.of(fragment).setup();
+
+        TwoActionPreference preference =
+                (TwoActionPreference) fragment.getPreferenceScreen().findPreference(
+                        mContext.getString(R.string.tpk_two_action_preference));
+
+        assertThat(preference.isActionShown()).isTrue();
+    }
+
+    @Test
+    public void preferenceConstructed_attrDefined_actionHidden() {
+        TestSettingsFragment fragment = TestSettingsFragment.newInstance(
+                R.xml.two_action_preference_hidden);
+        FragmentController.of(fragment).setup();
+
+        TwoActionPreference preference =
+                (TwoActionPreference) fragment.getPreferenceScreen().findPreference(
+                        mContext.getString(R.string.tpk_two_action_preference));
+
+        assertThat(preference.isActionShown()).isFalse();
+    }
+
+    /**
+     * Test settings fragment which creates the xml screen provided via {@link #newInstance(int)}.
+     */
+    public static class TestSettingsFragment extends SettingsFragment {
+
+        private static final String ARG_SCREEN_RES = "arg_screen_res";
+
+        @XmlRes
+        private int mScreenResId;
+
+        public static TestSettingsFragment newInstance(@XmlRes int screenResId) {
+            Bundle arguments = new Bundle();
+            arguments.putInt(ARG_SCREEN_RES, screenResId);
+
+            TestSettingsFragment fragment = new TestSettingsFragment();
+            fragment.setArguments(arguments);
+            return fragment;
+        }
+
+        @Override
+        public void onAttach(Context context) {
+            super.onAttach(context);
+            mScreenResId = getArguments().getInt(ARG_SCREEN_RES);
+        }
+
+        @Override
+        @XmlRes
+        protected int getPreferenceScreenResId() {
+            return mScreenResId;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/common/ValidatedEditTextPreferenceDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/common/ValidatedEditTextPreferenceDialogFragmentTest.java
new file mode 100644
index 0000000..59c0130
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/common/ValidatedEditTextPreferenceDialogFragmentTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2019 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.car.settings.common;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.widget.Button;
+import android.widget.EditText;
+
+import androidx.preference.EditTextPreference;
+import androidx.preference.PreferenceFragmentCompat;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.ShadowWindow;
+
+/** Unit test for {@link EditTextPreferenceDialogFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ValidatedEditTextPreferenceDialogFragmentTest {
+
+    private Context mContext;
+    private ActivityController<BaseTestActivity> mTestActivityController;
+    private BaseTestActivity mTestActivity;
+    private EditTextPreference mPreference;
+    private ValidatedEditTextPreferenceDialogFragment mFragment;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mTestActivityController = ActivityController.of(new BaseTestActivity());
+        mTestActivity = mTestActivityController.get();
+        mTestActivityController.setup();
+        TestTargetFragment targetFragment = new TestTargetFragment();
+        mTestActivity.launchFragment(targetFragment);
+        mPreference = new ValidatedEditTextPreference(mContext);
+        mPreference.setDialogLayoutResource(R.layout.preference_dialog_edittext);
+        mPreference.setKey("key");
+        targetFragment.getPreferenceScreen().addPreference(mPreference);
+        mFragment = ValidatedEditTextPreferenceDialogFragment
+                .newInstance(mPreference.getKey());
+
+        mFragment.setTargetFragment(targetFragment, /* requestCode= */ 0);
+    }
+
+    @Test
+    public void noValidatorSet_shouldEnablePositiveButton_and_allowEnterToSubmit() {
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        Button positiveButton = ShadowAlertDialog.getLatestAlertDialog().getButton(
+                DialogInterface.BUTTON_POSITIVE);
+        EditText editText = ShadowAlertDialog.getLatestAlertDialog().findViewById(
+                android.R.id.edit);
+
+        assertThat(positiveButton.isEnabled()).isTrue();
+        assertThat(mFragment.getAllowEnterToSubmit()).isTrue();
+
+        editText.setText("any text");
+        assertThat(positiveButton.isEnabled()).isTrue();
+        assertThat(mFragment.getAllowEnterToSubmit()).isTrue();
+    }
+
+    @Test
+    public void onInvalidInput_shouldDisablePositiveButton_and_disallowEnterToSubmit() {
+        ((ValidatedEditTextPreference) mPreference).setValidator(
+                new ValidatedEditTextPreference.Validator() {
+                    @Override
+                    public boolean isTextValid(String value) {
+                        return value.length() > 100;
+                    }
+                });
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        Button positiveButton = ShadowAlertDialog.getLatestAlertDialog().getButton(
+                DialogInterface.BUTTON_POSITIVE);
+        EditText editText = ShadowAlertDialog.getLatestAlertDialog().findViewById(
+                android.R.id.edit);
+        editText.setText("shorter than 100");
+
+        assertThat(positiveButton.isEnabled()).isFalse();
+        assertThat(mFragment.getAllowEnterToSubmit()).isFalse();
+    }
+
+    @Test
+    public void onValidInput_shouldEnablePositiveButton_and_allowEnterToSubmit() {
+        ((ValidatedEditTextPreference) mPreference).setValidator(
+                new ValidatedEditTextPreference.Validator() {
+                    @Override
+                    public boolean isTextValid(String value) {
+                        return value.length() > 1;
+                    }
+                });
+        mTestActivity.showDialog(mFragment, /* tag= */ null);
+
+        Button positiveButton = ShadowAlertDialog.getLatestAlertDialog().getButton(
+                DialogInterface.BUTTON_POSITIVE);
+        EditText editText = ShadowAlertDialog.getLatestAlertDialog().findViewById(
+                android.R.id.edit);
+        editText.setText("longer than 1");
+
+        assertThat(positiveButton.isEnabled()).isTrue();
+        assertThat(mFragment.getAllowEnterToSubmit()).isTrue();
+    }
+
+    private ShadowWindow getShadowWindowFromDialog(AlertDialog dialog) {
+        return (ShadowWindow) Shadow.extract(dialog.getWindow());
+    }
+
+    /** Simple {@link PreferenceFragmentCompat} implementation to serve as the target fragment. */
+    public static class TestTargetFragment extends PreferenceFragmentCompat {
+        @Override
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+            setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java b/tests/robotests/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java
new file mode 100644
index 0000000..c94cfa8
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/AppDataUsageFragmentTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.net.INetworkStatsService;
+import android.net.NetworkPolicy;
+import android.net.NetworkPolicyManager;
+import android.os.Bundle;
+import android.text.format.DateUtils;
+import android.util.Pair;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowINetworkStatsServiceStub;
+import com.android.car.settings.testutils.ShadowNetworkPolicyEditor;
+import com.android.car.settings.testutils.ShadowNetworkPolicyManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
+import java.time.ZonedDateTime;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/** Unit test for {@link AppDataUsageFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowNetworkPolicyEditor.class, ShadowNetworkPolicyManager.class,
+        ShadowINetworkStatsServiceStub.class})
+public class AppDataUsageFragmentTest {
+
+    private static final String KEY_START = "start";
+    private static final String KEY_END = "end";
+
+    private AppDataUsageFragment mFragment;
+    private FragmentController<AppDataUsageFragment> mFragmentController;
+
+    @Mock
+    private NetworkPolicy mNetworkPolicy;
+
+    @Mock
+    private NetworkPolicyManager mNetworkPolicyManager;
+
+    @Mock
+    private INetworkStatsService mINetworkStatsService;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mFragment = new AppDataUsageFragment();
+        mFragmentController = FragmentController.of(mFragment);
+
+        ShadowNetworkPolicyManager.setNetworkPolicyManager(mNetworkPolicyManager);
+        ShadowINetworkStatsServiceStub.setINetworkStatsSession(mINetworkStatsService);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowNetworkPolicyEditor.reset();
+        ShadowINetworkStatsServiceStub.reset();
+        ShadowNetworkPolicyManager.reset();
+    }
+
+    @Test
+    public void onActivityCreated_policyIsNull_startAndEndDateShouldHaveFourWeeksDifference() {
+        mFragmentController.create();
+
+        Bundle bundle = mFragment.getBundle();
+        long start = bundle.getLong(KEY_START);
+        long end = bundle.getLong(KEY_END);
+        long timeDiff = end - start;
+
+        assertThat(timeDiff).isEqualTo(DateUtils.WEEK_IN_MILLIS * 4);
+    }
+
+    @Test
+    public void onActivityCreated_iteratorIsEmpty_startAndEndDateShouldHaveFourWeeksDifference() {
+        ShadowNetworkPolicyEditor.setNetworkPolicy(mNetworkPolicy);
+
+        ArrayList<Pair<ZonedDateTime, ZonedDateTime>> list = new ArrayList<>();
+        Iterator iterator = list.iterator();
+        ShadowNetworkPolicyManager.setCycleIterator(iterator);
+        mFragmentController.create();
+
+        Bundle bundle = mFragment.getBundle();
+        long start = bundle.getLong(KEY_START);
+        long end = bundle.getLong(KEY_END);
+        long timeDiff = end - start;
+
+        assertThat(timeDiff).isEqualTo(DateUtils.WEEK_IN_MILLIS * 4);
+    }
+
+    @Test
+    public void onActivityCreated_iteratorIsNotEmpty_startAndEndDateShouldBeLastOneInIterator() {
+        ShadowNetworkPolicyEditor.setNetworkPolicy(mNetworkPolicy);
+
+        ZonedDateTime start1 = ZonedDateTime.now();
+        ZonedDateTime end1 = ZonedDateTime.now();
+        ZonedDateTime start2 = ZonedDateTime.now();
+        ZonedDateTime end2 = ZonedDateTime.now();
+
+        Pair pair1 = new Pair(start1, end1);
+        Pair pair2 = new Pair(start2, end2);
+
+        ArrayList<Pair<ZonedDateTime, ZonedDateTime>> list = new ArrayList<>();
+        list.add(pair1);
+        list.add(pair2);
+
+        Iterator iterator = list.iterator();
+        ShadowNetworkPolicyManager.setCycleIterator(iterator);
+        mFragmentController.create();
+
+        Bundle bundle = mFragment.getBundle();
+        long start = bundle.getLong(KEY_START);
+        long end = bundle.getLong(KEY_END);
+
+        assertThat(start).isEqualTo(start2.toInstant().toEpochMilli());
+        assertThat(end).isEqualTo(end2.toInstant().toEpochMilli());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/AppDataUsagePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datausage/AppDataUsagePreferenceControllerTest.java
new file mode 100644
index 0000000..202b093
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/AppDataUsagePreferenceControllerTest.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static android.net.TrafficStats.UID_TETHERING;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.net.NetworkStats;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.ProgressBarPreference;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUidDetailProvider;
+import com.android.settingslib.net.UidDetail;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link AppDataUsagePreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUidDetailProvider.class})
+public class AppDataUsagePreferenceControllerTest {
+
+    private static final int USER_ID = 10;
+
+    private Context mContext;
+    private LogicalPreferenceGroup mLogicalPreferenceGroup;
+    private AppDataUsagePreferenceController mController;
+    private PreferenceControllerTestHelper<AppDataUsagePreferenceController>
+            mPreferenceControllerHelper;
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Mock
+    private UidDetail mUidDetail;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        mLogicalPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AppDataUsagePreferenceController.class, mLogicalPreferenceGroup);
+        mController = mPreferenceControllerHelper.getController();
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(USER_ID);
+
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowUidDetailProvider.reset();
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void defaultInitialize_hasNoPreference() {
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onDataLoaded_dataNotLoaded_hasNoPreference() {
+        mController.onDataLoaded(null, new int[0]);
+
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onDataLoaded_statsSizeZero_hasNoPreference() {
+        NetworkStats networkStats = new NetworkStats(0, 0);
+
+        mController.onDataLoaded(networkStats, new int[0]);
+
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onDataLoaded_statsLoaded_hasTwoPreference() {
+        NetworkStats networkStats = new NetworkStats(0, 0);
+        NetworkStats.Entry entry1 = new NetworkStats.Entry();
+        entry1.rxBytes = 100;
+        networkStats.addValues(entry1);
+
+        NetworkStats.Entry entry2 = new NetworkStats.Entry();
+        entry2.uid = UID_TETHERING;
+        entry2.rxBytes = 200;
+        networkStats.addValues(entry2);
+
+        mController.onDataLoaded(networkStats, new int[0]);
+
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void onDataLoaded_statsLoaded_hasOnePreference() {
+        ShadowUidDetailProvider.setUidDetail(mUidDetail);
+        NetworkStats networkStats = new NetworkStats(0, 0);
+        NetworkStats.Entry entry1 = new NetworkStats.Entry();
+        entry1.rxBytes = 100;
+        networkStats.addValues(entry1);
+
+        NetworkStats.Entry entry2 = new NetworkStats.Entry();
+        entry2.uid = UID_TETHERING;
+        entry2.rxBytes = 200;
+        networkStats.addValues(entry2);
+
+        mController.onDataLoaded(networkStats, new int[0]);
+
+        ProgressBarPreference preference1 =
+                (ProgressBarPreference) mLogicalPreferenceGroup.getPreference(0);
+        ProgressBarPreference preference2 =
+                (ProgressBarPreference) mLogicalPreferenceGroup.getPreference(1);
+
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+        assertThat(preference1.getProgress()).isEqualTo(100);
+        assertThat(preference2.getProgress()).isEqualTo(50);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/AppsNetworkStatsManagerTest.java b/tests/robotests/src/com/android/car/settings/datausage/AppsNetworkStatsManagerTest.java
new file mode 100644
index 0000000..0b4d124
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/AppsNetworkStatsManagerTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.INetworkStatsService;
+import android.net.INetworkStatsSession;
+import android.net.NetworkPolicyManager;
+import android.net.NetworkStats;
+import android.os.Bundle;
+
+import androidx.loader.app.LoaderManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowINetworkStatsServiceStub;
+import com.android.car.settings.testutils.ShadowNetworkPolicyManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link AppsNetworkStatsManager}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowINetworkStatsServiceStub.class, ShadowNetworkPolicyManager.class})
+public class AppsNetworkStatsManagerTest {
+
+    private Context mContext;
+    private AppsNetworkStatsManager mAppsNetworkStatsManager;
+
+    @Captor
+    private ArgumentCaptor<LoaderManager.LoaderCallbacks<NetworkStats>>
+            mCallbacksArgumentCaptor;
+
+    @Mock
+    private AppsNetworkStatsManager.Callback mCallback1;
+
+    @Mock
+    private AppsNetworkStatsManager.Callback mCallback2;
+
+    @Mock
+    private LoaderManager mLoaderManager;
+
+    @Mock
+    private INetworkStatsService mINetworkStatsService;
+
+    @Mock
+    private INetworkStatsSession mINetworkStatsSession;
+
+    @Mock
+    private NetworkPolicyManager mNetworkPolicyManager;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+
+        when(mINetworkStatsService.openSession()).thenReturn(mINetworkStatsSession);
+        ShadowINetworkStatsServiceStub.setINetworkStatsSession(mINetworkStatsService);
+
+        when(mNetworkPolicyManager.getUidsWithPolicy(anyInt())).thenReturn(new int[0]);
+        ShadowNetworkPolicyManager.setNetworkPolicyManager(mNetworkPolicyManager);
+
+        mAppsNetworkStatsManager = new AppsNetworkStatsManager(mContext);
+        mAppsNetworkStatsManager.startLoading(mLoaderManager, Bundle.EMPTY);
+
+        verify(mLoaderManager).restartLoader(eq(1), eq(Bundle.EMPTY),
+                mCallbacksArgumentCaptor.capture());
+    }
+
+    @After
+    public void tearDown() {
+        ShadowINetworkStatsServiceStub.reset();
+        ShadowNetworkPolicyManager.reset();
+    }
+
+    @Test
+    public void callback_onLoadFinished_listenerOnDataLoadedCalled() throws Exception {
+        mAppsNetworkStatsManager.registerListener(mCallback1);
+        mAppsNetworkStatsManager.registerListener(mCallback2);
+
+        NetworkStats networkStats = new NetworkStats(0, 0);
+
+        mCallbacksArgumentCaptor.getValue().onLoadFinished(null, networkStats);
+
+        verify(mCallback1).onDataLoaded(eq(networkStats), any());
+        verify(mCallback2).onDataLoaded(eq(networkStats), any());
+    }
+
+    @Test
+    public void callback_unregisterListener_onlyOneListenerOnDataLoadedCalled() throws Exception {
+        mAppsNetworkStatsManager.registerListener(mCallback1);
+        mAppsNetworkStatsManager.registerListener(mCallback2);
+        mAppsNetworkStatsManager.unregisterListener(mCallback2);
+
+        NetworkStats networkStats = new NetworkStats(0, 0);
+
+        mCallbacksArgumentCaptor.getValue().onLoadFinished(null, networkStats);
+
+        verify(mCallback1).onDataLoaded(eq(networkStats), any());
+        verify(mCallback2, never()).onDataLoaded(eq(networkStats), any());
+    }
+
+    @Test
+    public void callback_notLoaded_listenerOnDataLoadedNotCalled() throws Exception {
+        mAppsNetworkStatsManager.registerListener(mCallback1);
+        mAppsNetworkStatsManager.registerListener(mCallback2);
+        mAppsNetworkStatsManager.unregisterListener(mCallback2);
+
+        NetworkStats networkStats = new NetworkStats(0, 0);
+
+        verify(mCallback1, never()).onDataLoaded(eq(networkStats), any());
+        verify(mCallback2, never()).onDataLoaded(eq(networkStats), any());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/CycleResetDayOfMonthPickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datausage/CycleResetDayOfMonthPickerPreferenceControllerTest.java
new file mode 100644
index 0000000..7caec12
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/CycleResetDayOfMonthPickerPreferenceControllerTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.NetworkTemplate;
+
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.settingslib.NetworkPolicyEditor;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class CycleResetDayOfMonthPickerPreferenceControllerTest {
+
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<CycleResetDayOfMonthPickerPreferenceController>
+            mControllerHelper;
+    @Mock
+    private NetworkPolicyEditor mPolicyEditor;
+    @Mock
+    private NetworkTemplate mNetworkTemplate;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+
+        mPreference = new Preference(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                CycleResetDayOfMonthPickerPreferenceController.class, mPreference);
+
+        mControllerHelper.getController().setNetworkPolicyEditor(mPolicyEditor);
+        mControllerHelper.getController().setNetworkTemplate(mNetworkTemplate);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void performClick_startsDialogWithStartingValue() {
+        int startingValue = 15;
+        when(mPolicyEditor.getPolicyCycleDay(mNetworkTemplate)).thenReturn(startingValue);
+        mControllerHelper.getController().refreshUi();
+        mPreference.performClick();
+
+        ArgumentCaptor<UsageCycleResetDayOfMonthPickerDialog> dialogCaptor =
+                ArgumentCaptor.forClass(UsageCycleResetDayOfMonthPickerDialog.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                dialogCaptor.capture(), anyString());
+
+        UsageCycleResetDayOfMonthPickerDialog dialog = dialogCaptor.getValue();
+
+        // Dialog was never started because FragmentController is mocked.
+        FragmentController<Fragment> fragmentController = FragmentController.of(new Fragment());
+        Fragment testFragment = fragmentController.setup();
+        dialog.show(testFragment.getFragmentManager(), null);
+
+        assertThat(dialog.getSelectedDayOfMonth()).isEqualTo(startingValue);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/DataLimitPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datausage/DataLimitPreferenceControllerTest.java
new file mode 100644
index 0000000..2106e02
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/DataLimitPreferenceControllerTest.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static android.net.NetworkPolicy.LIMIT_DISABLED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.NetworkTemplate;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.NetworkPolicyEditor;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DataLimitPreferenceControllerTest {
+
+    private static final long GIB_IN_BYTES = 1024 * 1024 * 1024;
+    private static final long EPSILON = 100;
+
+    private TwoStatePreference mEnablePreference;
+    private Preference mLimitPreference;
+    private DataLimitPreferenceController mController;
+    private FragmentController mFragmentController;
+    @Mock
+    private NetworkPolicyEditor mPolicyEditor;
+    @Mock
+    private NetworkTemplate mNetworkTemplate;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+
+        PreferenceGroup preferenceGroup = new LogicalPreferenceGroup(context);
+        PreferenceControllerTestHelper<DataLimitPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(context,
+                        DataLimitPreferenceController.class, preferenceGroup);
+        mController = controllerHelper.getController();
+        mFragmentController = controllerHelper.getMockFragmentController();
+
+        mEnablePreference = new SwitchPreference(context);
+        mEnablePreference.setKey(context.getString(R.string.pk_data_set_limit));
+        preferenceGroup.addPreference(mEnablePreference);
+        mLimitPreference = new Preference(context);
+        mLimitPreference.setKey(context.getString(R.string.pk_data_limit));
+        preferenceGroup.addPreference(mLimitPreference);
+
+        mController.setNetworkPolicyEditor(mPolicyEditor);
+        mController.setNetworkTemplate(mNetworkTemplate);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void refreshUi_limitDisabled_summaryEmpty() {
+        when(mPolicyEditor.getPolicyLimitBytes(mNetworkTemplate)).thenReturn(LIMIT_DISABLED);
+        mController.refreshUi();
+
+        assertThat(mLimitPreference.getSummary()).isNull();
+    }
+
+    @Test
+    public void refreshUi_limitDisabled_preferenceDisabled() {
+        when(mPolicyEditor.getPolicyLimitBytes(mNetworkTemplate)).thenReturn(LIMIT_DISABLED);
+        mController.refreshUi();
+
+        assertThat(mLimitPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_limitDisabled_switchUnchecked() {
+        when(mPolicyEditor.getPolicyLimitBytes(mNetworkTemplate)).thenReturn(LIMIT_DISABLED);
+        mController.refreshUi();
+
+        assertThat(mEnablePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_limitEnabled_summaryPopulated() {
+        when(mPolicyEditor.getPolicyLimitBytes(mNetworkTemplate)).thenReturn(5 * GIB_IN_BYTES);
+        mController.refreshUi();
+
+        assertThat(mLimitPreference.getSummary().toString()).isNotEmpty();
+    }
+
+    @Test
+    public void refreshUi_limitEnabled_preferenceEnabled() {
+        when(mPolicyEditor.getPolicyLimitBytes(mNetworkTemplate)).thenReturn(5 * GIB_IN_BYTES);
+        mController.refreshUi();
+
+        assertThat(mLimitPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_limitEnabled_switchChecked() {
+        when(mPolicyEditor.getPolicyLimitBytes(mNetworkTemplate)).thenReturn(5 * GIB_IN_BYTES);
+        mController.refreshUi();
+
+        assertThat(mEnablePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onPreferenceChanged_toggleFalse_limitBytesDisabled() {
+        mEnablePreference.callChangeListener(false);
+        verify(mPolicyEditor).setPolicyLimitBytes(mNetworkTemplate, LIMIT_DISABLED);
+    }
+
+    @Test
+    public void onPreferenceChanged_toggleTrue_showsDialog() {
+        mEnablePreference.callChangeListener(true);
+
+        verify(mFragmentController).showDialog(any(ConfirmationDialogFragment.class),
+                eq(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void onDialogConfirm_noWarningThreshold_setsLimitTo5GB() {
+        mController.onConfirm(null);
+
+        verify(mPolicyEditor).setPolicyLimitBytes(mNetworkTemplate, 5 * GIB_IN_BYTES);
+    }
+
+    @Test
+    public void onDialogConfirm_hasWarningThreshold_setsLimitToWithMultiplier() {
+        when(mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate)).thenReturn(5 * GIB_IN_BYTES);
+        mController.onConfirm(null);
+
+        ArgumentCaptor<Long> setLimit = ArgumentCaptor.forClass(Long.class);
+        verify(mPolicyEditor).setPolicyLimitBytes(eq(mNetworkTemplate), setLimit.capture());
+
+        long setValue = setLimit.getValue();
+        // Due to precision errors, add and subtract a small epsilon.
+        assertThat(setValue).isGreaterThan(
+                (long) (5 * GIB_IN_BYTES * DataLimitPreferenceController.LIMIT_BYTES_MULTIPLIER)
+                        - EPSILON);
+        assertThat(setValue).isLessThan(
+                (long) (5 * GIB_IN_BYTES * DataLimitPreferenceController.LIMIT_BYTES_MULTIPLIER)
+                        + EPSILON);
+    }
+
+    @Test
+    public void onPreferenceClicked_showsPickerDialog() {
+        mLimitPreference.performClick();
+
+        verify(mFragmentController).showDialog(any(UsageBytesThresholdPickerDialog.class),
+                eq(UsageBytesThresholdPickerDialog.TAG));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/DataUsageEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datausage/DataUsageEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..79187d5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/DataUsageEntryPreferenceControllerTest.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.robolectric.shadow.api.Shadow.extract;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionPlan;
+import android.util.RecurrenceRule;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowConnectivityManager;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+
+import com.google.android.collect.Lists;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowNetwork;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowConnectivityManager.class, ShadowSubscriptionManager.class})
+public class DataUsageEntryPreferenceControllerTest {
+
+    private static final int SUBSCRIPTION_ID = 1;
+
+    private Context mContext;
+    private Preference mPreference;
+    private DataUsageEntryPreferenceController mController;
+    @Mock
+    private NetworkCapabilities mNetworkCapabilities;
+    @Mock
+    private SubscriptionPlan mSubscriptionPlan;
+    @Mock
+    private RecurrenceRule mRecurrenceRule;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        PreferenceControllerTestHelper<DataUsageEntryPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        DataUsageEntryPreferenceController.class, mPreference);
+        mController = controllerHelper.getController();
+
+        // Setup to always make preference available.
+        getShadowConnectivityManager().clearAllNetworks();
+        getShadowConnectivityManager().addNetworkCapabilities(
+                ShadowNetwork.newInstance(ConnectivityManager.TYPE_MOBILE), mNetworkCapabilities);
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                true);
+
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowConnectivityManager.reset();
+        ShadowSubscriptionManager.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_noMobileNetwork_isUnsupported() {
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasMobileNetwork_isAvailable() {
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void refreshUi_noDefaultSubscriptionId_noSummarySet() {
+        ShadowSubscriptionManager.setDefaultSubscriptionId(
+                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+
+        mController.refreshUi();
+        assertThat(mPreference.getSummary()).isNull();
+    }
+
+    @Test
+    public void refreshUi_noPrimaryPlan_noSummarySet() {
+        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBSCRIPTION_ID);
+        getShadowSubscriptionManager().setSubscriptionPlans(Lists.newArrayList());
+
+        mController.refreshUi();
+        assertThat(mPreference.getSummary()).isNull();
+    }
+
+    @Test
+    public void refreshUi_hasPrimaryPlan_setsSummary() {
+        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBSCRIPTION_ID);
+        getShadowSubscriptionManager().setSubscriptionPlans(Lists.newArrayList(mSubscriptionPlan));
+        when(mSubscriptionPlan.getDataLimitBytes()).thenReturn(100L);
+        when(mSubscriptionPlan.getDataUsageBytes()).thenReturn(10L);
+        when(mSubscriptionPlan.getCycleRule()).thenReturn(mRecurrenceRule);
+
+        mController.refreshUi();
+        assertThat(mPreference.getSummary().length()).isGreaterThan(0);
+    }
+
+    private ShadowConnectivityManager getShadowConnectivityManager() {
+        return (ShadowConnectivityManager) extract(
+                mContext.getSystemService(ConnectivityManager.class));
+    }
+
+    private ShadowSubscriptionManager getShadowSubscriptionManager() {
+        return (ShadowSubscriptionManager) extract(
+                mContext.getSystemService(SubscriptionManager.class));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceControllerTest.java
new file mode 100644
index 0000000..d0c5abc
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceControllerTest.java
@@ -0,0 +1,379 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.robolectric.shadow.api.Shadow.extract;
+
+import android.content.Context;
+import android.net.NetworkTemplate;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionPlan;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.text.format.Formatter;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowDataUsageController;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+import com.android.car.settings.testutils.ShadowTelephonyManager;
+import com.android.settingslib.net.DataUsageController;
+
+import com.google.android.collect.Lists;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.time.Period;
+import java.time.ZonedDateTime;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowTelephonyManager.class, ShadowSubscriptionManager.class,
+        ShadowDataUsageController.class})
+public class DataUsageSummaryPreferenceControllerTest {
+
+    private static final CharSequence TEST_CARRIER_NAME = "TEST_CARRIER_NAME";
+
+    private Context mContext;
+    private DataUsageSummaryPreference mDataUsageSummaryPreference;
+    private DataUsageSummaryPreferenceController mController;
+    private PreferenceControllerTestHelper<DataUsageSummaryPreferenceController> mControllerHelper;
+    private NetworkTemplate mNetworkTemplate;
+    @Mock
+    private DataUsageController mDataUsageController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        SubscriptionInfo info = mock(SubscriptionInfo.class);
+        when(info.getSubscriptionId()).thenReturn(1);
+        ShadowSubscriptionManager.setDefaultDataSubscriptionInfo(info);
+        ShadowDataUsageController.setInstance(mDataUsageController);
+
+        mContext = RuntimeEnvironment.application;
+        mDataUsageSummaryPreference = new DataUsageSummaryPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DataUsageSummaryPreferenceController.class, mDataUsageSummaryPreference);
+        mController = mControllerHelper.getController();
+
+        mNetworkTemplate = DataUsageUtils.getMobileNetworkTemplate(
+                mContext.getSystemService(TelephonyManager.class),
+                DataUsageUtils.getDefaultSubscriptionId(
+                        mContext.getSystemService(SubscriptionManager.class)));
+    }
+
+    @After
+    public void tearDown() {
+        ShadowTelephonyManager.reset();
+        ShadowSubscriptionManager.reset();
+        ShadowDataUsageController.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasSim_isAvailable() {
+        getShadowTelephonyManager().setSimState(TelephonyManager.SIM_STATE_LOADED);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_noSim_isConditionallyUnavailable() {
+        getShadowTelephonyManager().setSimState(TelephonyManager.SIM_STATE_UNKNOWN);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void refreshUi_hasUsage_titleSet() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        String usedValueString = Formatter.formatBytes(mContext.getResources(), info.usageLevel,
+                Formatter.FLAG_CALCULATE_ROUNDED | Formatter.FLAG_IEC_UNITS).value;
+        assertThat(mDataUsageSummaryPreference.getTitle().toString()).contains(usedValueString);
+    }
+
+    @Test
+    public void refreshUi_noLimits_doesntSetDataLimitText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        info.limitLevel = -1;
+        info.warningLevel = -1;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getDataLimitText()).isNull();
+    }
+
+    @Test
+    public void refreshUi_hasLimit_setsDataLimitText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        info.limitLevel = 100000;
+        info.warningLevel = -1;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getDataLimitText().toString()).isEqualTo(
+                TextUtils.expandTemplate(mContext.getText(R.string.cell_data_limit),
+                        DataUsageUtils.bytesToIecUnits(mContext, info.limitLevel)).toString());
+    }
+
+    @Test
+    public void refreshUi_hasWarning_setsDataLimitText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        info.limitLevel = -1;
+        info.warningLevel = 50000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getDataLimitText().toString()).isEqualTo(
+                TextUtils.expandTemplate(mContext.getText(R.string.cell_data_warning),
+                        DataUsageUtils.bytesToIecUnits(mContext, info.warningLevel)).toString());
+    }
+
+    @Test
+    public void refreshUi_hasWarningAndLimit_setsDataLimitText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        info.limitLevel = 100000;
+        info.warningLevel = 50000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getDataLimitText().toString()).isEqualTo(
+                TextUtils.expandTemplate(mContext.getText(R.string.cell_data_warning_and_limit),
+                        DataUsageUtils.bytesToIecUnits(mContext, info.warningLevel),
+                        DataUsageUtils.bytesToIecUnits(mContext, info.limitLevel)).toString());
+    }
+
+    @Test
+    public void refreshUi_endTimeIsGreaterThanOneDay_setsBillingCycleText() {
+        int numDays = 20;
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        // Add an extra hour to account for the difference in time when the test calls
+        // System.currentTimeMillis() vs when the code calls it.
+        info.cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(numDays)
+                + TimeUnit.HOURS.toMillis(1);
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getRemainingBillingCycleText().toString())
+                .isEqualTo(
+                        mContext.getResources().getQuantityString(R.plurals.billing_cycle_days_left,
+                                numDays, numDays));
+    }
+
+    @Test
+    public void refreshUi_endTimeIsLessThanOneDay_setsBillingCycleText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.cycleEnd = System.currentTimeMillis() + TimeUnit.HOURS.toMillis(22);
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getRemainingBillingCycleText().toString())
+                .isEqualTo(
+                        mContext.getString(R.string.billing_cycle_less_than_one_day_left));
+    }
+
+    @Test
+    public void refreshUi_endTimeIsNow_setsBillingCycleText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.cycleEnd = System.currentTimeMillis();
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getRemainingBillingCycleText().toString())
+                .isEqualTo(
+                        mContext.getString(R.string.billing_cycle_none_left));
+    }
+
+    @Test
+    public void refreshUi_hasCarrierName_hasRecentUpdate_setsCarrierInfoText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        setCarrierName(TEST_CARRIER_NAME);
+        setSubscriptionPlan(/* usageBytes= */ 1000L, System.currentTimeMillis());
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getCarrierInfoText()).isEqualTo(
+                TextUtils.expandTemplate(mContext.getText(R.string.carrier_and_update_now_text),
+                        TEST_CARRIER_NAME));
+    }
+
+    @Test
+    public void refreshUi_hasCarrierName_hasOldUpdate_setsCarrierInfoText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        int numDays = 15;
+        setCarrierName(TEST_CARRIER_NAME);
+        setSubscriptionPlan(/* usageBytes= */ 1000L,
+                System.currentTimeMillis() - TimeUnit.DAYS.toMillis(numDays));
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getCarrierInfoText()).isEqualTo(
+                TextUtils.expandTemplate(mContext.getText(R.string.carrier_and_update_text),
+                        TEST_CARRIER_NAME, numDays + " days"));
+    }
+
+    @Test
+    public void refreshUi_noCarrierName_hasRecentUpdate_setsCarrierInfoText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        setSubscriptionPlan(/* usageBytes= */ 1000L, System.currentTimeMillis());
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getCarrierInfoText().toString()).isEqualTo(
+                mContext.getString(R.string.no_carrier_update_now_text));
+    }
+
+    @Test
+    public void refreshUi_noCarrierName_hasOldUpdate_setsCarrierInfoText() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        int numDays = 15;
+        setSubscriptionPlan(/* usageBytes= */ 1000L,
+                System.currentTimeMillis() - TimeUnit.DAYS.toMillis(numDays));
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getCarrierInfoText()).isEqualTo(
+                TextUtils.expandTemplate(mContext.getText(R.string.no_carrier_update_text),
+                        null, numDays + " days"));
+    }
+
+    @Test
+    public void refreshUi_hasUpdateTimeOlderThanWarning_setsCarrierInfoStyle() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+
+        // Subtract an extra hour to account fo the difference in calls to
+        // System.currentTimeMillis().
+        setSubscriptionPlan(/* usageBytes= */ 1000L,
+                System.currentTimeMillis() - DataUsageSummaryPreferenceController.WARNING_AGE
+                        - TimeUnit.HOURS.toMillis(1));
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getCarrierInfoTextStyle()).isEqualTo(
+                R.style.DataUsageSummaryCarrierInfoWarningTextAppearance);
+    }
+
+    @Test
+    public void refreshUi_hasUpdateTimeYoungerThanWarning_setsCarrierInfoStyle() {
+        DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo();
+        info.usageLevel = 10000;
+        when(mDataUsageController.getDataUsageInfo(mNetworkTemplate)).thenReturn(info);
+
+        // Subtract an extra hour to account fo the difference in calls to
+        // System.currentTimeMillis().
+        setSubscriptionPlan(/* usageBytes= */ 1000L,
+                System.currentTimeMillis() - DataUsageSummaryPreferenceController.WARNING_AGE
+                        + TimeUnit.HOURS.toMillis(1));
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mDataUsageSummaryPreference.getCarrierInfoTextStyle()).isEqualTo(
+                R.style.DataUsageSummaryCarrierInfoTextAppearance);
+    }
+
+    private ShadowTelephonyManager getShadowTelephonyManager() {
+        return (ShadowTelephonyManager) extract(
+                mContext.getSystemService(TelephonyManager.class));
+    }
+
+    private ShadowSubscriptionManager getShadowSubscriptionManager() {
+        return Shadow.extract(mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE));
+    }
+
+    private void setCarrierName(CharSequence name) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(/* id= */ 0, /* iccId= */ "",
+                /* simSlotIndex= */ 0, /* displayName= */ "", name,
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, /* cardString= */ "");
+        ShadowSubscriptionManager.setDefaultDataSubscriptionInfo(subInfo);
+    }
+
+    private void setSubscriptionPlan(long usageBytes, long snapshotMillis) {
+        ZonedDateTime start = ZonedDateTime.now();
+        ZonedDateTime end = ZonedDateTime.now().plusDays(30);
+        SubscriptionPlan plan = new SubscriptionPlan.Builder(start, end, Period.ofMonths(1))
+                .setDataLimit(/* dataLimitBytes= */ 5000000000L,
+                        SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
+                .setDataUsage(usageBytes, snapshotMillis)
+                .build();
+        getShadowSubscriptionManager().setSubscriptionPlans(Lists.newArrayList(plan));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceTest.java
new file mode 100644
index 0000000..560614a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceTest.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DataUsageSummaryPreferenceTest {
+    private static final String TEST_LABEL = "TEST_LABEL";
+    private static final Intent TEST_INTENT = new Intent("test_action");
+
+    private Context mContext;
+    private PreferenceViewHolder mViewHolder;
+    private DataUsageSummaryPreference mDataUsageSummaryPreference;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        View rootView = View.inflate(mContext, R.layout.data_usage_summary_preference,
+                /* root= */ null);
+        mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
+        mDataUsageSummaryPreference = new DataUsageSummaryPreference(mContext);
+    }
+
+    @Test
+    public void onBindViewHolder_noDataUsageText_isGone() {
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getDataUsageText().getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void onBindViewHolder_hasDataUsageText_isVisible() {
+        mDataUsageSummaryPreference.setDataLimitText(TEST_LABEL);
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getDataUsageText().getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void onBindViewHolder_hasDataUsageText_setsText() {
+        mDataUsageSummaryPreference.setDataLimitText(TEST_LABEL);
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(mDataUsageSummaryPreference.getDataLimitText().toString()).isEqualTo(TEST_LABEL);
+    }
+
+    @Test
+    public void onBindViewHolder_noRemainingBillingCycleText_isGone() {
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getRemainingBillingCycleText().getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void onBindViewHolder_hasRemainingBillingCycleText_isVisible() {
+        mDataUsageSummaryPreference.setRemainingBillingCycleText(TEST_LABEL);
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getRemainingBillingCycleText().getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void onBindViewHolder_hasRemainingBillingCycleText_setsText() {
+        mDataUsageSummaryPreference.setRemainingBillingCycleText(TEST_LABEL);
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(mDataUsageSummaryPreference.getRemainingBillingCycleText().toString()).isEqualTo(
+                TEST_LABEL);
+    }
+
+    @Test
+    public void onBindViewHolder_noCarrierInfoText_isGone() {
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getCarrierInfoText().getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void onBindViewHolder_hasCarrierInfoText_isVisible() {
+        mDataUsageSummaryPreference.setCarrierInfoText(TEST_LABEL);
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getCarrierInfoText().getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void onBindViewHolder_hasCarrierInfoText_setsText() {
+        mDataUsageSummaryPreference.setCarrierInfoText(TEST_LABEL);
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(mDataUsageSummaryPreference.getCarrierInfoText().toString()).isEqualTo(
+                TEST_LABEL);
+    }
+
+    @Test
+    public void onBindViewHolder_noManagePlanIntent_isGone() {
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getManageSubscriptionButton().getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void onBindViewHolder_hasManagePlanIntent_isVisible() {
+        mDataUsageSummaryPreference.setManageSubscriptionIntent(TEST_INTENT);
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+
+        assertThat(getManageSubscriptionButton().getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void onButtonClick_hasManagePlanIntent_startsActivity() {
+        mDataUsageSummaryPreference.setManageSubscriptionIntent(TEST_INTENT);
+        mDataUsageSummaryPreference.onBindViewHolder(mViewHolder);
+        getManageSubscriptionButton().performClick();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual.getAction()).isEqualTo(TEST_INTENT.getAction());
+    }
+
+    private TextView getDataUsageText() {
+        return (TextView) mViewHolder.findViewById(R.id.data_limit_text);
+    }
+
+    private TextView getRemainingBillingCycleText() {
+        return (TextView) mViewHolder.findViewById(R.id.remaining_billing_cycle_time_text);
+    }
+
+    private TextView getCarrierInfoText() {
+        return (TextView) mViewHolder.findViewById(R.id.carrier_info_text);
+    }
+
+    private Button getManageSubscriptionButton() {
+        return (Button) mViewHolder.findViewById(R.id.manage_subscription_button);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/DataUsageUtilsTest.java b/tests/robotests/src/com/android/car/settings/datausage/DataUsageUtilsTest.java
new file mode 100644
index 0000000..57a083a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/DataUsageUtilsTest.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionPlan;
+import android.util.RecurrenceRule;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import com.google.android.collect.Lists;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Collections;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DataUsageUtilsTest {
+
+    private static final int SUBSCRIPTION_ID = 1;
+
+    @Test
+    public void getDefaultSubscriptionId_nullSubscriptionManager_returnsInvalidId() {
+        assertThat(DataUsageUtils.getDefaultSubscriptionId(null)).isEqualTo(
+                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+    }
+
+    @Test
+    public void getDefaultSubscriptionId_noSubscriptions_returnsInvalidId() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        when(subscriptionManager.getDefaultDataSubscriptionInfo()).thenReturn(null);
+        when(subscriptionManager.getAllSubscriptionInfoList()).thenReturn(Collections.emptyList());
+
+        assertThat(DataUsageUtils.getDefaultSubscriptionId(subscriptionManager)).isEqualTo(
+                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+    }
+
+    @Test
+    public void getDefaultSubscriptionId_noDefaultSubscription_returnsFirstSubscription() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        when(subscriptionManager.getDefaultDataSubscriptionInfo()).thenReturn(null);
+
+        SubscriptionInfo info1 = mock(SubscriptionInfo.class);
+        SubscriptionInfo info2 = mock(SubscriptionInfo.class);
+        when(info1.getSubscriptionId()).thenReturn(1);
+        when(info2.getSubscriptionId()).thenReturn(2);
+        when(subscriptionManager.getAllSubscriptionInfoList()).thenReturn(
+                Lists.newArrayList(info1, info2));
+
+        assertThat(DataUsageUtils.getDefaultSubscriptionId(subscriptionManager)).isEqualTo(1);
+    }
+
+    @Test
+    public void getDefaultSubscriptionId_hasDefaultSubscription_returnsDefaultSubscription() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        SubscriptionInfo info = mock(SubscriptionInfo.class);
+        when(info.getSubscriptionId()).thenReturn(1);
+        when(subscriptionManager.getDefaultDataSubscriptionInfo()).thenReturn(info);
+
+        assertThat(DataUsageUtils.getDefaultSubscriptionId(subscriptionManager)).isEqualTo(1);
+    }
+
+    @Test
+    public void getPrimaryPlan_noSubscriptions_returnsNull() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        when(subscriptionManager.getSubscriptionPlans(SUBSCRIPTION_ID)).thenReturn(
+                Lists.newArrayList());
+
+        assertThat(DataUsageUtils.getPrimaryPlan(subscriptionManager, SUBSCRIPTION_ID)).isNull();
+    }
+
+    @Test
+    public void getPrimaryPlan_dataLimitBytesIsZero_returnsNull() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        SubscriptionPlan subscriptionPlan = mock(SubscriptionPlan.class);
+        when(subscriptionManager.getSubscriptionPlans(SUBSCRIPTION_ID)).thenReturn(
+                Lists.newArrayList(subscriptionPlan));
+        when(subscriptionPlan.getDataLimitBytes()).thenReturn(0L);
+
+        assertThat(DataUsageUtils.getPrimaryPlan(subscriptionManager, SUBSCRIPTION_ID)).isNull();
+
+    }
+
+    @Test
+    public void getPrimaryPlan_dataUsageBytesIsHuge_returnsNull() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        SubscriptionPlan subscriptionPlan = mock(SubscriptionPlan.class);
+        when(subscriptionManager.getSubscriptionPlans(SUBSCRIPTION_ID)).thenReturn(
+                Lists.newArrayList(subscriptionPlan));
+        when(subscriptionPlan.getDataLimitBytes()).thenReturn(100L);
+        when(subscriptionPlan.getDataUsageBytes()).thenReturn(2 * DataUsageUtils.PETA);
+
+        assertThat(DataUsageUtils.getPrimaryPlan(subscriptionManager, SUBSCRIPTION_ID)).isNull();
+    }
+
+    @Test
+    public void getPrimaryPlan_cycleRuleIsNull_returnsNull() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        SubscriptionPlan subscriptionPlan = mock(SubscriptionPlan.class);
+        when(subscriptionManager.getSubscriptionPlans(SUBSCRIPTION_ID)).thenReturn(
+                Lists.newArrayList(subscriptionPlan));
+        when(subscriptionPlan.getDataLimitBytes()).thenReturn(100L);
+        when(subscriptionPlan.getDataUsageBytes()).thenReturn(10L);
+        when(subscriptionPlan.getCycleRule()).thenReturn(null);
+
+        assertThat(DataUsageUtils.getPrimaryPlan(subscriptionManager, SUBSCRIPTION_ID)).isNull();
+    }
+
+    @Test
+    public void getPrimaryPlan_cycleRuleIsValid_returnsSubscriptionPlan() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        SubscriptionPlan subscriptionPlan = mock(SubscriptionPlan.class);
+        RecurrenceRule recurrenceRule = mock(RecurrenceRule.class);
+        when(subscriptionManager.getSubscriptionPlans(SUBSCRIPTION_ID)).thenReturn(
+                Lists.newArrayList(subscriptionPlan));
+        when(subscriptionPlan.getDataLimitBytes()).thenReturn(100L);
+        when(subscriptionPlan.getDataUsageBytes()).thenReturn(10L);
+        when(subscriptionPlan.getCycleRule()).thenReturn(recurrenceRule);
+
+        assertThat(DataUsageUtils.getPrimaryPlan(subscriptionManager, SUBSCRIPTION_ID)).isEqualTo(
+                subscriptionPlan);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/DataWarningPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datausage/DataWarningPreferenceControllerTest.java
new file mode 100644
index 0000000..244c557
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/DataWarningPreferenceControllerTest.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static android.net.NetworkPolicy.WARNING_DISABLED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.net.NetworkTemplate;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.NetworkPolicyEditor;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DataWarningPreferenceControllerTest {
+
+    private static final long BYTES_IN_GIGABYTE = 1024 * 1024 * 1024;
+
+    private TwoStatePreference mEnablePreference;
+    private Preference mWarningPreference;
+    private DataWarningPreferenceController mController;
+    private FragmentController mFragmentController;
+    @Mock
+    private NetworkPolicyEditor mPolicyEditor;
+    @Mock
+    private NetworkTemplate mNetworkTemplate;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+
+        PreferenceGroup preferenceGroup = new LogicalPreferenceGroup(context);
+        PreferenceControllerTestHelper<DataWarningPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(context,
+                        DataWarningPreferenceController.class, preferenceGroup);
+        mController = controllerHelper.getController();
+        mFragmentController = controllerHelper.getMockFragmentController();
+
+        mEnablePreference = new SwitchPreference(context);
+        mEnablePreference.setKey(context.getString(R.string.pk_data_set_warning));
+        preferenceGroup.addPreference(mEnablePreference);
+        mWarningPreference = new Preference(context);
+        mWarningPreference.setKey(context.getString(R.string.pk_data_warning));
+        preferenceGroup.addPreference(mWarningPreference);
+
+        mController.setNetworkPolicyEditor(mPolicyEditor);
+        mController.setNetworkTemplate(mNetworkTemplate);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void refreshUi_warningDisabled_summaryEmpty() {
+        when(mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate)).thenReturn(WARNING_DISABLED);
+        mController.refreshUi();
+
+        assertThat(mWarningPreference.getSummary()).isNull();
+    }
+
+    @Test
+    public void refreshUi_warningDisabled_preferenceDisabled() {
+        when(mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate)).thenReturn(WARNING_DISABLED);
+        mController.refreshUi();
+
+        assertThat(mWarningPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_warningDisabled_switchUnchecked() {
+        when(mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate)).thenReturn(WARNING_DISABLED);
+        mController.refreshUi();
+
+        assertThat(mEnablePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_warningEnabled_summaryPopulated() {
+        when(mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate)).thenReturn(
+                3 * BYTES_IN_GIGABYTE);
+        mController.refreshUi();
+
+        assertThat(mWarningPreference.getSummary().toString()).isNotEmpty();
+    }
+
+    @Test
+    public void refreshUi_warningEnabled_preferenceEnabled() {
+        when(mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate)).thenReturn(
+                3 * BYTES_IN_GIGABYTE);
+        mController.refreshUi();
+
+        assertThat(mWarningPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_warningEnabled_switchChecked() {
+        when(mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate)).thenReturn(
+                3 * BYTES_IN_GIGABYTE);
+        mController.refreshUi();
+
+        assertThat(mEnablePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onPreferenceChanged_toggleFalse_warningBytesDisabled() {
+        mEnablePreference.callChangeListener(false);
+        verify(mPolicyEditor).setPolicyWarningBytes(mNetworkTemplate, WARNING_DISABLED);
+    }
+
+    @Test
+    public void onPreferenceChanged_toggleTrue_warningBytesNotDisabled() {
+        mEnablePreference.callChangeListener(true);
+
+        ArgumentCaptor<Long> setWarning = ArgumentCaptor.forClass(Long.class);
+        verify(mPolicyEditor).setPolicyWarningBytes(eq(mNetworkTemplate), setWarning.capture());
+        assertThat(setWarning.getValue()).isNotEqualTo(WARNING_DISABLED);
+    }
+
+    @Test
+    public void onPreferenceClicked_showsPickerDialog() {
+        mWarningPreference.performClick();
+
+        verify(mFragmentController).showDialog(any(UsageBytesThresholdPickerDialog.class),
+                eq(UsageBytesThresholdPickerDialog.TAG));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/UsageBytesThresholdPickerDialogTest.java b/tests/robotests/src/com/android/car/settings/datausage/UsageBytesThresholdPickerDialogTest.java
new file mode 100644
index 0000000..52f05ec
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/UsageBytesThresholdPickerDialogTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.shadows.ShadowDialog;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class UsageBytesThresholdPickerDialogTest {
+
+    private Fragment mFragment;
+    @Mock
+    private UsageBytesThresholdPickerDialog.BytesThresholdPickedListener
+            mBytesThresholdPickedListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mFragment = FragmentController.of(new Fragment()).setup();
+    }
+
+    @Test
+    public void dialogInit_validValue_showsCurrentValue() {
+        long twoGB = 2 * UsageBytesThresholdPickerDialog.GIB_IN_BYTES;
+        UsageBytesThresholdPickerDialog dialog = UsageBytesThresholdPickerDialog.newInstance(
+                R.string.data_usage_limit_editor_title, twoGB);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+        assertThat(dialog.getCurrentThreshold()).isEqualTo(twoGB);
+    }
+
+    @Test
+    public void dialogInit_lowInvalidValue_showsLowestPossibleValue() {
+        UsageBytesThresholdPickerDialog dialog = UsageBytesThresholdPickerDialog.newInstance(
+                R.string.data_usage_limit_editor_title, -1);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+        assertThat(dialog.getCurrentThreshold()).isEqualTo(0);
+    }
+
+    @Test
+    public void positiveButtonClick_noChangeInValue_dialogListenerNotCalled() {
+        long twoGB = 2 * UsageBytesThresholdPickerDialog.GIB_IN_BYTES;
+        UsageBytesThresholdPickerDialog dialog = UsageBytesThresholdPickerDialog.newInstance(
+                R.string.data_usage_limit_editor_title, twoGB);
+        dialog.setBytesThresholdPickedListener(mBytesThresholdPickedListener);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+
+        AlertDialog alertDialog = (AlertDialog) ShadowDialog.getLatestDialog();
+        alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        verify(mBytesThresholdPickedListener, never()).onThresholdPicked(anyLong());
+    }
+
+    @Test
+    public void positiveButtonClick_changeInValue_dialogListenerCalled() {
+        long twoGB = 2 * UsageBytesThresholdPickerDialog.GIB_IN_BYTES;
+        UsageBytesThresholdPickerDialog dialog = UsageBytesThresholdPickerDialog.newInstance(
+                R.string.data_usage_limit_editor_title, twoGB);
+        dialog.setBytesThresholdPickedListener(mBytesThresholdPickedListener);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+
+        long threeGB = 3 * UsageBytesThresholdPickerDialog.GIB_IN_BYTES;
+        dialog.setThresholdEditor(threeGB);
+
+        AlertDialog alertDialog = (AlertDialog) ShadowDialog.getLatestDialog();
+        alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        verify(mBytesThresholdPickedListener).onThresholdPicked(threeGB);
+    }
+
+    @Test
+    public void getCurrentThreshold_aboveLimit_returnLimit() {
+        long limitGBTimesTwo = 2 * UsageBytesThresholdPickerDialog.MAX_DATA_LIMIT_BYTES;
+        UsageBytesThresholdPickerDialog dialog = UsageBytesThresholdPickerDialog.newInstance(
+                R.string.data_usage_limit_editor_title, limitGBTimesTwo);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+
+        assertThat(dialog.getCurrentThreshold()).isEqualTo(
+                UsageBytesThresholdPickerDialog.MAX_DATA_LIMIT_BYTES);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datausage/UsageCycleResetDayOfMonthPickerDialogTest.java b/tests/robotests/src/com/android/car/settings/datausage/UsageCycleResetDayOfMonthPickerDialogTest.java
new file mode 100644
index 0000000..14b741a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datausage/UsageCycleResetDayOfMonthPickerDialogTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 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.car.settings.datausage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.FragmentController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.shadows.ShadowDialog;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class UsageCycleResetDayOfMonthPickerDialogTest {
+
+    private Fragment mFragment;
+    @Mock
+    private UsageCycleResetDayOfMonthPickerDialog.ResetDayOfMonthPickedListener
+            mResetDayOfMonthPickedListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mFragment = FragmentController.of(new Fragment()).setup();
+    }
+
+    @Test
+    public void dialogInit_validValue_showsCurrentValue() {
+        int setDate = 15;
+        UsageCycleResetDayOfMonthPickerDialog dialog =
+                UsageCycleResetDayOfMonthPickerDialog.newInstance(setDate);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+        assertThat(dialog.getSelectedDayOfMonth()).isEqualTo(setDate);
+    }
+
+    @Test
+    public void dialogInit_lowInvalidValue_showsLowestPossibleValue() {
+        UsageCycleResetDayOfMonthPickerDialog dialog =
+                UsageCycleResetDayOfMonthPickerDialog.newInstance(0);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+        assertThat(dialog.getSelectedDayOfMonth()).isEqualTo(1);
+    }
+
+    @Test
+    public void dialogInit_highInvalidValue_showsHighestPossibleValue() {
+        UsageCycleResetDayOfMonthPickerDialog dialog =
+                UsageCycleResetDayOfMonthPickerDialog.newInstance(32);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+        assertThat(dialog.getSelectedDayOfMonth()).isEqualTo(31);
+    }
+
+    @Test
+    public void dialogListenerCalled() {
+        int setDate = 15;
+        UsageCycleResetDayOfMonthPickerDialog dialog =
+                UsageCycleResetDayOfMonthPickerDialog.newInstance(setDate);
+        dialog.setResetDayOfMonthPickedListener(mResetDayOfMonthPickedListener);
+        dialog.show(mFragment.getFragmentManager(), /* tag= */ null);
+
+        AlertDialog alertDialog = (AlertDialog) ShadowDialog.getLatestDialog();
+        alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        verify(mResetDayOfMonthPickedListener).onDayOfMonthPicked(setDate);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..62b74a6
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datetime/AutoDatetimeTogglePreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AutoDatetimeTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private SwitchPreference mPreference;
+    private PreferenceControllerTestHelper<AutoDatetimeTogglePreferenceController>
+            mPreferenceControllerHelper;
+    private AutoDatetimeTogglePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AutoDatetimeTogglePreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void testRefreshUi_unchecked() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_checked() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceChange_autoTimeZoneSet_shouldSendIntent() {
+        mPreference.setChecked(true);
+        mPreference.callChangeListener(true);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+
+    @Test
+    public void testOnPreferenceChange_autoTimeZoneUnset_shouldSendIntent() {
+        mPreference.setChecked(false);
+        mPreference.callChangeListener(false);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..cd0464f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datetime/AutoTimeZoneTogglePreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AutoTimeZoneTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private SwitchPreference mPreference;
+    private PreferenceControllerTestHelper<AutoTimeZoneTogglePreferenceController>
+            mPreferenceControllerHelper;
+    private AutoTimeZoneTogglePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AutoTimeZoneTogglePreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void testRefreshUi_unchecked() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_checked() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceChange_autoTimeZoneSet_shouldSendIntent() {
+        mPreference.setChecked(true);
+        mController.handlePreferenceChanged(mPreference, true);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+
+    @Test
+    public void testOnPreferenceChange_autoTimeZoneUnset_shouldSendIntent() {
+        mPreference.setChecked(false);
+        mController.handlePreferenceChanged(mPreference, false);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java
new file mode 100644
index 0000000..463c83a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datetime/DatePickerPreferenceControllerTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class DatePickerPreferenceControllerTest {
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<DatePickerPreferenceController>
+            mPreferenceControllerHelper;
+    private DatePickerPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                DatePickerPreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void testRefreshUi_disabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_enabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_disabled() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_enabled() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..b89eee6
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datetime/TimeFormatTogglePreferenceControllerTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class TimeFormatTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private TwoStatePreference mPreference;
+    private PreferenceControllerTestHelper<TimeFormatTogglePreferenceController>
+            mPreferenceControllerHelper;
+    private TimeFormatTogglePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TimeFormatTogglePreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void testRefreshUi_24HourSet_shouldCheckPreference() {
+        Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24,
+                TimeFormatTogglePreferenceController.HOURS_24);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testRefreshUi_12HourSet_shouldUncheckPreference() {
+        Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24,
+                TimeFormatTogglePreferenceController.HOURS_12);
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testOnPreferenceChange_24HourSet_shouldSendIntent() {
+        mPreference.setChecked(true);
+        mPreference.callChangeListener(true);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+        assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1))
+                .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_24_HOUR);
+    }
+
+    @Test
+    public void testOnPreferenceChange_12HourSet_shouldSendIntent() {
+        mPreference.setChecked(false);
+        mPreference.callChangeListener(false);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+        assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1))
+                .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_12_HOUR);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java
new file mode 100644
index 0000000..accc5e1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datetime/TimePickerPreferenceControllerTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class TimePickerPreferenceControllerTest {
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<TimePickerPreferenceController>
+            mPreferenceControllerHelper;
+    private TimePickerPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TimePickerPreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void testRefreshUi_disabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_enabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_disabled() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 1);
+        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_enabled() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME, 0);
+        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java
new file mode 100644
index 0000000..ed84a8c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerPreferenceControllerTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class TimeZonePickerPreferenceControllerTest {
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<TimeZonePickerPreferenceController>
+            mPreferenceControllerHelper;
+    private TimeZonePickerPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TimeZonePickerPreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void testRefreshUi_disabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_enabled() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
+        mController.refreshUi();
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_disabled() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 1);
+        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_fromBroadcastReceiver_enabled() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.STARTED);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AUTO_TIME_ZONE, 0);
+        mContext.sendBroadcast(new Intent(Intent.ACTION_TIME_CHANGED));
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
new file mode 100644
index 0000000..c07ed5f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/datetime/TimeZonePickerScreenPreferenceControllerTest.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2018 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.car.settings.datetime;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.app.AlarmManager;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.datetime.ZoneGetter;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class TimeZonePickerScreenPreferenceControllerTest {
+
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<TimeZonePickerScreenPreferenceController>
+            mPreferenceControllerHelper;
+    private TimeZonePickerScreenPreferenceController mController;
+    @Mock
+    private AlarmManager mAlarmManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                TimeZonePickerScreenPreferenceController.class, mPreferenceGroup);
+        mController = mPreferenceControllerHelper.getController();
+
+        // Test setup.
+        mController.mAlarmManager = mAlarmManager;
+    }
+
+    @Test
+    public void testOnCreate_hasElements() {
+        List<Map<String, Object>> testTimeZones = new ArrayList<>();
+        testTimeZones.add(
+                createTimeZoneMap("testKey1", "Midway", "GMT-11:00", -1100));
+        testTimeZones.add(
+                createTimeZoneMap("testKey2", "Tijuana", "GMT-07:00", -700));
+        testTimeZones.add(
+                createTimeZoneMap("testKey3", "Coordinated Universal Time", "GMT+00:00", 0));
+        testTimeZones.add(
+                createTimeZoneMap("testKey4", "Kabul", "GMT+04:30", 430));
+        mController.setZonesList(testTimeZones);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4);
+    }
+
+    @Test
+    public void testOnPreferenceClick_setTimeZoneCalled() {
+        List<Map<String, Object>> testTimeZone = new ArrayList<>();
+        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
+        mController.setZonesList(testTimeZone);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        Preference preference = mPreferenceGroup.findPreference("testKey");
+        preference.performClick();
+        verify(mAlarmManager).setTimeZone("testKey");
+    }
+
+    @Test
+    public void testOnPreferenceClick_fragmentControllerGoBack() {
+        List<Map<String, Object>> testTimeZone = new ArrayList<>();
+        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
+        mController.setZonesList(testTimeZone);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        Preference preference = mPreferenceGroup.findPreference("testKey");
+        preference.performClick();
+        verify(mPreferenceControllerHelper.getMockFragmentController()).goBack();
+    }
+
+    @Test
+    public void testOnPreferenceClick_broadcastFired() {
+        List<Map<String, Object>> testTimeZone = new ArrayList<>();
+        testTimeZone.add(createTimeZoneMap("testKey", "London", "GMT+01:00", 100));
+        mController.setZonesList(testTimeZone);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        Preference preference = mPreferenceGroup.findPreference("testKey");
+        preference.performClick();
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired.size()).isEqualTo(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED);
+    }
+
+    @Test
+    public void testTimeZonesComparator() {
+        List<Map<String, Object>> testTimeZones = new ArrayList<>();
+        testTimeZones.add(createTimeZoneMap("testKey1", "Oral",
+                "GMT+05:00", 500));
+        testTimeZones.add(createTimeZoneMap("testKey2", "Kathmandu",
+                "GMT+05:45", 545));
+        testTimeZones.add(createTimeZoneMap("testKey3", "Brazzaville",
+                "GMT+01:00", 100));
+        testTimeZones.add(createTimeZoneMap("testKey4", "Casablanca",
+                "GMT+01:00", 100));
+        testTimeZones.add(createTimeZoneMap("testKey5", "Nuuk",
+                "GMT-02:00", -200));
+        testTimeZones.add(createTimeZoneMap("testKey6", "St. John's",
+                "GMT-02:30", -230));
+        mController.setZonesList(testTimeZones);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+
+        List<String> computedOrder = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            computedOrder.add(mPreferenceGroup.getPreference(i).getTitle().toString());
+        }
+
+        assertThat(computedOrder).containsExactly("St. John's", "Nuuk", "Brazzaville", "Casablanca",
+                "Oral", "Kathmandu");
+    }
+
+    private Map<String, Object> createTimeZoneMap(String key, String timeZone, String offset,
+            int offsetValue) {
+        Map<String, Object> map = new HashMap<>();
+        map.put(ZoneGetter.KEY_ID, key);
+        map.put(ZoneGetter.KEY_DISPLAY_LABEL, timeZone);
+        map.put(ZoneGetter.KEY_OFFSET_LABEL, offset);
+        map.put(ZoneGetter.KEY_OFFSET, offsetValue);
+        return map;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java b/tests/robotests/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java
new file mode 100644
index 0000000..55eb9bf
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/development/DevelopmentSettingsUtilTest.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2018 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.car.settings.development;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.provider.Settings;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowLocalBroadcastManager.class})
+public class DevelopmentSettingsUtilTest {
+
+    private Context mContext;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowLocalBroadcastManager.reset();
+    }
+
+    @Test
+    public void isEnabled_settingsOff_isAdmin_notDemo_shouldReturnFalse() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+                mCarUserManagerHelper)).isFalse();
+    }
+
+    @Test
+    public void isEnabled_settingsOn_isAdmin_notDemo_shouldReturnTrue() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+                mCarUserManagerHelper)).isTrue();
+    }
+
+    @Test
+    public void isEnabled_settingsOn_notAdmin_notDemo_shouldReturnFalse() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+                mCarUserManagerHelper)).isFalse();
+    }
+
+    @Test
+    public void isEnabled_settingsOn_notAdmin_isDemo_shouldReturnTrue() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(true);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+                mCarUserManagerHelper)).isTrue();
+    }
+
+    @Test
+    public void isEnabled_settingsOff_notAdmin_isDemo_shouldReturnFalse() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(true);
+
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+                mCarUserManagerHelper)).isFalse();
+    }
+
+    @Test
+    public void setDevelopmentSettingsEnabled_setTrue() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+
+        DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, true);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0)).isEqualTo(1);
+    }
+
+    @Test
+    public void setDevelopmentSettingsEnabled_setFalse() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, false);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1)).isEqualTo(0);
+    }
+
+    @Test
+    public void isDeviceProvisioned_true() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                1);
+        assertThat(DevelopmentSettingsUtil.isDeviceProvisioned(mContext)).isTrue();
+    }
+
+    @Test
+    public void isDeviceProvisioned_false() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                0);
+        assertThat(DevelopmentSettingsUtil.isDeviceProvisioned(mContext)).isFalse();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..a965262
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/display/AdaptiveBrightnessTogglePreferenceControllerTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2018 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.car.settings.display;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AdaptiveBrightnessTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private AdaptiveBrightnessTogglePreferenceController mController;
+    private TwoStatePreference mTwoStatePreference;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mTwoStatePreference = new SwitchPreference(mContext);
+        PreferenceControllerTestHelper<AdaptiveBrightnessTogglePreferenceController>
+                preferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AdaptiveBrightnessTogglePreferenceController.class, mTwoStatePreference);
+        mController = preferenceControllerHelper.getController();
+        preferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void testRefreshUi_manualMode_isNotChecked() {
+        Settings.System.putInt(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+
+        mController.refreshUi();
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_automaticMode_isChecked() {
+        Settings.System.putInt(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+
+        mController.refreshUi();
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_setFalse() {
+        mTwoStatePreference.callChangeListener(false);
+        int brightnessMode = Settings.System.getInt(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+        assertThat(brightnessMode).isEqualTo(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_setTrue() {
+        mTwoStatePreference.callChangeListener(true);
+        int brightnessMode = Settings.System.getInt(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_MODE,
+                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
+        assertThat(brightnessMode).isEqualTo(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
new file mode 100644
index 0000000..d501e79
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2018 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.car.settings.display;
+
+import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
+import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.SeekBarPreference;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class BrightnessLevelPreferenceControllerTest {
+
+    private static final int CURRENT_USER = 10;
+    private Context mContext;
+    private BrightnessLevelPreferenceController mController;
+    private SeekBarPreference mSeekBarPreference;
+    private int mMin;
+    private int mMax;
+    private int mMid;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        mMin = mContext.getResources().getInteger(
+                com.android.internal.R.integer.config_screenBrightnessSettingMinimum);
+        mMax = mContext.getResources().getInteger(
+                com.android.internal.R.integer.config_screenBrightnessSettingMaximum);
+        mMid = (mMax + mMin) / 2;
+
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(CURRENT_USER);
+
+        mSeekBarPreference = new SeekBarPreference(mContext);
+        PreferenceControllerTestHelper<BrightnessLevelPreferenceController>
+                preferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                BrightnessLevelPreferenceController.class, mSeekBarPreference);
+        mController = preferenceControllerHelper.getController();
+        preferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testRefreshUi_maxSet() {
+        mController.refreshUi();
+        assertThat(mSeekBarPreference.getMax()).isEqualTo(GAMMA_SPACE_MAX);
+    }
+
+    @Test
+    public void testRefreshUi_minValue() {
+        Settings.System.putIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, mMin,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+
+        mController.refreshUi();
+        assertThat(mSeekBarPreference.getValue()).isEqualTo(0);
+    }
+
+    @Test
+    public void testRefreshUi_maxValue() {
+        Settings.System.putIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, mMax,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+
+        mController.refreshUi();
+        assertThat(mSeekBarPreference.getValue()).isEqualTo(GAMMA_SPACE_MAX);
+    }
+
+    @Test
+    public void testRefreshUi_midValue() {
+        Settings.System.putIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, mMid,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+
+        mController.refreshUi();
+        assertThat(mSeekBarPreference.getValue()).isEqualTo(
+                convertLinearToGamma(mMid,
+                        mMin, mMax));
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_minValue() throws Settings.SettingNotFoundException {
+        mSeekBarPreference.callChangeListener(0);
+        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+        assertThat(currentSettingsVal).isEqualTo(mMin);
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_maxValue() throws Settings.SettingNotFoundException {
+        mSeekBarPreference.callChangeListener(GAMMA_SPACE_MAX);
+        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+        assertThat(currentSettingsVal).isEqualTo(mMax);
+    }
+
+    @Test
+    public void testHandlePreferenceChanged_midValue() throws Settings.SettingNotFoundException {
+        mSeekBarPreference.callChangeListener(convertLinearToGamma(mMid, mMin, mMax));
+        int currentSettingsVal = Settings.System.getIntForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+        assertThat(currentSettingsVal).isEqualTo(mMid);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
new file mode 100644
index 0000000..e82f461
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowDevicePolicyManager;
+import com.android.car.settings.testutils.ShadowInputMethodManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowInputMethodManager.class, ShadowDevicePolicyManager.class})
+public class EnabledKeyboardPreferenceControllerTest {
+    private static final String DUMMY_LABEL = "dummy label";
+    private static final String DUMMY_ID = "dummy id";
+    private static final String DUMMY_SETTINGS_ACTIVITY = "dummy settings activity";
+    private static final String DUMMY_PACKAGE_NAME = "dummy package name";
+    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
+    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
+    private List<String> mPermittedList;
+    private PreferenceControllerTestHelper<EnabledKeyboardPreferenceController> mControllerHelper;
+    private PreferenceGroup mPreferenceGroup;
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                EnabledKeyboardPreferenceController.class, mPreferenceGroup);
+
+        mPermittedList = new ArrayList<>();
+        mPermittedList.add(DUMMY_PACKAGE_NAME);
+        mPermittedList.add(ALLOWED_PACKAGE_NAME);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @After
+    public void tearDown() {
+        getShadowInputMethodManager(mContext).reset();
+        getShadowDevicePolicyManager(mContext).reset();
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DUMMY_PACKAGE_NAME);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void refreshUi_hasAllowedImeByOrganization() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void refreshUi_disallowedByOrganization() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceIcon() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getIcon()).isEqualTo(
+                InputMethodUtil.getPackageIcon(mContext.getPackageManager(), infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceTitle() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getTitle()).isEqualTo(
+                InputMethodUtil.getPackageLabel(mContext.getPackageManager(), infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceSummary() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        InputMethodManager inputMethodManager =
+                (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getSummary()).isEqualTo(
+                InputMethodUtil.getSummaryString(mContext, inputMethodManager, infos.get(0)));
+    }
+
+    @Test
+    public void performClick_launchSettingsActivity() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        Intent intent = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(intent).isNotNull();
+        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MAIN);
+        assertThat(intent.getComponent().getClassName()).isEqualTo(DUMMY_SETTINGS_ACTIVITY);
+        assertThat(intent.getComponent().getPackageName()).isEqualTo(DISALLOWED_PACKAGE_NAME);
+    }
+
+    @Test
+    public void performClick_noSettingsActivity_noCrash() {
+        // Set to true if you'd like Robolectric to strictly simulate the real Android behavior when
+        // calling {@link Context#startActivity(android.content.Intent)}. Real Android throws a
+        // {@link android.content.ActivityNotFoundException} if given an {@link Intent} that is not
+        // known to the {@link android.content.pm.PackageManager.
+        // DUMMY_SETTINGS_ACTIVITY shouldn't exist, so it throws ActivityNotFoundException.
+        ShadowApplication.getInstance().checkActivities(true);
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        Intent intent = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(intent).isNull();
+    }
+
+    private List<InputMethodInfo> createInputMethodInfoList(String packageName) {
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createMockInputMethodInfoWithSubtypes(
+                packageManager, getShadowInputMethodManager(mContext), packageName));
+        return infos;
+    }
+
+    private static InputMethodInfo createMockInputMethodInfoWithSubtypes(
+            PackageManager packageManager, ShadowInputMethodManager inputMethodManager,
+            String packageName) {
+        InputMethodInfo mockInfo = createMockInputMethodInfo(packageManager, packageName);
+        List<InputMethodSubtype> subtypes = createSubtypes();
+        inputMethodManager.setEnabledInputMethodSubtypeList(subtypes);
+
+        return mockInfo;
+    }
+
+    private static InputMethodInfo createMockInputMethodInfo(
+            PackageManager packageManager, String packageName) {
+        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
+        when(mockInfo.getPackageName()).thenReturn(packageName);
+        when(mockInfo.getId()).thenReturn(DUMMY_ID);
+        when(mockInfo.loadLabel(packageManager)).thenReturn(DUMMY_LABEL);
+        when(mockInfo.getServiceInfo()).thenReturn(new ServiceInfo());
+        when(mockInfo.getSettingsActivity()).thenReturn(DUMMY_SETTINGS_ACTIVITY);
+        return mockInfo;
+    }
+
+    private static List<InputMethodSubtype> createSubtypes() {
+        List<InputMethodSubtype> subtypes = new ArrayList<>();
+        subtypes.add(createSubtype(1, "en_US"));
+        subtypes.add(createSubtype(2, "de_BE"));
+        subtypes.add(createSubtype(3, "oc-FR"));
+        return subtypes;
+    }
+
+    private static InputMethodSubtype createSubtype(int id, String locale) {
+        return new InputMethodSubtypeBuilder().setSubtypeId(id).setSubtypeLocale(locale)
+                .setIsAuxiliary(false).setIsAsciiCapable(true).build();
+    }
+
+    private static ShadowInputMethodManager getShadowInputMethodManager(Context context) {
+        return Shadow.extract(context.getSystemService(Context.INPUT_METHOD_SERVICE));
+    }
+
+    private static ShadowDevicePolicyManager getShadowDevicePolicyManager(Context context) {
+        return Shadow.extract(context.getSystemService(Context.DEVICE_POLICY_SERVICE));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java
new file mode 100644
index 0000000..2067089
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/inputmethod/InputMethodUtilTest.java
@@ -0,0 +1,319 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.ServiceInfo;
+import android.graphics.drawable.Drawable;
+import android.provider.Settings;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class InputMethodUtilTest {
+    private static final String DUMMY_PACKAGE_NAME = "dummy package name";
+    private static final String DUMMY_LABEL = "dummy label";
+    private static final String DUMMY_SETTINGS_ACTIVITY = "dummy settings activity";
+    private static final String SUBTYPES_STRING =
+            "English (United States), German (Belgium), and Occitan (France)";
+    private static final String DUMMY_ENABLED_INPUT_METHODS =
+            "com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime"
+                    + ".VoiceInputMethodService:com.google.android.apps.automotive.inputmethod/"
+                    + ".InputMethodService";
+    private static final String DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT =
+            "com.google.android.apps.automotive.inputmethod/.InputMethodService";
+    private static final String DUMMY_ENABLED_INPUT_METHOD_ID =
+            "com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime"
+                    + ".VoiceInputMethodService";
+    private static final String DUMMY_DISABLED_INPUT_METHOD_ID = "disabled input method id";
+    private Context mContext;
+    private List<InputMethodInfo> mDummyEnabledInputMethodsListAllDefaultable;
+    private List<InputMethodInfo> mDummyEnabledInputMethodsListOneDefaultable;
+
+    @Mock
+    private PackageManager mPackageManager;
+    @Mock
+    private InputMethodManager mInputMethodManager;
+    @Mock
+    private Drawable mIcon;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS, DUMMY_ENABLED_INPUT_METHODS);
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD, DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+
+        mDummyEnabledInputMethodsListOneDefaultable = Arrays
+                .stream(DUMMY_ENABLED_INPUT_METHODS.split(String.valueOf(InputMethodUtil
+                        .INPUT_METHOD_DELIMITER))).collect(Collectors.toList()).stream().map(
+                            result -> {
+                                InputMethodInfo info = createMockInputMethodInfo(
+                                        mPackageManager, DUMMY_PACKAGE_NAME);
+                                when(info.getId()).thenReturn(result);
+                                when(info.isDefault(mContext)).thenReturn(result.equals(
+                                        DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT));
+                                return info;
+                            }).collect(Collectors.toList());
+        mDummyEnabledInputMethodsListAllDefaultable = Arrays
+                .stream(DUMMY_ENABLED_INPUT_METHODS.split(String.valueOf(InputMethodUtil
+                        .INPUT_METHOD_DELIMITER))).collect(Collectors.toList()).stream().map(
+                                result -> {
+                                    InputMethodInfo info = createMockInputMethodInfo(
+                                            mPackageManager, DUMMY_PACKAGE_NAME);
+                                    when(info.getId()).thenReturn(result);
+                                    when(info.isDefault(mContext)).thenReturn(true);
+                                    return info;
+                                }).collect(Collectors.toList());
+    }
+
+    @Test
+    public void getPackageIcon_hasApplicationIcon() throws NameNotFoundException {
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
+                mInputMethodManager, DUMMY_PACKAGE_NAME);
+        when(mPackageManager.getApplicationIcon(eq(info.getPackageName()))).thenReturn(mIcon);
+        assertThat(InputMethodUtil.getPackageIcon(mPackageManager, info)).isEqualTo(mIcon);
+    }
+
+    @Test
+    public void getPackageIcon_noApplicationIcon() throws NameNotFoundException {
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
+                mInputMethodManager, DUMMY_PACKAGE_NAME);
+        when(mPackageManager.getApplicationIcon(DUMMY_PACKAGE_NAME)).thenThrow(
+                new NameNotFoundException());
+        assertThat(InputMethodUtil.getPackageIcon(mPackageManager, info)).isEqualTo(
+                InputMethodUtil.NO_ICON);
+    }
+
+    @Test
+    public void getPackageLabel() {
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
+                mInputMethodManager, DUMMY_PACKAGE_NAME);
+        assertThat(InputMethodUtil.getPackageLabel(mPackageManager, info)).isEqualTo(
+                DUMMY_LABEL);
+    }
+
+    @Test
+    public void getSummaryString() {
+        InputMethodInfo info = createMockInputMethodInfoWithSubtypes(mPackageManager,
+                mInputMethodManager, DUMMY_PACKAGE_NAME);
+        assertThat(InputMethodUtil.getSummaryString(mContext, mInputMethodManager, info)).isEqualTo(
+                SUBTYPES_STRING);
+    }
+
+    @Test
+    public void isInputMethodEnabled_isDisabled_returnsFalse() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_DISABLED_INPUT_METHOD_ID);
+
+        assertThat(InputMethodUtil.isInputMethodEnabled(mContext.getContentResolver(), info))
+                .isFalse();
+    }
+
+    @Test
+    public void isInputMethodEnabled_isEnabled_returnsTrue() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+
+        assertThat(InputMethodUtil.isInputMethodEnabled(mContext.getContentResolver(), info))
+                .isTrue();
+    }
+
+    @Test
+    public void enableInputMethod_alreadyEnabled_remainsUnchanged() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+
+        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(DUMMY_ENABLED_INPUT_METHODS);
+    }
+
+    @Test
+    public void enableInputMethod_noEnabledInputMethods_addsIME() {
+        Settings.Secure.putString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS, "");
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+
+        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
+                DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+    }
+
+    @Test
+    public void enableInputMethod_someEnabledInputMethods_addsIME() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_DISABLED_INPUT_METHOD_ID);
+
+        InputMethodUtil.enableInputMethod(mContext.getContentResolver(), info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
+                DUMMY_ENABLED_INPUT_METHODS + ":"
+                        + DUMMY_DISABLED_INPUT_METHOD_ID);
+    }
+
+    @Test
+    public void disableInputMethod_notEnabled_remainsUnchanged() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_DISABLED_INPUT_METHOD_ID);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(mDummyEnabledInputMethodsListAllDefaultable);
+
+        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(DUMMY_ENABLED_INPUT_METHODS);
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
+                DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+    }
+
+    @Test
+    public void disableInputMethod_notDefault_removesIMEWhileDefaultRemainsSame() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(mDummyEnabledInputMethodsListAllDefaultable);
+
+        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
+
+        assertThat(splitConcatenatedIdsIntoSet(Settings.Secure.getString(mContext
+                .getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS))).isEqualTo(
+                splitConcatenatedIdsIntoSet(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT));
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
+                DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+    }
+
+    @Test
+    public void disableInputMethod_twoDefaultableIMEsEnabled_removesIMEAndChangesDefault() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(mDummyEnabledInputMethodsListAllDefaultable);
+
+        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS)).isEqualTo(
+                DUMMY_ENABLED_INPUT_METHOD_ID);
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
+                DUMMY_ENABLED_INPUT_METHOD_ID);
+    }
+
+    @Test
+    public void disableInputMethod_isDefaultWithNoOtherDefaultableEnabled_remainsUnchanged() {
+        InputMethodInfo info = createMockInputMethodInfo(mPackageManager, DUMMY_PACKAGE_NAME);
+        when(info.getId()).thenReturn(DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+        when(mInputMethodManager.getEnabledInputMethodList())
+                .thenReturn(mDummyEnabledInputMethodsListOneDefaultable);
+
+        InputMethodUtil.disableInputMethod(mContext, mInputMethodManager, info);
+
+        assertThat(splitConcatenatedIdsIntoSet(Settings.Secure.getString(mContext
+                .getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS))).isEqualTo(
+                splitConcatenatedIdsIntoSet(DUMMY_ENABLED_INPUT_METHODS));
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.DEFAULT_INPUT_METHOD)).isEqualTo(
+                DUMMY_ENABLED_INPUT_METHOD_ID_DEFAULT);
+    }
+
+    private static InputMethodInfo createMockInputMethodInfoWithSubtypes(
+            PackageManager packageManager, InputMethodManager inputMethodManager,
+            String packageName) {
+        InputMethodInfo mockInfo = createMockInputMethodInfo(packageManager, packageName);
+        List<InputMethodSubtype> subtypes = createSubtypes();
+        when(inputMethodManager.getEnabledInputMethodSubtypeList(
+                eq(mockInfo), anyBoolean())).thenReturn(subtypes);
+        return mockInfo;
+    }
+
+    private static InputMethodInfo createMockInputMethodInfo(
+            PackageManager packageManager, String packageName) {
+        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
+        when(mockInfo.getPackageName()).thenReturn(packageName);
+        when(mockInfo.loadLabel(packageManager)).thenReturn(DUMMY_LABEL);
+        when(mockInfo.getServiceInfo()).thenReturn(new ServiceInfo());
+        when(mockInfo.getSettingsActivity()).thenReturn(DUMMY_SETTINGS_ACTIVITY);
+        return mockInfo;
+    }
+
+    private static List<InputMethodSubtype> createSubtypes() {
+        List<InputMethodSubtype> subtypes = new ArrayList<>();
+        subtypes.add(createSubtype(1, "en_US"));
+        subtypes.add(createSubtype(2, "de_BE"));
+        subtypes.add(createSubtype(3, "oc-FR"));
+        return subtypes;
+    }
+
+    private static InputMethodSubtype createSubtype(int id, String locale) {
+        return new InputMethodSubtypeBuilder().setSubtypeId(id).setSubtypeLocale(locale)
+                .setIsAuxiliary(false).setIsAsciiCapable(true).build();
+    }
+
+    private Set<String> splitConcatenatedIdsIntoSet(String ids) {
+        Set<String> result = new HashSet<>();
+
+        if (ids == null || ids.isEmpty()) {
+            return result;
+        }
+
+        InputMethodUtil.sInputMethodSplitter.setString(ids);
+        while (InputMethodUtil.sInputMethodSplitter.hasNext()) {
+            result.add(InputMethodUtil.sInputMethodSplitter.next());
+        }
+
+        return result;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
new file mode 100644
index 0000000..5c794cf
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
@@ -0,0 +1,1069 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowDevicePolicyManager;
+import com.android.car.settings.testutils.ShadowInputMethodManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowInputMethodManager.class, ShadowDevicePolicyManager.class})
+public class KeyboardManagementPreferenceControllerTest {
+    private static final String DUMMY_LABEL = "dummy label";
+    private static final String DUMMY_SETTINGS_ACTIVITY = "dummy settings activity";
+    private static final String DUMMY_PACKAGE_NAME = "dummy package name";
+    private static final String DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE =
+            "dummy id defaultable direct boot aware";
+    private static final String DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE =
+            "dummy id defaultable not direct boot aware";
+    private static final String DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE =
+            "dummy id not defaultable direct boot aware";
+    private static final String DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE =
+            "dummy id not defaultable not direct boot aware";
+    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
+    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
+    private List<String> mPermittedList;
+    private PreferenceControllerTestHelper<KeyboardManagementPreferenceController>
+            mControllerHelper;
+    private PreferenceGroup mPreferenceGroup;
+    private Context mContext;
+    private InputMethodManager mInputMethodManager;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                KeyboardManagementPreferenceController.class, mPreferenceGroup);
+        mInputMethodManager = (InputMethodManager) mContext.getSystemService(Context
+                .INPUT_METHOD_SERVICE);
+
+        mPermittedList = new ArrayList<>();
+        mPermittedList.add(DUMMY_PACKAGE_NAME);
+        mPermittedList.add(ALLOWED_PACKAGE_NAME);
+
+        getShadowInputMethodManager(mContext).setInputMethodList(new ArrayList<>());
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods_preferenceCountIs4() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        getShadowInputMethodManager(mContext).setInputMethodList(infos);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(4);
+    }
+
+    @Test
+    public void refreshUi_multiplteAllowedImeByOrganization_allPreferencesVisible() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        getShadowInputMethodManager(mContext).setInputMethodList(infos);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(mPreferenceGroup.getPreference(i).isVisible()).isTrue();
+        }
+    }
+
+    @Test
+    public void refreshUi_multipleEnabledInputMethods_allPreferencesEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        getShadowInputMethodManager(mContext).setInputMethodList(infos);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(mPreferenceGroup.getPreference(i).isEnabled()).isTrue();
+        }
+    }
+
+    @Test
+    public void refreshUi_multipleEnabledInputMethods_allPreferencesChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        getShadowInputMethodManager(mContext).setInputMethodList(infos);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(((SwitchPreference) mPreferenceGroup.getPreference(i)).isChecked())
+                    .isTrue();
+        }
+    }
+
+    @Test
+    public void refreshUi_disallowedByOrganization_noPreferencesShown() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
+                mPermittedList);
+        List<InputMethodInfo> infos = createInputMethodInfoList(DISALLOWED_PACKAGE_NAME,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        getShadowInputMethodManager(mContext).setInputMethodList(infos);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceIcon() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        getShadowInputMethodManager(mContext).setInputMethodList(infos);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getIcon()).isEqualTo(
+                InputMethodUtil.getPackageIcon(mContext.getPackageManager(), infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceTitle() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        getShadowInputMethodManager(mContext).setInputMethodList(infos);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getTitle()).isEqualTo(
+                InputMethodUtil.getPackageLabel(mContext.getPackageManager(), infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_verifyPreferenceSummary() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        List<InputMethodInfo> infos = createInputMethodInfoList(ALLOWED_PACKAGE_NAME,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+        getShadowInputMethodManager(mContext).setInputMethodList(infos);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+
+        InputMethodManager inputMethodManager =
+                (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
+        Preference preference = mPreferenceGroup.getPreference(0);
+        assertThat(preference.getSummary()).isEqualTo(
+                InputMethodUtil.getSummaryString(mContext, inputMethodManager, infos.get(0)));
+    }
+
+    @Test
+    public void refreshUi_oneInputMethod_noneEnabled_oneInputMethodPreferenceInView() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void refreshUi_oneInputMethod_noneEnabled_preferenceEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_oneInputMethod_noneEnabled_preferenceNotChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isFalse();
+    }
+
+    @Test
+    public void performClick_toggleTrue_securityDialogShown() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_positive_noOtherPreferenceAdded() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_positive_preferenceChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_positive_preferenceEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_positive_inputMethodEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mInputMethodManager.getEnabledInputMethodList().get(0).getId())
+                .isEqualTo(DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_negative_noOtherPreferenceAdded() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_negative_preferenceEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showSecurityDialog_negative_inputMethodDisabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isFalse();
+    }
+
+    @Test
+    public void performClick_toggleTrue_directBootWarningShown() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_positive_noOtherPreferenceAdded() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_positive_preferenceChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_positive_preferenceEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_positive_inputMethodEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        assertThat(mInputMethodManager.getEnabledInputMethodList().get(0).getId())
+                .isEqualTo(DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_negative_noOtherPreferenceAdded() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_negative_preferenceNotChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isFalse();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_negative_preferenceEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(mPreferenceGroup.getPreference(0).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_showDirectBootDialog_negative_inputMethodDisabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(new ArrayList<>());
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> securityDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                securityDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = securityDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        ArgumentCaptor<ConfirmationDialogFragment> bootDialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(bootDialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.DIRECT_BOOT_WARN_DIALOG_TAG));
+        dialogFragment = bootDialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+
+        assertThat(mInputMethodManager.getEnabledInputMethodList().size())
+                .isEqualTo(0);
+    }
+
+    @Test
+    public void performClick_toggleFalse_noOtherPreferenceAdded() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getKey()).isEqualTo(
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE);
+    }
+
+    @Test
+    public void performClick_toggleFalse_preferenceNotChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        assertThat(((SwitchPreference) mPreferenceGroup.getPreference(0)).isChecked())
+                .isFalse();
+    }
+
+    @Test
+    public void performClick_toggleFalse_preferenceEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        assertThat((mPreferenceGroup.getPreference(0)).isEnabled())
+                .isTrue();
+    }
+
+    @Test
+    public void performClick_toggleFalse_inputMethodDisabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+
+        mControllerHelper.getController().refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+
+        assertThat(mInputMethodManager.getEnabledInputMethodList().size())
+                .isEqualTo(0);
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_notClickDefaultablePreferenceDisabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+
+        mControllerHelper.getController().refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup, DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE)
+                .performClick();
+
+        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_clickedDefaultablePreferenceEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+
+        mControllerHelper.getController().refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_nonDefaultablePreferenceEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+
+        mControllerHelper.getController().refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_clickedDefaultablePreferenceNotChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+
+        mControllerHelper.getController().refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE)).isChecked()).isFalse();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_notClickedDefaultablePreferenceChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+
+        mControllerHelper.getController().refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)).isChecked()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleFalse_twoDefaultable_nonDefaultablePreferenceChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+
+        mControllerHelper.getController().refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        assertThat(((SwitchPreference) getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)).isChecked()).isTrue();
+    }
+
+    @Test
+    public void performClick_toggleTrue_twoDefaultable_allPreferencesEnabled() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+
+        mControllerHelper.getController().refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(mPreferenceGroup.getPreference(i).isEnabled()).isTrue();
+        }
+    }
+
+    @Test
+    public void performClick_toggleTrue_twoDefaultable_allPreferencesChecked() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE, DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE)
+        );
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(createInputMethodInfoList(
+                ALLOWED_PACKAGE_NAME, DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE,
+                DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE));
+
+        mControllerHelper.getController().refreshUi();
+
+        getPreferenceFromGroupByKey(mPreferenceGroup,
+                DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE).performClick();
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(dialogCaptor.capture(),
+                eq(KeyboardManagementPreferenceController.SECURITY_WARN_DIALOG_TAG));
+        ConfirmationDialogFragment dialogFragment = dialogCaptor.getValue();
+
+        dialogFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
+
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            assertThat(((SwitchPreference) mPreferenceGroup.getPreference(i)).isChecked())
+                    .isTrue();
+        }
+    }
+
+    private static InputMethodInfo createMockInputMethodInfo(
+            Context context, PackageManager packageManager,
+            ShadowInputMethodManager inputMethodManager, String packageName, String id,
+            boolean isDefaultable, boolean directBootAware) {
+        ServiceInfo mockServiceInfo = mock(ServiceInfo.class);
+        mockServiceInfo.directBootAware = directBootAware;
+
+        InputMethodInfo mockInfo = mock(InputMethodInfo.class);
+        when(mockInfo.getPackageName()).thenReturn(packageName);
+        when(mockInfo.loadLabel(packageManager)).thenReturn(DUMMY_LABEL);
+        when(mockInfo.getServiceInfo()).thenReturn(mockServiceInfo);
+        when(mockInfo.getSettingsActivity()).thenReturn(DUMMY_SETTINGS_ACTIVITY);
+        when(mockInfo.getId()).thenReturn(id);
+        when(mockInfo.isDefault(context)).thenReturn(isDefaultable);
+        List<InputMethodSubtype> subtypes = createSubtypes();
+        inputMethodManager.setEnabledInputMethodSubtypeList(subtypes);
+        return mockInfo;
+    }
+
+    private static Preference getPreferenceFromGroupByKey(PreferenceGroup prefGroup, String key) {
+        for (int i = 0; i < prefGroup.getPreferenceCount(); i++) {
+            Preference pref = prefGroup.getPreference(i);
+            if (pref.getKey().equals(key)) {
+                return pref;
+            }
+        }
+        return null;
+    }
+
+    private static List<InputMethodSubtype> createSubtypes() {
+        List<InputMethodSubtype> subtypes = new ArrayList<>();
+        subtypes.add(createSubtype(1, "en_US"));
+        subtypes.add(createSubtype(2, "de_BE"));
+        subtypes.add(createSubtype(3, "oc-FR"));
+        return subtypes;
+    }
+
+    private static InputMethodSubtype createSubtype(int id, String locale) {
+        return new InputMethodSubtype.InputMethodSubtypeBuilder().setSubtypeId(id)
+                .setSubtypeLocale(locale).setIsAuxiliary(false).setIsAsciiCapable(true).build();
+    }
+
+    private static ShadowInputMethodManager getShadowInputMethodManager(Context context) {
+        return Shadow.extract(context.getSystemService(Context.INPUT_METHOD_SERVICE));
+    }
+
+    private static ShadowDevicePolicyManager getShadowDevicePolicyManager(Context context) {
+        return Shadow.extract(context.getSystemService(Context.DEVICE_POLICY_SERVICE));
+    }
+
+    private List<InputMethodInfo> createInputMethodInfoList(String packageName, String... ids) {
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        List<String> idsList = Arrays.asList(ids);
+        idsList.forEach(id -> {
+            boolean defaultable;
+            boolean directBootAware;
+            switch (id) {
+                case DUMMY_ID_DEFAULTABLE_DIRECT_BOOT_AWARE:
+                    defaultable = true;
+                    directBootAware = true;
+                    break;
+                case DUMMY_ID_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE:
+                    defaultable = true;
+                    directBootAware = false;
+                    break;
+                case DUMMY_ID_NOT_DEFAULTABLE_DIRECT_BOOT_AWARE:
+                    defaultable = false;
+                    directBootAware = true;
+                    break;
+                default: //case DUMMY_ID_NOT_DEFAULTABLE_NOT_DIRECT_BOOT_AWARE:
+                    defaultable = false;
+                    directBootAware = false;
+                    break;
+            }
+            infos.add(createMockInputMethodInfo(mContext, packageManager,
+                    getShadowInputMethodManager(mContext), packageName, id, defaultable,
+                    directBootAware));
+        });
+        return infos;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
new file mode 100644
index 0000000..d51e9b1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2019 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.car.settings.inputmethod;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.view.inputmethod.InputMethodInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowDevicePolicyManager;
+import com.android.car.settings.testutils.ShadowInputMethodManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowInputMethodManager.class, ShadowDevicePolicyManager.class})
+public class KeyboardPreferenceControllerTest {
+    private static final String EMPTY = "";
+    private static final String DUMMY_LABEL = "dummy label";
+    private static final String DUMMY_LABEL_1 = "dummy label 1";
+    private static final String DUMMY_LABEL_2 = "dummy label 2";
+    private static final String DUMMY_SETTINGS_ACTIVITY = "dummy settings activity";
+    private static final String DUMMY_PACKAGE_NAME = "dummy package name";
+    private static final String ALLOWED_PACKAGE_NAME = "allowed package name";
+    private static final String DISALLOWED_PACKAGE_NAME = "disallowed package name";
+    private List<String> mPermittedList;
+    private PreferenceControllerTestHelper<KeyboardPreferenceController> mControllerHelper;
+    private Preference mPreference;
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                KeyboardPreferenceController.class, mPreference);
+
+        mPermittedList = new ArrayList<>();
+        mPermittedList.add(DUMMY_PACKAGE_NAME);
+        mPermittedList.add(ALLOWED_PACKAGE_NAME);
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowInputMethodManager.reset();
+        ShadowDevicePolicyManager.reset();
+    }
+
+    @Test
+    public void refreshUi_noInputMethodInfo() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(Collections.emptyList());
+
+        mControllerHelper.getController().refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo(EMPTY);
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods_hasOneInputMethodInfo() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+        assertThat(mPreference.getSummary()).isNotNull();
+        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL)).isTrue();
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods_hasTwoInputMethodInfo() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL));
+        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL_1));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+        assertThat(mPreference.getSummary()).isNotNull();
+        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL)).isTrue();
+        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL_1)).isTrue();
+    }
+
+    @Test
+    public void refreshUi_permitAllInputMethods_hasThreeInputMethodInfo() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL));
+        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL_1));
+        infos.add(createInputMethodInfo(packageManager, DUMMY_PACKAGE_NAME, DUMMY_LABEL_2));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+        assertThat(mPreference.getSummary()).isNotNull();
+        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL)).isTrue();
+        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL_1)).isTrue();
+        assertThat(mPreference.getSummary().toString().contains(DUMMY_LABEL_2)).isTrue();
+    }
+
+    @Test
+    public void refreshUi_hasAllowedImeByOrganization() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
+                mPermittedList);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createInputMethodInfo(packageManager, ALLOWED_PACKAGE_NAME, DUMMY_LABEL));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo(DUMMY_LABEL);
+    }
+
+    @Test
+    public void refreshUi_disallowedByOrganization() {
+        getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(
+                mPermittedList);
+
+        List<InputMethodInfo> infos = new ArrayList<>();
+        PackageManager packageManager = mContext.getPackageManager();
+        infos.add(createInputMethodInfo(packageManager, DISALLOWED_PACKAGE_NAME, DUMMY_LABEL));
+        getShadowInputMethodManager(mContext).setEnabledInputMethodList(infos);
+
+        mControllerHelper.getController().refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo(EMPTY);
+    }
+
+    private static InputMethodInfo createInputMethodInfo(
+            PackageManager packageManager, String packageName, String label) {
+        ResolveInfo resolveInfo = mock(ResolveInfo.class);
+        ServiceInfo serviceInfo = new ServiceInfo();
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.packageName = packageName;
+        applicationInfo.enabled = true;
+        applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        serviceInfo.applicationInfo = applicationInfo;
+        serviceInfo.enabled = true;
+        serviceInfo.packageName = packageName;
+        serviceInfo.name = label;
+        serviceInfo.exported = true;
+        serviceInfo.nonLocalizedLabel = label;
+        resolveInfo.serviceInfo = serviceInfo;
+        resolveInfo.nonLocalizedLabel = label;
+        when(resolveInfo.loadLabel(packageManager)).thenReturn(label);
+        return new InputMethodInfo(resolveInfo, /* isAuxIme */false,
+                DUMMY_SETTINGS_ACTIVITY,  /* subtypes */null, /* isDefaultResId */
+                1, /*forceDefault*/false);
+    }
+
+    private static ShadowInputMethodManager getShadowInputMethodManager(Context context) {
+        return Shadow.extract(context.getSystemService(Context.INPUT_METHOD_SERVICE));
+    }
+
+    private static ShadowDevicePolicyManager getShadowDevicePolicyManager(Context context) {
+        return Shadow.extract(context.getSystemService(Context.DEVICE_POLICY_SERVICE));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/language/LanguageBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/language/LanguageBasePreferenceControllerTest.java
new file mode 100644
index 0000000..8ce0c68
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/language/LanguageBasePreferenceControllerTest.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowLocalePicker;
+import com.android.car.settings.testutils.ShadowLocaleStore;
+import com.android.internal.app.LocaleStore;
+import com.android.internal.app.SuggestedLocaleAdapter;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Locale;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowLocalePicker.class, ShadowLocaleStore.class})
+public class LanguageBasePreferenceControllerTest {
+
+    private static final LocaleStore.LocaleInfo TEST_LOCALE_INFO = LocaleStore.getLocaleInfo(
+            Locale.FRENCH);
+    private static final Locale HAS_MULTIPLE_CHILD_LOCALE = Locale.ENGLISH;
+    private static final Locale HAS_CHILD_LOCALE = Locale.KOREAN;
+    private static final Locale NO_CHILD_LOCALE = Locale.FRANCE;
+
+    private static class TestLanguageBasePreferenceController extends
+            LanguageBasePreferenceController {
+
+        private SuggestedLocaleAdapter mAdapter;
+
+        TestLanguageBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        public void setAdapter(SuggestedLocaleAdapter adapter) {
+            mAdapter = adapter;
+        }
+
+        @Override
+        protected LocalePreferenceProvider defineLocaleProvider() {
+            return new LocalePreferenceProvider(getContext(), mAdapter);
+        }
+    }
+
+    private TestLanguageBasePreferenceController mController;
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private FragmentController mFragmentController;
+    @Mock
+    private SuggestedLocaleAdapter mSuggestedLocaleAdapter;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        PreferenceControllerTestHelper<TestLanguageBasePreferenceController>
+                preferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestLanguageBasePreferenceController.class, mPreferenceGroup);
+        mController = preferenceControllerHelper.getController();
+        mController.setAdapter(mSuggestedLocaleAdapter);
+        mFragmentController = preferenceControllerHelper.getMockFragmentController();
+        preferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        // Note that ENGLISH has 2 child locales.
+        ShadowLocaleStore.addLocaleRelationship(Locale.ENGLISH, Locale.CANADA);
+        ShadowLocaleStore.addLocaleRelationship(Locale.ENGLISH, Locale.US);
+
+        // Note that KOREAN has 1 child locale.
+        ShadowLocaleStore.addLocaleRelationship(Locale.KOREAN, Locale.KOREA);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowLocaleStore.reset();
+        ShadowLocalePicker.reset();
+    }
+
+    @Test
+    public void testRefreshUi_groupConstructed() {
+        when(mSuggestedLocaleAdapter.getCount()).thenReturn(1);
+        when(mSuggestedLocaleAdapter.getItemViewType(0)).thenReturn(
+                LocalePreferenceProvider.TYPE_LOCALE);
+        when(mSuggestedLocaleAdapter.getItem(0)).thenReturn(TEST_LOCALE_INFO);
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void testOnPreferenceClick_noLocale_returnsFalse() {
+        assertThat(mController.onPreferenceClick(new Preference(mContext))).isFalse();
+    }
+
+    @Test
+    public void testOnPreferenceClick_hasMultipleChildLocales_returnsTrue() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(HAS_MULTIPLE_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        assertThat(mController.onPreferenceClick(preference)).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceClick_hasMultipleChildLocales_localeNotUpdated() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(HAS_MULTIPLE_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        mController.onPreferenceClick(preference);
+        assertThat(ShadowLocalePicker.localeWasUpdated()).isFalse();
+    }
+
+    @Test
+    public void testOnPreferenceClick_hasMultipleChildLocales_neverCallsGoBack() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(HAS_MULTIPLE_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        mController.onPreferenceClick(preference);
+        verify(mFragmentController, never()).goBack();
+    }
+
+    @Test
+    public void testOnPreferenceClick_hasSingleChildLocale_returnsTrue() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(HAS_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        assertThat(mController.onPreferenceClick(preference)).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceClick_hasSingleChildLocale_localeUpdated() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(HAS_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        mController.onPreferenceClick(preference);
+        assertThat(ShadowLocalePicker.localeWasUpdated()).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceClick_hasSingleChildLocale_callsGoBack() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(HAS_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        mController.onPreferenceClick(preference);
+        verify(mFragmentController).goBack();
+    }
+
+    @Test
+    public void testOnPreferenceClick_noChildLocale_returnsTrue() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(NO_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        assertThat(mController.onPreferenceClick(preference)).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceClick_noChildLocale_localeUpdated() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(NO_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        mController.onPreferenceClick(preference);
+        assertThat(ShadowLocalePicker.localeWasUpdated()).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceClick_noChildLocale_callsGoBack() {
+        LocaleStore.LocaleInfo localeInfo = LocaleStore.getLocaleInfo(NO_CHILD_LOCALE);
+        Preference preference = new Preference(mContext);
+        LocaleUtil.setLocaleArgument(preference, localeInfo);
+        mController.onPreferenceClick(preference);
+        verify(mFragmentController).goBack();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/language/LocalePreferenceProviderTest.java b/tests/robotests/src/com/android/car/settings/language/LocalePreferenceProviderTest.java
new file mode 100644
index 0000000..5847603
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/language/LocalePreferenceProviderTest.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2018 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.car.settings.language;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settingslib.R;
+import com.android.internal.app.LocaleStore;
+import com.android.internal.app.SuggestedLocaleAdapter;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class LocalePreferenceProviderTest {
+
+    private static class Pair {
+        int mItemType;
+        LocaleStore.LocaleInfo mLocaleInfo;
+
+        Pair(int itemType, LocaleStore.LocaleInfo localeInfo) {
+            mItemType = itemType;
+            mLocaleInfo = localeInfo;
+        }
+    }
+
+    private Context mContext;
+    private LocalePreferenceProvider mLocalePreferenceProvider;
+    private LogicalPreferenceGroup mPreferenceGroup;
+    // This list includes the expected values that should be returned by the SuggestedLocaleAdapter.
+    // The index i in this list represents position, the itemType represents the return value for
+    // getItemViewType given the index i, and mLocaleInfo represents the return value for getItem
+    // given the index i.
+    private List<Pair> mLocaleAdapterExpectedValues;
+    @Mock
+    private SuggestedLocaleAdapter mSuggestedLocaleAdapter;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mLocalePreferenceProvider = new LocalePreferenceProvider(mContext, mSuggestedLocaleAdapter);
+        mLocaleAdapterExpectedValues = new ArrayList<>();
+
+        // LogicalPreferenceGroup needs to be part of a PreferenceScreen in order for it to add
+        // additional preferences.
+        PreferenceScreen screen = new PreferenceManager(mContext).createPreferenceScreen(mContext);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        screen.addPreference(mPreferenceGroup);
+    }
+
+    @Test
+    public void testPopulateBasePreference_noSubSections() {
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.US)));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.UK)));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.CANADA)));
+        prepareSuggestedLocaleAdapterMock();
+
+        mLocalePreferenceProvider.populateBasePreference(mPreferenceGroup, mock(
+                Preference.OnPreferenceClickListener.class));
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+    }
+
+    @Test
+    public void testPopulateBasePreference_withSubSections() {
+        mLocaleAdapterExpectedValues.add(
+                new Pair(LocalePreferenceProvider.TYPE_HEADER_SUGGESTED, null));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.US)));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.FRANCE)));
+        mLocaleAdapterExpectedValues.add(
+                new Pair(LocalePreferenceProvider.TYPE_HEADER_ALL_OTHERS, null));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.UK)));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.CANADA)));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.KOREA)));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.CHINA)));
+        prepareSuggestedLocaleAdapterMock();
+
+        mLocalePreferenceProvider.populateBasePreference(mPreferenceGroup, mock(
+                Preference.OnPreferenceClickListener.class));
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        PreferenceCategory firstCategory = (PreferenceCategory) mPreferenceGroup.getPreference(0);
+        assertThat(firstCategory.getTitle()).isEqualTo(
+                mContext.getString(R.string.language_picker_list_suggested_header));
+        assertThat(firstCategory.getPreferenceCount()).isEqualTo(2);
+
+        PreferenceCategory secondCategory = (PreferenceCategory) mPreferenceGroup.getPreference(1);
+        assertThat(secondCategory.getTitle()).isEqualTo(
+                mContext.getString(R.string.language_picker_list_all_header));
+        assertThat(secondCategory.getPreferenceCount()).isEqualTo(4);
+    }
+
+    @Test
+    public void testClickListenerTriggered() {
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.US)));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.UK)));
+        mLocaleAdapterExpectedValues.add(new Pair(LocalePreferenceProvider.TYPE_LOCALE,
+                LocaleStore.getLocaleInfo(Locale.CANADA)));
+        prepareSuggestedLocaleAdapterMock();
+
+        Preference.OnPreferenceClickListener listener = mock(
+                Preference.OnPreferenceClickListener.class);
+        mLocalePreferenceProvider.populateBasePreference(mPreferenceGroup, listener);
+
+        mPreferenceGroup.getPreference(0).performClick();
+        verify(listener).onPreferenceClick(mPreferenceGroup.getPreference(0));
+        mPreferenceGroup.getPreference(1).performClick();
+        verify(listener).onPreferenceClick(mPreferenceGroup.getPreference(1));
+        mPreferenceGroup.getPreference(2).performClick();
+        verify(listener).onPreferenceClick(mPreferenceGroup.getPreference(2));
+    }
+
+    private void prepareSuggestedLocaleAdapterMock() {
+        for (int i = 0; i < mLocaleAdapterExpectedValues.size(); i++) {
+            Pair entry = mLocaleAdapterExpectedValues.get(i);
+            int itemType = entry.mItemType;
+            LocaleStore.LocaleInfo localeInfo = entry.mLocaleInfo;
+
+            when(mSuggestedLocaleAdapter.getItemViewType(i)).thenReturn(itemType);
+            when(mSuggestedLocaleAdapter.getItem(i)).thenReturn(localeInfo);
+        }
+
+        when(mSuggestedLocaleAdapter.getCount()).thenReturn(mLocaleAdapterExpectedValues.size());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/location/BluetoothScanningPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/BluetoothScanningPreferenceControllerTest.java
new file mode 100644
index 0000000..abb822b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/location/BluetoothScanningPreferenceControllerTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class BluetoothScanningPreferenceControllerTest {
+
+    private Context mContext;
+    private SwitchPreference mPreference;
+    private BluetoothScanningPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new SwitchPreference(mContext);
+        PreferenceControllerTestHelper<BluetoothScanningPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        BluetoothScanningPreferenceController.class, mPreference);
+        mController = controllerHelper.getController();
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_BLUETOOTH_LE, /* supported= */ true);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasBluetoothFeature_available() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_BLUETOOTH_LE, /* supported= */ true);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_noBluetoothFeature_unsupported() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_BLUETOOTH_LE, /* supported= */ false);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void refreshUi_bluetoothScanningEnabled_shouldCheckPreference() {
+        mPreference.setChecked(false);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, 1);
+        mController.refreshUi();
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_bluetoothScanningDisabled_shouldUncheckPreference() {
+        mPreference.setChecked(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, 0);
+        mController.refreshUi();
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void handlePreferenceChanged_preferenceChecked_shouldEnableBluetoothScanning() {
+        mPreference.callChangeListener(true);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, 0)).isEqualTo(1);
+    }
+
+    @Test
+    public void handlePreferenceChanged_preferenceUnchecked_shouldDisableBluetoothScanning() {
+        mPreference.callChangeListener(false);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE, 1)).isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationFooterPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/LocationFooterPreferenceControllerTest.java
new file mode 100644
index 0000000..344df59
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/location/LocationFooterPreferenceControllerTest.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.location.LocationManager;
+import android.os.Bundle;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class LocationFooterPreferenceControllerTest {
+    private static final String TEST_TEXT = "sample text";
+    private static final int TEST_RES_ID = 1024;
+
+    @Mock
+    private PackageManager mPackageManager;
+    @Mock
+    private Resources mResources;
+
+    private PreferenceControllerTestHelper<LocationFooterPreferenceController> mControllerHelper;
+    private LocationFooterPreferenceController mController;
+    private PreferenceGroup mGroup;
+    private List<ResolveInfo> mResolveInfos;
+
+    @Before
+    public void setUp() throws PackageManager.NameNotFoundException {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        mGroup = new LogicalPreferenceGroup(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                LocationFooterPreferenceController.class, mGroup);
+        mController = mControllerHelper.getController();
+        mController.setPackageManager(mPackageManager);
+
+        mResolveInfos = new ArrayList<>();
+        when(mPackageManager.queryBroadcastReceivers(any(Intent.class), anyInt()))
+                .thenReturn(mResolveInfos);
+        when(mPackageManager.getResourcesForApplication(any(ApplicationInfo.class)))
+                .thenReturn(mResources);
+        when(mResources.getString(TEST_RES_ID)).thenReturn(TEST_TEXT);
+    }
+
+    // Visibility Tests.
+    @Test
+    public void footer_isVisibleWhenThereAreValidInjections() {
+        mResolveInfos.add(
+                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true));
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mGroup.isVisible()).isTrue();
+    }
+
+    @Test
+    public void footer_isHiddenWhenThereAreNoValidInjections_notSystemApp() {
+        mResolveInfos.add(
+                getTestResolveInfo(/* isSystemApp= */ false, /* hasRequiredMetadata= */ true));
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void footer_isHiddenWhenThereAreNoValidInjections_noMetaData() {
+        mResolveInfos.add(
+                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ false));
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mGroup.isVisible()).isFalse();
+    }
+
+    // Correctness Tests.
+    @Test
+    public void onCreate_addsInjectedFooterToGroup() {
+        int numFooters = 3;
+        for (int i = 0; i < numFooters; i++) {
+            mResolveInfos.add(
+                    getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true));
+        }
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mGroup.getPreferenceCount()).isEqualTo(numFooters);
+    }
+
+    @Test
+    public void onCreate_injectedFooterHasCorrectText() {
+        mResolveInfos.add(
+                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true));
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mGroup.getPreference(0).getSummary()).isEqualTo(TEST_TEXT);
+    }
+
+    // Broadcast Tests.
+    @Test
+    public void onCreate_broadcastsFooterDisplayedIntentForValidInjections() {
+        ResolveInfo testResolveInfo =
+                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true);
+        mResolveInfos.add(testResolveInfo);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired).hasSize(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(
+                LocationManager.SETTINGS_FOOTER_DISPLAYED_ACTION);
+        assertThat(intentFired.getComponent()).isEqualTo(testResolveInfo
+                .getComponentInfo().getComponentName());
+    }
+
+    @Test
+    public void onCreate_doesNotBroadcastFooterDisplayedIntentIfNoValidInjections() {
+        mResolveInfos.add(
+                getTestResolveInfo(/* isSystemApp= */ false, /* hasRequiredMetadata= */ true));
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired).isEmpty();
+    }
+
+    @Test
+    public void onStop_broadcastsFooterRemovedIntent() {
+        mResolveInfos.add(
+                getTestResolveInfo(/* isSystemApp= */ true, /* hasRequiredMetadata= */ true));
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired).hasSize(2);
+        Intent intentFired = intentsFired.get(1);
+        assertThat(intentFired.getAction()).isEqualTo(
+                LocationManager.SETTINGS_FOOTER_REMOVED_ACTION);
+    }
+
+    /**
+     * Returns a ResolveInfo object for testing.
+     *
+     * <p>Injections are only valid if they are both a system app, and have the required METADATA.
+     *
+     * @param isSystemApp         true if the application is a system app.
+     * @param hasRequiredMetaData true if the broadcast receiver has a valid value for
+     *                            {@link LocationManager#METADATA_SETTINGS_FOOTER_STRING}
+     */
+    private ResolveInfo getTestResolveInfo(boolean isSystemApp, boolean hasRequiredMetaData) {
+        ResolveInfo testResolveInfo = new ResolveInfo();
+        ApplicationInfo testAppInfo = new ApplicationInfo();
+        if (isSystemApp) {
+            testAppInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+        }
+        ActivityInfo testActivityInfo = new ActivityInfo();
+        testActivityInfo.name = "TestActivityName";
+        testActivityInfo.packageName = "TestPackageName";
+        testActivityInfo.applicationInfo = testAppInfo;
+        if (hasRequiredMetaData) {
+            testActivityInfo.metaData = new Bundle();
+            testActivityInfo.metaData.putInt(
+                    LocationManager.METADATA_SETTINGS_FOOTER_STRING, TEST_RES_ID);
+        }
+        testResolveInfo.activityInfo = testActivityInfo;
+        return testResolveInfo;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationScanningPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/LocationScanningPreferenceControllerTest.java
new file mode 100644
index 0000000..15a9716
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/location/LocationScanningPreferenceControllerTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.shadows.ShadowPackageManager;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class LocationScanningPreferenceControllerTest {
+
+    private ShadowPackageManager mShadowPackageManager;
+    private LocationScanningPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+        PreferenceControllerTestHelper<LocationScanningPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(context,
+                        LocationScanningPreferenceController.class, new Preference(context));
+        mController = controllerHelper.getController();
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mShadowPackageManager = Shadows.shadowOf(context.getPackageManager());
+    }
+
+    @Test
+    public void getAvailabilityStatus_available_wifiOrBluetooth() {
+        mShadowPackageManager.setSystemFeature(PackageManager.FEATURE_WIFI, /* supported= */ true);
+        mShadowPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE,
+                /* supported= */ false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+
+        mShadowPackageManager.setSystemFeature(PackageManager.FEATURE_WIFI, /* supported= */ false);
+        mShadowPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE,
+                /* supported= */ true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_notAvailable_noWifiNoBluetooth() {
+        mShadowPackageManager.setSystemFeature(PackageManager.FEATURE_WIFI, /* supported= */ false);
+        mShadowPackageManager.setSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE,
+                /* supported= */ false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
new file mode 100644
index 0000000..65e8527
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.clearInvocations;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.Intent;
+import android.location.SettingInjectorService;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.location.SettingsInjector;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class LocationServicesPreferenceControllerTest {
+
+    private static final int PROFILE_ID = UserHandle.USER_CURRENT;
+
+    @Mock
+    private SettingsInjector mSettingsInjector;
+    private Context mContext;
+    private PreferenceControllerTestHelper<LocationServicesPreferenceController> mControllerHelper;
+    private LocationServicesPreferenceController mController;
+    private PreferenceGroup mCategory;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mCategory = new PreferenceCategory(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                LocationServicesPreferenceController.class, mCategory);
+        mController = mControllerHelper.getController();
+        mController.setSettingsInjector(mSettingsInjector);
+    }
+
+    @Test
+    public void onCreate_addsInjectedSettingsToPreferenceCategory() {
+        Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
+        doReturn(samplePrefs).when(mSettingsInjector)
+                .getInjectedSettings(any(Context.class), anyInt());
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mCategory.getPreferenceCount()).isEqualTo(samplePrefs.get(PROFILE_ID).size());
+    }
+
+    @Test
+    public void onStart_registersBroadcastReceiver() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mContext.sendBroadcast(new Intent(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED));
+        verify(mSettingsInjector).reloadStatusMessages();
+    }
+
+    @Test
+    public void onStop_unregistersBroadcastReceiver() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mContext.sendBroadcast(new Intent(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED));
+        verify(mSettingsInjector).reloadStatusMessages();
+
+        clearInvocations(mSettingsInjector);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+        mContext.sendBroadcast(new Intent(SettingInjectorService.ACTION_INJECTED_SETTING_CHANGED));
+        verify(mSettingsInjector, never()).reloadStatusMessages();
+    }
+
+    @Test
+    public void preferenceCategory_isVisibleIfThereAreInjectedSettings() {
+        doReturn(getSamplePreferences()).when(mSettingsInjector)
+                .getInjectedSettings(any(Context.class), anyInt());
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mCategory.isVisible()).isTrue();
+    }
+
+    @Test
+    public void preferenceCategory_isHiddenIfThereAreNoInjectedSettings() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mCategory.isVisible()).isFalse();
+    }
+
+    private Map<Integer, List<Preference>> getSamplePreferences() {
+        Map<Integer, List<Preference>> preferences = new ArrayMap<>();
+        preferences.put(PROFILE_ID,
+                Arrays.asList(new Preference(mContext), new Preference(mContext),
+                        new Preference(mContext)));
+        return preferences;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationSettingsFragmentTest.java b/tests/robotests/src/com/android/car/settings/location/LocationSettingsFragmentTest.java
new file mode 100644
index 0000000..3739852
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/location/LocationSettingsFragmentTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.Service;
+import android.content.Intent;
+import android.location.LocationManager;
+import android.widget.Switch;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowLocationManager;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class, ShadowLocationManager.class})
+public class LocationSettingsFragmentTest {
+    private BaseTestActivity mActivity;
+    private LocationManager mLocationManager;
+    private Switch mLocationSwitch;
+
+    @Before
+    public void setUp() {
+        mLocationManager = (LocationManager) RuntimeEnvironment.application
+                .getSystemService(Service.LOCATION_SERVICE);
+
+        mActivity = Robolectric.setupActivity(BaseTestActivity.class);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void locationSwitch_toggle_shouldBroadcastLocationModeChangedIntent() {
+        initFragment();
+        mLocationSwitch.setChecked(!mLocationSwitch.isChecked());
+
+        List<Intent> intentsFired = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(intentsFired).hasSize(1);
+        Intent intentFired = intentsFired.get(0);
+        assertThat(intentFired.getAction()).isEqualTo(LocationManager.MODE_CHANGED_ACTION);
+    }
+
+    @Test
+    public void locationSwitch_checked_enablesLocation() {
+        initFragment();
+        mLocationSwitch.setChecked(true);
+
+        assertThat(mLocationManager.isLocationEnabled()).isTrue();
+    }
+
+    @Test
+    public void locationSwitch_unchecked_disablesLocation() {
+        initFragment();
+        mLocationSwitch.setChecked(false);
+
+        assertThat(mLocationManager.isLocationEnabled()).isFalse();
+    }
+
+    private void initFragment() {
+        mActivity.launchFragment(new LocationSettingsFragment());
+        mLocationSwitch = (Switch) mActivity.findViewById(R.id.toggle_switch);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..6888f0d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsEntryPreferenceControllerTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowLocationManager;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+import com.android.settingslib.Utils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class, ShadowLocationManager.class})
+public class RecentLocationRequestsEntryPreferenceControllerTest {
+
+    private RecentLocationRequestsEntryPreferenceController mController;
+    private Preference mPreference;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+        mPreference = new Preference(context);
+        PreferenceControllerTestHelper<RecentLocationRequestsEntryPreferenceController>
+                controllerHelper = new PreferenceControllerTestHelper<>(context,
+                RecentLocationRequestsEntryPreferenceController.class, mPreference);
+        mController = controllerHelper.getController();
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void refreshUi_locationOn_preferenceIsEnabled() {
+        setLocationEnabled(true);
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_locationOff_preferenceIsDisabled() {
+        setLocationEnabled(false);
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void locationModeChangedBroadcastSent_locationOff_preferenceIsDisabled() {
+        setLocationEnabled(true);
+        mController.refreshUi();
+        setLocationEnabled(false);
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void locationModeChangedBroadcastSent_locationOn_preferenceIsEnabled() {
+        setLocationEnabled(false);
+        mController.refreshUi();
+        setLocationEnabled(true);
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    private void setLocationEnabled(boolean enabled) {
+        Utils.updateLocationEnabled(RuntimeEnvironment.application, enabled, UserHandle.myUserId(),
+                Settings.Secure.LOCATION_CHANGER_SYSTEM_SETTINGS);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
new file mode 100644
index 0000000..de03da8
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.location.RecentLocationApps;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class RecentLocationRequestsPreferenceControllerTest {
+
+    @Mock
+    private RecentLocationApps mRecentLocationApps;
+
+    private RecentLocationRequestsPreferenceController mController;
+    private PreferenceScreen mScreen;
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mScreen = new PreferenceManager(mContext).createPreferenceScreen(mContext);
+        PreferenceControllerTestHelper<RecentLocationRequestsPreferenceController>
+                controllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                RecentLocationRequestsPreferenceController.class, mScreen);
+        mController = controllerHelper.getController();
+        mController.setRecentLocationApps(mRecentLocationApps);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void refreshUi_noRecentRequests_messageDisplayed() {
+        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(Collections.emptyList());
+        mController.refreshUi();
+
+        assertThat(mScreen.getPreference(0).getTitle()).isEqualTo(
+                mContext.getString(R.string.location_settings_recent_requests_empty_message));
+    }
+
+    @Test
+    public void refreshUi_someRecentRequests_preferencesAddedToScreen() {
+        List<RecentLocationApps.Request> list = Arrays.asList(
+                mock(RecentLocationApps.Request.class),
+                mock(RecentLocationApps.Request.class),
+                mock(RecentLocationApps.Request.class));
+        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list);
+        mController.refreshUi();
+
+        assertThat(mScreen.getPreferenceCount()).isEqualTo(list.size());
+    }
+
+    @Test
+    public void refreshUi_newRecentRequests_listIsUpdated() {
+        List<RecentLocationApps.Request> list1 = Arrays.asList(
+                mock(RecentLocationApps.Request.class),
+                mock(RecentLocationApps.Request.class),
+                mock(RecentLocationApps.Request.class));
+        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list1);
+
+        List<RecentLocationApps.Request> list2 = new ArrayList<>(list1);
+        list2.add(mock(RecentLocationApps.Request.class));
+
+        mController.refreshUi();
+        assertThat(mScreen.getPreferenceCount()).isEqualTo(list1.size());
+
+        when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list2);
+        mController.refreshUi();
+
+        assertThat(mScreen.getPreferenceCount()).isEqualTo(list2.size());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/location/WifiScanningPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/WifiScanningPreferenceControllerTest.java
new file mode 100644
index 0000000..b97887d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/location/WifiScanningPreferenceControllerTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2018 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.car.settings.location;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class WifiScanningPreferenceControllerTest {
+
+    private Context mContext;
+    private SwitchPreference mPreference;
+    private WifiScanningPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new SwitchPreference(mContext);
+        PreferenceControllerTestHelper<WifiScanningPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        WifiScanningPreferenceController.class, mPreference);
+        mController = controllerHelper.getController();
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_WIFI, /* supported= */ true);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasWifiFeature_available() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_WIFI, /* supported= */ true);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_noWifiFeature_unsupported() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_WIFI, /* supported= */ false);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void refreshUi_wifiScanningEnabled_shouldCheckPreference() {
+        mPreference.setChecked(false);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 1);
+        mController.refreshUi();
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_wifiScanningDisabled_shouldUncheckPreference() {
+        mPreference.setChecked(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
+        mController.refreshUi();
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void handlePreferenceChanged_preferenceChecked_shouldEnableWifiScanning() {
+        mPreference.callChangeListener(true);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0)).isEqualTo(1);
+    }
+
+    @Test
+    public void handlePreferenceChanged_preferenceUnchecked_shouldDisableWifiScanning() {
+        mPreference.callChangeListener(false);
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 1)).isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java
new file mode 100644
index 0000000..14e32d0
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.ResolveInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowEuiccManager;
+import org.robolectric.shadows.ShadowPackageManager;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AddMobileNetworkPreferenceControllerTest {
+
+    private Context mContext;
+    private AddMobileNetworkPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        PreferenceControllerTestHelper<AddMobileNetworkPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        AddMobileNetworkPreferenceController.class, new Preference(mContext));
+        mController = controllerHelper.getController();
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowPackageManager.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccDisabled_isUnsupported() {
+        getShadowEuiccManager().setIsEnabled(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccEnabled_intentResolves_isAvailable() {
+        getShadowEuiccManager().setIsEnabled(true);
+        getShadowPackageManager().addResolveInfoForIntent(
+                AddMobileNetworkPreferenceController.ADD_NETWORK_INTENT, new ResolveInfo());
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccEnabled_intentFailsToResolve_isUnsupported() {
+        getShadowEuiccManager().setIsEnabled(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    private ShadowPackageManager getShadowPackageManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+
+    private ShadowEuiccManager getShadowEuiccManager() {
+        return Shadow.extract(mContext.getSystemService(Context.EUICC_SERVICE));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileDataTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileDataTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..676e2db
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/MobileDataTogglePreferenceControllerTest.java
@@ -0,0 +1,363 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+import com.android.car.settings.testutils.ShadowTelephonyManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowContentResolver;
+import org.robolectric.shadows.ShadowDialog;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowTelephonyManager.class, ShadowSubscriptionManager.class})
+public class MobileDataTogglePreferenceControllerTest {
+
+    private static final int SUB_ID = 1;
+
+    private Context mContext;
+    private TwoStatePreference mPreference;
+    private PreferenceControllerTestHelper<MobileDataTogglePreferenceController>
+            mControllerHelper;
+    private MobileDataTogglePreferenceController mController;
+    private TelephonyManager mTelephonyManager;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                MobileDataTogglePreferenceController.class);
+        mController = mControllerHelper.getController();
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+        mTelephonyManager.setDataEnabled(false);
+
+        getShadowTelephonyManager().setTelephonyManagerForSubscriptionId(SUB_ID, mTelephonyManager);
+        mController.setSubId(SUB_ID);
+
+        mPreference = new SwitchPreference(mContext);
+        mControllerHelper.setPreference(mPreference);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowTelephonyManager.reset();
+        ShadowSubscriptionManager.reset();
+    }
+
+    @Test
+    public void onStart_singleSim_registersObserver() {
+        ShadowTelephonyManager.setSimCount(1);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Global.getUriFor(Settings.Global.MOBILE_DATA))).isNotEmpty();
+    }
+
+    @Test
+    public void onStart_multiSim_registersObserver() {
+        ShadowTelephonyManager.setSimCount(2);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + SUB_ID))).isNotEmpty();
+    }
+
+    @Test
+    public void onStop_singleSim_unregistersObserver() {
+        ShadowTelephonyManager.setSimCount(1);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Global.getUriFor(Settings.Global.MOBILE_DATA))).isEmpty();
+    }
+
+    @Test
+    public void refreshUi_isOpportunistic_isDisabled() {
+        getShadowSubscriptionManager().setActiveSubscriptionInfos(
+                createSubscriptionInfo(SUB_ID, /* isOpportunistic= */ true));
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_isNotOpportunistic_isEnabled() {
+        getShadowSubscriptionManager().setActiveSubscriptionInfos(
+                createSubscriptionInfo(SUB_ID, /* isOpportunistic= */ false));
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_dataEnabled_setChecked() {
+        mTelephonyManager.setDataEnabled(true);
+        mController.refreshUi();
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_dataDisabled_setUnchecked() {
+        mTelephonyManager.setDataEnabled(false);
+        mController.refreshUi();
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void handlePreferenceChanged_setFalse_isSingleSim_opensDialog() {
+        ShadowTelephonyManager.setSimCount(1);
+        mPreference.callChangeListener(false);
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(MobileDataTogglePreferenceController.DISABLE_DIALOG_TAG));
+    }
+
+    @Test
+    public void handlePreferenceChanged_setFalse_isMultiSim_disablesData() {
+        mPreference.setChecked(true);
+        mTelephonyManager.setDataEnabled(true);
+        ShadowTelephonyManager.setSimCount(2);
+        mPreference.callChangeListener(false);
+
+        assertThat(mTelephonyManager.isDataEnabled()).isFalse();
+    }
+
+    @Test
+    public void handlePreferenceChanged_setFalse_isMultiSim_setsUnchecked() {
+        mPreference.setChecked(true);
+        mTelephonyManager.setDataEnabled(true);
+        ShadowTelephonyManager.setSimCount(2);
+        mPreference.callChangeListener(false);
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void handlePreferenceChanged_setTrue_isSingleSim_enablesData() {
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataEnabled(false);
+        ShadowTelephonyManager.setSimCount(1);
+        mPreference.callChangeListener(true);
+
+        assertThat(mTelephonyManager.isDataEnabled()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceChanged_setTrue_isSingleSim_setsChecked() {
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataEnabled(false);
+        ShadowTelephonyManager.setSimCount(1);
+        mPreference.callChangeListener(true);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceChanged_setTrue_isMultiSim_noOtherSimActive_enablesData() {
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataEnabled(false);
+        ShadowTelephonyManager.setSimCount(2);
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID);
+        getShadowSubscriptionManager().setCurrentActiveSubscriptionId(SUB_ID);
+        mPreference.callChangeListener(true);
+
+        assertThat(mTelephonyManager.isDataEnabled()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceChanged_setTrue_isMultiSim_noOtherSimActive_setsChecked() {
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataEnabled(false);
+        ShadowTelephonyManager.setSimCount(2);
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID);
+        getShadowSubscriptionManager().setCurrentActiveSubscriptionId(SUB_ID);
+        mPreference.callChangeListener(true);
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceChanged_setTrue_isMultiSim_otherSimActive_opensDialog() {
+        int otherSubId = SUB_ID + 1;
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataEnabled(false);
+        ShadowTelephonyManager.setSimCount(2);
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(otherSubId);
+        getShadowSubscriptionManager().setCurrentActiveSubscriptionId(otherSubId);
+        mPreference.callChangeListener(true);
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(MobileDataTogglePreferenceController.ENABLE_MULTISIM_DIALOG_TAG));
+    }
+
+    @Test
+    public void disableSingleSimDialog_onConfirm_disablesData() {
+        mPreference.setChecked(true);
+        mTelephonyManager.setDataEnabled(true);
+        ShadowTelephonyManager.setSimCount(1);
+        mPreference.callChangeListener(false);
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                dialogCaptor.capture(),
+                eq(MobileDataTogglePreferenceController.DISABLE_DIALOG_TAG));
+
+        ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+        assertThat(dialogCaptor).isNotNull();
+        AlertDialog alertDialog = showDialog(dialog);
+        alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        assertThat(mTelephonyManager.isDataEnabled()).isFalse();
+    }
+
+    @Test
+    public void disableSingleSimDialog_onConfirm_setsUnchecked() {
+        mPreference.setChecked(true);
+        mTelephonyManager.setDataEnabled(true);
+        ShadowTelephonyManager.setSimCount(1);
+        mPreference.callChangeListener(false);
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                dialogCaptor.capture(),
+                eq(MobileDataTogglePreferenceController.DISABLE_DIALOG_TAG));
+
+        ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+        assertThat(dialogCaptor).isNotNull();
+        AlertDialog alertDialog = showDialog(dialog);
+        alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void enableMutliSimDialog_onConfirm_enablesData() {
+        int otherSubId = SUB_ID + 1;
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataEnabled(false);
+        ShadowTelephonyManager.setSimCount(2);
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(otherSubId);
+        getShadowSubscriptionManager().setCurrentActiveSubscriptionId(otherSubId);
+        mPreference.callChangeListener(true);
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                dialogCaptor.capture(),
+                eq(MobileDataTogglePreferenceController.ENABLE_MULTISIM_DIALOG_TAG));
+
+        ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+        assertThat(dialogCaptor).isNotNull();
+        AlertDialog alertDialog = showDialog(dialog);
+        alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        assertThat(mTelephonyManager.isDataEnabled()).isTrue();
+    }
+
+    @Test
+    public void enableMutliSimDialog_onConfirm_setsChecked() {
+        int otherSubId = SUB_ID + 1;
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataEnabled(false);
+        ShadowTelephonyManager.setSimCount(2);
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(otherSubId);
+        getShadowSubscriptionManager().setCurrentActiveSubscriptionId(otherSubId);
+        mPreference.callChangeListener(true);
+
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                dialogCaptor.capture(),
+                eq(MobileDataTogglePreferenceController.ENABLE_MULTISIM_DIALOG_TAG));
+
+        ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+        assertThat(dialogCaptor).isNotNull();
+        AlertDialog alertDialog = showDialog(dialog);
+        alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    private ShadowTelephonyManager getShadowTelephonyManager() {
+        return (ShadowTelephonyManager) Shadows.shadowOf(mTelephonyManager);
+    }
+
+    private ShadowContentResolver getShadowContentResolver() {
+        return (ShadowContentResolver) Shadows.shadowOf(mContext.getContentResolver());
+    }
+
+    private ShadowSubscriptionManager getShadowSubscriptionManager() {
+        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId, boolean isOpportunistic) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+                /* simSlotIndex= */ 0, /* displayName= */ "", /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, /* cardString= */ "", isOpportunistic,
+                /* groupUUID= */ null, /* carrierId= */ 0, /* profileClass= */ 0);
+        return subInfo;
+    }
+
+    private AlertDialog showDialog(ConfirmationDialogFragment dialog) {
+        BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+        activity.showDialog(dialog, /* tag= */ null);
+        return (AlertDialog) ShadowDialog.getLatestDialog();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..917a41f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
@@ -0,0 +1,289 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.robolectric.shadow.api.Shadow.extract;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.net.ConnectivityManager;
+import android.net.NetworkCapabilities;
+import android.os.UserManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowConnectivityManager;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+import com.android.car.settings.testutils.ShadowTelephonyManager;
+
+import com.google.android.collect.Lists;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowNetwork;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowConnectivityManager.class,
+        ShadowTelephonyManager.class, ShadowSubscriptionManager.class})
+public class MobileNetworkEntryPreferenceControllerTest {
+
+    private static final String TEST_NETWORK_NAME = "test network name";
+    private static final UserInfo TEST_ADMIN_USER = new UserInfo(10, "test_name",
+            UserInfo.FLAG_ADMIN);
+    private static final UserInfo TEST_NON_ADMIN_USER = new UserInfo(10, "test_name",
+            /* flags= */ 0);
+
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<MobileNetworkEntryPreferenceController>
+            mControllerHelper;
+    private MobileNetworkEntryPreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private NetworkCapabilities mNetworkCapabilities;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                MobileNetworkEntryPreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+
+        // Setup to always make preference available.
+        getShadowConnectivityManager().clearAllNetworks();
+        getShadowConnectivityManager().addNetworkCapabilities(
+                ShadowNetwork.newInstance(ConnectivityManager.TYPE_MOBILE), mNetworkCapabilities);
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                true);
+        when(mCarUserManagerHelper.getCurrentProcessUserInfo()).thenReturn(TEST_ADMIN_USER);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)).thenReturn(false);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowConnectivityManager.reset();
+        ShadowTelephonyManager.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_noMobileNetwork_unsupported() {
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_notAdmin_disabledForUser() {
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                true);
+        when(mCarUserManagerHelper.getCurrentProcessUserInfo()).thenReturn(TEST_NON_ADMIN_USER);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasRestriction_disabledForUser() {
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                true);
+        when(mCarUserManagerHelper.getCurrentProcessUserInfo()).thenReturn(TEST_ADMIN_USER);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_hasMobileNetwork_isAdmin_noRestriction_available() {
+        when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
+                true);
+        when(mCarUserManagerHelper.getCurrentProcessUserInfo()).thenReturn(TEST_ADMIN_USER);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void refreshUi_noSims_disabled() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_oneSim_enabled() {
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_oneSim_summaryIsDisplayName() {
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(TEST_NETWORK_NAME);
+    }
+
+    @Test
+    public void refreshUi_multiSim_enabled() {
+        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_multiSim_summaryShowsCount() {
+        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(mContext.getResources().getQuantityString(
+                R.plurals.mobile_network_summary_count, 2, 2));
+    }
+
+    @Test
+    public void performClick_noSim_noFragmentStarted() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mPreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController(), never()).launchFragment(
+                any(Fragment.class));
+    }
+
+    @Test
+    public void performClick_oneSim_startsMobileNetworkFragment() {
+        int subId = 1;
+        SubscriptionInfo info = createSubscriptionInfo(subId, /* simSlotIndex= */ 1,
+                TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mPreference.performClick();
+
+        ArgumentCaptor<MobileNetworkFragment> captor = ArgumentCaptor.forClass(
+                MobileNetworkFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(captor.capture());
+
+        assertThat(captor.getValue().getArguments().getInt(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
+                -1)).isEqualTo(subId);
+    }
+
+    @Test
+    public void performClick_multiSim_startsMobileNetworkListFragment() {
+        SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+        SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+                /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mPreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(
+                any(MobileNetworkListFragment.class));
+    }
+
+    private ShadowTelephonyManager getShadowTelephonyManager() {
+        return (ShadowTelephonyManager) extract(mContext.getSystemService(TelephonyManager.class));
+    }
+
+    private ShadowConnectivityManager getShadowConnectivityManager() {
+        return (ShadowConnectivityManager) extract(
+                mContext.getSystemService(ConnectivityManager.class));
+    }
+
+    private ShadowSubscriptionManager getShadowSubscriptionManager() {
+        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
+            String displayName) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+                simSlotIndex, displayName, /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", "mncString",
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, /* cardString= */ "");
+        return subInfo;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java
new file mode 100644
index 0000000..aee5ac6
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.widget.TextView;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.Collections;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSubscriptionManager.class})
+public class MobileNetworkFragmentTest {
+
+    private static final int SUB_ID = 1;
+    private static final String TEST_NAME = "Test Name";
+
+    private Context mContext;
+    private FragmentController<MobileNetworkFragment> mFragmentController;
+    private MobileNetworkFragment mFragment;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSubscriptionManager.reset();
+    }
+
+    @Test
+    public void onMobileNetworkUpdated_startWithArgument_updateTitle() {
+        setUpFragmentWithSubId(SUB_ID, TEST_NAME);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
+                Collections.singletonList(createSubscriptionInfo(SUB_ID, TEST_NAME)));
+        getShadowSubscriptionManager().setActiveSubscriptionInfos(
+                createSubscriptionInfo(SUB_ID + 1, TEST_NAME + "_1"),
+                createSubscriptionInfo(SUB_ID + 2, TEST_NAME + "_2"));
+        mFragmentController.setup();
+
+        TextView textView = mFragment.requireActivity().findViewById(R.id.title);
+        assertThat(textView.getText()).isEqualTo(TEST_NAME);
+    }
+
+    @Test
+    public void onMobileNetworkUpdated_noArgumentProvided_updateTitle() {
+        mFragment = new MobileNetworkFragment();
+        mFragmentController = FragmentController.of(mFragment);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
+                Collections.singletonList(createSubscriptionInfo(SUB_ID, TEST_NAME)));
+        getShadowSubscriptionManager().setActiveSubscriptionInfos(
+                createSubscriptionInfo(SUB_ID + 1, TEST_NAME + "_1"),
+                createSubscriptionInfo(SUB_ID + 2, TEST_NAME + "_2"));
+        mFragmentController.setup();
+
+        TextView textView = mFragment.requireActivity().findViewById(R.id.title);
+        assertThat(textView.getText()).isEqualTo(TEST_NAME + "_1");
+    }
+
+    private void setUpFragmentWithSubId(int subId, String name) {
+        SubscriptionInfo info = createSubscriptionInfo(subId, name);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
+                Collections.singletonList(info));
+
+        mFragment = MobileNetworkFragment.newInstance(subId);
+        mFragmentController = FragmentController.of(mFragment);
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId, String name) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+                /* simSlotIndex= */ 0, /* displayName= */ name, /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, /* cardString= */ "");
+        return subInfo;
+    }
+
+    private ShadowSubscriptionManager getShadowSubscriptionManager() {
+        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java
new file mode 100644
index 0000000..34b8d5c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+
+import com.google.android.collect.Lists;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSubscriptionManager.class})
+public class MobileNetworkListPreferenceControllerTest {
+
+    private static final int SUB_ID = 1;
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<MobileNetworkListPreferenceController> mControllerHelper;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                MobileNetworkListPreferenceController.class, mPreferenceGroup);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSubscriptionManager.reset();
+    }
+
+    @Test
+    public void refreshUi_containsElements() {
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, /* cardString= */"", "mncString");
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceClicked_launchesFragment() {
+        SubscriptionInfo info = createSubscriptionInfo(SUB_ID, /* simSlotIndex= */ 1,
+                /* cardString= */"", "mncString");
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+        mControllerHelper.getController().refreshUi();
+        Preference preference = mPreferenceGroup.getPreference(0);
+        preference.performClick();
+
+        ArgumentCaptor<MobileNetworkFragment> captor = ArgumentCaptor.forClass(
+                MobileNetworkFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(captor.capture());
+
+        assertThat(captor.getValue().getArguments().getInt(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
+                -1)).isEqualTo(SUB_ID);
+    }
+
+    private ShadowSubscriptionManager getShadowSubscriptionManager() {
+        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
+            String cardString, String mncString) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+                simSlotIndex, /* displayName= */ "", /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", mncString,
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, cardString);
+        return subInfo;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkUpdateManagerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkUpdateManagerTest.java
new file mode 100644
index 0000000..a495de2
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/MobileNetworkUpdateManagerTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+import com.android.internal.telephony.TelephonyIntents;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.Collections;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSubscriptionManager.class})
+public class MobileNetworkUpdateManagerTest {
+
+    private static final int SUB_ID = 1;
+
+    private Context mContext;
+    private ActivityController<BaseTestActivity> mActivityController;
+    private BaseTestActivity mActivity;
+    private MobileNetworkUpdateManager mMobileNetworkUpdateManager;
+
+    @Mock
+    private MobileNetworkUpdateManager.MobileNetworkUpdateListener mMobileNetworkUpdateListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mActivity = new BaseTestActivity();
+        mActivityController = ActivityController.of(mActivity);
+    }
+
+    @Test
+    public void onStart_receiverRegistered() {
+        setupMobileNetworkUpdateManager(SUB_ID);
+        mActivityController.create().start().visible();
+
+        assertThat(ShadowApplication.getInstance().getRegisteredReceivers().size()).isGreaterThan(
+                0);
+
+        boolean hasMatch = false;
+        for (ShadowApplication.Wrapper wrapper :
+                ShadowApplication.getInstance().getRegisteredReceivers()) {
+            if (wrapper.getIntentFilter().getAction(0)
+                    == TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED) {
+                hasMatch = true;
+            }
+        }
+        assertThat(hasMatch).isTrue();
+    }
+
+    @Test
+    public void onStop_receiverUnregistered() {
+        setupMobileNetworkUpdateManager(SUB_ID);
+        mActivityController.create().start().visible();
+        int prevSize = ShadowApplication.getInstance().getRegisteredReceivers().size();
+
+        mActivityController.stop();
+        assertThat(ShadowApplication.getInstance().getRegisteredReceivers().size()).isLessThan(
+                prevSize);
+
+        boolean hasMatch = false;
+        for (ShadowApplication.Wrapper wrapper :
+                ShadowApplication.getInstance().getRegisteredReceivers()) {
+            if (wrapper.getIntentFilter().getAction(0)
+                    == TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED) {
+                hasMatch = true;
+            }
+        }
+        assertThat(hasMatch).isFalse();
+    }
+
+    @Test
+    public void onStart_subscriptionListenerRegistered() {
+        setupMobileNetworkUpdateManager(SUB_ID);
+        assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+        mActivityController.create().start().visible();
+
+        assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isNotEmpty();
+    }
+
+    @Test
+    public void onStop_subscriptionListenerUnregistered() {
+        setupMobileNetworkUpdateManager(SUB_ID);
+        assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+        mActivityController.create().start().visible();
+        assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isNotEmpty();
+        mActivityController.stop();
+
+        assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+    }
+
+    @Test
+    public void onMobileNetworkUpdated_withInitialSubId_pickSubId() {
+        setupMobileNetworkUpdateManager(SUB_ID);
+        getShadowSubscriptionManager().setActiveSubscriptionInfos(
+                createSubscriptionInfo(SUB_ID + 1), createSubscriptionInfo(SUB_ID + 2));
+        mActivityController.setup();
+
+        verify(mMobileNetworkUpdateListener).onMobileNetworkUpdated(SUB_ID);
+    }
+
+    @Test
+    public void onMobileNetworkUpdated_withoutInitialSubId_pickDefaultSubId() {
+        setupMobileNetworkUpdateManager(MobileNetworkUpdateManager.SUB_ID_NULL);
+        getShadowSubscriptionManager().setActiveSubscriptionInfos(
+                createSubscriptionInfo(SUB_ID + 1), createSubscriptionInfo(SUB_ID + 2));
+        mActivityController.setup();
+
+        verify(mMobileNetworkUpdateListener).onMobileNetworkUpdated(SUB_ID + 1);
+    }
+
+    private void setupMobileNetworkUpdateManager(int subId) {
+        mMobileNetworkUpdateManager = new MobileNetworkUpdateManager(mContext, subId);
+        mActivity.getLifecycle().addObserver(mMobileNetworkUpdateManager);
+        mMobileNetworkUpdateManager.registerListener(mMobileNetworkUpdateListener);
+
+        getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
+                Collections.singletonList(createSubscriptionInfo(subId)));
+    }
+
+    private ShadowSubscriptionManager getShadowSubscriptionManager() {
+        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(/* id= */ subId, /* iccId= */ "",
+                /* simSlotIndex= */ 0, /* displayName= */ "", /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, /* cardString= */ "");
+        return subInfo;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/NetworkUtilsTest.java b/tests/robotests/src/com/android/car/settings/network/NetworkUtilsTest.java
new file mode 100644
index 0000000..99687b9
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/NetworkUtilsTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.telephony.TelephonyManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class NetworkUtilsTest {
+
+    @Test
+    public void hasMobileNetwork_hasCellularCapabilities_returnsTrue() {
+        ConnectivityManager connectivityManager = mock(ConnectivityManager.class);
+        Network network = mock(Network.class);
+        NetworkCapabilities capabilities = mock(NetworkCapabilities.class);
+
+        when(connectivityManager.getAllNetworks()).thenReturn(new Network[]{network});
+        when(connectivityManager.getNetworkCapabilities(network)).thenReturn(capabilities);
+        when(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(true);
+
+        assertThat(NetworkUtils.hasMobileNetwork(connectivityManager)).isTrue();
+    }
+
+    @Test
+    public void hasMobileNetwork_hasNoCellularCapabilities_returnsFalse() {
+        ConnectivityManager connectivityManager = mock(ConnectivityManager.class);
+        Network network = mock(Network.class);
+        NetworkCapabilities capabilities = mock(NetworkCapabilities.class);
+
+        when(connectivityManager.getAllNetworks()).thenReturn(new Network[]{network});
+        when(connectivityManager.getNetworkCapabilities(network)).thenReturn(capabilities);
+        when(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(false);
+
+        assertThat(NetworkUtils.hasMobileNetwork(connectivityManager)).isFalse();
+    }
+
+    @Test
+    public void hasSim_simAbsent_returnsFalse() {
+        TelephonyManager telephonyManager = mock(TelephonyManager.class);
+        when(telephonyManager.getSimState()).thenReturn(TelephonyManager.SIM_STATE_ABSENT);
+
+        assertThat(NetworkUtils.hasSim(telephonyManager)).isFalse();
+    }
+
+    @Test
+    public void hasSim_simUnknown_returnsFalse() {
+        TelephonyManager telephonyManager = mock(TelephonyManager.class);
+        when(telephonyManager.getSimState()).thenReturn(TelephonyManager.SIM_STATE_UNKNOWN);
+
+        assertThat(NetworkUtils.hasSim(telephonyManager)).isFalse();
+    }
+
+    @Test
+    public void hasSim_otherStatus_returnsTrue() {
+        TelephonyManager telephonyManager = mock(TelephonyManager.class);
+        when(telephonyManager.getSimState()).thenReturn(TelephonyManager.SIM_STATE_LOADED);
+
+        assertThat(NetworkUtils.hasSim(telephonyManager)).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/RoamingPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/RoamingPreferenceControllerTest.java
new file mode 100644
index 0000000..414c93e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/RoamingPreferenceControllerTest.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.PersistableBundle;
+import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowCarrierConfigManager;
+import com.android.car.settings.testutils.ShadowTelephonyManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowContentResolver;
+import org.robolectric.shadows.ShadowDialog;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowTelephonyManager.class, ShadowCarrierConfigManager.class})
+public class RoamingPreferenceControllerTest {
+
+    private static final int SUB_ID = 1;
+
+    private Context mContext;
+    private TwoStatePreference mPreference;
+    private PreferenceControllerTestHelper<RoamingPreferenceController> mControllerHelper;
+    private RoamingPreferenceController mController;
+    private TelephonyManager mTelephonyManager;
+    private CarrierConfigManager mCarrierConfigManager;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                RoamingPreferenceController.class);
+        mController = mControllerHelper.getController();
+        mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+        getShadowTelephonyManager().setTelephonyManagerForSubscriptionId(SUB_ID, mTelephonyManager);
+        mController.setSubId(SUB_ID);
+
+        mPreference = new SwitchPreference(mContext);
+        mControllerHelper.setPreference(mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowTelephonyManager.reset();
+    }
+
+    @Test
+    public void onStart_registerObserver() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Global.getUriFor(Settings.Global.DATA_ROAMING))).isNotEmpty();
+    }
+
+    @Test
+    public void onStart_registerObserver_additionalSubId() {
+        ShadowTelephonyManager.setSimCount(2);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Global.getUriFor(Settings.Global.DATA_ROAMING + SUB_ID))).isNotEmpty();
+    }
+
+    @Test
+    public void onStop_unregisterObserver() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(getShadowContentResolver().getContentObservers(
+                Settings.Global.getUriFor(Settings.Global.DATA_ROAMING))).isEmpty();
+    }
+
+    @Test
+    public void refreshUi_invalidSubId_isDisabled() {
+        getShadowTelephonyManager().setTelephonyManagerForSubscriptionId(
+                SubscriptionManager.INVALID_SUBSCRIPTION_ID, mTelephonyManager);
+        mController.setSubId(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_validSubId_isEnabled() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_roamingEnabled_setChecked() {
+        mTelephonyManager.setDataRoamingEnabled(true);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.refreshUi();
+
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_roamingDisabled_setUnchecked() {
+        mTelephonyManager.setDataRoamingEnabled(false);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.refreshUi();
+
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void callChangeListener_toggleFalse_turnOffRoaming() {
+        mPreference.setChecked(true);
+        mTelephonyManager.setDataRoamingEnabled(true);
+
+        mPreference.callChangeListener(false);
+
+        assertThat(mTelephonyManager.isDataRoamingEnabled()).isFalse();
+    }
+
+    @Test
+    public void callChangeListener_toggleTrue_needsDialog_showDialog() {
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataRoamingEnabled(false);
+        PersistableBundle bundle = new PersistableBundle();
+        bundle.putBoolean(CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL, false);
+        getShadowCarrierConfigManager().setConfigForSubId(SUB_ID, bundle);
+
+        mPreference.callChangeListener(true);
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class), eq(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void confirmDialog_turnOnRoaming() {
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataRoamingEnabled(false);
+        PersistableBundle bundle = new PersistableBundle();
+        bundle.putBoolean(CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL, false);
+        getShadowCarrierConfigManager().setConfigForSubId(SUB_ID, bundle);
+
+        mPreference.callChangeListener(true);
+
+        // Capture the dialog that is shown on toggle.
+        ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+                ConfirmationDialogFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                dialogCaptor.capture(), eq(ConfirmationDialogFragment.TAG));
+
+        // Show the captured dialog on press the confirmation button.
+        ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+        assertThat(dialogCaptor).isNotNull();
+        AlertDialog alertDialog = showDialog(dialog);
+        alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        assertThat(mTelephonyManager.isDataRoamingEnabled()).isTrue();
+    }
+
+    @Test
+    public void callChangeListener_toggleTrue_doesntNeedDialog_turnOnRoaming() {
+        mPreference.setChecked(false);
+        mTelephonyManager.setDataRoamingEnabled(false);
+        PersistableBundle bundle = new PersistableBundle();
+        bundle.putBoolean(CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL, true);
+        getShadowCarrierConfigManager().setConfigForSubId(SUB_ID, bundle);
+
+        mPreference.callChangeListener(true);
+
+        assertThat(mTelephonyManager.isDataRoamingEnabled()).isTrue();
+    }
+
+    private ShadowContentResolver getShadowContentResolver() {
+        return (ShadowContentResolver) Shadows.shadowOf(mContext.getContentResolver());
+    }
+
+    private ShadowTelephonyManager getShadowTelephonyManager() {
+        return (ShadowTelephonyManager) Shadows.shadowOf(mTelephonyManager);
+    }
+
+    private ShadowCarrierConfigManager getShadowCarrierConfigManager() {
+        return (ShadowCarrierConfigManager) Shadow.extract(mCarrierConfigManager);
+    }
+
+    private AlertDialog showDialog(ConfirmationDialogFragment dialog) {
+        BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+        activity.showDialog(dialog, /* tag= */ null);
+        return (AlertDialog) ShadowDialog.getLatestDialog();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/SubscriptionUtilsTest.java b/tests/robotests/src/com/android/car/settings/network/SubscriptionUtilsTest.java
new file mode 100644
index 0000000..73eff14
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/SubscriptionUtilsTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.telephony.UiccSlotInfo;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import com.google.android.collect.Lists;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class SubscriptionUtilsTest {
+
+    @Test
+    public void getAvailableSubscriptions_hasSubscriptionsFromSubscriptionManager_valueReturned() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        TelephonyManager telephonyManager = mock(TelephonyManager.class);
+
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, /* cardString= */"", "mncString");
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        when(subscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+        when(telephonyManager.getUiccSlotsInfo()).thenReturn(new UiccSlotInfo[0]);
+
+        List<SubscriptionInfo> infos = SubscriptionUtils.getAvailableSubscriptions(
+                subscriptionManager, telephonyManager);
+
+        assertThat(infos).contains(info);
+    }
+
+    @Test
+    public void getAvailableSubscriptions_hasSimSlotNotInSubscriptionManager_valueReturned() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        TelephonyManager telephonyManager = mock(TelephonyManager.class);
+
+        int simSlotIdx = 1;
+        String cardString = "testString";
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1, simSlotIdx, cardString,
+                "mncString");
+        UiccSlotInfo slotInfo = createUuicSlotInfo(/* isActive= */ false, /* isEsim= */ false,
+                simSlotIdx, cardString, UiccSlotInfo.CARD_STATE_INFO_PRESENT);
+        List<SubscriptionInfo> allSims = Lists.newArrayList(info);
+        when(subscriptionManager.getAllSubscriptionInfoList()).thenReturn(allSims);
+        when(telephonyManager.getUiccSlotsInfo()).thenReturn(new UiccSlotInfo[]{slotInfo});
+
+        List<SubscriptionInfo> infos = SubscriptionUtils.getAvailableSubscriptions(
+                subscriptionManager, telephonyManager);
+
+        assertThat(infos).contains(info);
+    }
+
+    @Test
+    public void getAvailableSubscriptions_hasInactiveInsertedPSim_valueRemoved() {
+        SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+        TelephonyManager telephonyManager = mock(TelephonyManager.class);
+
+        SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+                /* simSlotIndex= */ 1, /* cardString= */"", "");
+        List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+        when(subscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+        when(telephonyManager.getUiccSlotsInfo()).thenReturn(new UiccSlotInfo[0]);
+
+        List<SubscriptionInfo> infos = SubscriptionUtils.getAvailableSubscriptions(
+                subscriptionManager, telephonyManager);
+
+        assertThat(infos).doesNotContain(info);
+    }
+
+    private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
+            String cardString, String mncString) {
+        SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+                simSlotIndex, /* displayName= */ "", /* carrierName= */ "",
+                /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+                /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", mncString,
+                /* countryIso= */ "", /* isEmbedded= */ false,
+                /* accessRules= */ null, cardString);
+        return subInfo;
+    }
+
+    private UiccSlotInfo createUuicSlotInfo(boolean isActive, boolean isEsim, int simSlotIndex,
+            String cardId, int cardStateInfo) {
+        return new UiccSlotInfo(isActive, isEsim, cardId, cardStateInfo, simSlotIndex,
+                /* isExtendedApduSupported= */ false, /* isRemoveable= */ true);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/SubscriptionsChangeListenerTest.java b/tests/robotests/src/com/android/car/settings/network/SubscriptionsChangeListenerTest.java
new file mode 100644
index 0000000..e907501
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/SubscriptionsChangeListenerTest.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2019 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.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.Intent;
+import android.telephony.SubscriptionManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+import com.android.internal.telephony.TelephonyIntents;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSubscriptionManager.class})
+public class SubscriptionsChangeListenerTest {
+
+    private Context mContext;
+    private SubscriptionsChangeListener mSubscriptionsChangeListener;
+    @Mock
+    private SubscriptionsChangeListener.SubscriptionsChangeAction mSubscriptionsChangeAction;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        mSubscriptionsChangeListener = new SubscriptionsChangeListener(mContext,
+                mSubscriptionsChangeAction);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSubscriptionManager.reset();
+    }
+
+    @Test
+    public void start_registersListener() {
+        assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+        mSubscriptionsChangeListener.start();
+        assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isNotEmpty();
+    }
+
+    @Test
+    public void onSubscriptionChange_triggersAction() {
+        mSubscriptionsChangeListener.start();
+        // This is a way to trigger subscription change on the shadows.
+        getShadowSubscriptionManager().setActiveSubscriptionInfoList(null);
+
+        verify(mSubscriptionsChangeAction).onSubscriptionsChanged();
+    }
+
+    @Test
+    public void stop_unregistersListener() {
+        mSubscriptionsChangeListener.start();
+        mSubscriptionsChangeListener.stop();
+        assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+    }
+
+    @Test
+    public void start_registersReceiver() {
+        mSubscriptionsChangeListener.start();
+
+        boolean hasMatch = false;
+        for (ShadowApplication.Wrapper wrapper :
+                ShadowApplication.getInstance().getRegisteredReceivers()) {
+            if (wrapper.getIntentFilter().getAction(0)
+                    == TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED) {
+                hasMatch = true;
+            }
+        }
+        assertThat(hasMatch).isTrue();
+    }
+
+    @Test
+    public void onReceive_triggersAction() {
+        mSubscriptionsChangeListener.start();
+        mContext.sendBroadcast(new Intent(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED));
+
+        verify(mSubscriptionsChangeAction).onSubscriptionsChanged();
+    }
+
+    @Test
+    public void stop_unregistersReceiver() {
+        mSubscriptionsChangeListener.start();
+        mSubscriptionsChangeListener.stop();
+
+        boolean hasMatch = false;
+        for (ShadowApplication.Wrapper wrapper :
+                ShadowApplication.getInstance().getRegisteredReceivers()) {
+            if (wrapper.getIntentFilter().getAction(0)
+                    == TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED) {
+                hasMatch = true;
+            }
+        }
+        assertThat(hasMatch).isFalse();
+    }
+
+    private ShadowSubscriptionManager getShadowSubscriptionManager() {
+        return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/AddTrustedDeviceActivityTest.java b/tests/robotests/src/com/android/car/settings/security/AddTrustedDeviceActivityTest.java
new file mode 100644
index 0000000..bf3c9af
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/AddTrustedDeviceActivityTest.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.car.Car;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Bundle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.ShadowCar;
+import com.android.car.settings.testutils.ShadowLockPatternUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.annotation.Config;
+
+/**
+ * Unit tests for {@link AddTrustedDeviceActivity}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCar.class, ShadowLockPatternUtils.class})
+public class AddTrustedDeviceActivityTest {
+    private static final String ADDRESS = "00:11:22:33:AA:BB";
+    private static final String BLUETOOTH_DEVICE_KEY = "bluetoothDevice";
+    private static final String CURRENT_HANDLE_KEY = "currentHandle";
+    private Context mContext;
+    private ActivityController<AddTrustedDeviceActivity> mActivityController;
+    private AddTrustedDeviceActivity mActivity;
+    @Mock
+    private CarTrustAgentEnrollmentManager mMockCarTrustAgentEnrollmentManager;
+    @Mock
+    private CarUxRestrictionsManager mMockCarUxRestrictionsManager;
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private BluetoothDevice mBluetoothDevice;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        CarUxRestrictions noSetupRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+                CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* time= */ 0).build();
+        when(mMockCarUxRestrictionsManager.getCurrentCarUxRestrictions())
+                .thenReturn(noSetupRestrictions);
+        ShadowCar.setCarManager(Car.CAR_UX_RESTRICTION_SERVICE, mMockCarUxRestrictionsManager);
+        mContext = RuntimeEnvironment.application;
+        ShadowCar.setCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE,
+                mMockCarTrustAgentEnrollmentManager);
+        mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+        mBluetoothDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(ADDRESS);
+        mActivityController = ActivityController.of(new AddTrustedDeviceActivity());
+        mActivity = mActivityController.get();
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
+        mActivityController.create();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCar.reset();
+        ShadowLockPatternUtils.reset();
+    }
+
+    @Test
+    public void onStart_no_saveInstanceState_startAdvertising() {
+        mActivityController.start();
+        verify(mMockCarTrustAgentEnrollmentManager).startEnrollmentAdvertising();
+    }
+
+    @Test
+    public void onStart_saveInstanceState_deviceConnected_doNotStartAdvertising() {
+        // Recreate with saved state (e.g. during config change).
+        Bundle outState = new Bundle();
+        outState.putParcelable(BLUETOOTH_DEVICE_KEY, mBluetoothDevice);
+        mActivityController = ActivityController.of(new AddTrustedDeviceActivity());
+        mActivityController.setup(outState);
+        verify(mMockCarTrustAgentEnrollmentManager, never()).startEnrollmentAdvertising();
+    }
+
+    @Test
+    public void onStart_saveInstanceState_deviceNotConnected_startAdvertising() {
+        // Recreate with saved state (e.g. during config change).
+        Bundle outState = new Bundle();
+        outState.putParcelable(BLUETOOTH_DEVICE_KEY, null);
+        mActivityController = ActivityController.of(new AddTrustedDeviceActivity());
+        mActivityController.setup(outState);
+        verify(mMockCarTrustAgentEnrollmentManager).startEnrollmentAdvertising();
+    }
+
+    @Test
+    public void onStart_has_activated_handle_finish() {
+        mActivityController.start().postCreate(null).resume();
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+                ArgumentCaptor.forClass(
+                        CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+        verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+
+        callBack.getValue().onEscrowTokenAdded(1);
+        mActivityController.stop();
+
+        when(mMockCarTrustAgentEnrollmentManager.isEscrowTokenActive(1,
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(true);
+        Bundle outState = new Bundle();
+        outState.putLong(CURRENT_HANDLE_KEY, 1);
+        outState.putParcelable(BLUETOOTH_DEVICE_KEY, mBluetoothDevice);
+        mActivityController = ActivityController.of(new AddTrustedDeviceActivity());
+        mActivityController.setup(outState).start();
+
+        assertThat(mActivityController.get().isFinishing()).isTrue();
+    }
+
+    @Test
+    public void onAuthStringAvailable_createDialog() {
+        mActivityController.start().postCreate(null).resume();
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback>
+                enrollmentCallBack =
+                ArgumentCaptor.forClass(
+                        CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+        verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(
+                enrollmentCallBack.capture());
+        enrollmentCallBack.getValue().onAuthStringAvailable(mBluetoothDevice, "123");
+
+        assertThat(mActivity.findDialogByTag(ConfirmPairingCodeDialog.TAG)).isNotNull();
+    }
+
+    @Test
+    public void onLockVerified_showAddTrustedDeviceProgressFragment() {
+        mActivityController.start().postCreate(null).resume();
+
+        mActivity.launchFragment(ConfirmLockPinPasswordFragment.newPinInstance());
+        mActivity.onLockVerified("lock".getBytes());
+
+        assertThat(mActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_container))
+                .isInstanceOf(AddTrustedDeviceProgressFragment.class);
+    }
+
+    @Test
+    public void onEscrowTokenAdded_showCheckLockFragment() {
+        mActivityController.start().postCreate(null).resume();
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+                ArgumentCaptor.forClass(
+                        CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+        verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+
+        callBack.getValue().onEscrowTokenAdded(1);
+
+        assertThat(mActivityController.get().getInitialFragment()).isInstanceOf(
+                ConfirmLockPinPasswordFragment.class);
+    }
+
+    @Test
+    public void onBluetoothDeviceDisconnected_finish() {
+        mActivityController.start().postCreate(null).resume();
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback>
+                bleCallBack = ArgumentCaptor.forClass(
+                CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback.class);
+        verify(mMockCarTrustAgentEnrollmentManager).setBleCallback(bleCallBack.capture());
+
+        bleCallBack.getValue().onBleEnrollmentDeviceDisconnected(mBluetoothDevice);
+
+        assertThat(mActivity.isFinishing()).isTrue();
+    }
+
+    @Test
+    public void onPairingCodeDialogConfirmed_handshakeAccepted() {
+        mActivityController.start().postCreate(null).resume();
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback> bleCallBack =
+                ArgumentCaptor.forClass(
+                        CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback.class);
+        verify(mMockCarTrustAgentEnrollmentManager).setBleCallback(bleCallBack.capture());
+
+        bleCallBack.getValue().onBleEnrollmentDeviceConnected(mBluetoothDevice);
+        mActivity.mConfirmParingCodeListener.onConfirmPairingCode();
+        verify(mMockCarTrustAgentEnrollmentManager).enrollmentHandshakeAccepted(mBluetoothDevice);
+
+    }
+
+    @Test
+    public void onStart_onEscrowTokenActiveStateChanged_activated_finish() {
+        mActivityController.start().postCreate(null).resume();
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+                ArgumentCaptor.forClass(
+                        CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+        verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback> bleCallBack =
+                ArgumentCaptor.forClass(
+                        CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback.class);
+        verify(mMockCarTrustAgentEnrollmentManager).setBleCallback(bleCallBack.capture());
+
+        bleCallBack.getValue().onBleEnrollmentDeviceConnected(mBluetoothDevice);
+        callBack.getValue().onEscrowTokenActiveStateChanged(1, true);
+
+        assertThat(mActivity.isFinishing()).isTrue();
+    }
+
+    @Test
+    public void configurationNotChanged_terminateEnrollmentHandshake() {
+        mActivityController.start();
+
+        mActivityController.pause();
+
+        verify(mMockCarTrustAgentEnrollmentManager).terminateEnrollmentHandshake();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/AddTrustedDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/AddTrustedDevicePreferenceControllerTest.java
new file mode 100644
index 0000000..4373d13
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/AddTrustedDevicePreferenceControllerTest.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothAdapter;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowLockPatternUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+
+
+/**
+ * Unit tests for {@link AddTrustedDevicePreferenceController}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowLockPatternUtils.class, ShadowBluetoothAdapter.class,
+        ShadowCarUserManagerHelper.class})
+public class AddTrustedDevicePreferenceControllerTest {
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<AddTrustedDevicePreferenceController>
+            mPreferenceControllerHelper;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private Preference mPreference;
+    private AddTrustedDevicePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mPreference = new Preference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                AddTrustedDevicePreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowLockPatternUtils.reset();
+        ShadowBluetoothAdapter.reset();
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void refreshUi_hasPassword_preferenceEnabled() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(false);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_noPassword_preferenceDisabled() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(false);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_bluetoothAdapterEnabled_setsEmptySummary() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(false);
+        BluetoothAdapter.getDefaultAdapter().enable();
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary().toString()).isEmpty();
+    }
+
+    @Test
+    public void refreshUi_bluetoothAdapterDisabled_setsTurnOnToAddSummary() {
+        BluetoothAdapter.getDefaultAdapter().disable();
+
+        mController.refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.add_device_summary));
+    }
+
+    @Test
+    public void onPreferenceClicked_hasPassword_enableBluetooth() {
+        BluetoothAdapter.getDefaultAdapter().disable();
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+        mController.refreshUi();
+
+        mPreference.performClick();
+
+        assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isTrue();
+    }
+
+    @Test
+    public void getAvailabilityStatus_bluetoothNotAvailable_unsupportedOnDevice() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_disallowBluetoothUserRestriction_disabledForUser() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_disallowConfigBluetoothUserRestriction_disabledForUser() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_CONFIG_BLUETOOTH)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_available() {
+        Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+        // No user restrictions.
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java b/tests/robotests/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java
index 295c040..db8bf9c 100644
--- a/tests/robotests/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/ChooseLockPatternFragmentTest.java
@@ -22,6 +22,7 @@
 import static org.mockito.Mockito.verify;
 
 import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.FragmentController;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -36,7 +37,7 @@
 
     @Before
     public void initFragment() {
-        mFragment = new ChooseLockPatternFragment();
+        mFragment = FragmentController.of(new ChooseLockPatternFragment()).setup();
     }
 
     /**
diff --git a/tests/robotests/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java b/tests/robotests/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java
index 1ecd784..de68c94 100644
--- a/tests/robotests/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/ChooseLockPinPasswordFragmentTest.java
@@ -22,6 +22,7 @@
 import static org.mockito.Mockito.verify;
 
 import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.FragmentController;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -36,7 +37,8 @@
 
     @Before
     public void initFragment() {
-        mFragment = ChooseLockPinPasswordFragment.newPasswordInstance(/* isInSetupWizard= */ false);
+        mFragment = FragmentController.of(
+                ChooseLockPinPasswordFragment.newPasswordInstance()).setup();
     }
 
     /**
diff --git a/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java b/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
index 5126a18..e8ac043 100644
--- a/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
@@ -22,7 +22,7 @@
 
 import com.android.car.settings.CarSettingsRobolectricTestRunner;
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
+import com.android.car.settings.common.FragmentController;
 import com.android.car.settings.testutils.BaseTestActivity;
 
 import org.junit.Before;
@@ -41,13 +41,8 @@
 
     @Before
     public void initFragment() {
-        mTestActivity = Robolectric.buildActivity(TestSettingsScreenLockActivity.class)
-                .create()
-                .start()
-                .resume()
-                .get();
-
-        mPinFragment = ConfirmLockPinPasswordFragment.newPinInstance(/* isInSetupWizard= */ false);
+        mTestActivity = Robolectric.setupActivity(TestSettingsScreenLockActivity.class);
+        mPinFragment = ConfirmLockPinPasswordFragment.newPinInstance();
         mTestActivity.launchFragment(mPinFragment);
     }
 
@@ -68,15 +63,18 @@
      * The containing activity of ConfirmLockPinPasswordFragment must implement two interfaces
      */
     private static class TestSettingsScreenLockActivity extends BaseTestActivity implements
-            CheckLockListener, BaseFragment.FragmentController {
+            CheckLockListener, FragmentController {
 
         @Override
-        public void onLockVerified(String lock) {}
+        public void onLockVerified(byte[] lock) {
+        }
 
         @Override
-        public void goBack() {}
+        public void goBack() {
+        }
 
         @Override
-        public void showDOBlockingMessage() {}
+        public void showBlockingMessage() {
+        }
     }
 }
diff --git a/tests/robotests/src/com/android/car/settings/security/ConfirmRemoveScreenLockDialogTest.java b/tests/robotests/src/com/android/car/settings/security/ConfirmRemoveScreenLockDialogTest.java
new file mode 100644
index 0000000..21e760a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/ConfirmRemoveScreenLockDialogTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.DialogTestUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ConfirmRemoveScreenLockDialogTest {
+
+    private static final String TEST_TAG = "test_dialog_tag";
+
+    private BaseTestActivity mTestActivity;
+    private ConfirmRemoveScreenLockDialog mDialog;
+    @Mock
+    private ConfirmRemoveScreenLockDialog.ConfirmRemoveScreenLockListener mListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mDialog = new ConfirmRemoveScreenLockDialog();
+        mDialog.setConfirmRemoveScreenLockListener(mListener);
+        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
+        mTestActivity.showDialog(mDialog, TEST_TAG);
+    }
+
+    @Test
+    public void testInitialState_dialogShown() {
+        assertThat(isDialogShown()).isTrue();
+    }
+
+    @Test
+    public void testConfirmRemoveScreenLockListenerCalled_listenerCalled() {
+        DialogTestUtils.clickPositiveButton(mDialog);
+        verify(mListener).onConfirmRemoveScreenLock();
+    }
+
+    @Test
+    public void testConfirmRemoveScreenLockListenerCalled_dialogDismissed() {
+        DialogTestUtils.clickPositiveButton(mDialog);
+        assertThat(isDialogShown()).isFalse();
+    }
+
+    private boolean isDialogShown() {
+        return mTestActivity.findDialogByTag(TEST_TAG) != null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/InitialLockSetupServiceTest.java b/tests/robotests/src/com/android/car/settings/security/InitialLockSetupServiceTest.java
new file mode 100644
index 0000000..73ab223
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/InitialLockSetupServiceTest.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.os.RemoteException;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.setupservice.InitialLockSetupService;
+import com.android.car.settings.testutils.ShadowLockPatternUtils;
+import com.android.car.setupwizardlib.IInitialLockSetupService;
+import com.android.car.setupwizardlib.InitialLockSetupConstants.LockTypes;
+import com.android.car.setupwizardlib.InitialLockSetupConstants.SetLockCodes;
+import com.android.car.setupwizardlib.InitialLockSetupConstants.ValidateLockFlags;
+import com.android.car.setupwizardlib.InitialLockSetupHelper;
+import com.android.car.setupwizardlib.LockConfig;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockPatternView;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowContextWrapper;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Tests that the {@link InitialLockSetupService} properly handles connections and lock requests.
+ */
+@Config(shadows = ShadowLockPatternUtils.class)
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class InitialLockSetupServiceTest {
+
+    private static final String LOCK_PERMISSION = "com.android.car.settings.SET_INITIAL_LOCK";
+
+    private InitialLockSetupService mInitialLockSetupService;
+    private Context mContext;
+
+    @Before
+    public void setupService() {
+        ShadowLockPatternUtils.reset();
+        mInitialLockSetupService = Robolectric.buildService(InitialLockSetupService.class)
+                .create()
+                .get();
+        mContext = RuntimeEnvironment.application;
+        ShadowContextWrapper shadowContextWrapper = Shadows.shadowOf((ContextWrapper) mContext);
+        shadowContextWrapper.grantPermissions(LOCK_PERMISSION);
+    }
+
+    @Test
+    public void testBindReturnsNull_ifLockSet() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
+        assertThat(mInitialLockSetupService.onBind(new Intent())).isNull();
+    }
+
+    @Test
+    public void testBindReturnsInstanceOfServiceInterface_ifLockNotSet() throws RemoteException {
+        assertThat(mInitialLockSetupService.onBind(
+                new Intent()) instanceof IInitialLockSetupService.Stub).isTrue();
+    }
+
+    @Test
+    public void testGetLockConfig_returnsCorrectConfig() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        LockConfig pinConfig = service.getLockConfig(LockTypes.PIN);
+        assertThat(pinConfig.enabled).isTrue();
+        assertThat(pinConfig.minLockLength).isEqualTo(LockPatternUtils.MIN_LOCK_PASSWORD_SIZE);
+        LockConfig patternConfig = service.getLockConfig(LockTypes.PATTERN);
+        assertThat(patternConfig.enabled).isTrue();
+        assertThat(patternConfig.minLockLength).isEqualTo(LockPatternUtils.MIN_LOCK_PATTERN_SIZE);
+        LockConfig passwordConfig = service.getLockConfig(LockTypes.PASSWORD);
+        assertThat(passwordConfig.enabled).isTrue();
+        assertThat(passwordConfig.minLockLength).isEqualTo(LockPatternUtils.MIN_LOCK_PASSWORD_SIZE);
+    }
+
+    @Test
+    public void testCheckValidLock_tooShort() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        int result = service.checkValidLock(LockTypes.PASSWORD, "hi".getBytes());
+        assertThat(result & ValidateLockFlags.INVALID_LENGTH)
+                .isEqualTo(ValidateLockFlags.INVALID_LENGTH);
+    }
+
+    @Test
+    public void testCheckValidLock_longEnough() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        int result = service.checkValidLock(LockTypes.PASSWORD, "password".getBytes());
+        assertThat(result & ValidateLockFlags.INVALID_LENGTH)
+                .isNotEqualTo(ValidateLockFlags.INVALID_LENGTH);
+    }
+
+    @Test
+    public void testCheckValidLockPin_withLetters() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        int result = service.checkValidLock(LockTypes.PIN, "12a3".getBytes());
+        assertThat(result & ValidateLockFlags.INVALID_BAD_SYMBOLS)
+                .isEqualTo(ValidateLockFlags.INVALID_BAD_SYMBOLS);
+    }
+
+    @Test
+    public void testCheckValidLockPattern_tooShort() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        byte[] pattern = new byte[LockPatternUtils.MIN_LOCK_PATTERN_SIZE - 1];
+        for (int i = 0; i < pattern.length; i++) {
+            pattern[i] = (byte) i;
+        }
+        int result = service.checkValidLock(LockTypes.PATTERN, pattern);
+        assertThat(result & ValidateLockFlags.INVALID_LENGTH)
+                .isEqualTo(ValidateLockFlags.INVALID_LENGTH);
+    }
+
+    @Test
+    public void testCheckValidLockPattern_longEnough() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        byte[] pattern = new byte[LockPatternUtils.MIN_LOCK_PATTERN_SIZE + 1];
+        for (int i = 0; i < pattern.length; i++) {
+            pattern[i] = (byte) i;
+        }
+        int result = service.checkValidLock(LockTypes.PATTERN, pattern);
+        assertThat(result & ValidateLockFlags.INVALID_LENGTH)
+                .isNotEqualTo(ValidateLockFlags.INVALID_LENGTH);
+    }
+
+    @Test
+    public void testSetLockPassword_doesNotWorkWithExistingPassword() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
+        int result = service.setLock(LockTypes.PASSWORD, "password".getBytes());
+        assertThat(result).isEqualTo(SetLockCodes.FAIL_LOCK_EXISTS);
+    }
+
+    @Test
+    public void testSetLockPassword_doesNotWorkWithInvalidPassword() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        int result = service.setLock(LockTypes.PASSWORD, "hi".getBytes());
+        assertThat(result).isEqualTo(SetLockCodes.FAIL_LOCK_INVALID);
+    }
+
+    @Test
+    public void testSetLockPassword_setsDevicePassword() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        byte[] password = "password".getBytes();
+        // Need copy since password is cleared.
+        byte[] expectedPassword = Arrays.copyOf(password, password.length);
+        int result = service.setLock(LockTypes.PASSWORD, password);
+        assertThat(result).isEqualTo(SetLockCodes.SUCCESS);
+        assertThat(Arrays.equals(ShadowLockPatternUtils.getSavedPassword(),
+                expectedPassword)).isTrue();
+    }
+
+    @Test
+    public void testSetLockPin_setsDevicePin() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        byte[] password = "1580".getBytes();
+        byte[] expectedPassword = Arrays.copyOf(password, password.length);
+        int result = service.setLock(LockTypes.PIN, password);
+        assertThat(result).isEqualTo(SetLockCodes.SUCCESS);
+        assertThat(Arrays.equals(ShadowLockPatternUtils.getSavedPassword(),
+                expectedPassword)).isTrue();
+    }
+
+    @Test
+    public void testSetLockPattern_setsDevicePattern() throws RemoteException {
+        IInitialLockSetupService service = IInitialLockSetupService.Stub.asInterface(
+                mInitialLockSetupService.onBind(new Intent()));
+        List<LockPatternView.Cell> pattern = new ArrayList<>();
+        pattern.add(LockPatternView.Cell.of(0, 0));
+        pattern.add(LockPatternView.Cell.of(1, 0));
+        pattern.add(LockPatternView.Cell.of(2, 0));
+        pattern.add(LockPatternView.Cell.of(0, 1));
+        byte[] patternBytes = new byte[pattern.size()];
+        for (int i = 0; i < patternBytes.length; i++) {
+            LockPatternView.Cell cell = pattern.get(i);
+            patternBytes[i] = InitialLockSetupHelper.getByteFromPatternCell(cell.getRow(),
+                    cell.getColumn());
+        }
+        int result = service.setLock(LockTypes.PATTERN, patternBytes);
+        assertThat(result).isEqualTo(SetLockCodes.SUCCESS);
+        List<LockPatternView.Cell> savedPattern = ShadowLockPatternUtils.getSavedPattern();
+        assertThat(savedPattern).containsExactlyElementsIn(pattern);
+    }
+
+    @Test
+    public void testBindFails_ifNoPermissionGranted() {
+        ShadowContextWrapper shadowContextWrapper = Shadows.shadowOf((ContextWrapper) mContext);
+        shadowContextWrapper.denyPermissions(LOCK_PERMISSION);
+        assertThat(mInitialLockSetupService.onBind(new Intent())).isNull();
+    }
+
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java
new file mode 100644
index 0000000..8272345
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/LockTypeBasePreferenceControllerTest.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class LockTypeBasePreferenceControllerTest {
+
+    // Test classes used to test LockTypeBasePreferenceController.
+    private static class TestFragment extends Fragment {
+    }
+
+    private static class TestLockPreferenceController extends LockTypeBasePreferenceController {
+
+        TestLockPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Fragment fragmentToOpen() {
+            return new TestFragment();
+        }
+
+        @Override
+        protected int[] allowedPasswordQualities() {
+            return new int[]{MATCHING_PASSWORD_QUALITY};
+        }
+    }
+
+    private static final int MATCHING_PASSWORD_QUALITY =
+            DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
+    private static final int NON_MATCHING_PASSWORD_QUALITY =
+            DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<TestLockPreferenceController>
+            mPreferenceControllerHelper;
+    private TestLockPreferenceController mController;
+    private Preference mPreference;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestLockPreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_returnsTrue() {
+        assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_goesToNextFragment() {
+        mPreference.performClick();
+        verify(mPreferenceControllerHelper.getMockFragmentController()).launchFragment(
+                any(TestFragment.class));
+    }
+
+    @Test
+    public void testRefreshUi_isCurrentLock() {
+        mController.setCurrentPasswordQuality(MATCHING_PASSWORD_QUALITY);
+        mController.refreshUi();
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.current_screen_lock));
+    }
+
+    @Test
+    public void testRefreshUi_isNotCurrentLock() {
+        mController.setCurrentPasswordQuality(NON_MATCHING_PASSWORD_QUALITY);
+        mController.refreshUi();
+        assertThat(mPreference.getSummary()).isNotEqualTo(
+                mContext.getString(R.string.current_screen_lock));
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_guestUser() {
+        when(mCarUserManagerHelper.isCurrentProcessGuestUser()).thenReturn(true);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_otherUser() {
+        when(mCarUserManagerHelper.isCurrentProcessGuestUser()).thenReturn(false);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/NoLockPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/NoLockPreferenceControllerTest.java
new file mode 100644
index 0000000..8206fda
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/NoLockPreferenceControllerTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowLockPatternUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowLockPatternUtils.class})
+public class NoLockPreferenceControllerTest {
+
+    private static final byte[] TEST_CURRENT_PASSWORD = "test_password".getBytes();
+    private static final int TEST_USER = 10;
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<NoLockPreferenceController> mPreferenceControllerHelper;
+    private NoLockPreferenceController mController;
+    private Preference mPreference;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                NoLockPreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowLockPatternUtils.reset();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_returnsTrue() {
+        assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_goesToNextFragment() {
+        mPreference.performClick();
+        verify(mPreferenceControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmRemoveScreenLockDialog.class), anyString());
+    }
+
+    @Test
+    public void testConfirmRemoveScreenLockListener_removesLock() {
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER);
+        mController.setCurrentPassword(TEST_CURRENT_PASSWORD);
+        mController.mRemoveLockListener.onConfirmRemoveScreenLock();
+        assertThat(ShadowLockPatternUtils.getClearLockCredential()).isEqualTo(
+                TEST_CURRENT_PASSWORD);
+        assertThat(ShadowLockPatternUtils.getClearLockUser()).isEqualTo(TEST_USER);
+    }
+
+    @Test
+    public void testConfirmRemoveScreenLockListener_goesBack() {
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER);
+        mController.setCurrentPassword(TEST_CURRENT_PASSWORD);
+        mController.mRemoveLockListener.onConfirmRemoveScreenLock();
+        verify(mPreferenceControllerHelper.getMockFragmentController()).goBack();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/PasswordHelperTest.java b/tests/robotests/src/com/android/car/settings/security/PasswordHelperTest.java
index 3a6c646..567a009 100644
--- a/tests/robotests/src/com/android/car/settings/security/PasswordHelperTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/PasswordHelperTest.java
@@ -19,6 +19,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.setupwizardlib.InitialLockSetupConstants.ValidateLockFlags;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -31,12 +32,12 @@
 public class PasswordHelperTest {
 
     private PasswordHelper mPasswordHelper;
-    private PasswordHelper mPinPresenter;
+    private PasswordHelper mPinHelper;
 
     @Before
     public void initObjects() {
-        mPasswordHelper = new PasswordHelper(false);
-        mPinPresenter = new PasswordHelper(true);
+        mPasswordHelper = new PasswordHelper(/* isPin= */ false);
+        mPinHelper = new PasswordHelper(/* isPin= */ true);
     }
 
     /**
@@ -45,17 +46,17 @@
      */
     @Test
     public void testValidatePasswordTooShort() {
-        String password = "lov";
+        byte[] password = "lov".getBytes();
         assertThat(mPasswordHelper.validate(password))
                 .isEqualTo(PasswordHelper.TOO_SHORT);
     }
 
     /**
-     * A test to check validate works when alphanumeric passwor contains white space.
+     * A test to check validate works when alphanumeric password contains white space.
      */
     @Test
     public void testValidatePasswordWhiteSpace() {
-        String password = "pass wd";
+        byte[] password = "pass wd".getBytes();
         assertThat(mPasswordHelper.validate(password))
                 .isEqualTo(PasswordHelper.NO_ERROR);
     }
@@ -66,7 +67,7 @@
      */
     @Test
     public void testValidatePasswordNonAscii() {
-        String password = "1passwýd";
+        byte[] password = "1passwýd".getBytes();
         assertThat(mPasswordHelper.validate(password))
                 .isEqualTo(PasswordHelper.CONTAINS_INVALID_CHARACTERS);
     }
@@ -76,8 +77,8 @@
      */
     @Test
     public void testValidatePinContainingNonDigits() {
-        String password = "1a34";
-        assertThat(mPinPresenter.validate(password))
+        byte[] password = "1a34".getBytes();
+        assertThat(mPinHelper.validate(password))
                 .isEqualTo(PasswordHelper.CONTAINS_NON_DIGITS);
     }
 
@@ -86,8 +87,72 @@
      */
     @Test
     public void testValidatePinWithTooFewDigits() {
-        String password = "12";
-        assertThat(mPinPresenter.validate(password))
+        byte[] password = "12".getBytes();
+        assertThat(mPinHelper.validate(password))
                 .isEqualTo(PasswordHelper.TOO_SHORT);
     }
+
+    /**
+     * A test to check that validate will work as expected for setup wizard passwords that are
+     * too short.
+     */
+    @Test
+    public void testValidatePasswordTooShort_setupWizard() {
+        byte[] password = "lov".getBytes();
+        assertThat(mPasswordHelper.validateSetupWizard(password) & ValidateLockFlags.INVALID_LENGTH)
+                .isEqualTo(ValidateLockFlags.INVALID_LENGTH);
+    }
+
+    /**
+     * A test to check that validate works when setup wizard alphanumeric passwords contain white
+     * space.
+     */
+    @Test
+    public void testValidatePasswordWhiteSpace_setupWizard() {
+        byte[] password = "pass wd".getBytes();
+        assertThat(mPasswordHelper.validateSetupWizard(password)).isEqualTo(0);
+    }
+
+    /**
+     * A test to check validate works as expected for setup wizard alphanumeric password
+     * that contains an invalid character.
+     */
+    @Test
+    public void testValidatePasswordNonAscii_setupWizard() {
+        byte[] password = "1passwýd".getBytes();
+        assertThat(mPasswordHelper.validateSetupWizard(password)
+                & ValidateLockFlags.INVALID_BAD_SYMBOLS)
+                .isEqualTo(ValidateLockFlags.INVALID_BAD_SYMBOLS);
+    }
+
+    /**
+     * A test to check validate works as expected for setup wizard pin that contains non digits.
+     */
+    @Test
+    public void testValidatePinContainingNonDigits_setupWizard() {
+        byte[] password = "1a34".getBytes();
+        assertThat(mPinHelper.validateSetupWizard(password)
+                & ValidateLockFlags.INVALID_BAD_SYMBOLS)
+                .isEqualTo(ValidateLockFlags.INVALID_BAD_SYMBOLS);
+    }
+
+    /**
+     * A test to check validate works as expected for setup wizard pin with too few digits.
+     */
+    @Test
+    public void testValidatePinWithTooFewDigits_setupWizard() {
+        byte[] password = "12".getBytes();
+        assertThat(mPinHelper.validateSetupWizard(password) & ValidateLockFlags.INVALID_LENGTH)
+                .isEqualTo(ValidateLockFlags.INVALID_LENGTH);
+    }
+
+    /**
+     * A test to check that validate works as expected for a valid setup wizard pin.
+     */
+    @Test
+    public void testValidatePinWithValidPin_setupWizard() {
+        byte[] password = "1234".getBytes();
+        assertThat(mPinHelper.validateSetupWizard(password)).isEqualTo(0);
+    }
+
 }
diff --git a/tests/robotests/src/com/android/car/settings/security/SecurityEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/SecurityEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..e7509d7
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/SecurityEntryPreferenceControllerTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link SecurityEntryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class SecurityEntryPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private SecurityEntryPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+
+        mController = new PreferenceControllerTestHelper<>(RuntimeEnvironment.application,
+                SecurityEntryPreferenceController.class).getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_guestUser_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessGuestUser()).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_nonGuestUser_available() {
+        when(mCarUserManagerHelper.isCurrentProcessGuestUser()).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..a91bb5d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2018 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.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCar;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCar.class})
+public class TrustedDeviceEntryPreferenceControllerTest {
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<TrustedDeviceEntryPreferenceController>
+            mPreferenceControllerHelper;
+    private Preference mTrustedDevicePreference;
+    @Mock
+    private CarTrustAgentEnrollmentManager mMockCarTrustAgentEnrollmentManager;
+    private TrustedDeviceEntryPreferenceController mController;
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mTrustedDevicePreference = new Preference(mContext);
+        ShadowCar.setCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE,
+                mMockCarTrustAgentEnrollmentManager);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TrustedDeviceEntryPreferenceController.class, mTrustedDevicePreference);
+        mController = mPreferenceControllerHelper.getController();
+        mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_listenerTriggered() {
+        mTrustedDevicePreference.performClick();
+        verify(mPreferenceControllerHelper.getMockFragmentController()).launchFragment(
+                any(ChooseTrustedDeviceFragment.class));
+    }
+
+    @Test
+    public void testUpdateState() throws CarNotConnectedException {
+        List<TrustedDeviceInfo> devices = new ArrayList<>();
+        devices.add(new TrustedDeviceInfo(1, "", ""));
+        devices.add(new TrustedDeviceInfo(2, "", ""));
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId()))
+                .thenReturn(devices);
+        mController.refreshUi();
+        assertThat(mTrustedDevicePreference.getSummary()).isEqualTo("2 devices");
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java
new file mode 100644
index 0000000..be4d6cb
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2019 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.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.Car;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCar;
+import com.android.car.settings.testutils.ShadowLockPatternUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Unit tests for {@link TrustedDeviceListPreferenceController}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCar.class, ShadowLockPatternUtils.class})
+public class TrustedDeviceListPreferenceControllerTest {
+
+    List<TrustedDeviceInfo> mUpdatedDevices = new ArrayList<>();
+    List<TrustedDeviceInfo> mDevices = new ArrayList<>();
+    private Context mContext;
+    private PreferenceControllerTestHelper<TrustedDeviceListPreferenceController>
+            mPreferenceControllerHelper;
+    @Mock
+    private CarTrustAgentEnrollmentManager mMockCarTrustAgentEnrollmentManager;
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private PreferenceGroup mPreferenceGroup;
+    private TrustedDeviceListPreferenceController mController;
+    private TrustedDeviceInfo mTestDevice1 = new TrustedDeviceInfo(1, "", "");
+    private TrustedDeviceInfo mTestDevice2 = new TrustedDeviceInfo(2, "", "");
+    private TrustedDeviceInfo mTestDevice3 = new TrustedDeviceInfo(3, "", "");
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        ShadowCar.setCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE,
+                mMockCarTrustAgentEnrollmentManager);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TrustedDeviceListPreferenceController.class, mPreferenceGroup);
+        mController = mPreferenceControllerHelper.getController();
+        mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+        mDevices.add(mTestDevice1);
+        mDevices.add(mTestDevice2);
+        mUpdatedDevices.add(mTestDevice1);
+        mUpdatedDevices.add(mTestDevice2);
+        mUpdatedDevices.add(mTestDevice3);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCar.reset();
+        ShadowLockPatternUtils.reset();
+    }
+
+    @Test
+    public void onDeviceRemoved_refreshUi() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+                ArgumentCaptor.forClass(
+                        CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+        verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+        mUpdatedDevices.remove(0);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+        callBack.getValue().onEscrowTokenRemoved(mUpdatedDevices.get(0).getHandle());
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void onDeviceAdded_refreshUi() {
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mDevices);
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+                ArgumentCaptor.forClass(
+                        CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+        verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+
+        callBack.getValue().onEscrowTokenActiveStateChanged(mUpdatedDevices.get(0).getHandle(),
+                true);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+    }
+
+    @Test
+    public void refreshUi_noDevices_hasPassword_hidesGroup() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(
+                Collections.emptyList());
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+        assertThat(mPreferenceGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_devices_hasPassword_showsGroup() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+        assertThat(mPreferenceGroup.isVisible()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_noPassword_showAuthenticationReminderPreference() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
+
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getSummary()).isEqualTo(
+                mContext.getString(R.string.trusted_device_set_authentication_reminder));
+    }
+
+    @Test
+    public void onPreferenceClicked_hasPassword_showDialog() {
+        ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+        when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+                mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mDevices);
+        mController.refreshUi();
+        Preference p = mPreferenceGroup.getPreference(0);
+
+        p.performClick();
+
+        verify(mPreferenceControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmRemoveDeviceDialog.class), anyString());
+    }
+
+    @Test
+    public void onRemoveDeviceDialogConfirmed_remoeEscrwoToken() {
+        mController.mConfirmRemoveDeviceListener.onConfirmRemoveDevice(1);
+
+        verify(mMockCarTrustAgentEnrollmentManager).removeEscrowToken(1,
+                mCarUserManagerHelper.getCurrentProcessUserId());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/sound/RingtonePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/sound/RingtonePreferenceControllerTest.java
new file mode 100644
index 0000000..967361a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/sound/RingtonePreferenceControllerTest.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2018 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.car.settings.sound;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.Intent;
+import android.media.RingtoneManager;
+import android.net.Uri;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowRingtone;
+import com.android.car.settings.testutils.ShadowRingtoneManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowRingtoneManager.class, ShadowRingtone.class})
+public class RingtonePreferenceControllerTest {
+
+    private static final int TEST_RINGTONE_TYPE = RingtoneManager.TYPE_RINGTONE;
+    private static final String TEST_PATH = "/test/path/uri";
+    private static final Uri TEST_URI = new Uri.Builder().appendPath(TEST_PATH).build();
+    private static final String TEST_TITLE = "Test Preference Title";
+    private static final String TEST_RINGTONE_TITLE = "Test Ringtone Title";
+
+    // These are copied from android.app.Activity. That class is not accessible from this test
+    // because there is another test Activity with the same package.
+    private static final int ACTIVITY_RESULT_OK = -1;
+    private static final int ACTIVITY_RESULT_CANCELLED = 0;
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<RingtonePreferenceController>
+            mPreferenceControllerHelper;
+    private RingtonePreferenceController mController;
+    private RingtonePreference mRingtonePreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mRingtonePreference = new RingtonePreference(mContext, null);
+        mRingtonePreference.setTitle(TEST_TITLE);
+        mRingtonePreference.setRingtoneType(TEST_RINGTONE_TYPE);
+        mRingtonePreference.setShowSilent(true);  // Default value when instantiated via xml.
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                RingtonePreferenceController.class, mRingtonePreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        // Set the Uri to be null at the beginning of each test.
+        ShadowRingtoneManager.setActualDefaultRingtoneUri(mContext, TEST_RINGTONE_TYPE,
+                /* ringtoneUri= */ null);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowRingtoneManager.reset();
+        ShadowRingtone.reset();
+    }
+
+    @Test
+    public void testRefreshUi_ringtoneTitleSet() {
+        ShadowRingtoneManager.setActualDefaultRingtoneUri(mContext, TEST_RINGTONE_TYPE, TEST_URI);
+        ShadowRingtone.setExpectedTitleForUri(TEST_URI, TEST_RINGTONE_TITLE);
+        mController.refreshUi();
+        assertThat(mRingtonePreference.getSummary()).isEqualTo(TEST_RINGTONE_TITLE);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_listenerTriggered() {
+        mRingtonePreference.performClick();
+        verify(mPreferenceControllerHelper.getMockFragmentController()).startActivityForResult(
+                any(Intent.class), anyInt(), any(ActivityResultCallback.class));
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_captureIntent_checkDefaultUri() {
+        ShadowRingtoneManager.setActualDefaultRingtoneUri(mContext, TEST_RINGTONE_TYPE, TEST_URI);
+        mRingtonePreference.performClick();
+        ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
+        verify(mPreferenceControllerHelper.getMockFragmentController()).startActivityForResult(
+                intent.capture(), anyInt(), any(ActivityResultCallback.class));
+        assertThat((Uri) intent.getValue().getParcelableExtra(
+                RingtoneManager.EXTRA_RINGTONE_EXISTING_URI)).isEqualTo(TEST_URI);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_captureIntent_checkDialogTitle() {
+        mRingtonePreference.performClick();
+        ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
+        verify(mPreferenceControllerHelper.getMockFragmentController()).startActivityForResult(
+                intent.capture(), anyInt(), any(ActivityResultCallback.class));
+        assertThat(
+                intent.getValue().getStringExtra(RingtoneManager.EXTRA_RINGTONE_TITLE)).isEqualTo(
+                TEST_TITLE);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_captureIntent_checkRingtoneType() {
+        mRingtonePreference.performClick();
+        ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
+        verify(mPreferenceControllerHelper.getMockFragmentController()).startActivityForResult(
+                intent.capture(), anyInt(), any(ActivityResultCallback.class));
+        assertThat(
+                intent.getValue().getIntExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, -1)).isEqualTo(
+                TEST_RINGTONE_TYPE);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_captureIntent_checkShowSilent() {
+        mRingtonePreference.performClick();
+        ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
+        verify(mPreferenceControllerHelper.getMockFragmentController()).startActivityForResult(
+                intent.capture(), anyInt(), any(ActivityResultCallback.class));
+        assertThat(intent.getValue().getBooleanExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT,
+                false)).isTrue();
+    }
+
+    @Test
+    public void testProcessActivityResult_wrongResult_defaultRingtoneNotSet() {
+        mController.processActivityResult(RingtonePreferenceController.REQUEST_CODE,
+                ACTIVITY_RESULT_CANCELLED, new Intent());
+        assertThat(ShadowRingtoneManager.getActualDefaultRingtoneUri(mContext,
+                TEST_RINGTONE_TYPE)).isNull();
+    }
+
+    @Test
+    public void testProcessActivityResult_correctResult_nullIntent_defaultRingtoneNotSet() {
+        mController.processActivityResult(RingtonePreferenceController.REQUEST_CODE,
+                ACTIVITY_RESULT_OK, null);
+        assertThat(ShadowRingtoneManager.getActualDefaultRingtoneUri(mContext,
+                TEST_RINGTONE_TYPE)).isNull();
+    }
+
+    @Test
+    public void testProcessActivityResult_correctResult_validIntent_defaultRingtoneSet() {
+        Intent data = new Intent();
+        data.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, TEST_URI);
+        mController.processActivityResult(RingtonePreferenceController.REQUEST_CODE,
+                ACTIVITY_RESULT_OK, data);
+        assertThat(ShadowRingtoneManager.getActualDefaultRingtoneUri(mContext,
+                TEST_RINGTONE_TYPE)).isEqualTo(TEST_URI);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java
new file mode 100644
index 0000000..c5d83fd
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsPreferenceControllerTest.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2018 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.car.settings.sound;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.media.CarAudioManager;
+import android.content.Context;
+import android.media.Ringtone;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.SeekBarPreference;
+import com.android.car.settings.testutils.ShadowCar;
+import com.android.car.settings.testutils.ShadowRingtoneManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowRingtoneManager.class})
+public class VolumeSettingsPreferenceControllerTest {
+
+    private static final int GROUP_ID = 0;
+    private static final int TEST_MIN_VOLUME = 0;
+    private static final int TEST_VOLUME = 40;
+    private static final int TEST_NEW_VOLUME = 80;
+    private static final int TEST_MAX_VOLUME = 100;
+
+    private PreferenceControllerTestHelper<TestVolumeSettingsPreferenceController>
+            mPreferenceControllerHelper;
+    private TestVolumeSettingsPreferenceController mController;
+    private PreferenceGroup mPreferenceGroup;
+    @Mock
+    private CarAudioManager mCarAudioManager;
+    @Mock
+    private Ringtone mRingtone;
+
+    /** Extend class to provide test resource which doesn't require internal android resources. */
+    public static class TestVolumeSettingsPreferenceController extends
+            VolumeSettingsPreferenceController {
+
+        public TestVolumeSettingsPreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        public int carVolumeItemsXml() {
+            return R.xml.test_car_volume_items;
+        }
+    }
+
+    @Before
+    public void setUp() throws CarNotConnectedException {
+        MockitoAnnotations.initMocks(this);
+        ShadowCar.setCarManager(Car.AUDIO_SERVICE, mCarAudioManager);
+        ShadowRingtoneManager.setRingtone(mRingtone);
+
+        Context context = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                TestVolumeSettingsPreferenceController.class, mPreferenceGroup);
+        mController = mPreferenceControllerHelper.getController();
+
+        when(mCarAudioManager.getVolumeGroupCount()).thenReturn(1);
+        when(mCarAudioManager.getUsagesForVolumeGroupId(GROUP_ID)).thenReturn(new int[]{1, 2});
+        when(mCarAudioManager.getGroupMinVolume(GROUP_ID)).thenReturn(TEST_MIN_VOLUME);
+        when(mCarAudioManager.getGroupVolume(GROUP_ID)).thenReturn(TEST_VOLUME);
+        when(mCarAudioManager.getGroupMaxVolume(GROUP_ID)).thenReturn(TEST_MAX_VOLUME);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCar.reset();
+        ShadowRingtoneManager.reset();
+    }
+
+    @Test
+    public void testRefreshUi_serviceNotStarted() {
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void testRefreshUi_serviceStarted() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void testRefreshUi_serviceStarted_multipleCalls() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+
+        // Calling this multiple times shouldn't increase the number of elements.
+        mController.refreshUi();
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+    }
+
+    @Test
+    public void testRefreshUi_createdPreferenceHasMinMax() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
+        assertThat(preference.getMin()).isEqualTo(TEST_MIN_VOLUME);
+        assertThat(preference.getValue()).isEqualTo(TEST_VOLUME);
+        assertThat(preference.getMax()).isEqualTo(TEST_MAX_VOLUME);
+    }
+
+    @Test
+    public void testOnPreferenceChange_ringtonePlays() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
+        preference.getOnPreferenceChangeListener().onPreferenceChange(preference, TEST_NEW_VOLUME);
+        verify(mRingtone).play();
+    }
+
+    @Test
+    public void testOnPreferenceChange_audioManagerSet() throws CarNotConnectedException {
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        mController.refreshUi();
+        SeekBarPreference preference = (SeekBarPreference) mPreferenceGroup.getPreference(0);
+        preference.getOnPreferenceChangeListener().onPreferenceChange(preference, TEST_NEW_VOLUME);
+        verify(mCarAudioManager).setGroupVolume(GROUP_ID, TEST_NEW_VOLUME, 0);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsRingtoneManagerTest.java b/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsRingtoneManagerTest.java
new file mode 100644
index 0000000..b6e3f85
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/sound/VolumeSettingsRingtoneManagerTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2018 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.car.settings.sound;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.media.Ringtone;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowRingtoneManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowLooper;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowRingtoneManager.class})
+public class VolumeSettingsRingtoneManagerTest {
+
+    private static final int TEST_GROUP_ID = 1;
+    private static final int TEST_USAGE_ID = 18;
+
+    private Context mContext;
+    private VolumeSettingsRingtoneManager mRingtoneManager;
+    @Mock
+    private Ringtone mRingtone;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowRingtoneManager.setRingtone(mRingtone);
+        mContext = RuntimeEnvironment.application;
+        mRingtoneManager = new VolumeSettingsRingtoneManager(mContext);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowRingtoneManager.reset();
+        when(mRingtone.isPlaying()).thenReturn(false);
+    }
+
+    @Test
+    public void testPlayAudioFeedback_play_playUntilTimeout() {
+        mRingtoneManager.playAudioFeedback(TEST_GROUP_ID, TEST_USAGE_ID);
+        verify(mRingtone).play();
+        when(mRingtone.isPlaying()).thenReturn(true);
+        ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
+        verify(mRingtone).stop();
+    }
+
+    @Test
+    public void testPlayAudioFeedback_play_stoppedBeforeTimeout() {
+        mRingtoneManager.playAudioFeedback(TEST_GROUP_ID, TEST_USAGE_ID);
+        verify(mRingtone).play();
+        when(mRingtone.isPlaying()).thenReturn(false);
+        ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
+        verify(mRingtone, never()).stop();
+    }
+
+    @Test
+    public void testStopCurrentRingtone_stop() {
+        mRingtoneManager.playAudioFeedback(TEST_GROUP_ID, TEST_USAGE_ID);
+        mRingtoneManager.stopCurrentRingtone();
+        verify(mRingtone).stop();
+    }
+
+    @Test
+    public void testStopCurrentRingtone_noCurrentRingtone() {
+        mRingtoneManager.stopCurrentRingtone();
+        verify(mRingtone, never()).stop();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragmentTest.java
new file mode 100644
index 0000000..7146cb5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragmentTest.java
@@ -0,0 +1,323 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.android.car.settings.storage.AppStorageSettingsDetailsFragment.EXTRA_PACKAGE_NAME;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.app.usage.StorageStats;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowActivityManager;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.car.settings.testutils.ShadowApplicationsState;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowRestrictedLockUtilsInternal;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.applications.ApplicationsState;
+import com.android.settingslib.applications.StorageStatsSource;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link AppStorageSettingsDetailsFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationsState.class, ShadowCarUserManagerHelper.class,
+        ShadowRestrictedLockUtilsInternal.class, ShadowApplicationPackageManager.class,
+        ShadowActivityManager.class})
+public class AppStorageSettingsDetailsFragmentTest {
+
+    private static final String PACKAGE_NAME = "com.google.packageName";
+    private static final String SOURCE = "source";
+    private static final int UID = 12;
+    private static final String LABEL = "label";
+    private static final String SIZE_STR = "12.34 MB";
+    private static final int TEST_USER_ID = 10;
+
+    private Context mContext;
+    private AppStorageSettingsDetailsFragment mFragment;
+    private FragmentController<AppStorageSettingsDetailsFragment> mFragmentController;
+
+    @Mock
+    private ApplicationsState mApplicationsState;
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Mock
+    private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin;
+
+    @Mock
+    private PackageManager mPackageManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mFragment = new AppStorageSettingsDetailsFragment();
+        Bundle bundle = new Bundle();
+        bundle.putString(EXTRA_PACKAGE_NAME, PACKAGE_NAME);
+        mFragment.setArguments(bundle);
+        mFragmentController = FragmentController.of(mFragment);
+
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        appEntry.info.packageName = PACKAGE_NAME;
+        when(mApplicationsState.getEntry(eq(PACKAGE_NAME), anyInt())).thenReturn(appEntry);
+        // Set user.
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER_ID);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        ShadowApplicationsState.setInstance(mApplicationsState);
+        mFragmentController.create();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationsState.reset();
+        ShadowCarUserManagerHelper.reset();
+        ShadowRestrictedLockUtilsInternal.reset();
+        ShadowApplicationPackageManager.reset();
+        ShadowActivityManager.reset();
+    }
+
+    @Test
+    public void onActivityCreated_defaultStatus_shouldShowCacheButtons() {
+        mFragment.onActivityCreated(null);
+
+        assertThat(findClearCacheButton(mFragment.requireActivity())).isNotNull();
+        assertThat(findClearCacheButton(mFragment.requireActivity()).getVisibility()).isEqualTo(
+                View.VISIBLE);
+        assertThat(findClearCacheButton(mFragment.requireActivity()).getText()).isEqualTo(
+                mContext.getString(R.string.storage_clear_cache_btn_text));
+
+        assertThat(findClearStorageButton(mFragment.requireActivity())).isNotNull();
+        assertThat(findClearStorageButton(mFragment.requireActivity()).getVisibility()).isEqualTo(
+                View.VISIBLE);
+        assertThat(findClearStorageButton(mFragment.requireActivity()).getText()).isEqualTo(
+                mContext.getString(R.string.storage_clear_user_data_text));
+    }
+
+    @Test
+    public void onActivityCreated_defaultStatus_shouldShowClearStorageButtons() {
+        mFragment.onActivityCreated(null);
+
+        assertThat(findClearStorageButton(mFragment.requireActivity())).isNotNull();
+        assertThat(findClearStorageButton(mFragment.requireActivity()).getVisibility()).isEqualTo(
+                View.VISIBLE);
+        assertThat(findClearStorageButton(mFragment.requireActivity()).getText()).isEqualTo(
+                mContext.getString(R.string.storage_clear_user_data_text));
+    }
+
+    @Test
+    public void handleClearCacheClick_disallowedBySystem_shouldNotDeleteApplicationCache() {
+        ShadowRestrictedLockUtilsInternal.setEnforcedAdmin(mEnforcedAdmin);
+        ShadowApplicationPackageManager.setPackageManager(mPackageManager);
+
+        doNothing().when(mPackageManager).deleteApplicationCacheFiles(anyString(), any());
+
+        mFragmentController.resume();
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = 100;
+        stats.dataBytes = 50;
+        stats.cacheBytes = 0;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mFragment.onActivityCreated(null);
+        mFragment.onDataLoaded(storageStats, false, false);
+        findClearCacheButton(mFragment.requireActivity()).performClick();
+
+        verify(mPackageManager, never()).deleteApplicationCacheFiles(anyString(), any());
+    }
+
+    @Test
+    public void handleClearCacheClick_allowedBySystem_shouldNotDeleteApplicationCache() {
+        ShadowRestrictedLockUtilsInternal.setEnforcedAdmin(mEnforcedAdmin);
+        ShadowRestrictedLockUtilsInternal.setHasBaseUserRestriction(true);
+        ShadowApplicationPackageManager.setPackageManager(mPackageManager);
+
+        doNothing().when(mPackageManager).deleteApplicationCacheFiles(anyString(), any());
+
+        mFragmentController.resume();
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = 100;
+        stats.dataBytes = 50;
+        stats.cacheBytes = 10;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mFragment.onActivityCreated(null);
+        mFragment.onDataLoaded(storageStats, false, false);
+        findClearCacheButton(mFragment.requireActivity()).performClick();
+
+        verify(mPackageManager).deleteApplicationCacheFiles(anyString(), any());
+    }
+
+    @Test
+    public void handleClearDataClick_disallowedBySystem_shouldNotShowDialogToClear() {
+        ShadowRestrictedLockUtilsInternal.setEnforcedAdmin(mEnforcedAdmin);
+        ShadowApplicationPackageManager.setPackageManager(mPackageManager);
+
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = 100;
+        stats.dataBytes = 10;
+        stats.cacheBytes = 10;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mFragment.onActivityCreated(null);
+        mFragment.onDataLoaded(storageStats, false, false);
+        findClearStorageButton(mFragment.requireActivity()).performClick();
+
+        assertThat(mFragment.getFragmentManager().findFragmentByTag(
+                AppStorageSettingsDetailsFragment.CONFIRM_CLEAR_STORAGE_DIALOG_TAG)).isNull();
+    }
+
+    @Test
+    public void handleClearDataClick_allowedBySystem_shouldShowDialogToClear() {
+        ShadowRestrictedLockUtilsInternal.setEnforcedAdmin(mEnforcedAdmin);
+        ShadowRestrictedLockUtilsInternal.setHasBaseUserRestriction(true);
+        ShadowApplicationPackageManager.setPackageManager(mPackageManager);
+
+        mFragmentController.resume();
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = 100;
+        stats.dataBytes = 50;
+        stats.cacheBytes = 10;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mFragment.onActivityCreated(null);
+        mFragment.onDataLoaded(storageStats, false, false);
+        findClearStorageButton(mFragment.requireActivity()).performClick();
+
+        assertThat(mFragment.getFragmentManager()).isNotNull();
+    }
+
+    @Test
+    public void onDataLoaded_noResult_buttonsShouldBeDisabled() {
+        mFragment.onActivityCreated(null);
+
+        mFragment.onDataLoaded(null, false, false);
+
+        assertThat(findClearCacheButton(mFragment.requireActivity()).isEnabled()).isFalse();
+        assertThat(findClearStorageButton(mFragment.requireActivity()).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onDataLoaded_resultLoaded_cacheButtonsShouldBeEnabled() {
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = 100;
+        stats.dataBytes = 50;
+        stats.cacheBytes = 10;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mFragment.onActivityCreated(null);
+        mFragment.onDataLoaded(storageStats, false, false);
+
+        assertThat(findClearCacheButton(mFragment.requireActivity()).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onDataLoaded_resultLoaded_dataButtonsShouldBeEnabled() {
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = 100;
+        stats.dataBytes = 50;
+        stats.cacheBytes = 10;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mFragment.onActivityCreated(null);
+        mFragment.onDataLoaded(storageStats, false, false);
+
+        assertThat(findClearStorageButton(mFragment.requireActivity()).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void updateUiWithSize_resultLoaded_cacheButtonDisabledAndDataButtonsEnabled() {
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = 100;
+        stats.dataBytes = 50;
+        stats.cacheBytes = 0;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mFragment.onActivityCreated(null);
+        mFragment.onDataLoaded(storageStats, false, false);
+
+        assertThat(findClearCacheButton(mFragment.requireActivity()).isEnabled()).isFalse();
+        assertThat(findClearStorageButton(mFragment.requireActivity()).isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onDataLoaded_resultLoaded_cacheButtonEnabledAndDataButtonDisabled() {
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = 100;
+        stats.dataBytes = 10;
+        stats.cacheBytes = 10;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mFragment.onActivityCreated(null);
+        mFragment.onDataLoaded(storageStats, false, false);
+
+        assertThat(findClearCacheButton(mFragment.requireActivity()).isEnabled()).isTrue();
+        assertThat(findClearStorageButton(mFragment.requireActivity()).isEnabled()).isFalse();
+    }
+
+    private Button findClearCacheButton(Activity activity) {
+        return activity.findViewById(R.id.action_button2);
+    }
+
+    private Button findClearStorageButton(Activity activity) {
+        return activity.findViewById(R.id.action_button1);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/AppsStorageStatsManagerTest.java b/tests/robotests/src/com/android/car/settings/storage/AppsStorageStatsManagerTest.java
new file mode 100644
index 0000000..b6da6c6
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/AppsStorageStatsManagerTest.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.app.usage.StorageStats;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.os.Bundle;
+
+import androidx.loader.app.LoaderManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.settingslib.applications.StorageStatsSource;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link AppsStorageStatsManager}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AppsStorageStatsManagerTest {
+
+    private static final int USER_ID = 10;
+
+    private Context mContext;
+    private AppsStorageStatsManager mAppsStorageStatsManager;
+
+    @Captor
+    private ArgumentCaptor<LoaderManager.LoaderCallbacks<StorageStatsSource.AppStorageStats>>
+            mCallbacksArgumentCaptor;
+
+    @Mock
+    private AppsStorageStatsManager.Callback mCallback1;
+
+    @Mock
+    private AppsStorageStatsManager.Callback mCallback2;
+
+    @Mock
+    private LoaderManager mLoaderManager;
+
+    @Mock
+    private ApplicationInfo mApplicationInfo;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mAppsStorageStatsManager = new AppsStorageStatsManager(mContext);
+        mAppsStorageStatsManager.startLoading(mLoaderManager, mApplicationInfo, USER_ID, false,
+                false);
+        verify(mLoaderManager).restartLoader(eq(1), eq(Bundle.EMPTY),
+                mCallbacksArgumentCaptor.capture());
+    }
+
+    @Test
+    public void callback_onLoadFinished_listenerOnDataLoadedCalled() throws Exception {
+        mAppsStorageStatsManager.registerListener(mCallback1);
+        mAppsStorageStatsManager.registerListener(mCallback2);
+
+        StorageStats stats = new StorageStats();
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mCallbacksArgumentCaptor.getValue().onLoadFinished(null, storageStats);
+
+        verify(mCallback1).onDataLoaded(storageStats, false, false);
+        verify(mCallback2).onDataLoaded(storageStats, false, false);
+    }
+
+    @Test
+    public void callback_unregisterListener_onlyOneListenerOnDataLoadedCalled() throws Exception {
+        mAppsStorageStatsManager.registerListener(mCallback1);
+        mAppsStorageStatsManager.registerListener(mCallback2);
+        mAppsStorageStatsManager.unregisterListener(mCallback2);
+        StorageStats stats = new StorageStats();
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        mCallbacksArgumentCaptor.getValue().onLoadFinished(null, storageStats);
+
+        verify(mCallback1).onDataLoaded(storageStats, false, false);
+        verify(mCallback2, never()).onDataLoaded(storageStats, false, false);
+    }
+
+    @Test
+    public void callback_notLoaded_listenerOnDataLoadedCalled() throws Exception {
+        mAppsStorageStatsManager.registerListener(mCallback1);
+        mAppsStorageStatsManager.registerListener(mCallback2);
+
+        StorageStats stats = new StorageStats();
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        verify(mCallback1, never()).onDataLoaded(storageStats, false, false);
+        verify(mCallback2, never()).onDataLoaded(storageStats, false, false);
+    }
+
+    @Test
+    public void callback_cachedCleared_listenerOnDataLoadedCalled() throws Exception {
+        mAppsStorageStatsManager = new AppsStorageStatsManager(mContext);
+        mAppsStorageStatsManager.startLoading(mLoaderManager, mApplicationInfo, USER_ID, true,
+                false);
+
+        mAppsStorageStatsManager.registerListener(mCallback1);
+        mAppsStorageStatsManager.registerListener(mCallback2);
+
+        StorageStats stats = new StorageStats();
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        verify(mCallback1, never()).onDataLoaded(storageStats, true, false);
+        verify(mCallback2, never()).onDataLoaded(storageStats, true, false);
+    }
+
+    @Test
+    public void callback_userDataCleared_listenerOnDataLoadedCalled() throws Exception {
+        mAppsStorageStatsManager = new AppsStorageStatsManager(mContext);
+        mAppsStorageStatsManager.startLoading(mLoaderManager, mApplicationInfo, USER_ID, false,
+                true);
+
+        mAppsStorageStatsManager.registerListener(mCallback1);
+        mAppsStorageStatsManager.registerListener(mCallback2);
+
+        StorageStats stats = new StorageStats();
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        verify(mCallback1, never()).onDataLoaded(storageStats, false, true);
+        verify(mCallback2, never()).onDataLoaded(storageStats, false, true);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/FileSizeFormatterTest.java b/tests/robotests/src/com/android/car/settings/storage/FileSizeFormatterTest.java
new file mode 100644
index 0000000..8b64456
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/FileSizeFormatterTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.android.car.settings.storage.FileSizeFormatter.GIGABYTE_IN_BYTES;
+import static com.android.car.settings.storage.FileSizeFormatter.MEGABYTE_IN_BYTES;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+
+/** Unit test for {@link FileSizeFormatter}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class FileSizeFormatterTest {
+    private Context mContext;
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = RuntimeEnvironment.application;
+    }
+
+    @Test
+    public void formatFileSize_zero() throws Exception {
+        assertThat(
+                FileSizeFormatter.formatFileSize(
+                        mContext,
+                        0 /* size */,
+                        com.android.internal.R.string.gigabyteShort,
+                        GIGABYTE_IN_BYTES))
+                .isEqualTo("0.00 GB");
+    }
+
+    @Test
+    public void formatFileSize_smallSize() throws Exception {
+        assertThat(
+                FileSizeFormatter.formatFileSize(
+                        mContext,
+                        MEGABYTE_IN_BYTES * 11 /* size */,
+                        com.android.internal.R.string.gigabyteShort,
+                        GIGABYTE_IN_BYTES))
+                .isEqualTo("0.01 GB");
+    }
+
+    @Test
+    public void formatFileSize_lessThanOneSize() throws Exception {
+        assertThat(
+                FileSizeFormatter.formatFileSize(
+                        mContext,
+                        MEGABYTE_IN_BYTES * 155 /* size */,
+                        com.android.internal.R.string.gigabyteShort,
+                        GIGABYTE_IN_BYTES))
+                .isEqualTo("0.16 GB");
+    }
+
+    @Test
+    public void formatFileSize_greaterThanOneSize() throws Exception {
+        assertThat(
+                FileSizeFormatter.formatFileSize(
+                        mContext,
+                        MEGABYTE_IN_BYTES * 1551 /* size */,
+                        com.android.internal.R.string.gigabyteShort,
+                        GIGABYTE_IN_BYTES))
+                .isEqualTo("1.6 GB");
+    }
+
+    @Test
+    public void formatFileSize_greaterThanTen() throws Exception {
+        // Should round down due to truncation
+        assertThat(
+                FileSizeFormatter.formatFileSize(
+                        mContext,
+                        GIGABYTE_IN_BYTES * 15 + MEGABYTE_IN_BYTES * 50 /* size */,
+                        com.android.internal.R.string.gigabyteShort,
+                        GIGABYTE_IN_BYTES))
+                .isEqualTo("15 GB");
+    }
+
+    @Test
+    public void formatFileSize_handlesNegativeFileSizes() throws Exception {
+        assertThat(
+                FileSizeFormatter.formatFileSize(
+                        mContext,
+                        MEGABYTE_IN_BYTES * -155 /* size */,
+                        com.android.internal.R.string.gigabyteShort,
+                        GIGABYTE_IN_BYTES))
+                .isEqualTo("-0.16 GB");
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageApplicationListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageApplicationListPreferenceControllerTest.java
new file mode 100644
index 0000000..04cd87d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageApplicationListPreferenceControllerTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+
+/** Unit test for {@link StorageApplicationListPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class StorageApplicationListPreferenceControllerTest {
+
+    private static final String SOURCE = "source";
+    private static final int UID = 12;
+    private static final String LABEL = "label";
+    private static final String SIZE_STR = "12.34 MB";
+    private static final String UPDATED_SIZE_STR = "15.34 MB";
+    private static final String PACKAGE_NAME = "com.google.packageName";
+
+    private Context mContext;
+    private LogicalPreferenceGroup mLogicalPreferenceGroup;
+    private StorageApplicationListPreferenceController mController;
+    private PreferenceControllerTestHelper<StorageApplicationListPreferenceController>
+            mPreferenceControllerHelper;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mLogicalPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                StorageApplicationListPreferenceController.class, mLogicalPreferenceGroup);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void defaultInitialize_hasNoPreference() {
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onDataLoaded_addPreference_hasOnePreference() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        appEntry.info.packageName = PACKAGE_NAME;
+        apps.add(appEntry);
+
+        mController.onDataLoaded(apps);
+
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mLogicalPreferenceGroup.getPreference(0).getTitle()).isEqualTo(LABEL);
+        assertThat(mLogicalPreferenceGroup.getPreference(0).getSummary()).isEqualTo(SIZE_STR);
+    }
+
+    @Test
+    public void onDataLoaded_updatePreference_hasOnePreferenceWithUpdatedValues() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        appEntry.info.packageName = PACKAGE_NAME;
+        apps.add(appEntry);
+
+        mController.onDataLoaded(apps);
+
+        apps.clear();
+        appEntry = new ApplicationsState.AppEntry(mContext, appInfo, 1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = UPDATED_SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        appEntry.info.packageName = PACKAGE_NAME;
+        apps.add(appEntry);
+
+        mController.onDataLoaded(apps);
+
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mLogicalPreferenceGroup.getPreference(0).getTitle()).isEqualTo(LABEL);
+        assertThat(mLogicalPreferenceGroup.getPreference(0).getSummary()).isEqualTo(
+                UPDATED_SIZE_STR);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageAsyncLoaderTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageAsyncLoaderTest.java
new file mode 100644
index 0000000..a02e44a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageAsyncLoaderTest.java
@@ -0,0 +1,256 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.when;
+
+import android.app.usage.StorageStats;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.UserInfo;
+import android.net.TrafficStats;
+import android.os.UserHandle;
+import android.util.SparseArray;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+import com.android.settingslib.applications.StorageStatsSource;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** Unit test for {@link StorageAsyncLoader}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class})
+public class StorageAsyncLoaderTest {
+    private static final int PRIMARY_USER_ID = 0;
+    private static final int SECONDARY_USER_ID = 10;
+    private static final String PACKAGE_NAME_1 = "com.blah.test";
+    private static final String PACKAGE_NAME_2 = "com.blah.test2";
+    private static final String DEFAULT_PACKAGE_NAME = "com.android.car.settings";
+    private static final long DEFAULT_QUOTA = 64 * TrafficStats.MB_IN_BYTES;
+
+    @Mock
+    private StorageStatsSource mSource;
+
+    private Context mContext;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private List<ApplicationInfo> mInfo = new ArrayList<>();
+    private List<UserInfo> mUsers;
+
+    private StorageAsyncLoader mLoader;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mInfo = new ArrayList<>();
+        mLoader = new StorageAsyncLoader(mContext, mCarUserManagerHelper, mSource);
+        UserInfo info = new UserInfo();
+        mUsers = new ArrayList<>();
+        mUsers.add(info);
+        when(mCarUserManagerHelper.getAllUsers()).thenReturn(mUsers);
+        when(mSource.getCacheQuotaBytes(any(), anyInt())).thenReturn(DEFAULT_QUOTA);
+        // there is always a "com.android.car.settings" package added by default with category
+        // otherAppsSize lets remove it first for testing.
+        getShadowApplicationManager().removePackage(DEFAULT_PACKAGE_NAME);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowApplicationPackageManager.reset();
+    }
+
+    @Test
+    public void testLoadingApps() throws Exception {
+        addPackage(PACKAGE_NAME_1, 0, 1, 10, ApplicationInfo.CATEGORY_UNDEFINED);
+        addPackage(PACKAGE_NAME_2, 0, 100, 1000, ApplicationInfo.CATEGORY_UNDEFINED);
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(1);
+        assertThat(result.get(PRIMARY_USER_ID).getGamesSize()).isEqualTo(0L);
+        assertThat(result.get(PRIMARY_USER_ID).getOtherAppsSize()).isEqualTo(2200L);
+    }
+
+    @Test
+    public void testGamesAreFiltered() throws Exception {
+        addPackage(PACKAGE_NAME_1, 0, 1, 10, ApplicationInfo.CATEGORY_GAME);
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(1);
+        assertThat(result.get(PRIMARY_USER_ID).getGamesSize()).isEqualTo(11L);
+        assertThat(result.get(PRIMARY_USER_ID).getOtherAppsSize()).isEqualTo(0L);
+    }
+
+    @Test
+    public void testLegacyGamesAreFiltered() throws Exception {
+        ApplicationInfo info =
+                addPackage(PACKAGE_NAME_1, 0, 1, 10, ApplicationInfo.CATEGORY_UNDEFINED);
+        info.flags = ApplicationInfo.FLAG_IS_GAME;
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(1);
+        assertThat(result.get(PRIMARY_USER_ID).getGamesSize()).isEqualTo(11L);
+        assertThat(result.get(PRIMARY_USER_ID).getOtherAppsSize()).isEqualTo(0L);
+    }
+
+    @Test
+    public void testCacheIsNotIgnored() throws Exception {
+        addPackage(PACKAGE_NAME_1, 100, 1, 10, ApplicationInfo.CATEGORY_UNDEFINED);
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(1);
+        assertThat(result.get(PRIMARY_USER_ID).getOtherAppsSize()).isEqualTo(111L);
+    }
+
+    @Test
+    public void testMultipleUsers() throws Exception {
+        UserInfo info = new UserInfo();
+        info.id = SECONDARY_USER_ID;
+        mUsers.add(info);
+        when(mSource.getExternalStorageStats(any(), eq(UserHandle.SYSTEM)))
+                .thenReturn(new StorageStatsSource.ExternalStorageStats(9, 2, 3, 4, 0));
+        when(mSource.getExternalStorageStats(any(), eq(new UserHandle(SECONDARY_USER_ID))))
+                .thenReturn(new StorageStatsSource.ExternalStorageStats(10, 3, 3, 4, 0));
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(2);
+        assertThat(result.get(PRIMARY_USER_ID).getExternalStats().totalBytes).isEqualTo(9L);
+        assertThat(result.get(SECONDARY_USER_ID).getExternalStats().totalBytes).isEqualTo(10L);
+    }
+
+    @Test
+    public void testUpdatedSystemAppCodeSizeIsCounted() throws Exception {
+        ApplicationInfo systemApp =
+                addPackage(PACKAGE_NAME_1, 100, 1, 10, ApplicationInfo.CATEGORY_UNDEFINED);
+        systemApp.flags = ApplicationInfo.FLAG_SYSTEM & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP;
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(1);
+        assertThat(result.get(PRIMARY_USER_ID).getOtherAppsSize()).isEqualTo(111L);
+    }
+
+    @Test
+    public void testVideoAppsAreFiltered() throws Exception {
+        addPackage(PACKAGE_NAME_1, 0, 1, 10, ApplicationInfo.CATEGORY_VIDEO);
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(1);
+        assertThat(result.get(PRIMARY_USER_ID).getVideoAppsSize()).isEqualTo(11L);
+        assertThat(result.get(PRIMARY_USER_ID).getOtherAppsSize()).isEqualTo(0L);
+    }
+
+    @Test
+    public void testRemovedPackageDoesNotCrash() throws Exception {
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = PACKAGE_NAME_1;
+        info.category = ApplicationInfo.CATEGORY_UNDEFINED;
+        mInfo.add(info);
+        when(mSource.getStatsForPackage(any(), anyString(), any(UserHandle.class)))
+                .thenThrow(new NameNotFoundException());
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        // Should not crash.
+    }
+
+    @Test
+    public void testPackageIsNotDoubleCounted() throws Exception {
+        UserInfo info = new UserInfo();
+        info.id = SECONDARY_USER_ID;
+        mUsers.add(info);
+        when(mSource.getExternalStorageStats(anyString(), eq(UserHandle.SYSTEM)))
+                .thenReturn(new StorageStatsSource.ExternalStorageStats(9, 2, 3, 4, 0));
+        when(mSource.getExternalStorageStats(anyString(), eq(new UserHandle(SECONDARY_USER_ID))))
+                .thenReturn(new StorageStatsSource.ExternalStorageStats(10, 3, 3, 4, 0));
+        addPackage(PACKAGE_NAME_1, 0, 1, 10, ApplicationInfo.CATEGORY_VIDEO);
+        ArrayList<ApplicationInfo> secondaryUserApps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.packageName = PACKAGE_NAME_1;
+        appInfo.category = ApplicationInfo.CATEGORY_VIDEO;
+        secondaryUserApps.add(appInfo);
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(2);
+        assertThat(result.get(PRIMARY_USER_ID).getVideoAppsSize()).isEqualTo(11L);
+        // No code size for the second user.
+        assertThat(result.get(SECONDARY_USER_ID).getVideoAppsSize()).isEqualTo(10L);
+    }
+
+    @Test
+    public void testCacheOveragesAreCountedAsFree() throws Exception {
+        addPackage(PACKAGE_NAME_1, DEFAULT_QUOTA + 100, 1, 10, ApplicationInfo.CATEGORY_UNDEFINED);
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> result = mLoader.loadInBackground();
+
+        assertThat(result.size()).isEqualTo(1);
+        assertThat(result.get(PRIMARY_USER_ID).getOtherAppsSize()).isEqualTo(DEFAULT_QUOTA + 11);
+    }
+
+    private ApplicationInfo addPackage(String packageName, long cacheSize, long codeSize,
+            long dataSize, int category) throws Exception {
+        StorageStats stats = new StorageStats();
+        stats.codeBytes = codeSize;
+        stats.dataBytes = dataSize + cacheSize;
+        stats.cacheBytes = cacheSize;
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+
+        when(mSource.getStatsForPackage(any(), anyString(), any(UserHandle.class)))
+                .thenReturn(storageStats);
+
+        ApplicationInfo info = new ApplicationInfo();
+        info.packageName = packageName;
+        info.category = category;
+        PackageInfo packageInfo = new PackageInfo();
+        packageInfo.applicationInfo = info;
+        packageInfo.packageName = packageName;
+        getShadowApplicationManager().addPackage(packageInfo);
+        return info;
+    }
+
+    private ShadowApplicationPackageManager getShadowApplicationManager() {
+        return Shadow.extract(mContext.getPackageManager());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageFileCategoryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageFileCategoryPreferenceControllerTest.java
new file mode 100644
index 0000000..81e6048
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageFileCategoryPreferenceControllerTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static android.os.storage.VolumeInfo.MOUNT_FLAG_PRIMARY;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserHandle;
+import android.os.storage.VolumeInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.ProgressBarPreference;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowStorageManagerVolumeProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link StorageFileCategoryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowStorageManagerVolumeProvider.class, ShadowCarUserManagerHelper.class})
+public class StorageFileCategoryPreferenceControllerTest {
+
+    private static final int TEST_USER = 10;
+
+    private Context mContext;
+    private ProgressBarPreference mProgressBarPreference;
+    private StorageFileCategoryPreferenceController mController;
+    private PreferenceControllerTestHelper<StorageFileCategoryPreferenceController>
+            mPreferenceControllerHelper;
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(RuntimeEnvironment.application);
+        mProgressBarPreference = new ProgressBarPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                StorageFileCategoryPreferenceController.class, mProgressBarPreference);
+        mController = mPreferenceControllerHelper.getController();
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowStorageManagerVolumeProvider.reset();
+    }
+
+    @Test
+    public void handlePreferenceClicked_currentUser_startNewActivity() {
+        VolumeInfo volumeInfo = new VolumeInfo("id", VolumeInfo.TYPE_EMULATED, null, "id");
+        volumeInfo.mountFlags = MOUNT_FLAG_PRIMARY;
+        ShadowStorageManagerVolumeProvider.setVolumeInfo(volumeInfo);
+
+        mProgressBarPreference.performClick();
+        ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mContext).startActivityAsUser(argumentCaptor.capture(), nullable(UserHandle.class));
+
+        Intent intent = argumentCaptor.getValue();
+        Intent browseIntent = volumeInfo.buildBrowseIntent();
+        assertThat(intent.getAction()).isEqualTo(browseIntent.getAction());
+        assertThat(intent.getData()).isEqualTo(browseIntent.getData());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceControllerTest.java
new file mode 100644
index 0000000..1bd79b0
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceControllerTest.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+
+/** Unit test for {@link StorageMediaCategoryDetailPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class StorageMediaCategoryDetailPreferenceControllerTest {
+
+    private static final String SOURCE = "source";
+    private static final int UID = 12;
+    private static final long EXTRA_AUDIO_BYTES = 100;
+    private static final String LABEL = "label";
+    private static final String SIZE_STR = "12.34 MB";
+    private static final String PACKAGE_NAME = "com.google.packageName";
+
+    private Context mContext;
+    private LogicalPreferenceGroup mLogicalPreferenceGroup;
+    private StorageMediaCategoryDetailPreferenceController mController;
+    private PreferenceControllerTestHelper<StorageMediaCategoryDetailPreferenceController>
+            mPreferenceControllerHelper;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mLogicalPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                StorageMediaCategoryDetailPreferenceController.class, mLogicalPreferenceGroup);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void refreshUi_defaultInitialize_hasNoPreference() {
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void onDataLoaded_addPreference_hasTwoPreferences() {
+        ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
+        ApplicationInfo appInfo = new ApplicationInfo();
+        appInfo.uid = UID;
+        appInfo.sourceDir = SOURCE;
+
+        ApplicationsState.AppEntry appEntry = new ApplicationsState.AppEntry(mContext, appInfo,
+                1234L);
+        appEntry.label = LABEL;
+        appEntry.sizeStr = SIZE_STR;
+        appEntry.icon = mContext.getDrawable(R.drawable.test_icon);
+        appEntry.info.packageName = PACKAGE_NAME;
+        apps.add(appEntry);
+
+        mController.setExternalAudioBytes(EXTRA_AUDIO_BYTES);
+        mController.onDataLoaded(apps);
+        // even when the manager notifies the controller again on data loaded the preference
+        // count should remain the same if new appEntries are not added.
+        mController.onDataLoaded(apps);
+
+        assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        assertThat(mLogicalPreferenceGroup.getPreference(0).getTitle()).isEqualTo(LABEL);
+        assertThat(mLogicalPreferenceGroup.getPreference(0).getSummary()).isEqualTo(SIZE_STR);
+
+        assertThat(mLogicalPreferenceGroup.getPreference(1).getTitle()).isEqualTo(
+                mContext.getString(R.string.storage_audio_files_title));
+        assertThat(mLogicalPreferenceGroup.getPreference(1).getSummary()).isEqualTo(
+                Long.toString(EXTRA_AUDIO_BYTES));
+    }
+
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryPreferenceControllerTest.java
new file mode 100644
index 0000000..a91ca10
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryPreferenceControllerTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.ProgressBarPreference;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link StorageMediaCategoryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class StorageMediaCategoryPreferenceControllerTest {
+
+    @Test
+    public void handlePreferenceClicked_shouldLaunchAccountSyncDetailsFragment() {
+        Context context = RuntimeEnvironment.application;
+        ProgressBarPreference progressBarPreference = new ProgressBarPreference(context);
+        PreferenceControllerTestHelper<StorageMediaCategoryPreferenceController> helper =
+                new PreferenceControllerTestHelper<>(context,
+                        StorageMediaCategoryPreferenceController.class, progressBarPreference);
+        FragmentController mMockFragmentController = helper.getMockFragmentController();
+        helper.markState(Lifecycle.State.CREATED);
+
+        progressBarPreference.performClick();
+
+        verify(mMockFragmentController).launchFragment(
+                any(StorageMediaCategoryDetailFragment.class));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageSettingsManagerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageSettingsManagerTest.java
new file mode 100644
index 0000000..4174d07
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageSettingsManagerTest.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.os.storage.VolumeInfo;
+import android.util.SparseArray;
+
+import androidx.loader.app.LoaderManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.settingslib.deviceinfo.PrivateStorageInfo;
+import com.android.settingslib.deviceinfo.StorageVolumeProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link StorageSettingsManager}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class StorageSettingsManagerTest {
+
+    private Context mContext;
+    private VolumeInfo mVolumeInfo;
+    private StorageSettingsManager mStorageSettingsManager;
+    @Captor
+    private ArgumentCaptor<LoaderManager
+            .LoaderCallbacks<SparseArray<StorageAsyncLoader.AppsStorageResult>>> mAppsStorageResult;
+    @Captor
+    private ArgumentCaptor<LoaderManager.LoaderCallbacks<PrivateStorageInfo>> mVolumeSizeCallback;
+
+    @Mock
+    private StorageSettingsManager.VolumeListener mVolumeListener1;
+
+    @Mock
+    private StorageSettingsManager.VolumeListener mVolumeListener2;
+
+    @Mock
+    private LoaderManager mLoaderManager;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mStorageSettingsManager = new StorageSettingsManager(mContext, mVolumeInfo);
+        mStorageSettingsManager.startLoading(mLoaderManager);
+        verify(mLoaderManager, times(1)).restartLoader(eq(0), eq(Bundle.EMPTY),
+                mAppsStorageResult.capture());
+        verify(mLoaderManager, times(1)).restartLoader(eq(1), eq(Bundle.EMPTY),
+                mVolumeSizeCallback.capture());
+    }
+
+    @Test
+    public void volumeSizeCallback_onLoadFinished_listenerOnSizeCalculatedCalled()
+            throws Exception {
+        mStorageSettingsManager.registerListener(mVolumeListener1);
+        mStorageSettingsManager.registerListener(mVolumeListener2);
+
+        StorageVolumeProvider storageVolumeProvider = mock(StorageVolumeProvider.class);
+        when(storageVolumeProvider.getTotalBytes(any(), any())).thenReturn(10000L);
+        when(storageVolumeProvider.getFreeBytes(any(), any())).thenReturn(1000L);
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> data = new SparseArray<>();
+        mAppsStorageResult.getValue().onLoadFinished(null, data);
+
+        PrivateStorageInfo storageInfo = new VolumeSizesLoader(mContext, storageVolumeProvider,
+                null, mVolumeInfo).loadInBackground();
+
+        mVolumeSizeCallback.getValue().onLoadFinished(null, storageInfo);
+
+        verify(mVolumeListener1, times(1)).onDataLoaded(data, 9000L, 10000L);
+        verify(mVolumeListener2, times(1)).onDataLoaded(data, 9000L, 10000L);
+    }
+
+    @Test
+    public void appsStorageResult_unregisterListener_onlyOneListenerOnDataLoadedCalled()
+            throws Exception {
+        mStorageSettingsManager.registerListener(mVolumeListener1);
+        mStorageSettingsManager.registerListener(mVolumeListener2);
+        mStorageSettingsManager.unregisterlistener(mVolumeListener2);
+        SparseArray<StorageAsyncLoader.AppsStorageResult> data = new SparseArray<>();
+        mAppsStorageResult.getValue().onLoadFinished(null, data);
+
+        StorageVolumeProvider storageVolumeProvider = mock(StorageVolumeProvider.class);
+        when(storageVolumeProvider.getTotalBytes(any(), any())).thenReturn(10000L);
+        when(storageVolumeProvider.getFreeBytes(any(), any())).thenReturn(1000L);
+
+        PrivateStorageInfo storageInfo = new VolumeSizesLoader(mContext, storageVolumeProvider,
+                null, mVolumeInfo).loadInBackground();
+
+        mVolumeSizeCallback.getValue().onLoadFinished(null, storageInfo);
+
+        verify(mVolumeListener1, times(1)).onDataLoaded(data, 9000L, 10000L);
+        verify(mVolumeListener2, never()).onDataLoaded(data, 9000L, 10000L);
+    }
+
+    @Test
+    public void onReceivedSizes_storageResultNotLoaded_noListenersCalled()
+            throws Exception {
+        mStorageSettingsManager.registerListener(mVolumeListener1);
+        mStorageSettingsManager.registerListener(mVolumeListener2);
+        SparseArray<StorageAsyncLoader.AppsStorageResult> data = new SparseArray<>();
+
+        StorageVolumeProvider storageVolumeProvider = mock(StorageVolumeProvider.class);
+        when(storageVolumeProvider.getTotalBytes(any(), any())).thenReturn(10000L);
+        when(storageVolumeProvider.getFreeBytes(any(), any())).thenReturn(1000L);
+
+        PrivateStorageInfo storageInfo = new VolumeSizesLoader(mContext, storageVolumeProvider,
+                null, mVolumeInfo).loadInBackground();
+        mVolumeSizeCallback.getValue().onLoadFinished(null, storageInfo);
+
+        verify(mVolumeListener1, never()).onDataLoaded(data, 9000L, 10000L);
+        verify(mVolumeListener2, never()).onDataLoaded(data, 9000L, 10000L);
+    }
+
+    @Test
+    public void onReceivedSizes_volumeSizeNotLoaded_noListenersCalled()
+            throws Exception {
+        mStorageSettingsManager.registerListener(mVolumeListener1);
+        mStorageSettingsManager.registerListener(mVolumeListener2);
+
+        SparseArray<StorageAsyncLoader.AppsStorageResult> data = new SparseArray<>();
+        mAppsStorageResult.getValue().onLoadFinished(null, data);
+
+        StorageVolumeProvider storageVolumeProvider = mock(StorageVolumeProvider.class);
+        when(storageVolumeProvider.getTotalBytes(any(), any())).thenReturn(10000L);
+        when(storageVolumeProvider.getFreeBytes(any(), any())).thenReturn(1000L);
+
+        PrivateStorageInfo storageInfo = new VolumeSizesLoader(mContext, storageVolumeProvider,
+                null, mVolumeInfo).loadInBackground();
+
+        verify(mVolumeListener1, never()).onDataLoaded(data, 9000L, 10000L);
+        verify(mVolumeListener2, never()).onDataLoaded(data, 9000L, 10000L);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageSizeBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageSizeBasePreferenceControllerTest.java
new file mode 100644
index 0000000..bc63120
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageSizeBasePreferenceControllerTest.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.app.usage.StorageStats;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.applications.StorageStatsSource;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link StorageSizeBasePreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class StorageSizeBasePreferenceControllerTest {
+
+    private StorageAppDetailPreference mStorageAppDetailPreference;
+    private TestStorageSizeBasePreferenceController mController;
+    private PreferenceControllerTestHelper<TestStorageSizeBasePreferenceController>
+            mPreferenceControllerHelper;
+
+    @Mock
+    private AppsStorageStatsManager mAppsStorageStatsManager;
+
+    private static class TestStorageSizeBasePreferenceController extends
+            StorageSizeBasePreferenceController {
+
+        TestStorageSizeBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected long getSize() {
+            return 1_000_000_000;
+        }
+    }
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        mStorageAppDetailPreference = new StorageAppDetailPreference(context);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                TestStorageSizeBasePreferenceController.class, mStorageAppDetailPreference);
+        mController = mPreferenceControllerHelper.getController();
+    }
+
+    @Test
+    public void refreshUi_defaultState_nothingIsSet() {
+        assertThat(mStorageAppDetailPreference.getDetailText()).isNull();
+        assertThat(mController.isCachedCleared()).isFalse();
+        assertThat(mController.isDataCleared()).isFalse();
+        assertThat(mController.getAppStorageStats()).isNull();
+    }
+
+    @Test
+    public void setAppsStorageStatsManager_shouldRegisterController() {
+        mController.setAppsStorageStatsManager(mAppsStorageStatsManager);
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+
+        verify(mAppsStorageStatsManager).registerListener(mController);
+    }
+
+    @Test
+    public void onDataLoaded_shouldUpdateCachedAndDataClearedState() {
+        mController.onDataLoaded(null, true, true);
+
+        assertThat(mController.isCachedCleared()).isTrue();
+        assertThat(mController.isDataCleared()).isTrue();
+    }
+
+    @Test
+    public void onDataLoaded_appStorageStatsNotSet_shouldNotUpdateDetailText() {
+        mController.onDataLoaded(null, true, true);
+
+        assertThat(mController.getAppStorageStats()).isNull();
+        assertThat(mStorageAppDetailPreference.getDetailText()).isNull();
+    }
+
+    @Test
+    public void onDataLoaded_appStorageStatsSet_shouldUpdateDetailText() {
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+
+        StorageStats stats = new StorageStats();
+        StorageStatsSource.AppStorageStats storageStats =
+                new StorageStatsSource.AppStorageStatsImpl(stats);
+        mController.setAppStorageStats(storageStats);
+        mController.onDataLoaded(null, true, true);
+
+        assertThat(mController.getAppStorageStats()).isNotNull();
+        assertThat(mStorageAppDetailPreference.getDetailText()).isEqualTo("1.00 GB");
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageSystemCategoryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageSystemCategoryPreferenceControllerTest.java
new file mode 100644
index 0000000..97e99e0
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageSystemCategoryPreferenceControllerTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.os.Build;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.ProgressBarPreference;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowAlertDialog;
+import org.robolectric.shadows.ShadowApplication;
+
+/** Unit test for {@link StorageSystemCategoryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class StorageSystemCategoryPreferenceControllerTest {
+
+    @Test
+    public void handlePreferenceClicked_openAlertDialog() {
+        Context context = RuntimeEnvironment.application;
+        ProgressBarPreference progressBarPreference = new ProgressBarPreference(context);
+        PreferenceControllerTestHelper<StorageSystemCategoryPreferenceController>
+                preferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                StorageSystemCategoryPreferenceController.class, progressBarPreference);
+        preferenceControllerHelper.markState(Lifecycle.State.CREATED);
+        progressBarPreference.performClick();
+
+        ShadowAlertDialog dialog = ShadowApplication.getInstance().getLatestAlertDialog();
+
+        assertThat(dialog.getMessage().toString()).contains(
+                context.getResources().getString(R.string.storage_detail_dialog_system,
+                        Build.VERSION.RELEASE));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageUsageBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageUsageBasePreferenceControllerTest.java
new file mode 100644
index 0000000..c44ee03
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageUsageBasePreferenceControllerTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.android.car.settings.storage.FileSizeFormatter.MEGABYTE_IN_BYTES;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.util.SparseArray;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.ProgressBarPreference;
+import com.android.settingslib.applications.StorageStatsSource;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link StorageUsageBasePreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class StorageUsageBasePreferenceControllerTest {
+
+    private Context mContext;
+    private ProgressBarPreference mProgressBarPreference;
+    private TestStorageUsageBasePreferenceController mController;
+    private PreferenceControllerTestHelper<TestStorageUsageBasePreferenceController>
+            mPreferenceControllerHelper;
+
+    private static class TestStorageUsageBasePreferenceController extends
+            StorageUsageBasePreferenceController {
+
+        TestStorageUsageBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        public long calculateCategoryUsage(
+                SparseArray<StorageAsyncLoader.AppsStorageResult> result, long usedSizeBytes) {
+            return 1_000_000_000;
+        }
+    }
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mProgressBarPreference = new ProgressBarPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestStorageUsageBasePreferenceController.class, mProgressBarPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void refreshUi_defaultInitialize_hasDefaultSummary() {
+        assertThat(mProgressBarPreference.getSummary().toString())
+                .isEqualTo(mContext.getString(R.string.memory_calculating_size));
+    }
+
+    @Test
+    public void onDataLoaded_setsSummary() {
+        SparseArray<StorageAsyncLoader.AppsStorageResult> results = new SparseArray<>();
+        StorageAsyncLoader.AppsStorageResult result =
+                new StorageAsyncLoader.AppsStorageResult(0, 0, 0, 0, 0);
+        result.setExternalStats(
+                new StorageStatsSource.ExternalStorageStats(
+                        MEGABYTE_IN_BYTES * 500, // total
+                        MEGABYTE_IN_BYTES * 100, // audio
+                        MEGABYTE_IN_BYTES * 150, // video
+                        MEGABYTE_IN_BYTES * 200, 0)); // image
+        results.put(0, result);
+        mController.onDataLoaded(results, 100, 100);
+
+        assertThat(mProgressBarPreference.getSummary().toString()).isEqualTo("1.0 GB");
+    }
+
+    @Test
+    public void onDataLoaded_setProgressBarPercentage() {
+        SparseArray<StorageAsyncLoader.AppsStorageResult> results = new SparseArray<>();
+        StorageAsyncLoader.AppsStorageResult result =
+                new StorageAsyncLoader.AppsStorageResult(0, 0, 0, 0, 0);
+        result.setExternalStats(
+                new StorageStatsSource.ExternalStorageStats(
+                        MEGABYTE_IN_BYTES * 500, // total
+                        MEGABYTE_IN_BYTES * 100, // audio
+                        MEGABYTE_IN_BYTES * 150, // video
+                        MEGABYTE_IN_BYTES * 200, 0)); // image
+        results.put(0, result);
+        mController.onDataLoaded(results, 100, 2_000_000_000);
+        // usage size is half the total size i.e percentage of storage used should be 50.
+        assertThat(mProgressBarPreference.getProgress()).isEqualTo(50);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageUtilsTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageUtilsTest.java
new file mode 100644
index 0000000..17964d8
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageUtilsTest.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static android.os.storage.VolumeInfo.STATE_MOUNTED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.os.Bundle;
+import android.os.storage.StorageManager;
+import android.os.storage.VolumeInfo;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/** Unit test for {@link StorageUtils}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class StorageUtilsTest {
+
+    @Mock
+    private StorageManager mStorageManager;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void maybeInitializeVolume_mounted_shouldReturnVolumeInfo() {
+        VolumeInfo volumeInfo = new VolumeInfo("id", VolumeInfo.TYPE_PRIVATE, null, "id");
+        volumeInfo.state = STATE_MOUNTED;
+
+        when(mStorageManager.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL)).thenReturn(volumeInfo);
+
+        VolumeInfo expected = StorageUtils.maybeInitializeVolume(mStorageManager, null);
+
+        assertThat(expected).isEqualTo(volumeInfo);
+    }
+
+    @Test
+    public void maybeInitializeVolume_notMounted_shouldNotReturnVolumeInfo() {
+        VolumeInfo volumeInfo = new VolumeInfo("id", VolumeInfo.TYPE_PRIVATE, null, "id");
+
+        when(mStorageManager.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL)).thenReturn(volumeInfo);
+
+        VolumeInfo expected = StorageUtils.maybeInitializeVolume(mStorageManager, null);
+
+        assertThat(expected).isNull();
+    }
+
+    @Test
+    public void maybeInitializeVolume_differentType_shouldNotReturnVolumeInfo() {
+        VolumeInfo volumeInfo = new VolumeInfo("id", VolumeInfo.TYPE_EMULATED, null, "id");
+
+        when(mStorageManager.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL)).thenReturn(volumeInfo);
+
+        VolumeInfo expected = StorageUtils.maybeInitializeVolume(mStorageManager, null);
+
+        assertThat(expected).isNull();
+    }
+
+    @Test
+    public void maybeInitializeVolume_defaultId_notMounted_returnsNull() {
+        VolumeInfo volumeInfo = new VolumeInfo("id", VolumeInfo.TYPE_EMULATED, null, "id");
+        Bundle bundle = new Bundle();
+        when(mStorageManager.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL)).thenReturn(volumeInfo);
+
+        VolumeInfo expected = StorageUtils.maybeInitializeVolume(mStorageManager, bundle);
+
+        assertThat(expected).isNull();
+    }
+
+    @Test
+    public void maybeInitializeVolume_getDefaultIdFromBundle_mounted_shouldReturnVolumeInfo() {
+        VolumeInfo volumeInfo = new VolumeInfo("id", VolumeInfo.TYPE_PRIVATE, null, "id");
+        volumeInfo.state = STATE_MOUNTED;
+        Bundle bundle = new Bundle();
+        when(mStorageManager.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL)).thenReturn(volumeInfo);
+
+        VolumeInfo expected = StorageUtils.maybeInitializeVolume(mStorageManager, bundle);
+
+        assertThat(expected).isEqualTo(volumeInfo);
+    }
+
+    @Test
+    public void maybeInitializeVolume_getIdFromBundle_shouldReturnVolumeInfo() {
+        VolumeInfo volumeInfo = new VolumeInfo("id", VolumeInfo.TYPE_PRIVATE, null, "id");
+        volumeInfo.state = STATE_MOUNTED;
+        Bundle bundle = new Bundle();
+        bundle.putString(VolumeInfo.EXTRA_VOLUME_ID, VolumeInfo.ID_EMULATED_INTERNAL);
+        when(mStorageManager.findVolumeById(VolumeInfo.ID_EMULATED_INTERNAL)).thenReturn(
+                volumeInfo);
+
+        VolumeInfo expected = StorageUtils.maybeInitializeVolume(mStorageManager, bundle);
+
+        assertThat(expected).isEqualTo(volumeInfo);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/VolumeSizesLoaderTest.java b/tests/robotests/src/com/android/car/settings/storage/VolumeSizesLoaderTest.java
new file mode 100644
index 0000000..bd5eb2c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/storage/VolumeSizesLoaderTest.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2019 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.car.settings.storage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.storage.VolumeInfo;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.settingslib.deviceinfo.PrivateStorageInfo;
+import com.android.settingslib.deviceinfo.StorageVolumeProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link VolumeSizesLoader}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class VolumeSizesLoaderTest {
+
+    private Context mContext;
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = RuntimeEnvironment.application;
+    }
+
+    @Test
+    public void getVolumeSize_getsValidSizes() throws Exception {
+        VolumeInfo info = mock(VolumeInfo.class);
+        StorageVolumeProvider storageVolumeProvider = mock(StorageVolumeProvider.class);
+        when(storageVolumeProvider.getTotalBytes(any(), any())).thenReturn(10000L);
+        when(storageVolumeProvider.getFreeBytes(any(), any())).thenReturn(1000L);
+
+        PrivateStorageInfo storageInfo = new VolumeSizesLoader(mContext, storageVolumeProvider,
+                null, info).loadInBackground();
+
+        assertThat(storageInfo.freeBytes).isEqualTo(1000L);
+        assertThat(storageInfo.totalBytes).isEqualTo(10000L);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/suggestions/SuggestionPreferenceTest.java b/tests/robotests/src/com/android/car/settings/suggestions/SuggestionPreferenceTest.java
new file mode 100644
index 0000000..cc1478f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/suggestions/SuggestionPreferenceTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2018 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.car.settings.suggestions;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Icon;
+import android.graphics.drawable.ShapeDrawable;
+import android.service.settings.suggestions.Suggestion;
+import android.view.View;
+
+import androidx.appcompat.view.ContextThemeWrapper;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+/** Unit test for {@link SuggestionPreference}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class SuggestionPreferenceTest {
+
+    private static final String SUGGESTION_ID = "id";
+
+    @Mock
+    private SuggestionPreference.Callback mCallback;
+    private Suggestion mSuggestion;
+    private PreferenceViewHolder mHolder;
+    private SuggestionPreference mPref;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+
+        mSuggestion = new Suggestion.Builder(SUGGESTION_ID).build();
+        Context themedContext = new ContextThemeWrapper(context, R.style.CarSettingTheme);
+        View rootView = View.inflate(themedContext, R.layout.suggestion_preference, null);
+        mHolder = PreferenceViewHolder.createInstanceForTests(rootView);
+        mPref = new SuggestionPreference(context, mSuggestion, mCallback);
+    }
+
+    @Test
+    public void getSuggestion_returnsSuggestion() {
+        assertThat(mPref.getSuggestion()).isEqualTo(mSuggestion);
+    }
+
+    @Test
+    public void updateSuggestion_updatesPreference() {
+        Icon icon = mock(Icon.class);
+        Drawable iconDrawable = new ShapeDrawable();
+        when(icon.loadDrawable(any(Context.class))).thenReturn(iconDrawable);
+        String title = "title";
+        String summary = "summary";
+        Suggestion updatedSuggestion = new Suggestion.Builder(SUGGESTION_ID).setIcon(icon).setTitle(
+                title).setSummary(summary).build();
+
+        mPref.updateSuggestion(updatedSuggestion);
+
+        assertThat(mPref.getSuggestion()).isEqualTo(updatedSuggestion);
+        assertThat(mPref.getIcon()).isEqualTo(iconDrawable);
+        assertThat(mPref.getTitle()).isEqualTo(title);
+        assertThat(mPref.getSummary()).isEqualTo(summary);
+    }
+
+    @Test
+    public void updateSuggestion_idMismatch_throwsIllegalArgumentException() {
+        Suggestion updatedSuggestion = new Suggestion.Builder(SUGGESTION_ID + "wrong id").build();
+
+        assertThrows(IllegalArgumentException.class,
+                () -> mPref.updateSuggestion(updatedSuggestion));
+    }
+
+    @Test
+    public void getKey_includesSuggestionId() {
+        assertThat(mPref.getKey()).isEqualTo(
+                SuggestionPreference.SUGGESTION_PREFERENCE_KEY + SUGGESTION_ID);
+    }
+
+    @Test
+    public void onClick_callsLaunchSuggestion() {
+        mPref.onBindViewHolder(mHolder);
+
+        mHolder.itemView.performClick();
+
+        verify(mCallback).launchSuggestion(mPref);
+    }
+
+    @Test
+    public void dismissButtonClick_callsDismissSuggestion() {
+        mPref.onBindViewHolder(mHolder);
+
+        mHolder.findViewById(R.id.dismiss_button).performClick();
+
+        verify(mCallback).dismissSuggestion(mPref);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/suggestions/SuggestionsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/suggestions/SuggestionsPreferenceControllerTest.java
new file mode 100644
index 0000000..6dbb518
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/suggestions/SuggestionsPreferenceControllerTest.java
@@ -0,0 +1,257 @@
+/*
+ * Copyright (C) 2018 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.car.settings.suggestions;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.testng.Assert.assertThrows;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.service.settings.suggestions.Suggestion;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.suggestions.SuggestionController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/** Unit test for {@link SuggestionsPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class SuggestionsPreferenceControllerTest {
+
+    private static final Suggestion SUGGESTION_1 = new Suggestion.Builder("1").build();
+    private static final Suggestion SUGGESTION_2 = new Suggestion.Builder("2").build();
+
+    @Mock
+    private LoaderManager mLoaderManager;
+    @Mock
+    private Loader<List<Suggestion>> mLoader;
+    @Mock
+    private SuggestionController mSuggestionController;
+    private Context mContext;
+    private PreferenceGroup mGroup;
+    private PreferenceControllerTestHelper<SuggestionsPreferenceController> mControllerHelper;
+    private SuggestionsPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        mGroup = new PreferenceCategory(mContext);
+
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                SuggestionsPreferenceController.class);
+        mController = mControllerHelper.getController();
+        mController.setLoaderManager(mLoaderManager);
+        ReflectionHelpers.setField(SuggestionsPreferenceController.class, mController,
+                "mSuggestionController", mSuggestionController);
+        mControllerHelper.setPreference(mGroup);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+    }
+
+    @Test
+    public void setPreference_loaderManagerSet_doesNothing() {
+        PreferenceControllerTestHelper<SuggestionsPreferenceController> helper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        SuggestionsPreferenceController.class);
+        mController = helper.getController();
+        mController.setLoaderManager(mLoaderManager);
+
+        helper.setPreference(new PreferenceCategory(mContext));
+    }
+
+    @Test
+    public void checkInitialized_nullLoaderManager_throwsIllegalStateException() {
+        PreferenceControllerTestHelper<SuggestionsPreferenceController> helper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        SuggestionsPreferenceController.class);
+
+        assertThrows(IllegalStateException.class,
+                () -> helper.setPreference(new PreferenceCategory(mContext)));
+    }
+
+    @Test
+    public void onStart_noSuggestions_hidesGroup() {
+        assertThat(mGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void onStart_startsSuggestionController() {
+        verify(mSuggestionController).start();
+    }
+
+    @Test
+    public void onStop_stopsSuggestionController() {
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        verify(mSuggestionController).stop();
+    }
+
+    @Test
+    public void onStop_destroysLoader() {
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        verify(mLoaderManager).destroyLoader(SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS);
+    }
+
+    @Test
+    public void onServiceConnected_restartsLoader() {
+        mController.onServiceConnected();
+
+        verify(mLoaderManager).restartLoader(
+                SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS, /* args= */ null, mController);
+    }
+
+    @Test
+    public void onServiceDisconnected_destroysLoader() {
+        mController.onServiceDisconnected();
+
+        verify(mLoaderManager).destroyLoader(SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS);
+    }
+
+    @Test
+    public void onCreateLoader_returnsSettingsSuggestionsLoader() {
+        assertThat(mController.onCreateLoader(
+                SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS, /* args= */ null)).isInstanceOf(
+                SettingsSuggestionsLoader.class);
+    }
+
+    @Test
+    public void onCreateLoader_unsupportedId_throwsIllegalArgumentException() {
+        assertThrows(IllegalArgumentException.class, () -> mController.onCreateLoader(
+                SettingsSuggestionsLoader.LOADER_ID_SUGGESTIONS + 1000, /* args= */ null));
+    }
+
+    @Test
+    public void onLoadFinished_groupContainsSuggestionPreference() {
+        mController.onLoadFinished(mLoader, Collections.singletonList(SUGGESTION_1));
+
+        assertThat(mGroup.getPreferenceCount()).isEqualTo(1);
+        Preference addedPref = mGroup.getPreference(0);
+        assertThat(addedPref).isInstanceOf(SuggestionPreference.class);
+    }
+
+    @Test
+    public void onLoadFinished_newSuggestion_addsToGroup() {
+        mController.onLoadFinished(mLoader, Collections.singletonList(SUGGESTION_1));
+        assertThat(mGroup.getPreferenceCount()).isEqualTo(1);
+
+        mController.onLoadFinished(mLoader, Arrays.asList(SUGGESTION_1, SUGGESTION_2));
+
+        assertThat(mGroup.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void onLoadFinished_removedSuggestion_removesFromGroup() {
+        mController.onLoadFinished(mLoader, Arrays.asList(SUGGESTION_1, SUGGESTION_2));
+        assertThat(mGroup.getPreferenceCount()).isEqualTo(2);
+
+        mController.onLoadFinished(mLoader, Collections.singletonList(SUGGESTION_2));
+
+        assertThat(mGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(((SuggestionPreference) mGroup.getPreference(0)).getSuggestion()).isEqualTo(
+                SUGGESTION_2);
+    }
+
+    @Test
+    public void onLoadFinished_noSuggestions_hidesGroup() {
+        mController.onLoadFinished(mLoader, Collections.singletonList(SUGGESTION_1));
+        assertThat(mGroup.isVisible()).isTrue();
+
+        mController.onLoadFinished(mLoader, Collections.emptyList());
+
+        assertThat(mGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void launchSuggestion_sendsPendingIntent() throws PendingIntent.CanceledException {
+        PendingIntent pendingIntent = mock(PendingIntent.class);
+        Suggestion suggestion = new Suggestion.Builder("1").setPendingIntent(pendingIntent).build();
+        SuggestionPreference preference = new SuggestionPreference(mContext,
+                suggestion, /* callback= */ null);
+
+        mController.launchSuggestion(preference);
+
+        verify(pendingIntent).send();
+    }
+
+    @Test
+    public void launchSuggestion_callsSuggestionControllerLaunch() {
+        PendingIntent pendingIntent = mock(PendingIntent.class);
+        Suggestion suggestion = new Suggestion.Builder("1").setPendingIntent(pendingIntent).build();
+        SuggestionPreference preference = new SuggestionPreference(mContext,
+                suggestion, /* callback= */ null);
+
+        mController.launchSuggestion(preference);
+
+        verify(mSuggestionController).launchSuggestion(suggestion);
+    }
+
+    @Test
+    public void dismissSuggestion_removesSuggestion() {
+        mController.onLoadFinished(mLoader, Arrays.asList(SUGGESTION_1, SUGGESTION_2));
+        assertThat(mGroup.getPreferenceCount()).isEqualTo(2);
+        SuggestionPreference pref = (SuggestionPreference) mGroup.getPreference(0);
+
+        mController.dismissSuggestion(pref);
+
+        assertThat(mGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(((SuggestionPreference) mGroup.getPreference(0)).getSuggestion()).isEqualTo(
+                SUGGESTION_2);
+    }
+
+    @Test
+    public void dismissSuggestion_lastSuggestion_hidesGroup() {
+        mController.onLoadFinished(mLoader, Collections.singletonList(SUGGESTION_1));
+        SuggestionPreference pref = (SuggestionPreference) mGroup.getPreference(0);
+
+        mController.dismissSuggestion(pref);
+
+        assertThat(mGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void dismissSuggestion_callsSuggestionControllerDismiss() {
+        mController.onLoadFinished(mLoader, Collections.singletonList(SUGGESTION_1));
+        SuggestionPreference pref = (SuggestionPreference) mGroup.getPreference(0);
+
+        mController.dismissSuggestion(pref);
+
+        verify(mSuggestionController).dismissSuggestions(pref.getSuggestion());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java
new file mode 100644
index 0000000..ade3c89
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/BluetoothMacAddressPreferenceControllerTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.bluetooth.BluetoothAdapter;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowBluetoothPan;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link BluetoothMacAddressPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowBluetoothPan.class})
+public class BluetoothMacAddressPreferenceControllerTest {
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<BluetoothMacAddressPreferenceController>
+            mControllerHelper;
+    private Preference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+
+        // Construct controller.
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+            BluetoothMacAddressPreferenceController.class, mPreference);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowBluetoothAdapter.reset();
+    }
+
+    @Test
+    public void refreshUi_setsAddress() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+
+        // Make sure controller is available.
+        BluetoothAdapter.getDefaultAdapter().enable();
+        getShadowBluetoothAdapter().setState(BluetoothAdapter.STATE_ON);
+
+        String address = "address";
+        getShadowBluetoothAdapter().setAddress(address);
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreference.getSummary()).isEqualTo(address);
+    }
+
+    @Test
+    public void getAvailabilityStatus_featureBluetooth_unsupportedOnDevice() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ false);
+
+        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+                UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_enableDefaultAdapter_available() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                FEATURE_BLUETOOTH, /* supported= */ true);
+
+        assertThat(mControllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+                AVAILABLE);
+    }
+
+    private ShadowBluetoothAdapter getShadowBluetoothAdapter() {
+        return (ShadowBluetoothAdapter) Shadow.extract(BluetoothAdapter.getDefaultAdapter());
+    }
+}
+
diff --git a/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
new file mode 100644
index 0000000..f9e9a6c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.development.DevelopmentSettingsUtil;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowToast;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class BuildNumberPreferenceControllerTest {
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<BuildNumberPreferenceController>
+            mPreferenceControllerHelper;
+    private BuildNumberPreferenceController mController;
+    private Preference mPreference;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                BuildNumberPreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+
+        // By default, user is an admin user.
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+
+        // By default, no restrictions on debugging features.
+        when(mCarUserManagerHelper.getCurrentProcessUserInfo()).thenReturn(new UserInfo());
+        when(mCarUserManagerHelper.hasUserRestriction(eq(UserManager.DISALLOW_DEBUGGING_FEATURES),
+                any(UserInfo.class))).thenReturn(false);
+
+        // By default device is provisioned.
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 1);
+
+        // By default development settings is disabled.
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_RESUME);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_notProvisioned_returnFalse() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0);
+        assertThat(mController.handlePreferenceClicked(mPreference)).isFalse();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_nonAdmin_returnFalse() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+
+        assertThat(mController.handlePreferenceClicked(mPreference)).isFalse();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_demoUser_returnsTrue() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(true);
+
+        assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_adminUser_returnsTrue() {
+        assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_firstClick_noToast() {
+        mPreference.performClick();
+        assertThat(ShadowToast.shownToastCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_someClicks_showToast() {
+        for (int i = 0; i < getTapsToShowToast(); i++) {
+            mPreference.performClick();
+        }
+
+        int remainingClicks = getTapsToBecomeDeveloper() - getTapsToShowToast();
+        assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
+                mContext.getResources().getQuantityString(R.plurals.show_dev_countdown,
+                        remainingClicks, remainingClicks));
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_allClicks_showDevEnabledToast() {
+        for (int i = 0; i < getTapsToBecomeDeveloper(); i++) {
+            mPreference.performClick();
+        }
+        assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
+                mContext.getString(R.string.show_dev_on));
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_allClicks_devSettingsEnabled() {
+        for (int i = 0; i < getTapsToBecomeDeveloper(); i++) {
+            mPreference.performClick();
+        }
+        assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+                mCarUserManagerHelper)).isTrue();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsDisabled_extraClicks_noAlreadyDevToast() {
+        int extraClicks = 100;
+        for (int i = 0; i < getTapsToBecomeDeveloper() + extraClicks; i++) {
+            mPreference.performClick();
+        }
+        assertThat(
+                ShadowToast.showedToast(mContext.getString(R.string.show_dev_already))).isFalse();
+    }
+
+    @Test
+    public void testHandlePreferenceClicked_devSettingsEnabled_click_showAlreadyDevToast() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_PAUSE);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_RESUME);
+        mPreference.performClick();
+        assertThat(ShadowToast.showedToast(mContext.getString(R.string.show_dev_already))).isTrue();
+    }
+
+    private int getTapsToBecomeDeveloper() {
+        return mContext.getResources().getInteger(R.integer.enable_developer_settings_click_count);
+    }
+
+    private int getTapsToShowToast() {
+        return mContext.getResources().getInteger(
+                R.integer.enable_developer_settings_clicks_to_show_toast_count);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..6f3a29b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceControllerTest.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class DeveloperOptionsEntryPreferenceControllerTest {
+
+    private Context mContext;
+    private DeveloperOptionsEntryPreferenceController mController;
+    private UserInfo mUserInfo;
+    @Mock
+    private CarUserManagerHelper mShadowCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mShadowCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        mController = new PreferenceControllerTestHelper<>(mContext,
+                DeveloperOptionsEntryPreferenceController.class,
+                new Preference(mContext)).getController();
+
+        // Setup admin user who is able to enable developer settings.
+        mUserInfo = new UserInfo();
+        when(mShadowCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+        when(mShadowCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+        when(mShadowCarUserManagerHelper.getCurrentProcessUserInfo()).thenReturn(mUserInfo);
+        new CarUserManagerHelper(mContext).setUserRestriction(mUserInfo,
+                UserManager.DISALLOW_DEBUGGING_FEATURES, false);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_devOptionsEnabled_isAvailable() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_devOptionsDisabled_isUnavailable() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void testGetAvailabilityStatus_devOptionsEnabled_hasUserRestriction_isUnavailable() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+        new CarUserManagerHelper(mContext).setUserRestriction(mUserInfo,
+                UserManager.DISALLOW_DEBUGGING_FEATURES, true);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearAccountsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearAccountsPreferenceControllerTest.java
new file mode 100644
index 0000000..9f582a2
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearAccountsPreferenceControllerTest.java
@@ -0,0 +1,209 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.UserManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowAccountManager;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+/** Unit test for {@link MasterClearAccountsPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserManager.class,
+        ShadowAccountManager.class})
+public class MasterClearAccountsPreferenceControllerTest {
+
+    private static final int USER_ID = 111;
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private PreferenceControllerTestHelper<MasterClearAccountsPreferenceController>
+            mControllerHelper;
+    private MasterClearAccountsPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(USER_ID);
+
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new PreferenceCategory(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                MasterClearAccountsPreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowUserManager.reset();
+    }
+
+    @Test
+    public void onCreate_addsTitlePreference() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getTitle()).isEqualTo(
+                mContext.getString(R.string.master_clear_accounts));
+    }
+
+    @Test
+    public void refreshUi_accountsPresent_showsGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        getShadowUserManager().addProfile(USER_ID, USER_ID,
+                String.valueOf(USER_ID), /* profileFlags= */ 0);
+        addAccountAndDescription(USER_ID, "accountName");
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_noAccountsPresent_hidesGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        getShadowUserManager().addProfile(USER_ID, USER_ID,
+                String.valueOf(USER_ID), /* profileFlags= */ 0);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_multipleProfiles_showsAllAccounts() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        int profileId1 = 112;
+        getShadowUserManager().addProfile(USER_ID, profileId1,
+                String.valueOf(profileId1), /* profileFlags= */ 0);
+        String accountName1 = "accountName1";
+        addAccountAndDescription(profileId1, accountName1);
+
+        int profileId2 = 113;
+        getShadowUserManager().addProfile(USER_ID, profileId2,
+                String.valueOf(profileId2), /* profileFlags= */ 0);
+        String accountName2 = "accountName2";
+        addAccountAndDescription(profileId2, accountName2);
+
+        mController.refreshUi();
+
+        // Title + two profiles with one account each.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+        assertThat(mPreferenceGroup.getPreference(1).getTitle()).isEqualTo(accountName1);
+        assertThat(mPreferenceGroup.getPreference(2).getTitle()).isEqualTo(accountName2);
+    }
+
+    @Test
+    public void refreshUi_missingAccountDescription_skipsAccount() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        getShadowUserManager().addProfile(USER_ID, USER_ID,
+                String.valueOf(USER_ID), /* profileFlags= */ 0);
+        addAccountAndDescription(USER_ID, "account name with desc");
+        String accountNameNoDesc = "account name no desc";
+        getShadowAccountManager().addAccountAsUser(USER_ID,
+                new Account(accountNameNoDesc, accountNameNoDesc + "_type"));
+
+        mController.refreshUi();
+
+        // Title + one account with valid description.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+        assertThat(mPreferenceGroup.getPreference(1).getTitle()).isNotEqualTo(accountNameNoDesc);
+    }
+
+    @Test
+    public void refreshUi_accountAdded_addsPreferenceToGroup() {
+        getShadowUserManager().addProfile(USER_ID, USER_ID,
+                String.valueOf(USER_ID), /* profileFlags= */ 0);
+        addAccountAndDescription(USER_ID, "accountName");
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        String addedAccountName = "added account name";
+        addAccountAndDescription(USER_ID, addedAccountName);
+        mController.refreshUi();
+
+        // Title + one already present account + one newly added account.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+        assertThat(mPreferenceGroup.getPreference(2).getTitle()).isEqualTo(addedAccountName);
+    }
+
+    @Test
+    public void refreshUi_accountRemoved_removesPreferenceFromGroup() {
+        getShadowUserManager().addProfile(USER_ID, USER_ID,
+                String.valueOf(USER_ID), /* profileFlags= */ 0);
+        String accountNameToRemove = "account name to remove";
+        addAccountAndDescription(USER_ID, accountNameToRemove);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+        getShadowAccountManager().removeAllAccounts();
+        mController.refreshUi();
+
+        // Title only, all accounts removed.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceGroup.getPreference(0).getTitle()).isNotEqualTo(accountNameToRemove);
+    }
+
+    private void addAccountAndDescription(int profileId, String accountName) {
+        String type = accountName + "_type";
+        getShadowAccountManager().addAccountAsUser(profileId, new Account(accountName, type));
+        getShadowAccountManager().addAuthenticatorAsUser(profileId,
+                new AuthenticatorDescription(type, "packageName", /* labelId= */ 0, /* iconId= */
+                        0, /* smallIconId= */ 0, /* prefId= */ 0));
+    }
+
+    private ShadowUserManager getShadowUserManager() {
+        return Shadow.extract(UserManager.get(mContext));
+    }
+
+    private ShadowAccountManager getShadowAccountManager() {
+        return Shadow.extract(AccountManager.get(mContext));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java
new file mode 100644
index 0000000..5ed62ea
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.service.oemlock.OemLockManager;
+import android.service.persistentdata.PersistentDataBlockManager;
+import android.widget.Button;
+
+import androidx.preference.PreferenceManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowApplication;
+
+/** Unit test for {@link MasterClearConfirmFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class MasterClearConfirmFragmentTest {
+
+    @Mock
+    private PersistentDataBlockManager mPersistentDataBlockManager;
+    @Mock
+    private OemLockManager mOemLockManager;
+
+    private Context mContext;
+    private MasterClearConfirmFragment mFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        // Note: this is not a general pattern to follow for other use cases! Most system
+        // services can be mocked using Shadows!
+        // Because these services are conditionally included in Android's SystemServiceRegistry
+        // and are not created in ShadowServiceManager, there is no way to conventionally shadow
+        // them in Robolectric.
+        ShadowApplication.getInstance().setSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE,
+                mPersistentDataBlockManager);
+        ShadowApplication.getInstance().setSystemService(Context.OEM_LOCK_SERVICE, mOemLockManager);
+
+        mFragment = FragmentController.of(new MasterClearConfirmFragment()).setup();
+
+        // Default to not provisioned.
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                0);
+    }
+
+    @After
+    public void tearDown() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                0);
+    }
+
+    @Test
+    public void confirmClicked_sendsResetIntent() {
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+        assertThat(resetIntent.getPackage()).isEqualTo("android");
+        assertThat(resetIntent.getFlags() & Intent.FLAG_RECEIVER_FOREGROUND).isEqualTo(
+                Intent.FLAG_RECEIVER_FOREGROUND);
+        assertThat(resetIntent.getExtras().getString(Intent.EXTRA_REASON)).isEqualTo(
+                "MasterClearConfirm");
+    }
+
+    @Test
+    public void confirmClicked_resetEsimFalse_resetIntentReflectsChoice() {
+        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putBoolean(
+                mContext.getString(R.string.pk_master_clear_reset_esim), false).commit();
+
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(resetIntent.getExtras().getBoolean(Intent.EXTRA_WIPE_ESIMS)).isEqualTo(false);
+    }
+
+    @Test
+    public void confirmClicked_pdbManagerNull_sendsResetIntent() {
+        ShadowApplication.getInstance().removeSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
+
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+    }
+
+    @Test
+    public void confirmClicked_oemUnlockAllowed_doesNotWipePdb() {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(true);
+
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        verify(mPersistentDataBlockManager, never()).wipe();
+    }
+
+    @Test
+    public void confirmClicked_oemUnlockAllowed_sendsResetIntent() {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(true);
+
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+    }
+
+    @Test
+    public void confirmClicked_noOemUnlockAllowed_notProvisioned_doesNotWipePdb() {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
+
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        verify(mPersistentDataBlockManager, never()).wipe();
+    }
+
+    @Test
+    public void confirmClicked_noOemUnlockAllowed_notProvisioned_sendsResetIntent() {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
+
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+    }
+
+    @Test
+    public void confirmClicked_noOemUnlockAllowed_provisioned_wipesPdb() {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                1);
+
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        verify(mPersistentDataBlockManager).wipe();
+    }
+
+    @Test
+    public void confirmClicked_noOemUnlockAllowed_provisioned_sendsResetIntent() {
+        when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
+                1);
+
+        findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
+
+        Intent resetIntent = ShadowApplication.getInstance().getBroadcastIntents().get(0);
+        assertThat(resetIntent.getAction()).isEqualTo(Intent.ACTION_FACTORY_RESET);
+    }
+
+    private Button findMasterClearConfirmButton(Activity activity) {
+        return activity.findViewById(R.id.action_button1);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..0843a59
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static android.os.UserManager.DISALLOW_FACTORY_RESET;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link MasterClearEntryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class MasterClearEntryPreferenceControllerTest {
+
+    private Context mContext;
+    private MasterClearEntryPreferenceController mController;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+
+        mController = new PreferenceControllerTestHelper<>(mContext,
+                MasterClearEntryPreferenceController.class,
+                new Preference(mContext)).getController();
+    }
+
+    @After
+    public void tearDown() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVICE_DEMO_MODE, 0);
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_available() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_restricted_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_FACTORY_RESET)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_demoMode_demoUser_available() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVICE_DEMO_MODE, 1);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_demoMode_demoUser_restricted_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_FACTORY_RESET)).thenReturn(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVICE_DEMO_MODE, 1);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java
new file mode 100644
index 0000000..10bbddf
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import static android.app.Activity.RESULT_CANCELED;
+import static android.app.Activity.RESULT_OK;
+
+import static com.android.car.settings.system.MasterClearFragment.CHECK_LOCK_REQUEST_CODE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.widget.Button;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.security.CheckLockActivity;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.Collections;
+
+/** Unit test for {@link MasterClearFragment}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserManager.class})
+public class MasterClearFragmentTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    private MasterClearFragment mFragment;
+
+    @Before
+    public void setUp() {
+        // Setup needed by instantiated PreferenceControllers.
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Shadows.shadowOf(context.getPackageManager())
+                .setSystemFeature(PackageManager.FEATURE_AUTOMOTIVE, true);
+        when(mCarUserManagerHelper.getAllSwitchableUsers()).thenReturn(Collections.emptyList());
+
+        mFragment = FragmentController.of(new MasterClearFragment()).setup();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowUserManager.reset();
+    }
+
+    @Test
+    public void masterClearButtonClicked_launchesCheckLockActivity() {
+        findMasterClearButton(mFragment.requireActivity()).performClick();
+
+        Intent startedIntent = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(startedIntent.getComponent().getClassName()).isEqualTo(
+                CheckLockActivity.class.getName());
+    }
+
+    @Test
+    public void processActivityResult_resultOk_launchesMasterClearConfirmFragment() {
+        mFragment.processActivityResult(CHECK_LOCK_REQUEST_CODE, RESULT_OK, /* data= */ null);
+
+        Fragment launchedFragment = mFragment.getFragmentManager().findFragmentById(
+                R.id.fragment_container);
+
+        assertThat(launchedFragment).isInstanceOf(MasterClearConfirmFragment.class);
+    }
+
+    @Test
+    public void processActivityResult_otherResultCode_doesNothing() {
+        mFragment.processActivityResult(CHECK_LOCK_REQUEST_CODE, RESULT_CANCELED, /* data= */ null);
+
+        Fragment launchedFragment = mFragment.getFragmentManager().findFragmentById(
+                R.id.fragment_container);
+
+        assertThat(launchedFragment).isInstanceOf(MasterClearFragment.class);
+    }
+
+    private Button findMasterClearButton(Activity activity) {
+        return activity.findViewById(R.id.action_button1);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceControllerTest.java
new file mode 100644
index 0000000..f6639a9
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearOtherUsersPresentPreferenceControllerTest.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Collections;
+
+/** Unit test for {@link MasterClearOtherUsersPresentPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class MasterClearOtherUsersPresentPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private Preference mPreference;
+    private MasterClearOtherUsersPresentPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+
+        Context context = RuntimeEnvironment.application;
+        mPreference = new Preference(context);
+        PreferenceControllerTestHelper<MasterClearOtherUsersPresentPreferenceController>
+                controllerHelper = new PreferenceControllerTestHelper<>(context,
+                MasterClearOtherUsersPresentPreferenceController.class, mPreference);
+        controllerHelper.markState(Lifecycle.State.STARTED);
+        mController = controllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void refreshUi_noSwitchableUsers_hidesPreference() {
+        when(mCarUserManagerHelper.getAllSwitchableUsers()).thenReturn(Collections.emptyList());
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_switchableUsers_showsPreference() {
+        when(mCarUserManagerHelper.getAllSwitchableUsers()).thenReturn(
+                Collections.singletonList(new UserInfo()));
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java
new file mode 100644
index 0000000..cd16313
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2019 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.os.SystemProperties;
+import android.provider.Settings;
+
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowEuiccManager;
+
+/** Unit test for {@link MasterClearResetEsimPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class MasterClearResetEsimPreferenceControllerTest {
+
+    private Context mContext;
+    private MasterClearResetEsimPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        ((ShadowEuiccManager) Shadow.extract(
+                mContext.getSystemService(Context.EUICC_SERVICE))).setIsEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1);
+
+        mController = new PreferenceControllerTestHelper<>(mContext,
+                MasterClearResetEsimPreferenceController.class,
+                new SwitchPreference(mContext)).getController();
+    }
+
+    @After
+    public void tearDown() {
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 0);
+    }
+
+    @Test
+    public void getAvailabilityStatus_showEsimPropertyTrue_available() {
+        SystemProperties.set(MasterClearResetEsimPreferenceController.KEY_SHOW_ESIM_RESET_CHECKBOX,
+                Boolean.TRUE.toString());
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_showEsimPropertyFalse_unsupportedOnDevice() {
+        SystemProperties.set(MasterClearResetEsimPreferenceController.KEY_SHOW_ESIM_RESET_CHECKBOX,
+                Boolean.FALSE.toString());
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java b/tests/robotests/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java
new file mode 100644
index 0000000..34ecb69
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/RegulatoryInfoDisplayActivityTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.os.SystemProperties;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.shadows.ShadowAlertDialog;
+
+/** Unit test for {@link RegulatoryInfoDisplayActivity}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class RegulatoryInfoDisplayActivityTest {
+
+    private ActivityController<RegulatoryInfoDisplayActivity> mActivityController;
+    private RegulatoryInfoDisplayActivity mActivity;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mActivityController = ActivityController.of(new RegulatoryInfoDisplayActivity());
+        mActivity = mActivityController.get();
+        mActivityController.create();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowAlertDialog.reset();
+    }
+
+    @Test
+    public void getRegulatoryInfoImageFileName_skuIsNotEmpty() {
+        SystemProperties.set("ro.boot.hardware.sku", "test");
+
+        assertThat(mActivity.getRegulatoryInfoImageFileName())
+                .isEqualTo("/data/misc/elabel/regulatory_info_test.png");
+    }
+
+    @Test
+    public void getRegulatoryInfoImageFileName_skuIsEmpty() {
+        SystemProperties.set("ro.boot.hardware.sku", "");
+
+        assertThat(mActivity.getRegulatoryInfoImageFileName())
+                .isEqualTo("/data/misc/elabel/regulatory_info.png");
+    }
+
+    @Test
+    public void getSku_shouldReturnSystemProperty() {
+        String testSku = "test";
+        SystemProperties.set("ro.boot.hardware.sku", testSku);
+
+        assertThat(mActivity.getSku()).isEqualTo(testSku);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
new file mode 100644
index 0000000..249eb09
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowEuiccManager;
+
+/** Unit test for {@link ResetEsimPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ResetEsimPreferenceControllerTest {
+
+    private Context mContext;
+    private ResetEsimPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mController = new PreferenceControllerTestHelper<>(mContext,
+                ResetEsimPreferenceController.class,
+                new SwitchPreference(mContext)).getController();
+    }
+
+    @After
+    public void tearDown() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 0);
+    }
+
+    @Test
+    public void getAvailabilityStatus_disabledEuiccManager_unsupportedOnDevice() {
+        getShadowEuiccManager().setIsEnabled(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccNotProvisioned_unsupportedOnDevice() {
+        getShadowEuiccManager().setIsEnabled(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccNotProvisioned_developer_available() {
+        getShadowEuiccManager().setIsEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_euiccProvisioned_available() {
+        getShadowEuiccManager().setIsEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 1);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    private ShadowEuiccManager getShadowEuiccManager() {
+        return Shadow.extract(mContext.getSystemService(Context.EUICC_SERVICE));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
new file mode 100644
index 0000000..1257b62
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.robolectric.Shadows.shadowOf;
+import static org.testng.Assert.assertThrows;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.INetworkPolicyManager.Default;
+import android.net.NetworkPolicyManager;
+import android.net.Uri;
+import android.provider.Telephony;
+import android.telephony.SubscriptionManager;
+import android.widget.Button;
+
+import androidx.preference.PreferenceManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowConnectivityManager;
+import com.android.car.settings.testutils.ShadowNetworkPolicyManager;
+import com.android.car.settings.testutils.ShadowRecoverySystem;
+import com.android.car.settings.testutils.ShadowTelephonyManager;
+import com.android.car.settings.testutils.ShadowWifiManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowContentResolver;
+import org.robolectric.shadows.ShadowContextImpl;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {
+        ShadowConnectivityManager.class,
+        ShadowWifiManager.class,
+        ShadowBluetoothAdapter.class,
+        ShadowTelephonyManager.class,
+        ShadowNetworkPolicyManager.class,
+        ShadowRecoverySystem.class
+})
+public class ResetNetworkConfirmFragmentTest {
+
+    private Context mContext;
+    private Button mResetButton;
+    private ContentResolver mContentResolver;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+
+        final NetworkPolicyManager npm = new NetworkPolicyManager(mContext, new Default());
+        ShadowContextImpl shadowContext =
+                Shadow.extract(RuntimeEnvironment.application.getBaseContext());
+        shadowContext.setSystemService(Context.NETWORK_POLICY_SERVICE, npm);
+
+        mContentResolver = mContext.getContentResolver();
+
+        setEuiccResetCheckbox(false);
+        setNetworkSubscriptionId("");
+
+        BaseTestActivity testActivity = Robolectric.setupActivity(BaseTestActivity.class);
+
+        ResetNetworkConfirmFragment fragment = new ResetNetworkConfirmFragment();
+        testActivity.launchFragment(fragment);
+
+        mResetButton = testActivity.findViewById(R.id.action_button1);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowConnectivityManager.reset();
+        ShadowWifiManager.reset();
+        ShadowBluetoothAdapter.reset();
+        ShadowRecoverySystem.reset();
+        ShadowTelephonyManager.reset();
+        ShadowNetworkPolicyManager.reset();
+        ShadowContentResolver.reset();
+    }
+
+    @Test
+    public void testResetButtonClick_connectivityManagerReset() {
+        mResetButton.performClick();
+        assertThat(ShadowConnectivityManager.verifyFactoryResetCalled(/* numTimes */ 1)).isTrue();
+    }
+
+    @Test
+    public void testResetButtonClick_wifiManagerReset() {
+        mResetButton.performClick();
+        assertThat(ShadowWifiManager.verifyFactoryResetCalled(/* numTimes */ 1)).isTrue();
+    }
+
+    @Test
+    public void testResetButtonClick_bluetoothAdapterReset() {
+        mResetButton.performClick();
+        assertThat(ShadowBluetoothAdapter.verifyFactoryResetCalled(/* numTimes */ 1)).isTrue();
+    }
+
+    @Test
+    public void testResetButtonClick_cleanSmsRawTable() {
+        mResetButton.performClick();
+        assertThat(getUriWithGivenPrefix(shadowOf(mContentResolver).getDeletedUris(),
+                Telephony.Sms.CONTENT_URI)).isNotNull();
+    }
+
+    @Test
+    public void testResetButtonClick_euiccResetEnabled_euiccReset() {
+        setEuiccResetCheckbox(true);
+        mResetButton.performClick();
+        assertThat(ShadowRecoverySystem.verifyWipeEuiccDataCalled(/* numTimes */ 1)).isTrue();
+    }
+
+    @Test
+    public void testResetButtonClick_euiccResetDisabled_euiccNotReset() {
+        setEuiccResetCheckbox(false);
+        mResetButton.performClick();
+        assertThat(ShadowRecoverySystem.verifyWipeEuiccDataCalled(/* numTimes */ 1)).isFalse();
+    }
+
+    @Test
+    public void testResetButtonClick_nonIntegerNetworkSubscriptionId_numberExceptionError() {
+        setNetworkSubscriptionId("abc");
+        assertThrows(NumberFormatException.class, () -> mResetButton.performClick());
+    }
+
+    @Test
+    public void testResetButtonClick_emptyNetworkSubscriptionId_telephonyNotReset() {
+        setNetworkSubscriptionId("");
+        mResetButton.performClick();
+        assertThat(ShadowTelephonyManager.verifyFactoryResetCalled(
+                SubscriptionManager.INVALID_SUBSCRIPTION_ID, /* numTimes */ 1)).isTrue();
+    }
+
+    @Test
+    public void testResetButtonClick_validNetworkSubscriptionId_telephonyReset() {
+        setNetworkSubscriptionId("123");
+        mResetButton.performClick();
+        assertThat(ShadowTelephonyManager.verifyFactoryResetCalled(123, /* numTimes */ 1)).isTrue();
+    }
+
+    @Test
+    public void testResetButtonClick_emptyNetworkSubscriptionId_networkManagerNotReset() {
+        setNetworkSubscriptionId("");
+        mResetButton.performClick();
+        assertThat(ShadowNetworkPolicyManager.verifyFactoryResetCalled(null, /* numTimes */
+                1)).isTrue();
+    }
+
+    @Test
+    public void testResetButtonClick_validNetworkSubscriptionId_networkManagerReset() {
+        setNetworkSubscriptionId("123");
+        mResetButton.performClick();
+        assertThat(ShadowNetworkPolicyManager.verifyFactoryResetCalled(
+                ShadowTelephonyManager.SUBSCRIBER_ID, /* numTimes */ 1)).isTrue();
+    }
+
+    @Test
+    public void testResetButtonClick_emptyNetworkSubscriptionId_noRestoreDefaultApn() {
+        setNetworkSubscriptionId("");
+        mResetButton.performClick();
+        Uri uri = getUriWithGivenPrefix(shadowOf(mContentResolver).getDeletedUris(),
+                ResetNetworkConfirmFragment.RESTORE_CARRIERS_URI);
+        assertThat(uri).isNotNull();
+        assertThat(uri.toString().contains("subId/")).isFalse();
+    }
+
+    @Test
+    public void testResetButtonClick_validNetworkSubscriptionId_restoreDefaultApn() {
+        setNetworkSubscriptionId("123");
+        mResetButton.performClick();
+        Uri uri = getUriWithGivenPrefix(shadowOf(mContentResolver).getDeletedUris(),
+                ResetNetworkConfirmFragment.RESTORE_CARRIERS_URI);
+        assertThat(uri).isNotNull();
+        assertThat(uri.toString().contains("subId/123")).isTrue();
+    }
+
+    private Uri getUriWithGivenPrefix(List<Uri> uris, String prefix) {
+        for (Uri uri : uris) {
+            if (uri.toString().startsWith(prefix)) return uri;
+        }
+        return null;
+    }
+
+    private Uri getUriWithGivenPrefix(List<Uri> uris, Uri prefix) {
+        for (Uri uri : uris) {
+            if (uri.isPathPrefixMatch(prefix)) return uri;
+        }
+        return null;
+    }
+
+    private void setEuiccResetCheckbox(boolean isChecked) {
+        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putBoolean(
+                mContext.getString(R.string.pk_reset_esim), isChecked).commit();
+    }
+
+    private void setNetworkSubscriptionId(String id) {
+        PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(
+                mContext.getString(R.string.pk_reset_network_subscription), id).commit();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..1034a3f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static android.os.UserManager.DISALLOW_NETWORK_RESET;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link ResetNetworkEntryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class ResetNetworkEntryPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private ResetNetworkEntryPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Context context = RuntimeEnvironment.application;
+
+        mController = new PreferenceControllerTestHelper<>(context,
+                ResetNetworkEntryPreferenceController.class,
+                new Preference(context)).getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_available() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_restricted_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+                DISALLOW_NETWORK_RESET)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
new file mode 100644
index 0000000..3e3a999
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
@@ -0,0 +1,353 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static android.telephony.SubscriptionManager.MIN_SUBSCRIPTION_ID_VALUE;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowPackageManager;
+import org.robolectric.shadows.ShadowSubscriptionManager;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+/** Unit test for {@link ResetNetworkSubscriptionPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ResetNetworkSubscriptionPreferenceControllerTest {
+
+    private static final int SUBID_1 = MIN_SUBSCRIPTION_ID_VALUE;
+    private static final int SUBID_2 = SUBID_1 + 1;
+    private static final int SUBID_3 = SUBID_2 + 1;
+    private static final int SUBID_4 = SUBID_3 + 1;
+
+    private Context mContext;
+    private ShadowSubscriptionManager mShadowSubscriptionManager;
+    private ListPreference mListPreference;
+    private PreferenceControllerTestHelper<ResetNetworkSubscriptionPreferenceController>
+            mPreferenceControllerHelper;
+    private ResetNetworkSubscriptionPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mShadowSubscriptionManager = Shadow.extract(
+                mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE));
+
+        mListPreference = new ListPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                ResetNetworkSubscriptionPreferenceController.class, mListPreference);
+        mController = mPreferenceControllerHelper.getController();
+
+        // Default to AVAILABLE status. Tests for this behavior will do their own setup.
+        ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
+        shadowPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, /* supported= */
+                true);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_telephonyAvailable_available() {
+        ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
+        shadowPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, /* supported= */
+                true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_telephonyNotAvailable_unsupportedOnDevice() {
+        ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
+        shadowPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, /* supported= */
+                false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void refreshUi_nullSubscriptions_hidesPreference() {
+        mController.refreshUi();
+
+        assertThat(mListPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_nullSubscriptions_setsValue() {
+        mController.refreshUi();
+
+        assertThat(mListPreference.getValue()).isEqualTo(
+                String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
+    }
+
+    @Test
+    public void refreshUi_noSubscriptions_hidesPreference() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(Collections.emptyList());
+
+        mController.refreshUi();
+
+        assertThat(mListPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_noSubscriptions_setsValue() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(Collections.emptyList());
+
+        mController.refreshUi();
+
+        assertThat(mListPreference.getValue()).isEqualTo(
+                String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
+    }
+
+    @Test
+    public void refreshUi_oneSubscription_hidesPreference() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Collections.singletonList(createSubInfo(SUBID_1, "sub1")));
+
+        mController.refreshUi();
+
+        assertThat(mListPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_oneSubscription_setsValue() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Collections.singletonList(createSubInfo(SUBID_1, "sub1")));
+
+        mController.refreshUi();
+
+        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
+    }
+
+    @Test
+    public void refreshUi_multipleSubscriptions_showsPreference() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
+
+        mController.refreshUi();
+
+        assertThat(mListPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_multipleSubscriptions_populatesEntries() {
+        String displayName1 = "sub1";
+        String displayName2 = "sub2";
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(createSubInfo(SUBID_1, displayName1),
+                        createSubInfo(SUBID_2, displayName2)));
+
+        mController.refreshUi();
+
+        assertThat(Arrays.asList(mListPreference.getEntries())).containsExactly(displayName1,
+                displayName2);
+        assertThat(Arrays.asList(mListPreference.getEntryValues())).containsExactly(
+                String.valueOf(SUBID_1),
+                String.valueOf(SUBID_2));
+    }
+
+    @Test
+    public void refreshUi_defaultSelection_fourthPriority_system() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
+                        createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
+
+        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
+        mController.refreshUi();
+
+        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_4));
+    }
+
+    @Test
+    public void refreshUi_defaultSelection_thirdPriority_sms() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
+                        createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
+
+        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
+        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
+        mController.refreshUi();
+
+        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_3));
+    }
+
+    @Test
+    public void refreshUi_defaultSelection_secondPriority_voice() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
+                        createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
+
+        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
+        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
+        ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUBID_2);
+        mController.refreshUi();
+
+        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_2));
+    }
+
+    @Test
+    public void refreshUi_defaultSelection_firstPriority_data() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
+                        createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
+
+        ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
+        ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
+        ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUBID_2);
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
+        mController.refreshUi();
+
+        assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
+    }
+
+    @Test
+    public void refreshUi_title_fourthPriority_subscriptionNetworkIds() {
+        SubscriptionInfo subInfo = createSubInfo(
+                SUBID_1,
+                /* displayName= */ "",
+                /* carrierName= */ "",
+                /* number= */ "");
+        // Multiple subscriptions so that preference is shown / title is set.
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
+
+        mController.refreshUi();
+
+        String title = mListPreference.getTitle().toString();
+        assertThat(title).contains(String.valueOf(subInfo.getMcc()));
+        assertThat(title).contains(String.valueOf(subInfo.getMnc()));
+        assertThat(title).contains(String.valueOf(subInfo.getSimSlotIndex()));
+        assertThat(title).contains(String.valueOf(subInfo.getSubscriptionId()));
+    }
+
+    @Test
+    public void refreshUi_title_thirdPriority_subscriptionCarrierName() {
+        SubscriptionInfo subInfo = createSubInfo(
+                SUBID_1,
+                /* displayName= */ "",
+                "carrierName",
+                /* number= */ "");
+        // Multiple subscriptions so that preference is shown / title is set.
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
+
+        mController.refreshUi();
+
+        assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getCarrierName());
+    }
+
+    @Test
+    public void refreshUi_title_secondPriority_subscriptionNumber() {
+        SubscriptionInfo subInfo = createSubInfo(
+                SUBID_1,
+                /* displayName= */ "",
+                "carrierName",
+                "number");
+        // Multiple subscriptions so that preference is shown / title is set.
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
+
+        mController.refreshUi();
+
+        assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getNumber());
+    }
+
+    @Test
+    public void refreshUi_title_firstPriority_subscriptionDisplayName() {
+        SubscriptionInfo subInfo = createSubInfo(
+                SUBID_1,
+                "displayName",
+                "carrierName",
+                "number");
+        // Multiple subscriptions so that preference is shown / title is set.
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
+
+        mController.refreshUi();
+
+        assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getDisplayName());
+    }
+
+    @Test
+    public void handlePreferenceChanged_updatesTitle() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
+        mController.refreshUi();
+
+        mListPreference.callChangeListener(String.valueOf(SUBID_2));
+
+        assertThat(mListPreference.getTitle()).isEqualTo("sub2");
+    }
+
+    @Test
+    public void handlePreferenceChanged_returnsTrue() {
+        mShadowSubscriptionManager.setActiveSubscriptionInfoList(
+                Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
+        ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
+        mController.refreshUi();
+
+        assertThat(mController.handlePreferenceChanged(mListPreference,
+                String.valueOf(SUBID_2))).isTrue();
+    }
+
+    /** Reduce SubscriptionInfo constructor args to the ones we care about here. */
+    private SubscriptionInfo createSubInfo(int subId, String displayName) {
+        return createSubInfo(subId, displayName, "carrierName", "number");
+    }
+
+    /** Reduce SubscriptionInfo constructor args to the ones we care about here. */
+    private SubscriptionInfo createSubInfo(int subId, String displayName, String carrierName,
+            String number) {
+        // Hidden constructor so resort to mocking.
+        SubscriptionInfo subscriptionInfo = mock(SubscriptionInfo.class);
+        when(subscriptionInfo.getSubscriptionId()).thenReturn(subId);
+        when(subscriptionInfo.getDisplayName()).thenReturn(displayName);
+        when(subscriptionInfo.getCarrierName()).thenReturn(carrierName);
+        when(subscriptionInfo.getNumber()).thenReturn(number);
+        when(subscriptionInfo.getSimSlotIndex()).thenReturn(111);
+        when(subscriptionInfo.getMcc()).thenReturn(222);
+        when(subscriptionInfo.getMnc()).thenReturn(333);
+        return subscriptionInfo;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
new file mode 100644
index 0000000..004bb01
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2018 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.car.settings.system;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+import android.os.PersistableBundle;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowCarrierConfigManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.shadows.ShadowPackageManager;
+
+import java.util.List;
+
+/** Unit test for {@link SystemUpdatePreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowCarrierConfigManager.class})
+public class SystemUpdatePreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private Context mContext;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<SystemUpdatePreferenceController> mControllerHelper;
+    private SystemUpdatePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                SystemUpdatePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void getAvailabilityStatus_adminUser_available() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_nonAdminUser_disabledForUser() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+    }
+
+    @Test
+    public void onCreate_setsActivityLabelAsTitle() {
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.flags |= ApplicationInfo.FLAG_SYSTEM;
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.applicationInfo = applicationInfo;
+        activityInfo.packageName = "some.test.package";
+        activityInfo.name = "SomeActivity";
+
+        String label = "Activity Label";
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.nonLocalizedLabel = label;
+        resolveInfo.activityInfo = activityInfo;
+
+        Intent intent = new Intent();
+        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
+        packageManager.addResolveInfoForIntent(intent, resolveInfo);
+        mPreference.setIntent(intent);
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+
+        assertThat(mPreference.getTitle()).isEqualTo(label);
+    }
+
+    @Test
+    public void refreshUi_activityNotFount_hidesPreference() {
+        mPreference.setIntent(new Intent());
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mController.refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void preferenceClicked_triggersClientInitiatedAction() {
+        // Arrange
+        String action = "action";
+        String key = "key";
+        String value = "value";
+
+        PersistableBundle config = new PersistableBundle();
+        config.putBoolean(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_BOOL, true);
+        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING, action);
+        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING, key);
+        config.putString(CarrierConfigManager.KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING, value);
+
+        getShadowCarrierConfigManager().setConfigForSubId(
+                SubscriptionManager.getDefaultSubscriptionId(), config);
+
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        // Act
+        mPreference.performClick();
+
+        // Assert
+        List<Intent> broadcasts = ShadowApplication.getInstance().getBroadcastIntents();
+        assertThat(broadcasts).hasSize(1);
+        Intent broadcast = broadcasts.get(0);
+        assertThat(broadcast.getAction()).isEqualTo(action);
+        assertThat(broadcast.getStringExtra(key)).isEqualTo(value);
+    }
+
+    @Test
+    public void preferenceClicked_handledReturnsFalse() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        assertThat(mPreference.getOnPreferenceClickListener().onPreferenceClick(
+                mPreference)).isFalse();
+    }
+
+    private ShadowCarrierConfigManager getShadowCarrierConfigManager() {
+        return Shadow.extract(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
new file mode 100644
index 0000000..be62245
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2019 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.car.settings.system.legal;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.shadows.ShadowPackageManager;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+/** Unit test for {@link LegalPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class LegalPreferenceControllerTest {
+    private static class TestLegalPreferenceControllerTest extends
+            LegalPreferenceController {
+
+        private static final Intent INTENT = new Intent("test_intent");
+
+        TestLegalPreferenceControllerTest(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Intent getIntent() {
+            return INTENT;
+        }
+    }
+
+    private static final String TEST_LABEL = "test_label";
+    private Context mContext;
+    private PreferenceControllerTestHelper<TestLegalPreferenceControllerTest> mControllerHelper;
+    private Preference mPreference;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TestLegalPreferenceControllerTest.class, mPreference);
+    }
+
+    @Test
+    public void refreshUi_intentResolvesToActivity_isVisible() {
+        Intent intent = mControllerHelper.getController().getIntent();
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = "some.test.package";
+        activityInfo.name = "SomeActivity";
+        activityInfo.applicationInfo = new ApplicationInfo();
+        activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
+
+        ResolveInfo resolveInfo = new ResolveInfo() {
+            @Override
+            public CharSequence loadLabel(PackageManager pm) {
+                return TEST_LABEL;
+            }
+        };
+        resolveInfo.activityInfo = activityInfo;
+        List<ResolveInfo> list = new LinkedList();
+        list.add(resolveInfo);
+
+        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
+        packageManager.addResolveInfoForIntent(intent, list);
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_intentResolvesToActivity_updatesTitle() {
+        Intent intent = mControllerHelper.getController().getIntent();
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = "some.test.package";
+        activityInfo.name = "SomeActivity";
+        activityInfo.applicationInfo = new ApplicationInfo();
+        activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
+        activityInfo.applicationInfo.nonLocalizedLabel = TEST_LABEL;
+
+        ResolveInfo resolveInfo = new ResolveInfo();
+        resolveInfo.activityInfo = activityInfo;
+
+        List<ResolveInfo> list = new LinkedList();
+        list.add(resolveInfo);
+
+        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
+        packageManager.addResolveInfoForIntent(intent, list);
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreference.getTitle()).isEqualTo(TEST_LABEL);
+    }
+
+    @Test
+    public void refreshUi_intentResolvesToActivity_updatesIntentToSpecificActivity() {
+        Intent intent = mControllerHelper.getController().getIntent();
+
+        String packageName = "com.android.car.settings.testutils";
+        String activityName = "BaseTestActivity";
+
+        ActivityInfo activityInfo = new ActivityInfo();
+        activityInfo.packageName = packageName;
+        activityInfo.name = activityName;
+        activityInfo.applicationInfo = new ApplicationInfo();
+        activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
+
+        ResolveInfo resolveInfo = new ResolveInfo() {
+            @Override
+            public CharSequence loadLabel(PackageManager pm) {
+                return TEST_LABEL;
+            }
+        };
+        resolveInfo.activityInfo = activityInfo;
+        List<ResolveInfo> list = new LinkedList();
+        list.add(resolveInfo);
+
+        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
+        packageManager.addResolveInfoForIntent(intent, list);
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreference.getIntent().getComponent().flattenToString()).isEqualTo(
+                packageName + "/" + activityName);
+    }
+
+    @Test
+    public void refreshUi_intentResolvesToNull_isNotVisible() {
+        ShadowPackageManager packageManager = Shadows.shadowOf(mContext.getPackageManager());
+
+        packageManager.addResolveInfoForIntent(mControllerHelper.getController().getIntent(),
+                Collections.emptyList());
+
+        mControllerHelper.markState(Lifecycle.State.CREATED);
+        mControllerHelper.getController().refreshUi();
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/BaseTestActivity.java b/tests/robotests/src/com/android/car/settings/testutils/BaseTestActivity.java
index 9e9929a..5fff6f9 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/BaseTestActivity.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/BaseTestActivity.java
@@ -17,29 +17,34 @@
 package com.android.car.settings.testutils;
 
 import android.car.drivingstate.CarUxRestrictions;
+import android.content.Intent;
+import android.content.IntentSender;
 import android.os.Bundle;
 
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
 
 import com.android.car.settings.R;
-import com.android.car.settings.common.BaseFragment;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.UxRestrictionsProvider;
 
 /**
- * Test activity that extends {@link AppCompatActivity}.
- * Used for testing {@code BaseFragment} instances.
+ * Test activity used for testing {@code BaseFragment} instances.
  */
-public class BaseTestActivity extends AppCompatActivity implements
-        BaseFragment.FragmentController,
-        BaseFragment.UXRestrictionsProvider {
+public class BaseTestActivity extends FragmentActivity implements FragmentController,
+        UxRestrictionsProvider {
+
     private boolean mOnBackPressedFlag;
+    private CarUxRestrictions mRestrictionInfo = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+            CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* timestamp= */ 0).build();
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.app_compat_activity);
-        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
-        setSupportActionBar(toolbar);
+        setContentView(R.layout.car_setting_activity);
     }
 
     /**
@@ -48,34 +53,61 @@
      * @param fragment Fragment to add to activity.
      */
     @Override
-    public void launchFragment(BaseFragment fragment) {
+    public void launchFragment(Fragment fragment) {
+        if (fragment instanceof DialogFragment) {
+            throw new IllegalArgumentException(
+                    "cannot launch dialogs with launchFragment() - use showDialog() instead");
+        }
+        String tag = Integer.toString(getSupportFragmentManager().getBackStackEntryCount());
         getSupportFragmentManager()
                 .beginTransaction()
-                .replace(R.id.fragment_container, fragment)
+                .replace(R.id.fragment_container, fragment, tag)
                 .addToBackStack(null)
                 .commit();
     }
 
     @Override
-    public void showDOBlockingMessage() {
+    public void showBlockingMessage() {
         // no-op
     }
 
     @Override
-    public CarUxRestrictions getCarUxRestrictions() {
-        return new CarUxRestrictions.Builder(
-                /* reqOpt= */ true,
-                CarUxRestrictions.UX_RESTRICTIONS_BASELINE,
-                /* timestamp= */ 0
-        ).build();
+    public void showDialog(DialogFragment dialogFragment, @Nullable String tag) {
+        dialogFragment.show(getSupportFragmentManager(), tag);
     }
 
-    public void reattachFragment(BaseFragment fragment) {
-        getSupportFragmentManager()
-                .beginTransaction()
-                .detach(fragment)
-                .attach(fragment)
-                .commit();
+    @Override
+    @Nullable
+    public DialogFragment findDialogByTag(String tag) {
+        Fragment fragment = getSupportFragmentManager().findFragmentByTag(tag);
+        if (fragment instanceof DialogFragment) {
+            return (DialogFragment) fragment;
+        }
+        return null;
+    }
+
+    @Override
+    public void startActivityForResult(Intent intent, int requestCode,
+            ActivityResultCallback callback) {
+        throw new UnsupportedOperationException(
+                "Unimplemented for activities that implement FragmentController");
+    }
+
+    @Override
+    public void startIntentSenderForResult(IntentSender intent, int requestCode,
+            @Nullable Intent fillInIntent, int flagsMask, int flagsValues, Bundle options,
+            ActivityResultCallback callback) {
+        throw new UnsupportedOperationException(
+                "Unimplemented for activities that implement FragmentController");
+    }
+
+    @Override
+    public CarUxRestrictions getCarUxRestrictions() {
+        return mRestrictionInfo;
+    }
+
+    public void setCarUxRestrictions(CarUxRestrictions restrictionInfo) {
+        mRestrictionInfo = restrictionInfo;
     }
 
     /**
@@ -104,6 +136,6 @@
 
     @Override
     public void goBack() {
-
+        getSupportFragmentManager().popBackStackImmediate();
     }
 }
diff --git a/tests/robotests/src/com/android/car/settings/testutils/CarSettingsShadowResources.java b/tests/robotests/src/com/android/car/settings/testutils/CarSettingsShadowResources.java
deleted file mode 100644
index 036eb6d..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/CarSettingsShadowResources.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.testutils;
-
-import static org.robolectric.shadow.api.Shadow.directlyOn;
-
-import android.annotation.ColorRes;
-import android.annotation.DimenRes;
-import android.annotation.Nullable;
-import android.content.res.Resources;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.annotation.RealObject;
-import org.robolectric.shadows.ShadowResources;
-
-/**
- * Overrides ShadowResources to return a dummy value if resources are not found.
- *
- * Reason for this is the Design Support Library has moved to prebuilts but robolectric is unable
- * to pull resources from binaries at this time.
- * TODO: Delete this shadow when robolectric supports binary resource loading
- */
-@Implements(value = Resources.class, inheritImplementationMethods = true)
-public class CarSettingsShadowResources extends ShadowResources {
-    @RealObject
-    public Resources realResources;
-
-    @Implementation
-    public int getDimensionPixelSize(@DimenRes int id) {
-        try {
-            return directlyOn(realResources, Resources.class).getDimensionPixelSize(id);
-        } catch (Resources.NotFoundException e1) {
-            return 0;
-        }
-    }
-
-    @Implementation
-    public int getDimensionPixelOffset(@DimenRes int id) {
-        try {
-            return directlyOn(realResources, Resources.class).getDimensionPixelOffset(id);
-        } catch (Resources.NotFoundException e1) {
-            return 0;
-        }
-    }
-
-    @Implementation
-    public int getColor(@ColorRes int id, @Nullable Resources.Theme theme) {
-        try {
-            return directlyOn(realResources, Resources.class).getColor(id, theme);
-        } catch (Resources.NotFoundException e1) {
-            return 0;
-        }
-    }
-}
-
diff --git a/tests/robotests/src/com/android/car/settings/testutils/DialogTestUtils.java b/tests/robotests/src/com/android/car/settings/testutils/DialogTestUtils.java
new file mode 100644
index 0000000..303b607
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/DialogTestUtils.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.fragment.app.DialogFragment;
+
+/**
+ * Helper methods for DialogFragment testing.
+ */
+public class DialogTestUtils {
+    private DialogTestUtils() {
+    }
+
+    /**
+     * Invokes onClick on the dialog's positive button.
+     */
+    public static void clickPositiveButton(DialogFragment dialogFragment) {
+        Button positiveButton = dialogFragment.getDialog().getWindow().findViewById(
+                com.android.internal.R.id.button1);
+        positiveButton.callOnClick();
+    }
+
+    /**
+     * Invokes onClick on the dialog's negative button.
+     */
+    public static void clickNegativeButton(DialogFragment dialogFragment) {
+        Button negativeButton = dialogFragment.getDialog().getWindow().findViewById(
+                com.android.internal.R.id.button2);
+        negativeButton.callOnClick();
+    }
+
+    /**
+     * Gets dialog's title.
+     */
+    public static String getTitle(DialogFragment dialogFragment) {
+        TextView titleView = dialogFragment.getDialog().getWindow().findViewById(
+                com.android.internal.R.id.alertTitle);
+        return titleView.getText().toString();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/DummyFragment.java b/tests/robotests/src/com/android/car/settings/testutils/DummyFragment.java
new file mode 100644
index 0000000..dc6cfba
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/DummyFragment.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Empty Fragment.
+ */
+public class DummyFragment extends SettingsFragment {
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.settings_fragment;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/FragmentController.java b/tests/robotests/src/com/android/car/settings/testutils/FragmentController.java
new file mode 100644
index 0000000..a3b28f5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/FragmentController.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.R;
+
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.android.controller.ComponentController;
+
+/**
+ * Version of FragmentController that can be used for {@link androidx.fragment.app.Fragment} until
+ * upstream support is ready.
+ */
+public class FragmentController<F extends Fragment> extends
+        ComponentController<FragmentController<F>, F> {
+
+    private final F mFragment;
+    private final ActivityController<BaseTestActivity> mActivityController;
+
+    private FragmentController(F fragment) {
+        super(fragment);
+        mFragment = fragment;
+        mActivityController = ActivityController.of(new BaseTestActivity());
+    }
+
+    public static <F extends Fragment> FragmentController<F> of(F fragment) {
+        return new FragmentController<>(fragment);
+    }
+
+    /**
+     * Returns the fragment after attaching it to an activity, calling its onCreate() through
+     * onResume() lifecycle methods and making it visible.
+     */
+    public F setup() {
+        return create().start().resume().visible().get();
+    }
+
+    /**
+     * Creates the activity with {@link Bundle} and adds the fragment to it.
+     */
+    public FragmentController<F> create(final Bundle bundle) {
+        shadowMainLooper.runPaused(
+                () -> mActivityController
+                        .create(bundle)
+                        .get()
+                        .getSupportFragmentManager()
+                        .beginTransaction()
+                        .add(R.id.fragment_container, mFragment)
+                        .commitNow());
+        return this;
+    }
+
+    @Override
+    public FragmentController<F> create() {
+        return create(null);
+    }
+
+    @Override
+    public FragmentController<F> destroy() {
+        shadowMainLooper.runPaused(mActivityController::destroy);
+        return this;
+    }
+
+    public FragmentController<F> start() {
+        shadowMainLooper.runPaused(mActivityController::start);
+        return this;
+    }
+
+    public FragmentController<F> resume() {
+        shadowMainLooper.runPaused(mActivityController::resume);
+        return this;
+    }
+
+    public FragmentController<F> pause() {
+        shadowMainLooper.runPaused(mActivityController::pause);
+        return this;
+    }
+
+    public FragmentController<F> stop() {
+        shadowMainLooper.runPaused(mActivityController::stop);
+        return this;
+    }
+
+    public FragmentController<F> visible() {
+        shadowMainLooper.runPaused(mActivityController::visible);
+        return this;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowAccountManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowAccountManager.java
new file mode 100644
index 0000000..f8bf3b1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowAccountManager.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Implements(AccountManager.class)
+public class ShadowAccountManager extends org.robolectric.shadows.ShadowAccountManager {
+
+    private final Map<Integer, List<Account>> mAccountsAsUserMap = new ArrayMap<>();
+    private final Map<Integer, List<AuthenticatorDescription>> mAuthenticatorAsUserMap =
+            new ArrayMap<>();
+
+    @Implementation
+    protected Account[] getAccountsAsUser(int userId) {
+        if (mAccountsAsUserMap.containsKey(userId)) {
+            return mAccountsAsUserMap.get(userId).toArray(new Account[]{});
+        }
+        return getAccounts();
+    }
+
+    public void addAccountAsUser(int userId, Account account) {
+        mAccountsAsUserMap.putIfAbsent(userId, new ArrayList<>());
+        mAccountsAsUserMap.get(userId).add(account);
+    }
+
+    @Implementation
+    protected Account[] getAccountsByTypeAsUser(String type, UserHandle userHandle) {
+        return getAccountsByType(type);
+    }
+
+    @Implementation
+    protected AuthenticatorDescription[] getAuthenticatorTypesAsUser(int userId) {
+        if (mAuthenticatorAsUserMap.containsKey(userId)) {
+            return mAuthenticatorAsUserMap.get(userId).toArray(new AuthenticatorDescription[]{});
+        }
+        return getAuthenticatorTypes();
+    }
+
+    public void addAuthenticatorAsUser(int userId, AuthenticatorDescription authenticator) {
+        mAuthenticatorAsUserMap.putIfAbsent(userId, new ArrayList<>());
+        mAuthenticatorAsUserMap.get(userId).add(authenticator);
+    }
+
+    @Override
+    public void removeAllAccounts() {
+        super.removeAllAccounts();
+        mAccountsAsUserMap.clear();
+        mAuthenticatorAsUserMap.clear();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityManager.java
new file mode 100644
index 0000000..b6a75aa
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityManager.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.app.ActivityManager;
+import android.content.pm.IPackageDataObserver;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(value = ActivityManager.class)
+public class ShadowActivityManager extends org.robolectric.shadows.ShadowActivityManager {
+
+    private static boolean sIsApplicationUserDataCleared;
+
+    private String mMostRecentlyStoppedPackage;
+
+    @Resetter
+    public static void reset() {
+        sIsApplicationUserDataCleared = false;
+    }
+
+    @Implementation
+    protected void forceStopPackage(String packageName) {
+        mMostRecentlyStoppedPackage = packageName;
+    }
+
+    @Implementation
+    protected boolean clearApplicationUserData(String packageName, IPackageDataObserver observer) {
+        return sIsApplicationUserDataCleared;
+    }
+
+    public String getMostRecentlyStoppedPackage() {
+        return mMostRecentlyStoppedPackage;
+    }
+
+    public static void setApplicationUserDataCleared(boolean applicationUserDataCleared) {
+        sIsApplicationUserDataCleared = applicationUserDataCleared;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowAppOpsManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowAppOpsManager.java
new file mode 100644
index 0000000..bfc582f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowAppOpsManager.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.app.AppOpsManager;
+import android.app.AppOpsManager.OpEntry;
+import android.app.AppOpsManager.PackageOps;
+
+import com.google.common.collect.HashBasedTable;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Table;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@Implements(value = AppOpsManager.class)
+public class ShadowAppOpsManager {
+
+    private Table<Integer, InternalKey, Integer> mOpToKeyToMode = HashBasedTable.create();
+
+    @Implementation
+    protected void setMode(int code, int uid, String packageName, int mode) {
+        InternalKey key = new InternalKey(uid, packageName);
+        mOpToKeyToMode.put(code, key, mode);
+    }
+
+    /** Convenience method to get the mode directly instead of wrapped in an op list. */
+    public int getMode(int code, int uid, String packageName) {
+        Integer mode = mOpToKeyToMode.get(code, new InternalKey(uid, packageName));
+        return mode == null ? AppOpsManager.opToDefaultMode(code) : mode;
+    }
+
+    @Implementation
+    protected List<PackageOps> getPackagesForOps(int[] ops) {
+        if (ops == null) {
+            return Collections.emptyList();
+        }
+        ImmutableList.Builder<PackageOps> result = new ImmutableList.Builder<>();
+        for (int i = 0; i < ops.length; i++) {
+            int op = ops[i];
+            Map<InternalKey, Integer> keyToModeMap = mOpToKeyToMode.rowMap().get(op);
+            if (keyToModeMap == null) {
+                continue;
+            }
+            for (InternalKey key : keyToModeMap.keySet()) {
+                Integer mode = keyToModeMap.get(key);
+                if (mode == null) {
+                    mode = AppOpsManager.opToDefaultMode(op);
+                }
+                OpEntry opEntry = new OpEntry(op, mode);
+                PackageOps packageOp = new PackageOps(key.mPackageName, key.mUid,
+                        Collections.singletonList(opEntry));
+                result.add(packageOp);
+            }
+        }
+        return result.build();
+    }
+
+    private static class InternalKey {
+        private int mUid;
+        private String mPackageName;
+
+        InternalKey(int uid, String packageName) {
+            mUid = uid;
+            mPackageName = packageName;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj instanceof InternalKey) {
+                InternalKey that = (InternalKey) obj;
+                return mUid == that.mUid && mPackageName.equals(that.mPackageName);
+            }
+            return false;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mUid, mPackageName);
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationPackageManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationPackageManager.java
new file mode 100644
index 0000000..ac738fc
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationPackageManager.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
+
+import android.annotation.NonNull;
+import android.annotation.UserIdInt;
+import android.app.ApplicationPackageManager;
+import android.content.ComponentName;
+import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageDataObserver;
+import android.content.pm.ModuleInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ProviderInfo;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.util.Pair;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/** Shadow of ApplicationPackageManager that allows the getting of content providers per user. */
+@Implements(value = ApplicationPackageManager.class)
+public class ShadowApplicationPackageManager extends
+        org.robolectric.shadows.ShadowApplicationPackageManager {
+
+    private static Resources sResources = null;
+    private static PackageManager sPackageManager;
+
+    private final Map<Integer, String> mUserIdToDefaultBrowserMap = new HashMap<>();
+    private final Map<String, ComponentName> mPkgToDefaultActivityMap = new HashMap<>();
+    private final Map<String, IntentFilter> mPkgToDefaultActivityIntentFilterMap = new HashMap<>();
+    private final Map<IntentFilter, ComponentName> mPreferredActivities = new LinkedHashMap<>();
+    private final Map<Pair<String, Integer>, Integer> mPkgAndUserIdToIntentVerificationStatusMap =
+            new HashMap<>();
+    private List<ResolveInfo> mHomeActivities = Collections.emptyList();
+    private ComponentName mDefaultHomeActivity;
+    private String mPermissionControllerPackageName;
+
+    @Resetter
+    public static void reset() {
+        sResources = null;
+        sPackageManager = null;
+    }
+
+    @Implementation
+    @NonNull
+    protected List<ModuleInfo> getInstalledModules(@PackageManager.ModuleInfoFlags int flags) {
+        return Collections.emptyList();
+    }
+
+    @Implementation
+    protected Drawable getUserBadgedIcon(Drawable icon, UserHandle user) {
+        return icon;
+    }
+
+    @Override
+    @Implementation
+    protected ProviderInfo resolveContentProviderAsUser(String name, int flags,
+            @UserIdInt int userId) {
+        return resolveContentProvider(name, flags);
+    }
+
+    @Implementation
+    protected int getPackageUidAsUser(String packageName, int flags, int userId)
+            throws PackageManager.NameNotFoundException {
+        return 0;
+    }
+
+    @Implementation
+    protected void deleteApplicationCacheFiles(String packageName, IPackageDataObserver observer) {
+        sPackageManager.deleteApplicationCacheFiles(packageName, observer);
+    }
+
+    @Implementation
+    protected Resources getResourcesForApplication(String appPackageName)
+            throws PackageManager.NameNotFoundException {
+        return sResources;
+    }
+
+    @Implementation
+    protected List<ApplicationInfo> getInstalledApplicationsAsUser(int flags, int userId) {
+        return getInstalledApplications(flags);
+    }
+
+    @Implementation
+    protected ApplicationInfo getApplicationInfoAsUser(String packageName, int flags, int userId)
+            throws PackageManager.NameNotFoundException {
+        return getApplicationInfo(packageName, flags);
+    }
+
+    @Implementation
+    @Override
+    protected ComponentName getHomeActivities(List<ResolveInfo> outActivities) {
+        outActivities.addAll(mHomeActivities);
+        return mDefaultHomeActivity;
+    }
+
+    @Implementation
+    @Override
+    protected void clearPackagePreferredActivities(String packageName) {
+        mPreferredActivities.clear();
+    }
+
+    @Implementation
+    @Override
+    public int getPreferredActivities(List<IntentFilter> outFilters,
+            List<ComponentName> outActivities, String packageName) {
+        for (IntentFilter filter : mPreferredActivities.keySet()) {
+            ComponentName name = mPreferredActivities.get(filter);
+            // If packageName is null, match everything, else filter by packageName.
+            if (packageName == null) {
+                outFilters.add(filter);
+                outActivities.add(name);
+            } else if (name.getPackageName().equals(packageName)) {
+                outFilters.add(filter);
+                outActivities.add(name);
+            }
+        }
+        return 0;
+    }
+
+    @Implementation
+    @Override
+    public void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set,
+            ComponentName activity) {
+        mPreferredActivities.put(filter, activity);
+    }
+
+    @Implementation
+    @Override
+    protected String getDefaultBrowserPackageNameAsUser(int userId) {
+        return mUserIdToDefaultBrowserMap.getOrDefault(userId, null);
+    }
+
+    @Implementation
+    @Override
+    protected boolean setDefaultBrowserPackageNameAsUser(String packageName, int userId) {
+        mUserIdToDefaultBrowserMap.put(userId, packageName);
+        return true;
+    }
+
+    @Implementation
+    @Override
+    protected int getIntentVerificationStatusAsUser(String packageName, int userId) {
+        Pair<String, Integer> key = new Pair<>(packageName, userId);
+        return mPkgAndUserIdToIntentVerificationStatusMap.getOrDefault(key,
+                INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED);
+    }
+
+    @Implementation
+    @Override
+    protected boolean updateIntentVerificationStatusAsUser(String packageName, int status,
+            int userId) {
+        Pair<String, Integer> key = new Pair<>(packageName, userId);
+        mPkgAndUserIdToIntentVerificationStatusMap.put(key, status);
+        return true;
+    }
+
+    @Implementation
+    protected String getPermissionControllerPackageName() {
+        return mPermissionControllerPackageName;
+    }
+
+    public void setPermissionControllerPackageName(String packageName) {
+        mPermissionControllerPackageName = packageName;
+    }
+
+    public void setHomeActivities(List<ResolveInfo> homeActivities) {
+        mHomeActivities = homeActivities;
+    }
+
+    public void setDefaultHomeActivity(ComponentName defaultHomeActivity) {
+        mDefaultHomeActivity = defaultHomeActivity;
+    }
+
+    public static void setResources(Resources resources) {
+        sResources = resources;
+    }
+
+    public static void setPackageManager(PackageManager packageManager) {
+        sPackageManager = packageManager;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationsState.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationsState.java
new file mode 100644
index 0000000..383a245
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationsState.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.app.Application;
+
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(ApplicationsState.class)
+public class ShadowApplicationsState {
+
+    private static ApplicationsState sApplicationsState;
+
+    public static void setInstance(ApplicationsState applicationsState) {
+        sApplicationsState = applicationsState;
+    }
+
+    @Resetter
+    public static void reset() {
+        sApplicationsState = null;
+    }
+
+    @Implementation
+    protected static ApplicationsState getInstance(Application app) {
+        return sApplicationsState;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowAutofillServiceInfo.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowAutofillServiceInfo.java
new file mode 100644
index 0000000..6974376
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowAutofillServiceInfo.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.content.Context;
+import android.content.pm.ServiceInfo;
+import android.service.autofill.AutofillServiceInfo;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(AutofillServiceInfo.class)
+public class ShadowAutofillServiceInfo {
+
+    private static String sSettingsActivity;
+
+    public void __constructor__(Context context, ServiceInfo si) {
+        // Do nothing when constructed in code.
+    }
+
+    @Resetter
+    public static void reset() {
+        sSettingsActivity = null;
+    }
+
+    @Implementation
+    protected String getSettingsActivity() {
+        return sSettingsActivity;
+    }
+
+    public static void setSettingsActivity(String settingsActivity) {
+        sSettingsActivity = settingsActivity;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothAdapter.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothAdapter.java
new file mode 100644
index 0000000..9de2084
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothAdapter.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import static android.bluetooth.BluetoothAdapter.SCAN_MODE_NONE;
+import static android.bluetooth.BluetoothAdapter.STATE_ON;
+
+import android.bluetooth.BluetoothAdapter;
+import android.os.ParcelUuid;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.Collections;
+import java.util.List;
+
+@Implements(BluetoothAdapter.class)
+public class ShadowBluetoothAdapter extends org.robolectric.shadows.ShadowBluetoothAdapter {
+
+    private static int sResetCalledCount = 0;
+    private String mName;
+    private int mScanMode;
+
+    public static boolean verifyFactoryResetCalled(int numTimes) {
+        return sResetCalledCount == numTimes;
+    }
+
+    @Implementation
+    protected boolean factoryReset() {
+        sResetCalledCount++;
+        return true;
+    }
+
+    @Implementation
+    protected static synchronized BluetoothAdapter getDefaultAdapter() {
+        return (BluetoothAdapter) ShadowApplication.getInstance().getBluetoothAdapter();
+    }
+
+    @Implementation
+    protected ParcelUuid[] getUuids() {
+        return null;
+    }
+
+    @Implementation
+    protected String getName() {
+        return mName;
+    }
+
+    @Implementation
+    protected boolean setName(String name) {
+        if (getState() != STATE_ON) {
+            return false;
+        }
+        mName = name;
+        return true;
+    }
+
+    @Implementation
+    protected int getScanMode() {
+        if (getState() != STATE_ON) {
+            return SCAN_MODE_NONE;
+        }
+        return mScanMode;
+    }
+
+    @Implementation
+    protected boolean setScanMode(int scanMode) {
+        if (getState() != STATE_ON) {
+            return false;
+        }
+        mScanMode = scanMode;
+        return true;
+    }
+
+    @Implementation
+    protected List<Integer> getSupportedProfiles() {
+        return Collections.emptyList();
+    }
+
+    @Resetter
+    public static void reset() {
+        sResetCalledCount = 0;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothPan.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothPan.java
new file mode 100644
index 0000000..6d629e5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothPan.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2018 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.car.settings.testutils;
+
+import android.bluetooth.BluetoothPan;
+import android.bluetooth.BluetoothProfile;
+import android.content.Context;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+@Implements(BluetoothPan.class)
+public class ShadowBluetoothPan {
+    @Implementation
+    public void __constructor__(Context context, BluetoothProfile.ServiceListener l) {
+        // Do nothing. Implemented to avoid NullPointerException in BluetoothPan.
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCar.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCar.java
index f96d4d2..ed0f78b 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowCar.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowCar.java
@@ -16,14 +16,19 @@
 
 package com.android.car.settings.testutils;
 
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 
 import android.car.Car;
+import android.car.CarNotConnectedException;
 import android.content.Context;
 import android.content.ServiceConnection;
 
+import org.mockito.stubbing.Answer;
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
 
 /**
  * Shadow class for {@link Car}. Components in car support library expects
@@ -32,8 +37,80 @@
 @Implements(Car.class)
 public class ShadowCar {
 
+    private static Car sMockCar = mock(Car.class);
+    private static boolean sIsConnected;
+    private static String sServiceName;
+    private static Object sCarManager;
+
+    /**
+     * Returns a mocked version of a {@link Car} object.
+     */
     @Implementation
-    public static Car createCar(Context context, ServiceConnection serviceConnection) {
-        return mock(Car.class);
+    protected static Car createCar(Context context, ServiceConnection serviceConnection) {
+        if (serviceConnection != null) {
+            doAnswer((Answer<Void>) invocation -> {
+                serviceConnection.onServiceConnected(null, null);
+                return null;
+            }).when(sMockCar).connect();
+            doAnswer((Answer<Void>) invocation -> {
+                serviceConnection.onServiceDisconnected(null);
+                return null;
+            }).when(sMockCar).disconnect();
+        }
+        doReturn(sIsConnected).when(sMockCar).isConnected();
+        if (sServiceName != null) {
+            try {
+                doReturn(sCarManager).when(sMockCar).getCarManager(sServiceName);
+            } catch (CarNotConnectedException e) {
+                // do nothing, have to do this because compiler doesn't understand mock can't throw
+                // exception.
+            }
+        }
+        return sMockCar;
+    }
+
+    /**
+     * Returns a mocked version of a {@link Car} object.
+     */
+    @Implementation
+    protected static Car createCar(Context context) {
+        doReturn(sIsConnected).when(sMockCar).isConnected();
+        if (sServiceName != null) {
+            try {
+                doReturn(sCarManager).when(sMockCar).getCarManager(sServiceName);
+            } catch (CarNotConnectedException e) {
+                // do nothing, have to do this because compiler doesn't understand mock can't throw
+                // exception.
+            }
+        }
+        return sMockCar;
+    }
+
+    /**
+     * Sets the manager returned by {@link Car#getCarManager(String)}.
+     *
+     * @param serviceName the name for the service request that should return this car manager.
+     * @param carManager  the object returned by a call with this service.
+     */
+    public static void setCarManager(String serviceName, Object carManager) {
+        sServiceName = serviceName;
+        sCarManager = carManager;
+        try {
+            doReturn(carManager).when(sMockCar).getCarManager(serviceName);
+        } catch (CarNotConnectedException e) {
+            // do nothing, have to do this because compiler doesn't understand mock can't throw e.
+        }
+    }
+
+    /**
+     * Resets the shadow state, note this will not remove stubbed behavior on references to older
+     * calls to {@link #createCar(Context, ServiceConnection)}.
+     */
+    @Resetter
+    public static void reset() {
+        sMockCar = mock(Car.class);
+        sServiceName = null;
+        sCarManager = null;
+        sIsConnected = false;
     }
 }
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUnitsManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUnitsManager.java
new file mode 100644
index 0000000..91ed48e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUnitsManager.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import com.android.car.settings.units.CarUnitsManager;
+import com.android.car.settings.units.Unit;
+import com.android.car.settings.units.UnitsMap;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.HashMap;
+
+/**
+ * Shadow class for {@link CarUnitsManager}.
+ */
+@Implements(CarUnitsManager.class)
+public class ShadowCarUnitsManager {
+    private static boolean sConnected = false;
+    private static CarUnitsManager.OnCarServiceListener sListener;
+    private static HashMap<Integer, Unit[]> sSupportedUnits = new HashMap<>();
+    private static HashMap<Integer, Unit> sUnitsBeingUsed = new HashMap<>();
+
+    @Implementation
+    protected void connect() {
+        sConnected = true;
+    }
+
+    @Implementation
+    protected void disconnect() {
+        sConnected = false;
+    }
+
+    @Implementation
+    protected static Unit[] getUnitsSupportedByProperty(int propertyId) {
+        return sSupportedUnits.get(propertyId);
+    }
+
+    @Implementation
+    protected static Unit getUnitUsedByProperty(int propertyId) {
+        return sUnitsBeingUsed.get(propertyId);
+    }
+
+    @Implementation
+    protected static void setUnitUsedByProperty(int propertyId, int unitId) {
+        sUnitsBeingUsed.put(propertyId, UnitsMap.MAP.get(unitId));
+    }
+
+    @Implementation
+    protected static void registerCarServiceListener(
+            CarUnitsManager.OnCarServiceListener listener) {
+        sListener = listener;
+    }
+
+    @Implementation
+    protected static void unregisterCarServiceListener() {
+        sListener = null;
+    }
+
+    @Resetter
+    public static void reset() {
+        sConnected = false;
+        sListener = null;
+        sSupportedUnits = new HashMap<>();
+        sUnitsBeingUsed = new HashMap<>();
+    }
+
+    public static void setUnitsSupportedByProperty(int propertyId, Unit[] units) {
+        sSupportedUnits.put(propertyId, units);
+    }
+
+    public static boolean isConnected() {
+        return sConnected;
+    }
+
+    public static CarUnitsManager.OnCarServiceListener getListener() {
+        return sListener;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java
index 842a19c..b900a55 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java
@@ -16,18 +16,26 @@
 
 package com.android.car.settings.testutils;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper.OnUsersUpdateListener;
 import android.content.pm.UserInfo;
 
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 import org.robolectric.annotation.Resetter;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * Shadow for {@link CarUserManagerHelper}
  */
 @Implements(CarUserManagerHelper.class)
 public class ShadowCarUserManagerHelper {
+    // First Map keys from user id to map of restrictions. Second Map keys from restriction id to
+    // bool.
+    private static Map<Integer, Map<String, Boolean>> sUserRestrictionMap = new HashMap<>();
     private static CarUserManagerHelper sMockInstance;
 
     public static void setMockInstance(CarUserManagerHelper userManagerHelper) {
@@ -37,10 +45,138 @@
     @Resetter
     public static void reset() {
         sMockInstance = null;
+        sUserRestrictionMap.clear();
     }
 
     @Implementation
-    public void setUserName(UserInfo user, String name) {
+    protected void setUserName(UserInfo user, String name) {
         sMockInstance.setUserName(user, name);
     }
+
+    @Implementation
+    protected UserInfo getCurrentProcessUserInfo() {
+        return sMockInstance.getCurrentProcessUserInfo();
+    }
+
+    @Implementation
+    protected UserInfo getCurrentForegroundUserInfo() {
+        return sMockInstance.getCurrentForegroundUserInfo();
+    }
+
+    @Implementation
+    protected int getCurrentProcessUserId() {
+        return sMockInstance.getCurrentProcessUserId();
+    }
+
+    @Implementation
+    protected boolean isCurrentProcessUser(UserInfo userInfo) {
+        return sMockInstance.isCurrentProcessUser(userInfo);
+    }
+
+    @Implementation
+    protected List<UserInfo> getAllSwitchableUsers() {
+        return sMockInstance.getAllSwitchableUsers();
+    }
+
+    @Implementation
+    protected List<UserInfo> getAllUsers() {
+        return sMockInstance.getAllUsers();
+    }
+
+    @Implementation
+    protected List<UserInfo> getAllPersistentUsers() {
+        return sMockInstance.getAllPersistentUsers();
+    }
+
+    @Implementation
+    protected UserInfo createNewNonAdminUser(String userName) {
+        return sMockInstance.createNewNonAdminUser(userName);
+    }
+
+    @Implementation
+    protected void registerOnUsersUpdateListener(OnUsersUpdateListener listener) {
+        sMockInstance.registerOnUsersUpdateListener(listener);
+    }
+
+    @Implementation
+    protected void unregisterOnUsersUpdateListener(OnUsersUpdateListener listener) {
+        sMockInstance.unregisterOnUsersUpdateListener(listener);
+    }
+
+    @Implementation
+    protected boolean isUserLimitReached() {
+        return sMockInstance.isUserLimitReached();
+    }
+
+    @Implementation
+    protected boolean canCurrentProcessModifyAccounts() {
+        return sMockInstance.canCurrentProcessModifyAccounts();
+    }
+
+    @Implementation
+    protected boolean canCurrentProcessAddUsers() {
+        return sMockInstance.canCurrentProcessAddUsers();
+    }
+
+    @Implementation
+    protected int getMaxSupportedRealUsers() {
+        return sMockInstance.getMaxSupportedRealUsers();
+    }
+
+    @Implementation
+    protected boolean canCurrentProcessRemoveUsers() {
+        return sMockInstance.canCurrentProcessRemoveUsers();
+    }
+
+    @Implementation
+    protected boolean canUserBeRemoved(UserInfo userInfo) {
+        return sMockInstance.canUserBeRemoved(userInfo);
+    }
+
+    @Implementation
+    protected void grantAdminPermissions(UserInfo user) {
+        sMockInstance.grantAdminPermissions(user);
+    }
+
+    @Implementation
+    protected boolean isCurrentProcessDemoUser() {
+        return sMockInstance.isCurrentProcessDemoUser();
+    }
+
+    @Implementation
+    protected boolean isCurrentProcessAdminUser() {
+        return sMockInstance.isCurrentProcessAdminUser();
+    }
+
+    @Implementation
+    protected boolean isCurrentProcessGuestUser() {
+        return sMockInstance.isCurrentProcessGuestUser();
+    }
+
+    @Implementation
+    protected boolean isCurrentProcessUserHasRestriction(String restriction) {
+        return sMockInstance.isCurrentProcessUserHasRestriction(restriction);
+    }
+
+    @Implementation
+    protected boolean removeUser(UserInfo userInfo, String guestUserName) {
+        return sMockInstance.removeUser(userInfo, guestUserName);
+    }
+
+    @Implementation
+    protected void setUserRestriction(UserInfo userInfo, String restriction, boolean enable) {
+        Map<String, Boolean> permissionsMap = sUserRestrictionMap.getOrDefault(userInfo.id,
+                new HashMap<>());
+        permissionsMap.put(restriction, enable);
+        sUserRestrictionMap.put(userInfo.id, permissionsMap);
+    }
+
+    @Implementation
+    protected boolean hasUserRestriction(String restriction, UserInfo userInfo) {
+        // False by default, if nothing was added to our map,
+        if (!sUserRestrictionMap.containsKey(userInfo.id)) {
+            return false;
+        }
+        return sUserRestrictionMap.get(userInfo.id).getOrDefault(restriction, false);
+    }
 }
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarWifiManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarWifiManager.java
new file mode 100644
index 0000000..e07116a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarWifiManager.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.Context;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+
+import com.android.car.settings.wifi.CarWifiManager;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.List;
+
+/** TODO: Refactor all methods to run without relying on sInstance. */
+@Implements(CarWifiManager.class)
+public class ShadowCarWifiManager {
+
+    public static final int STATE_UNKNOWN = -1;
+    public static final int STATE_STARTED = 0;
+    public static final int STATE_STOPPED = 1;
+    public static final int STATE_DESTROYED = 2;
+
+    private static CarWifiManager sInstance;
+    private static int sCurrentState = STATE_UNKNOWN;
+    private static WifiConfiguration sWifiConfiguration = new WifiConfiguration();
+    private static boolean sIsDualModeSupported = true;
+    private static boolean sIsDualBandSupported = true;
+
+    public static void setInstance(CarWifiManager wifiManager) {
+        sInstance = wifiManager;
+    }
+
+    @Resetter
+    public static void reset() {
+        sInstance = null;
+        sWifiConfiguration = new WifiConfiguration();
+        sCurrentState = STATE_UNKNOWN;
+        sIsDualModeSupported = true;
+        sIsDualBandSupported = true;
+    }
+
+    @Implementation
+    public void __constructor__(Context context) {
+    }
+
+    @Implementation
+    public void start() {
+        if (sInstance != null) {
+            sInstance.start();
+        }
+        sCurrentState = STATE_STARTED;
+    }
+
+    @Implementation
+    public void stop() {
+        if (sInstance != null) {
+            sInstance.stop();
+        }
+        sCurrentState = STATE_STOPPED;
+    }
+
+    @Implementation
+    public void destroy() {
+        if (sInstance != null) {
+            sInstance.destroy();
+        }
+        sCurrentState = STATE_DESTROYED;
+    }
+
+    @Implementation
+    public void setWifiApConfig(WifiConfiguration config) {
+        sWifiConfiguration = config;
+    }
+
+    @Implementation
+    public WifiConfiguration getWifiApConfig() {
+        return sWifiConfiguration;
+    }
+
+    @Implementation
+    public boolean setWifiEnabled(boolean enabled) {
+        return sInstance.setWifiEnabled(enabled);
+    }
+
+    @Implementation
+    public boolean isWifiEnabled() {
+        return sInstance.isWifiEnabled();
+    }
+
+    @Implementation
+    public boolean isWifiApEnabled() {
+        return sInstance.isWifiApEnabled();
+    }
+
+    @Implementation
+    public List<AccessPoint> getAllAccessPoints() {
+        return sInstance.getAllAccessPoints();
+    }
+
+    @Implementation
+    public List<AccessPoint> getSavedAccessPoints() {
+        return sInstance.getSavedAccessPoints();
+    }
+
+    @Implementation
+    public void connectToPublicWifi(AccessPoint accessPoint, WifiManager.ActionListener listener) {
+        sInstance.connectToPublicWifi(accessPoint, listener);
+    }
+
+    @Implementation
+    protected void connectToSavedWifi(AccessPoint accessPoint,
+            WifiManager.ActionListener listener) {
+        sInstance.connectToSavedWifi(accessPoint, listener);
+    }
+
+    @Implementation
+    protected boolean isDualModeSupported() {
+        return sIsDualModeSupported;
+    }
+
+    @Implementation
+    protected String getCountryCode() {
+        return "1";
+    }
+
+    @Implementation
+    protected boolean isDualBandSupported() {
+        return sIsDualBandSupported;
+    }
+
+    public static void setIsDualModeSupported(boolean supported) {
+        sIsDualModeSupported = supported;
+    }
+
+    public static void setIsDualBandSupported(boolean supported) {
+        sIsDualBandSupported = supported;
+    }
+
+    public static int getCurrentState() {
+        return sCurrentState;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarrierConfigManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarrierConfigManager.java
new file mode 100644
index 0000000..58cc473
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarrierConfigManager.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.os.PersistableBundle;
+import android.telephony.CarrierConfigManager;
+import android.util.SparseArray;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+@Implements(CarrierConfigManager.class)
+public class ShadowCarrierConfigManager {
+
+    private SparseArray<PersistableBundle> mBundles = new SparseArray<>();
+
+    @Implementation
+    protected PersistableBundle getConfigForSubId(int subId) {
+        return mBundles.get(subId);
+    }
+
+    public void setConfigForSubId(int subId, PersistableBundle config) {
+        mBundles.put(subId, config);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowConnectivityManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowConnectivityManager.java
new file mode 100644
index 0000000..5c41365
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowConnectivityManager.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import static org.mockito.Mockito.mock;
+
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.os.Handler;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Implements(ConnectivityManager.class)
+public class ShadowConnectivityManager extends org.robolectric.shadows.ShadowConnectivityManager {
+
+    private static int sResetCalledCount = 0;
+
+    private final Map<Network, NetworkCapabilities> mCapabilitiesMap = new HashMap<>();
+
+    private int mStartTetheringCalledCount = 0;
+    private int mStopTetheringCalledCount = 0;
+    private int mTetheringType;
+
+    public static boolean verifyFactoryResetCalled(int numTimes) {
+        return sResetCalledCount == numTimes;
+    }
+
+    public boolean verifyStartTetheringCalled(int numTimes) {
+        return mStartTetheringCalledCount == numTimes;
+    }
+
+    public boolean verifyStopTetheringCalled(int numTimes) {
+        return mStopTetheringCalledCount == numTimes;
+    }
+
+    public int getTetheringType() {
+        return mTetheringType;
+    }
+
+    public void addNetworkCapabilities(Network network, NetworkCapabilities capabilities) {
+        super.addNetwork(network, mock(NetworkInfo.class));
+        mCapabilitiesMap.put(network, capabilities);
+    }
+
+    @Implementation
+    protected NetworkCapabilities getNetworkCapabilities(Network network) {
+        return mCapabilitiesMap.get(network);
+    }
+
+    @Implementation
+    public void startTethering(int type, boolean showProvisioningUi,
+            final ConnectivityManager.OnStartTetheringCallback callback, Handler handler) {
+        mTetheringType = type;
+        mStartTetheringCalledCount++;
+    }
+
+    @Implementation
+    public void stopTethering(int type) {
+        mTetheringType = type;
+        mStopTetheringCalledCount++;
+    }
+
+    @Implementation
+    protected void factoryReset() {
+        sResetCalledCount++;
+    }
+
+    @Resetter
+    public static void reset() {
+        sResetCalledCount = 0;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowContentResolver.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowContentResolver.java
new file mode 100644
index 0000000..e899705
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowContentResolver.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.accounts.Account;
+import android.annotation.UserIdInt;
+import android.content.ContentResolver;
+import android.content.SyncAdapterType;
+import android.content.SyncInfo;
+import android.content.SyncStatusInfo;
+import android.content.SyncStatusObserver;
+import android.os.Bundle;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Derived from {@link com.android.settings.testutils.shadow.ShadowContentResolver}
+ *
+ * <p>Needed for many account-related tests because the default ShadowContentResolver does not
+ * include an implementation of getSyncAdapterTypesAsUser, which is used by {@link
+ * com.android.settingslib.accounts.AuthenticatorHelper#buildAccountTypeToAuthoritiesMap}.
+ */
+@Implements(ContentResolver.class)
+public class ShadowContentResolver extends org.robolectric.shadows.ShadowContentResolver {
+    private static final int SYNCABLE = 1;
+
+    private static SyncAdapterType[] sSyncAdapterTypes = new SyncAdapterType[0];
+    private static Map<String, Integer> sSyncable = new HashMap<>();
+    private static Map<String, Boolean> sSyncAutomatically = new HashMap<>();
+    private static Map<Integer, Boolean> sMasterSyncAutomatically = new HashMap<>();
+    private static Map<String, SyncStatusInfo> sSyncStatus = new HashMap<>();
+    private static List<SyncInfo> sSyncs = new ArrayList<>();
+    private static SyncListener sSyncListener;
+    private static SyncStatusObserver sStatusObserver;
+
+    @Implementation
+    protected static SyncAdapterType[] getSyncAdapterTypesAsUser(int userId) {
+        return sSyncAdapterTypes;
+    }
+
+    @Implementation
+    protected static int getIsSyncableAsUser(Account account, String authority, int userId) {
+        return sSyncable.getOrDefault(authority, SYNCABLE);
+    }
+
+    @Implementation
+    protected static boolean getSyncAutomaticallyAsUser(Account account, String authority,
+            int userId) {
+        return sSyncAutomatically.getOrDefault(authority, true);
+    }
+
+    @Implementation
+    protected static boolean getMasterSyncAutomaticallyAsUser(int userId) {
+        return sMasterSyncAutomatically.getOrDefault(userId, true);
+    }
+
+    @Implementation
+    protected static List<SyncInfo> getCurrentSyncsAsUser(@UserIdInt int userId) {
+        return sSyncs;
+    }
+
+    @Implementation
+    protected static SyncStatusInfo getSyncStatusAsUser(Account account, String authority,
+            @UserIdInt int userId) {
+        return sSyncStatus.get(authority);
+    }
+
+    public static void setSyncAdapterTypes(SyncAdapterType[] syncAdapterTypes) {
+        sSyncAdapterTypes = syncAdapterTypes;
+    }
+
+    @Implementation
+    public static void setIsSyncable(Account account, String authority, int syncable) {
+        sSyncable.put(authority, syncable);
+    }
+
+    @Implementation
+    protected static void setSyncAutomaticallyAsUser(Account account, String authority,
+            boolean sync, @UserIdInt int userId) {
+        sSyncAutomatically.put(authority, sync);
+    }
+
+    @Implementation
+    protected static void setMasterSyncAutomaticallyAsUser(boolean sync, @UserIdInt int userId) {
+        sMasterSyncAutomatically.put(userId, sync);
+    }
+
+    public static void setCurrentSyncs(List<SyncInfo> syncs) {
+        sSyncs = syncs;
+    }
+
+    public static void setSyncStatus(Account account, String authority, SyncStatusInfo status) {
+        sSyncStatus.put(authority, status);
+    }
+
+    @Implementation
+    public static void cancelSyncAsUser(Account account, String authority, @UserIdInt int userId) {
+        if (sSyncListener != null) {
+            sSyncListener.onSyncCanceled(account, authority, userId);
+        }
+    }
+
+    @Implementation
+    public static void requestSyncAsUser(Account account, String authority, @UserIdInt int userId,
+            Bundle extras) {
+        if (sSyncListener != null) {
+            sSyncListener.onSyncRequested(account, authority, userId, extras);
+        }
+    }
+
+    public static void setSyncListener(SyncListener syncListener) {
+        sSyncListener = syncListener;
+    }
+
+    @Implementation
+    protected static Object addStatusChangeListener(int mask, SyncStatusObserver callback) {
+        sStatusObserver = callback;
+        return null;
+    }
+
+    @Implementation
+    protected static void removeStatusChangeListener(Object handle) {
+        sStatusObserver = null;
+    }
+
+    public static SyncStatusObserver getStatusChangeListener() {
+        return sStatusObserver;
+    }
+
+    @Resetter
+    public static void reset() {
+        org.robolectric.shadows.ShadowContentResolver.reset();
+        sSyncable.clear();
+        sSyncAutomatically.clear();
+        sMasterSyncAutomatically.clear();
+        sSyncAdapterTypes = new SyncAdapterType[0];
+        sSyncStatus.clear();
+        sSyncs = new ArrayList<>();
+        sSyncListener = null;
+        sStatusObserver = null;
+    }
+
+    /**
+     * A listener interface that can be used to verify calls to {@link #cancelSyncAsUser} and {@link
+     * #requestSyncAsUser}
+     */
+    public interface SyncListener {
+        void onSyncCanceled(Account account, String authority, @UserIdInt int userId);
+
+        void onSyncRequested(Account account, String authority, @UserIdInt int userId,
+                Bundle extras);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowDataUsageController.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowDataUsageController.java
new file mode 100644
index 0000000..bbbe214
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowDataUsageController.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.net.NetworkTemplate;
+
+import com.android.settingslib.net.DataUsageController;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(DataUsageController.class)
+public class ShadowDataUsageController {
+
+    private static DataUsageController sInstance;
+
+    public static void setInstance(DataUsageController dataUsageController) {
+        sInstance = dataUsageController;
+    }
+
+    @Implementation
+    protected DataUsageController.DataUsageInfo getDataUsageInfo(NetworkTemplate template) {
+        return sInstance.getDataUsageInfo(template);
+    }
+
+    @Resetter
+    public static void reset() {
+        sInstance = null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowDefaultDialerManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowDefaultDialerManager.java
new file mode 100644
index 0000000..2abc953
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowDefaultDialerManager.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.content.Context;
+import android.telecom.DefaultDialerManager;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(DefaultDialerManager.class)
+public class ShadowDefaultDialerManager {
+
+    private static String sDefaultDialerPackage;
+
+    @Resetter
+    public static void reset() {
+        sDefaultDialerPackage = null;
+    }
+
+    @Implementation
+    protected static String getDefaultDialerApplication(Context context) {
+        return sDefaultDialerPackage;
+    }
+
+    public static void setDefaultDialerApplication(String defaultDialerPackage) {
+        sDefaultDialerPackage = defaultDialerPackage;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowDevicePolicyManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowDevicePolicyManager.java
new file mode 100644
index 0000000..5a6e713
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowDevicePolicyManager.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.annotation.Nullable;
+import android.app.admin.DevicePolicyManager;
+import android.util.ArraySet;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.List;
+import java.util.Set;
+
+@Implements(value = DevicePolicyManager.class)
+public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDevicePolicyManager {
+    @Nullable
+    private static List<String> sPermittedInputMethods;
+
+    private Set<String> mActiveAdminsPackages = new ArraySet<>();
+    private boolean mIsInstallInQueue;
+
+    @Resetter
+    public static void reset() {
+        sPermittedInputMethods = null;
+    }
+
+    @Implementation
+    @Nullable
+    protected List<String> getPermittedInputMethodsForCurrentUser() {
+        return sPermittedInputMethods;
+    }
+
+    public static void setPermittedInputMethodsForCurrentUser(@Nullable List<String> inputMethods) {
+        sPermittedInputMethods = inputMethods;
+    }
+
+    @Implementation
+    protected boolean packageHasActiveAdmins(String packageName) {
+        return mActiveAdminsPackages.contains(packageName);
+    }
+
+    public void setPackageHasActiveAdmins(String packageName, boolean hasActiveAdmins) {
+        if (hasActiveAdmins) {
+            mActiveAdminsPackages.add(packageName);
+        } else {
+            mActiveAdminsPackages.remove(packageName);
+        }
+    }
+
+    @Implementation
+    protected boolean isUninstallInQueue(String packageName) {
+        return mIsInstallInQueue;
+    }
+
+    public void setIsUninstallInQueue(boolean isUninstallInQueue) {
+        mIsInstallInQueue = isUninstallInQueue;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowINetworkStatsServiceStub.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowINetworkStatsServiceStub.java
new file mode 100644
index 0000000..9de5a1d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowINetworkStatsServiceStub.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.net.INetworkStatsService;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(value = INetworkStatsService.Stub.class)
+public class ShadowINetworkStatsServiceStub {
+
+    private static INetworkStatsService sINetworkStatsService;
+
+    @Resetter
+    public static void reset() {
+        sINetworkStatsService = null;
+    }
+
+    @Implementation
+    public static android.net.INetworkStatsService asInterface(android.os.IBinder obj) {
+        return sINetworkStatsService;
+    }
+
+    public static void setINetworkStatsSession(INetworkStatsService iNetworkStatsService) {
+        sINetworkStatsService = iNetworkStatsService;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowISms.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowISms.java
new file mode 100644
index 0000000..17a5073
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowISms.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.os.IBinder;
+
+import com.android.internal.telephony.ISms;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(value = ISms.Stub.class)
+public class ShadowISms {
+
+    private static ISms sISms;
+
+    @Resetter
+    public static void reset() {
+        sISms = null;
+    }
+
+    public static void setISms(ISms iSms) {
+        sISms = iSms;
+    }
+
+    @Implementation
+    protected static ISms asInterface(IBinder obj) {
+        return sISms;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowIUsbManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowIUsbManager.java
new file mode 100644
index 0000000..b940a2e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowIUsbManager.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.hardware.usb.IUsbManager;
+import android.os.IBinder;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(value = IUsbManager.Stub.class)
+public class ShadowIUsbManager {
+
+    private static IUsbManager sInstance;
+
+    public static void setInstance(IUsbManager instance) {
+        sInstance = instance;
+    }
+
+    @Implementation
+    public static IUsbManager asInterface(IBinder obj) {
+        return sInstance;
+    }
+
+    @Resetter
+    public static void reset() {
+        sInstance = null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowIconDrawableFactory.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowIconDrawableFactory.java
new file mode 100644
index 0000000..29ab22c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowIconDrawableFactory.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.content.pm.ApplicationInfo;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.IconDrawableFactory;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+@Implements(value = IconDrawableFactory.class)
+public class ShadowIconDrawableFactory {
+
+    @Implementation
+    protected Drawable getBadgedIcon(ApplicationInfo appInfo) {
+        return new ColorDrawable(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowInputMethodManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowInputMethodManager.java
new file mode 100644
index 0000000..6edf719
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowInputMethodManager.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.provider.Settings;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+
+import androidx.annotation.Nullable;
+
+import com.android.car.settings.inputmethod.InputMethodUtil;
+
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Implements(value = InputMethodManager.class)
+public class ShadowInputMethodManager extends org.robolectric.shadows.ShadowInputMethodManager {
+    private static List<InputMethodSubtype> sInputMethodSubtypes = new ArrayList<>();
+    private static List<InputMethodInfo> sInputMethodList = new ArrayList<>();
+    private static Map<String, InputMethodInfo> sInputMethodMap = new HashMap<>();
+
+    @Resetter
+    public static void reset() {
+        sInputMethodSubtypes.clear();
+        sInputMethodList.clear();
+        sInputMethodMap.clear();
+        org.robolectric.shadows.ShadowInputMethodManager.reset();
+    }
+
+    public static void setEnabledInputMethodSubtypeList(List<InputMethodSubtype> list) {
+        sInputMethodSubtypes = list;
+    }
+
+    @Implementation
+    protected List<InputMethodSubtype> getEnabledInputMethodSubtypeList(InputMethodInfo imi,
+            boolean allowsImplicitlySelectedSubtypes) {
+        return sInputMethodSubtypes;
+    }
+
+    public static void setEnabledInputMethodList(@Nullable List<InputMethodInfo> list) {
+        if (list == null || list.size() == 0) {
+            Settings.Secure.putString(RuntimeEnvironment.application.getContentResolver(),
+                    Settings.Secure.ENABLED_INPUT_METHODS, "");
+            return;
+        }
+
+        String concatenatedInputMethodIds = createInputMethodIdString(list.stream().map(
+                imi -> imi.getId()).collect(Collectors.toList()).toArray(new String[list.size()]));
+        Settings.Secure.putString(RuntimeEnvironment.application.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS, concatenatedInputMethodIds);
+        addInputMethodInfosToMap(list);
+    }
+
+    @Implementation
+    protected List<InputMethodInfo> getEnabledInputMethodList() {
+        List<InputMethodInfo> enabledInputMethodList = new ArrayList<>();
+
+        String inputMethodIdString = Settings.Secure.getString(
+                RuntimeEnvironment.application.getContentResolver(),
+                Settings.Secure.ENABLED_INPUT_METHODS);
+        if (inputMethodIdString == null || inputMethodIdString.isEmpty()) {
+            return enabledInputMethodList;
+        }
+
+        InputMethodUtil.sInputMethodSplitter.setString(inputMethodIdString);
+        while (InputMethodUtil.sInputMethodSplitter.hasNext()) {
+            enabledInputMethodList.add(sInputMethodMap.get(InputMethodUtil.sInputMethodSplitter
+                    .next()));
+        }
+        return enabledInputMethodList;
+    }
+
+    public void setInputMethodList(List<InputMethodInfo> inputMethodInfos) {
+        sInputMethodList = inputMethodInfos;
+        if (inputMethodInfos == null) {
+            return;
+        }
+
+        addInputMethodInfosToMap(inputMethodInfos);
+    }
+
+    @Implementation
+    protected List<InputMethodInfo> getInputMethodList() {
+        return sInputMethodList;
+    }
+
+    private static String createInputMethodIdString(String... ids) {
+        int size = ids == null ? 0 : ids.length;
+
+        if (size == 1) {
+            return ids[0];
+        }
+
+        StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < size; i++) {
+            builder.append(ids[i]);
+            if (i != size - 1) {
+                builder.append(InputMethodUtil.INPUT_METHOD_DELIMITER);
+            }
+        }
+        return builder.toString();
+    }
+
+    private static void addInputMethodInfosToMap(List<InputMethodInfo> inputMethodInfos) {
+        if (sInputMethodMap == null || sInputMethodMap.size() == 0) {
+            sInputMethodMap = inputMethodInfos.stream().collect(Collectors.toMap(
+                    InputMethodInfo::getId, imi -> imi));
+            return;
+        }
+
+        inputMethodInfos.forEach(imi -> {
+            sInputMethodMap.put(imi.getId(), imi);
+        });
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalBluetoothAdapter.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalBluetoothAdapter.java
new file mode 100644
index 0000000..da4d43b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalBluetoothAdapter.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.bluetooth.BluetoothAdapter;
+
+import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+@Implements(LocalBluetoothAdapter.class)
+public class ShadowLocalBluetoothAdapter {
+
+    private int mState = BluetoothAdapter.STATE_OFF;
+    private boolean mIsBluetoothEnabled = true;
+    private int mScanMode = BluetoothAdapter.SCAN_MODE_NONE;
+
+    @Implementation
+    protected boolean isEnabled() {
+        return mIsBluetoothEnabled;
+    }
+
+    @Implementation
+    protected boolean enable() {
+        mIsBluetoothEnabled = true;
+        return true;
+    }
+
+    @Implementation
+    protected boolean disable() {
+        mIsBluetoothEnabled = false;
+        return true;
+    }
+
+    @Implementation
+    protected int getScanMode() {
+        return mScanMode;
+    }
+
+    @Implementation
+    protected void setScanMode(int mode) {
+        mScanMode = mode;
+    }
+
+    @Implementation
+    protected boolean setScanMode(int mode, int duration) {
+        mScanMode = mode;
+        return true;
+    }
+
+    @Implementation
+    protected int getState() {
+        return mState;
+    }
+
+    public void setState(int state) {
+        mState = state;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalBroadcastManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalBroadcastManager.java
new file mode 100644
index 0000000..54bbe71
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalBroadcastManager.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.util.ReflectionHelpers;
+import org.robolectric.util.ReflectionHelpers.ClassParameter;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+@Implements(LocalBroadcastManager.class)
+public class ShadowLocalBroadcastManager {
+    private static List<Intent> sSentBroadcastIntents = new ArrayList<>();
+    private static List<Wrapper> sRegisteredReceivers = new ArrayList<>();
+
+    @Implementation
+    public static LocalBroadcastManager getInstance(final Context context) {
+        return ShadowApplication.getInstance().getSingleton(LocalBroadcastManager.class,
+                () -> ReflectionHelpers.callConstructor(LocalBroadcastManager.class,
+                        ClassParameter.from(Context.class, context)));
+    }
+
+    @Implementation
+    public void registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
+        sRegisteredReceivers.add(new Wrapper(receiver, filter));
+    }
+
+    @Implementation
+    public void unregisterReceiver(BroadcastReceiver receiver) {
+        Iterator<Wrapper> iterator = sRegisteredReceivers.iterator();
+        while (iterator.hasNext()) {
+            Wrapper wrapper = iterator.next();
+            if (wrapper.getBroadcastReceiver() == receiver) {
+                iterator.remove();
+            }
+        }
+    }
+
+    @Implementation
+    public boolean sendBroadcast(Intent intent) {
+        boolean sent = false;
+        sSentBroadcastIntents.add(intent);
+        List<Wrapper> copy = new ArrayList<>(sRegisteredReceivers);
+        for (Wrapper wrapper : copy) {
+            if (wrapper.getIntentFilter().matchAction(intent.getAction())) {
+                int match = wrapper.getIntentFilter().matchData(intent.getType(),
+                        intent.getScheme(), intent.getData());
+                if (match != IntentFilter.NO_MATCH_DATA && match != IntentFilter.NO_MATCH_TYPE) {
+                    sent = true;
+                    final BroadcastReceiver receiver = wrapper.getBroadcastReceiver();
+                    final Intent broadcastIntent = intent;
+                    Robolectric.getForegroundThreadScheduler().post(
+                            (Runnable) () -> receiver.onReceive(RuntimeEnvironment.application,
+                                    broadcastIntent));
+                }
+            }
+        }
+        return sent;
+    }
+
+    @Resetter
+    public static void reset() {
+        sSentBroadcastIntents.clear();
+        sRegisteredReceivers.clear();
+    }
+
+    public static List<Intent> getSentBroadcastIntents() {
+        return sSentBroadcastIntents;
+    }
+
+    public static List<Wrapper> getRegisteredBroadcastReceivers() {
+        return sRegisteredReceivers;
+    }
+
+    public static class Wrapper {
+        private final BroadcastReceiver mBroadcastReceiver;
+        private final IntentFilter mIntentFilter;
+
+        public Wrapper(BroadcastReceiver broadcastReceiver, IntentFilter intentFilter) {
+            this.mBroadcastReceiver = broadcastReceiver;
+            this.mIntentFilter = intentFilter;
+        }
+
+        public BroadcastReceiver getBroadcastReceiver() {
+            return mBroadcastReceiver;
+        }
+
+        public IntentFilter getIntentFilter() {
+            return mIntentFilter;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalePicker.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalePicker.java
new file mode 100644
index 0000000..ed59177
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocalePicker.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import com.android.internal.app.LocalePicker;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.Locale;
+
+@Implements(LocalePicker.class)
+public class ShadowLocalePicker {
+
+    private static boolean sLocaleUpdated = false;
+
+    @Resetter
+    public static void reset() {
+        sLocaleUpdated = false;
+    }
+
+    @Implementation
+    protected static void updateLocale(Locale locale) {
+        sLocaleUpdated = true;
+    }
+
+    public static boolean localeWasUpdated() {
+        return sLocaleUpdated;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowLocaleStore.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocaleStore.java
new file mode 100644
index 0000000..a9dc5ce
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocaleStore.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.Context;
+
+import com.android.internal.app.LocaleStore;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+@Implements(LocaleStore.class)
+public class ShadowLocaleStore {
+
+    private static Map<LocaleStore.LocaleInfo, Set<LocaleStore.LocaleInfo>>
+            sLocaleInfoRelationships = new HashMap<>();
+
+    public static void addLocaleRelationship(Locale parent, Locale child) {
+        LocaleStore.LocaleInfo parentInfo = LocaleStore.getLocaleInfo(parent);
+        LocaleStore.LocaleInfo childInfo = LocaleStore.getLocaleInfo(child);
+        Set<LocaleStore.LocaleInfo> set = sLocaleInfoRelationships.getOrDefault(parentInfo,
+                new HashSet<>());
+        set.add(childInfo);
+        sLocaleInfoRelationships.put(parentInfo, set);
+    }
+
+    @Resetter
+    public static void reset() {
+        sLocaleInfoRelationships.clear();
+    }
+
+    @Implementation
+    protected static Set<LocaleStore.LocaleInfo> getLevelLocales(Context context,
+            Set<String> ignorables, LocaleStore.LocaleInfo parent, boolean translatedOnly) {
+        if (parent != null) {
+            return sLocaleInfoRelationships.getOrDefault(parent, new HashSet<>());
+        } else {
+            return sLocaleInfoRelationships.keySet();
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowLocationManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocationManager.java
new file mode 100644
index 0000000..e92d342
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowLocationManager.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.Intent;
+import android.location.LocationManager;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+@Implements(value = LocationManager.class)
+public class ShadowLocationManager {
+
+    @Implementation
+    protected void setLocationEnabledForUser(boolean enabled, UserHandle userHandle) {
+        int newMode = enabled
+                ? Settings.Secure.LOCATION_MODE_HIGH_ACCURACY
+                : Settings.Secure.LOCATION_MODE_OFF;
+
+        Settings.Secure.putIntForUser(RuntimeEnvironment.application.getContentResolver(),
+                Settings.Secure.LOCATION_MODE, newMode, userHandle.getIdentifier());
+        RuntimeEnvironment.application.sendBroadcast(new Intent(
+                LocationManager.MODE_CHANGED_ACTION));
+    }
+
+    @Implementation
+    protected boolean isLocationEnabled() {
+        return Settings.Secure.getInt(RuntimeEnvironment.application.getContentResolver(),
+                Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF)
+                != Settings.Secure.LOCATION_MODE_OFF;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowLockPatternUtils.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowLockPatternUtils.java
new file mode 100644
index 0000000..68731ec
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowLockPatternUtils.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.app.admin.DevicePolicyManager;
+
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockPatternView;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Shadow for LockPatternUtils.
+ */
+@Implements(LockPatternUtils.class)
+public class ShadowLockPatternUtils {
+
+    public static final int NO_USER = -1;
+
+    private static int sPasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+    private static byte[] sSavedPassword;
+    private static List<LockPatternView.Cell> sSavedPattern;
+    private static byte[] sClearLockCredential;
+    private static int sClearLockUser = NO_USER;
+
+
+    @Resetter
+    public static void reset() {
+        sPasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+        sSavedPassword = null;
+        sSavedPattern = null;
+        sClearLockCredential = null;
+        sClearLockUser = NO_USER;
+    }
+
+    /**
+     * Sets the current password quality that is returned by
+     * {@link LockPatternUtils#getKeyguardStoredPasswordQuality}.
+     */
+    public static void setPasswordQuality(int passwordQuality) {
+        sPasswordQuality = passwordQuality;
+    }
+
+    /**
+     * Returns the password saved by a call to {@link LockPatternUtils#saveLockPassword}.
+     */
+    public static byte[] getSavedPassword() {
+        return sSavedPassword;
+    }
+
+    /**
+     * Returns the saved credential passed in to clear the lock, null if it has not been cleared.
+     */
+    public static byte[] getClearLockCredential() {
+        return sClearLockCredential;
+    }
+
+    /**
+     * Returns the user passed in to clear the lock, {@link #NO_USER} if it has not been cleared.
+     */
+    public static int getClearLockUser() {
+        return sClearLockUser;
+    }
+
+
+    /**
+     * Returns the pattern saved by a call to {@link LockPatternUtils#saveLockPattern}.
+     */
+    public static List<LockPatternView.Cell> getSavedPattern() {
+        return sSavedPattern;
+    }
+
+    @Implementation
+    protected void clearLock(byte[] savedCredential, int userHandle) {
+        sClearLockCredential = savedCredential;
+        sClearLockUser = userHandle;
+    }
+
+    @Implementation
+    protected int getKeyguardStoredPasswordQuality(int userHandle) {
+        return sPasswordQuality;
+    }
+
+    @Implementation
+    public void saveLockPassword(byte[] password, byte[] savedPassword, int requestedQuality,
+            int userHandler) {
+        sSavedPassword = password;
+    }
+
+    @Implementation
+    public void saveLockPattern(List<LockPatternView.Cell> pattern, byte[] savedPassword,
+            int userId, boolean allowUntrustedChanges) {
+        sSavedPattern = new ArrayList<>(pattern);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowNetworkPolicyEditor.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowNetworkPolicyEditor.java
new file mode 100644
index 0000000..85d16a6
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowNetworkPolicyEditor.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2011 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.car.settings.testutils;
+
+import android.net.NetworkPolicy;
+import android.net.NetworkTemplate;
+
+import com.android.settingslib.NetworkPolicyEditor;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(NetworkPolicyEditor.class)
+public class ShadowNetworkPolicyEditor {
+
+    private static NetworkPolicy sNetworkPolicy;
+
+    @Implementation
+    public NetworkPolicy getPolicy(NetworkTemplate template) {
+        return sNetworkPolicy;
+    }
+
+    public static void setNetworkPolicy(NetworkPolicy networkPolicy) {
+        sNetworkPolicy = networkPolicy;
+    }
+
+    @Resetter
+    public static void reset() {
+        sNetworkPolicy = null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowNetworkPolicyManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowNetworkPolicyManager.java
new file mode 100644
index 0000000..3d506d0
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowNetworkPolicyManager.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.Context;
+import android.net.NetworkPolicy;
+import android.net.NetworkPolicyManager;
+import android.util.Pair;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.time.ZonedDateTime;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+@Implements(NetworkPolicyManager.class)
+public class ShadowNetworkPolicyManager {
+
+    private static NetworkPolicyManager sNetworkPolicyManager;
+    private static Iterator<Pair<ZonedDateTime, ZonedDateTime>> sCycleIterator;
+    private static Map<String, Integer> sResetCalledForSubscriberCount = new HashMap<>();
+
+    public static boolean verifyFactoryResetCalled(String subscriber, int numTimes) {
+        if (!sResetCalledForSubscriberCount.containsKey(subscriber)) return false;
+        return sResetCalledForSubscriberCount.get(subscriber) == numTimes;
+    }
+
+    @Implementation
+    protected void factoryReset(String subscriber) {
+        sResetCalledForSubscriberCount.put(subscriber,
+                sResetCalledForSubscriberCount.getOrDefault(subscriber, 0) + 1);
+    }
+
+    @Implementation
+    protected int[] getUidsWithPolicy(int policy) {
+        return sNetworkPolicyManager == null ? new int[0] : sNetworkPolicyManager
+                .getUidsWithPolicy(policy);
+    }
+
+    @Implementation
+    protected static Iterator<Pair<ZonedDateTime, ZonedDateTime>> cycleIterator(
+            NetworkPolicy policy) {
+        return sCycleIterator;
+    }
+
+    public static void setCycleIterator(
+            Iterator<Pair<ZonedDateTime, ZonedDateTime>> cycleIterator) {
+        sCycleIterator = cycleIterator;
+    }
+
+    @Implementation
+    public static NetworkPolicyManager from(Context context) {
+        return sNetworkPolicyManager;
+    }
+
+    public static void setNetworkPolicyManager(NetworkPolicyManager networkPolicyManager) {
+        sNetworkPolicyManager = networkPolicyManager;
+    }
+
+    @Resetter
+    public static void reset() {
+        sResetCalledForSubscriberCount.clear();
+        sCycleIterator = null;
+        sNetworkPolicyManager = null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowNotificationManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowNotificationManager.java
new file mode 100644
index 0000000..3aab74f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowNotificationManager.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.app.AutomaticZenRule;
+import android.app.NotificationManager;
+import android.content.ComponentName;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.Map;
+import java.util.Set;
+
+@Implements(NotificationManager.class)
+public class ShadowNotificationManager extends org.robolectric.shadows.ShadowNotificationManager {
+
+    private Set<String> mNotificationPolicyGrantedPackages = new ArraySet<>();
+    private Set<ComponentName> mNotificationListenerAccessGrantedComponents = new ArraySet<>();
+    private Map<String, AutomaticZenRule> mAutomaticZenRules = new ArrayMap<>();
+    private int mZenRuleIdCounter = 0;
+
+    @Implementation
+    public void setNotificationPolicyAccessGranted(String pkg, boolean granted) {
+        if (granted) {
+            mNotificationPolicyGrantedPackages.add(pkg);
+        } else {
+            mNotificationPolicyGrantedPackages.remove(pkg);
+        }
+    }
+
+    @Implementation
+    protected boolean isNotificationPolicyAccessGrantedForPackage(String pkg) {
+        return mNotificationPolicyGrantedPackages.contains(pkg);
+    }
+
+    @Implementation
+    protected boolean isNotificationListenerAccessGranted(ComponentName listener) {
+        return mNotificationListenerAccessGrantedComponents.contains(listener);
+    }
+
+    @Implementation
+    protected void setNotificationListenerAccessGranted(ComponentName listener, boolean granted) {
+        if (granted) {
+            mNotificationListenerAccessGrantedComponents.add(listener);
+        } else {
+            mNotificationListenerAccessGrantedComponents.remove(listener);
+        }
+    }
+
+    @Implementation
+    protected Map<String, AutomaticZenRule> getAutomaticZenRules() {
+        return mAutomaticZenRules;
+    }
+
+    @Implementation
+    protected String addAutomaticZenRule(AutomaticZenRule automaticZenRule) {
+        String id = String.valueOf(mZenRuleIdCounter++);
+        mAutomaticZenRules.put(id, automaticZenRule);
+        return id;
+    }
+
+    @Implementation
+    protected void removeAutomaticZenRules(String packageName) {
+        mAutomaticZenRules.clear();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowPermissionControllerManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowPermissionControllerManager.java
new file mode 100644
index 0000000..e3f0a95
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowPermissionControllerManager.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.os.Handler;
+import android.permission.PermissionControllerManager;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.List;
+
+/**
+ * A RuntimePermissionPresenter that changes nothing and <u>never returns callbacks</u>.
+ */
+@Implements(PermissionControllerManager.class)
+public class ShadowPermissionControllerManager {
+    @Implementation
+    protected void __constructor__(Context context, @NonNull Handler handler) {
+        // no nothing, everything is shadowed
+    }
+
+    @Implementation
+    protected void getAppPermissions(String packageName,
+            PermissionControllerManager.OnGetAppPermissionResultCallback callback, Handler handler) {
+    }
+
+    @Implementation
+    protected void revokeRuntimePermission(String packageName, String permissionName) {
+    }
+
+    @Implementation
+    protected void countPermissionApps(List<String> permissionNames, boolean countOnlyGranted,
+            boolean countSystem,
+            PermissionControllerManager.OnCountPermissionAppsResultCallback callback,
+            Handler handler) {
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowRecoverySystem.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowRecoverySystem.java
new file mode 100644
index 0000000..90f37d7
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowRecoverySystem.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.Context;
+import android.os.RecoverySystem;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(RecoverySystem.class)
+public class ShadowRecoverySystem {
+
+    private static int sWipeEuiccDataCalledCount = 0;
+
+    public static boolean verifyWipeEuiccDataCalled(int numTimes) {
+        return sWipeEuiccDataCalledCount == numTimes;
+    }
+
+    @Implementation
+    protected static boolean wipeEuiccData(Context context, final String packageName) {
+        sWipeEuiccDataCalledCount++;
+        return true;
+    }
+
+    @Resetter
+    public static void reset() {
+        sWipeEuiccDataCalledCount = 0;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtilsInternal.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtilsInternal.java
new file mode 100644
index 0000000..5bde1bf
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtilsInternal.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.content.Context;
+
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(RestrictedLockUtilsInternal.class)
+public class ShadowRestrictedLockUtilsInternal {
+
+    private static RestrictedLockUtils.EnforcedAdmin sEnforcedAdmin;
+    private static boolean sHasBaseUserRestriction;
+
+    @Resetter
+    public static void reset() {
+        sEnforcedAdmin = null;
+        sHasBaseUserRestriction = false;
+    }
+
+    public static void setEnforcedAdmin(RestrictedLockUtils.EnforcedAdmin enforcedAdmin) {
+        sEnforcedAdmin = enforcedAdmin;
+    }
+
+    public static void setHasBaseUserRestriction(boolean hasBaseUserRestriction) {
+        sHasBaseUserRestriction = hasBaseUserRestriction;
+    }
+
+    public static void sendShowAdminSupportDetailsIntent(Context context,
+            RestrictedLockUtils.EnforcedAdmin admin) {
+        // do nothing
+    }
+
+    @Implementation
+    protected static RestrictedLockUtils.EnforcedAdmin checkIfRestrictionEnforced(Context context,
+            String userRestriction, int userId) {
+        return sEnforcedAdmin;
+    }
+
+    @Implementation
+    protected static boolean hasBaseUserRestriction(Context context,
+            String userRestriction, int userId) {
+        return sHasBaseUserRestriction;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowRingtone.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowRingtone.java
new file mode 100644
index 0000000..4be9cfe
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowRingtone.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.Context;
+import android.media.Ringtone;
+import android.net.Uri;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Implements(Ringtone.class)
+public class ShadowRingtone {
+
+    private static Map<Uri, String> sTitleForGivenUri = new HashMap<>();
+
+    public static void setExpectedTitleForUri(Uri uri, String title) {
+        sTitleForGivenUri.put(uri, title);
+    }
+
+    @Implementation
+    protected static String getTitle(
+            Context context, Uri uri, boolean followSettingsUri, boolean allowRemote) {
+        return sTitleForGivenUri.getOrDefault(uri, null);
+    }
+
+    @Resetter
+    public static void reset() {
+        sTitleForGivenUri.clear();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowRingtoneManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowRingtoneManager.java
new file mode 100644
index 0000000..026ec98
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowRingtoneManager.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.Context;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
+import android.net.Uri;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Implements(RingtoneManager.class)
+public class ShadowRingtoneManager {
+    private static Ringtone sRingtone;
+    private static Map<Integer, Uri> sSetDefaultRingtoneCalled = new HashMap<>();
+
+    public static void setRingtone(Ringtone ringtone) {
+        sRingtone = ringtone;
+    }
+
+    @Implementation
+    protected static Ringtone getRingtone(final Context context, Uri ringtoneUri) {
+        return sRingtone;
+    }
+
+    @Implementation
+    public static void setActualDefaultRingtoneUri(Context context, int type, Uri ringtoneUri) {
+        sSetDefaultRingtoneCalled.put(type, ringtoneUri);
+    }
+
+    @Implementation
+    public static Uri getActualDefaultRingtoneUri(Context context, int type) {
+        return sSetDefaultRingtoneCalled.getOrDefault(type, null);
+    }
+
+    @Resetter
+    public static void reset() {
+        sRingtone = null;
+        sSetDefaultRingtoneCalled.clear();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowSecureSettings.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowSecureSettings.java
new file mode 100644
index 0000000..56e07ee
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowSecureSettings.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.content.ContentResolver;
+import android.provider.Settings;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowSettings;
+import org.robolectric.util.ReflectionHelpers;
+
+@Implements(Settings.Secure.class)
+public class ShadowSecureSettings extends ShadowSettings.ShadowSecure {
+
+    @Implementation
+    protected static int getInt(ContentResolver resolver, String name) {
+        return Shadow.directlyOn(
+                Settings.Secure.class,
+                "getInt",
+                ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+                ReflectionHelpers.ClassParameter.from(String.class, name));
+    }
+
+    @Implementation
+    protected static int getInt(ContentResolver resolver, String name, int def) {
+        return Shadow.directlyOn(
+                Settings.Secure.class,
+                "getInt",
+                ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+                ReflectionHelpers.ClassParameter.from(String.class, name),
+                ReflectionHelpers.ClassParameter.from(int.class, def));
+    }
+
+    @Implementation
+    protected static int getIntForUser(ContentResolver resolver, String name, int def,
+            int userHandle) {
+        return Shadow.directlyOn(
+                Settings.Secure.class,
+                "getIntForUser",
+                ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+                ReflectionHelpers.ClassParameter.from(String.class, name),
+                ReflectionHelpers.ClassParameter.from(int.class, def),
+                ReflectionHelpers.ClassParameter.from(int.class, userHandle));
+    }
+
+    @Implementation
+    protected static boolean putInt(ContentResolver resolver, String name, int value) {
+        return Shadow.directlyOn(
+                Settings.Secure.class,
+                "putInt",
+                ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+                ReflectionHelpers.ClassParameter.from(String.class, name),
+                ReflectionHelpers.ClassParameter.from(int.class, value));
+    }
+
+    @Implementation
+    protected static boolean putIntForUser(ContentResolver resolver, String name, int value,
+            int userHandle) {
+        return Shadow.directlyOn(
+                Settings.Secure.class,
+                "putIntForUser",
+                ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+                ReflectionHelpers.ClassParameter.from(String.class, name),
+                ReflectionHelpers.ClassParameter.from(int.class, value),
+                ReflectionHelpers.ClassParameter.from(int.class, userHandle));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowSmsApplication.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowSmsApplication.java
new file mode 100644
index 0000000..4af6ff9
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowSmsApplication.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.content.ComponentName;
+import android.content.Context;
+
+import com.android.internal.telephony.SmsApplication;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(SmsApplication.class)
+public class ShadowSmsApplication {
+
+    private static ComponentName sDefaultSmsApplication;
+
+    @Resetter
+    public static void reset() {
+        sDefaultSmsApplication = null;
+    }
+
+    @Implementation
+    protected static ComponentName getDefaultSmsApplication(
+            Context context, boolean updateIfNeeded) {
+        return sDefaultSmsApplication;
+    }
+
+    public static void setDefaultSmsApplication(ComponentName defaultSmsApplication) {
+        sDefaultSmsApplication = defaultSmsApplication;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowStorageManagerVolumeProvider.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowStorageManagerVolumeProvider.java
new file mode 100644
index 0000000..5a02ae4
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowStorageManagerVolumeProvider.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.os.storage.VolumeInfo;
+
+import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(StorageManagerVolumeProvider.class)
+public class ShadowStorageManagerVolumeProvider {
+
+    private static VolumeInfo sVolumeInfo;
+
+    @Resetter
+    public static void reset() {
+        sVolumeInfo = null;
+    }
+
+    @Implementation
+    protected VolumeInfo findEmulatedForPrivate(VolumeInfo privateVolume) {
+        return sVolumeInfo;
+    }
+
+    public static void setVolumeInfo(VolumeInfo volumeInfo) {
+        sVolumeInfo = volumeInfo;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowSubscriptionManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowSubscriptionManager.java
new file mode 100644
index 0000000..af06db3
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowSubscriptionManager.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
+import android.telephony.SubscriptionPlan;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Implements(SubscriptionManager.class)
+public class ShadowSubscriptionManager extends org.robolectric.shadows.ShadowSubscriptionManager {
+
+    private static SubscriptionInfo sDefaultDataSubscriptionInfo = null;
+
+    private List<SubscriptionPlan> mSubscriptionPlanList;
+    private List<SubscriptionInfo> mSelectableSubscriptionInfoList;
+    private List<OnSubscriptionsChangedListener> mOnSubscriptionsChangedListeners =
+            new ArrayList<>();
+    private int mCurrentActiveSubscriptionId;
+
+    @Implementation
+    protected List<SubscriptionPlan> getSubscriptionPlans(int subId) {
+        return mSubscriptionPlanList;
+    }
+
+    public void setSubscriptionPlans(List<SubscriptionPlan> subscriptionPlanList) {
+        mSubscriptionPlanList = subscriptionPlanList;
+    }
+
+    @Implementation
+    protected SubscriptionInfo getDefaultDataSubscriptionInfo() {
+        return sDefaultDataSubscriptionInfo;
+    }
+
+    public static void setDefaultDataSubscriptionInfo(SubscriptionInfo subscriptionInfo) {
+        sDefaultDataSubscriptionInfo = subscriptionInfo;
+    }
+
+    @Implementation
+    protected List<SubscriptionInfo> getSelectableSubscriptionInfoList() {
+        return mSelectableSubscriptionInfoList;
+    }
+
+    public void setSelectableSubscriptionInfoList(List<SubscriptionInfo> infos) {
+        mSelectableSubscriptionInfoList = infos;
+    }
+
+    @Implementation
+    protected void addOnSubscriptionsChangedListener(OnSubscriptionsChangedListener listener) {
+        super.addOnSubscriptionsChangedListener(listener);
+        mOnSubscriptionsChangedListeners.add(listener);
+    }
+
+    @Implementation
+    protected void removeOnSubscriptionsChangedListener(OnSubscriptionsChangedListener listener) {
+        super.removeOnSubscriptionsChangedListener(listener);
+        mOnSubscriptionsChangedListeners.remove(listener);
+    }
+
+    public List<OnSubscriptionsChangedListener> getOnSubscriptionChangedListeners() {
+        return mOnSubscriptionsChangedListeners;
+
+    }
+
+    @Implementation
+    protected boolean isActiveSubscriptionId(int subscriptionId) {
+        return mCurrentActiveSubscriptionId == subscriptionId;
+    }
+
+    public void setCurrentActiveSubscriptionId(int subscriptionId) {
+        mCurrentActiveSubscriptionId = subscriptionId;
+    }
+
+    @Resetter
+    public static void reset() {
+        org.robolectric.shadows.ShadowSubscriptionManager.reset();
+        sDefaultDataSubscriptionInfo = null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowTelephonyManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowTelephonyManager.java
new file mode 100644
index 0000000..9c464f7
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowTelephonyManager.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import static android.telephony.PhoneStateListener.LISTEN_NONE;
+
+import android.telephony.PhoneStateListener;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Implements(TelephonyManager.class)
+public class ShadowTelephonyManager extends org.robolectric.shadows.ShadowTelephonyManager {
+
+    public static final String SUBSCRIBER_ID = "test_id";
+    private static Map<Integer, Integer> sSubIdsWithResetCalledCount = new HashMap<>();
+    private static int sSimCount = 1;
+    private final Map<PhoneStateListener, Integer> mPhoneStateRegistrations = new HashMap<>();
+    private boolean mIsDataEnabled = false;
+    private boolean mIsRoamingEnabled = false;
+
+    public static boolean verifyFactoryResetCalled(int subId, int numTimes) {
+        if (!sSubIdsWithResetCalledCount.containsKey(subId)) return false;
+        return sSubIdsWithResetCalledCount.get(subId) == numTimes;
+    }
+
+    @Implementation
+    protected void listen(PhoneStateListener listener, int flags) {
+        super.listen(listener, flags);
+
+        if (flags == LISTEN_NONE) {
+            mPhoneStateRegistrations.remove(listener);
+        } else {
+            mPhoneStateRegistrations.put(listener, flags);
+        }
+    }
+
+    public List<PhoneStateListener> getListenersForFlags(int flags) {
+        List<PhoneStateListener> listeners = new ArrayList<>();
+        for (PhoneStateListener listener : mPhoneStateRegistrations.keySet()) {
+            if ((mPhoneStateRegistrations.get(listener) & flags) != 0) {
+                listeners.add(listener);
+            }
+        }
+        return listeners;
+    }
+
+    @Implementation
+    protected void setDataEnabled(boolean enable) {
+        mIsDataEnabled = enable;
+    }
+
+    @Implementation
+    protected boolean isDataEnabled() {
+        return mIsDataEnabled;
+    }
+
+    @Implementation
+    protected void factoryReset(int subId) {
+        sSubIdsWithResetCalledCount.put(subId,
+                sSubIdsWithResetCalledCount.getOrDefault(subId, 0) + 1);
+    }
+
+    @Implementation
+    protected String getSubscriberId(int subId) {
+        return subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID ? null : SUBSCRIBER_ID;
+    }
+
+    @Implementation
+    protected int getSimCount() {
+        return sSimCount;
+    }
+
+    public static void setSimCount(int simCount) {
+        sSimCount = simCount;
+    }
+
+    @Implementation
+    protected void setDataRoamingEnabled(boolean isEnabled) {
+        mIsRoamingEnabled = isEnabled;
+    }
+
+    @Implementation
+    protected boolean isDataRoamingEnabled() {
+        return mIsRoamingEnabled;
+    }
+
+    @Resetter
+    public static void reset() {
+        sSubIdsWithResetCalledCount.clear();
+        sSimCount = 1;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowTextListItem.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowTextListItem.java
deleted file mode 100644
index f093f2c..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowTextListItem.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.testutils;
-
-import android.graphics.drawable.Drawable;
-import android.view.View;
-
-import androidx.car.widget.TextListItem;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-/**
- * Allows access to the internals of a text list item for testing.
- */
-@Implements(TextListItem.class)
-public class ShadowTextListItem {
-    private Drawable mDrawable;
-    private int mSupplementalIconDrawableId;
-    private String mTitle;
-    private String mBody;
-    private View.OnClickListener mOnClickListener;
-
-    @Implementation
-    public void setPrimaryActionIcon(Drawable drawable, boolean useLargeIcon) {
-        mDrawable = drawable;
-    }
-
-    @Implementation
-    public void setSupplementalIcon(int iconResId, boolean showDivider) {
-        mSupplementalIconDrawableId = iconResId;
-    }
-
-    @Implementation
-    public void setTitle(String title) {
-        mTitle = title;
-    }
-
-    @Implementation
-    public void setBody(String body) {
-        mBody = body;
-    }
-
-    @Implementation
-    public void setBody(String body, boolean asPrimary) {
-        mBody = body;
-    }
-
-    @Implementation
-    public void setOnClickListener(View.OnClickListener listener) {
-        mOnClickListener = listener;
-    }
-
-    /**
-     * Returns the drawable set on this item.
-     */
-    public Drawable getDrawable() {
-        return mDrawable;
-    }
-
-    /**
-     * Returns the supplemental drawable id set on this item.
-     */
-    public int getSupplementalIconDrawableId() {
-        return mSupplementalIconDrawableId;
-    }
-
-    /**
-     * Returns the title set on this item.
-     */
-    public String getTitle() {
-        return mTitle;
-    }
-
-    /**
-     * Returns the body set on this item.
-     */
-    public String getBody() {
-        return mBody;
-    }
-
-    /**
-     * Returns the onclick listener for this item.
-     */
-    public View.OnClickListener getOnClickListener() {
-        return mOnClickListener;
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowTextToSpeech.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowTextToSpeech.java
new file mode 100644
index 0000000..cdc4b39
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowTextToSpeech.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.Voice;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.Locale;
+
+@Implements(TextToSpeech.class)
+public class ShadowTextToSpeech {
+
+    private static TextToSpeech sInstance;
+    private static TextToSpeech.OnInitListener sOnInitListener;
+    private static String sEngine;
+
+    public static void setInstance(TextToSpeech textToSpeech) {
+        sInstance = textToSpeech;
+    }
+
+    /**
+     * Override constructor and only store the name of the last constructed engine and init
+     * listener.
+     */
+    public void __constructor__(Context context, TextToSpeech.OnInitListener listener,
+            String engine,
+            String packageName, boolean useFallback) {
+        sOnInitListener = listener;
+        sEngine = engine;
+    }
+
+    public void __constructor__(Context context, TextToSpeech.OnInitListener listener,
+            String engine) {
+        __constructor__(context, listener, engine, null, false);
+    }
+
+    public void __constructor__(Context context, TextToSpeech.OnInitListener listener) {
+        __constructor__(context, listener, null, null, false);
+    }
+
+    @Implementation
+    protected String getCurrentEngine() {
+        return sInstance.getCurrentEngine();
+    }
+
+    @Implementation
+    protected int setLanguage(final Locale loc) {
+        return sInstance.setLanguage(loc);
+    }
+
+    @Implementation
+    protected void shutdown() {
+        sInstance.shutdown();
+    }
+
+    @Implementation
+    protected int setSpeechRate(float speechRate) {
+        return sInstance.setSpeechRate(speechRate);
+    }
+
+    @Implementation
+    protected int setPitch(float pitch) {
+        return sInstance.setPitch(pitch);
+    }
+
+    @Implementation
+    protected Voice getVoice() {
+        return sInstance.getVoice();
+    }
+
+    @Implementation
+    protected int isLanguageAvailable(final Locale loc) {
+        return sInstance.isLanguageAvailable(loc);
+    }
+
+    @Implementation
+    protected int speak(final CharSequence text,
+            final int queueMode,
+            final Bundle params,
+            final String utteranceId) {
+        return sInstance.speak(text, queueMode, params, utteranceId);
+    }
+
+    @Resetter
+    public static void reset() {
+        sInstance = null;
+        sOnInitListener = null;
+        sEngine = null;
+    }
+
+    /** Check for the last constructed engine name. */
+    public static String getLastConstructedEngine() {
+        return sEngine;
+    }
+
+    /** Trigger the initializtion callback given the input status. */
+    public static void callInitializationCallbackWithStatus(int status) {
+        sOnInitListener.onInit(status);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowTtsEngines.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowTtsEngines.java
new file mode 100644
index 0000000..df3eef8
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowTtsEngines.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.content.Intent;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.List;
+import java.util.Locale;
+
+@Implements(TtsEngines.class)
+public class ShadowTtsEngines {
+    private static TtsEngines sInstance;
+
+    public static void setInstance(TtsEngines ttsEngines) {
+        sInstance = ttsEngines;
+    }
+
+    @Resetter
+    public static void reset() {
+        sInstance = null;
+    }
+
+    @Implementation
+    protected List<TextToSpeech.EngineInfo> getEngines() {
+        return sInstance.getEngines();
+    }
+
+    @Implementation
+    protected TextToSpeech.EngineInfo getEngineInfo(String packageName) {
+        return sInstance.getEngineInfo(packageName);
+    }
+
+    @Implementation
+    protected String getDefaultEngine() {
+        return sInstance.getDefaultEngine();
+    }
+
+    @Implementation
+    protected Intent getSettingsIntent(String engine) {
+        return sInstance.getSettingsIntent(engine);
+    }
+
+    @Implementation
+    protected boolean isLocaleSetToDefaultForEngine(String engineName) {
+        return sInstance.isLocaleSetToDefaultForEngine(engineName);
+    }
+
+    @Implementation
+    protected Locale getLocalePrefForEngine(String engineName) {
+        return sInstance.getLocalePrefForEngine(engineName);
+    }
+
+    @Implementation
+    protected synchronized void updateLocalePrefForEngine(String engineName, Locale newLocale) {
+        sInstance.updateLocalePrefForEngine(engineName, newLocale);
+    }
+
+    @Implementation
+    protected Locale parseLocaleString(String localeString) {
+        return sInstance.parseLocaleString(localeString);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowUidDetailProvider.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowUidDetailProvider.java
new file mode 100644
index 0000000..2db468a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowUidDetailProvider.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2011 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.car.settings.testutils;
+
+import com.android.settingslib.net.UidDetail;
+import com.android.settingslib.net.UidDetailProvider;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(UidDetailProvider.class)
+public class ShadowUidDetailProvider {
+
+    private static UidDetail sUidDetail;
+
+    @Resetter
+    public static void reset() {
+        sUidDetail = null;
+    }
+
+    @Implementation
+    public UidDetail getUidDetail(int uid, boolean blocking) {
+        return sUidDetail;
+    }
+
+    public static void setUidDetail(UidDetail uidDetail) {
+        sUidDetail = uidDetail;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserIconProvider.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserIconProvider.java
index c4bcf1d..acddacc 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserIconProvider.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserIconProvider.java
@@ -27,7 +27,12 @@
 @Implements(UserIconProvider.class)
 public class ShadowUserIconProvider {
     @Implementation
-    public Drawable getUserIcon(UserInfo userInfo, Context context) {
+    protected Drawable getUserIcon(UserInfo userInfo, Context context) {
+        return null;
+    }
+
+    @Implementation
+    protected Drawable getDefaultGuestIcon(Context context) {
         return null;
     }
 }
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserManager.java
new file mode 100644
index 0000000..d08f2c9
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserManager.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.annotation.UserIdInt;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.util.ArrayMap;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+@Implements(UserManager.class)
+public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager {
+    private static UserManager sInstance;
+
+    private Map<Integer, List<UserInfo>> mProfiles = new ArrayMap<>();
+
+    public static void setInstance(UserManager manager) {
+        sInstance = manager;
+    }
+
+    @Implementation
+    protected UserInfo getUserInfo(@UserIdInt int userHandle) {
+        return sInstance.getUserInfo(userHandle);
+    }
+
+    @Implementation
+    protected int[] getProfileIdsWithDisabled(int userId) {
+        if (mProfiles.containsKey(userId)) {
+            return mProfiles.get(userId).stream().mapToInt(userInfo -> userInfo.id).toArray();
+        }
+        return new int[]{};
+    }
+
+    @Implementation
+    protected List<UserInfo> getProfiles(int userHandle) {
+        if (mProfiles.containsKey(userHandle)) {
+            return new ArrayList<>(mProfiles.get(userHandle));
+        }
+        return Collections.emptyList();
+    }
+
+    /** Adds a profile to be returned by {@link #getProfiles(int)}. **/
+    public void addProfile(
+            int userHandle, int profileUserHandle, String profileName, int profileFlags) {
+        mProfiles.putIfAbsent(userHandle, new ArrayList<>());
+        mProfiles.get(userHandle).add(new UserInfo(profileUserHandle, profileName, profileFlags));
+    }
+
+    @Resetter
+    public static void reset() {
+        sInstance = null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowUtils.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowUtils.java
new file mode 100644
index 0000000..0bacf94
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowUtils.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2019 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.car.settings.testutils;
+
+import android.content.res.Resources;
+
+import com.android.settingslib.Utils;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(value = Utils.class)
+public class ShadowUtils {
+    private static String sDeviceProvisioningPackage;
+
+    @Resetter
+    public static void reset() {
+        sDeviceProvisioningPackage = null;
+    }
+
+    @Implementation
+    protected static boolean isDeviceProvisioningPackage(Resources resources,
+            String packageName) {
+        return sDeviceProvisioningPackage != null && sDeviceProvisioningPackage.equals(
+                packageName);
+    }
+
+    public static void setDeviceProvisioningPackage(String deviceProvisioningPackage) {
+        sDeviceProvisioningPackage = deviceProvisioningPackage;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowVoiceInteractionServiceInfo.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowVoiceInteractionServiceInfo.java
new file mode 100644
index 0000000..936d0b4
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowVoiceInteractionServiceInfo.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2019 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.car.settings.testutils;
+
+import android.content.pm.PackageManager;
+import android.content.pm.ServiceInfo;
+import android.service.voice.VoiceInteractionServiceInfo;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Implements(VoiceInteractionServiceInfo.class)
+public class ShadowVoiceInteractionServiceInfo {
+    private static Map<ServiceInfo, Boolean> sSupportsAssistMap = new HashMap<>();
+    private static Map<ServiceInfo, String> sRecognitionServiceMap = new HashMap<>();
+    private static Map<ServiceInfo, String> sSettingsActivityMap = new HashMap<>();
+
+    private ServiceInfo mServiceInfo;
+
+    public void __constructor__(PackageManager pm, ServiceInfo si) {
+        mServiceInfo = si;
+    }
+
+    public static void setSupportsAssist(ServiceInfo si, boolean supports) {
+        sSupportsAssistMap.put(si, supports);
+    }
+
+    public static void setRecognitionService(ServiceInfo si, String recognitionService) {
+        sRecognitionServiceMap.put(si, recognitionService);
+    }
+
+    public static void setSettingsActivity(ServiceInfo si, String settingsActivity) {
+        sSettingsActivityMap.put(si, settingsActivity);
+    }
+
+    @Implementation
+    protected boolean getSupportsAssist() {
+        return sSupportsAssistMap.get(mServiceInfo);
+    }
+
+    @Implementation
+    protected String getRecognitionService() {
+        return sRecognitionServiceMap.get(mServiceInfo);
+    }
+
+    @Implementation
+    protected String getSettingsActivity() {
+        return sSettingsActivityMap.get(mServiceInfo);
+    }
+
+    @Implementation
+    protected ServiceInfo getServiceInfo() {
+        return mServiceInfo;
+    }
+
+    @Resetter
+    public static void reset() {
+        sSupportsAssistMap.clear();
+        sRecognitionServiceMap.clear();
+        sSettingsActivityMap.clear();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowWifiManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowWifiManager.java
new file mode 100644
index 0000000..2b5d46f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowWifiManager.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2018 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.car.settings.testutils;
+
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@Implements(WifiManager.class)
+public class ShadowWifiManager extends org.robolectric.shadows.ShadowWifiManager {
+
+    private static int sResetCalledCount = 0;
+
+    private final Map<Integer, WifiConfiguration> mNetworkIdToConfiguredNetworks =
+            new LinkedHashMap<>();
+    private int mLastForgottenNetwork = Integer.MIN_VALUE;
+
+    @Implementation
+    @Override
+    protected int addNetwork(WifiConfiguration config) {
+        int networkId = mNetworkIdToConfiguredNetworks.size();
+        config.networkId = -1;
+        mNetworkIdToConfiguredNetworks.put(networkId, makeCopy(config, networkId));
+        return networkId;
+    }
+
+    public WifiConfiguration getLastAddedNetworkConfiguration() {
+        return mNetworkIdToConfiguredNetworks.get(getLastAddedNetworkId());
+    }
+
+    public int getLastAddedNetworkId() {
+        return mNetworkIdToConfiguredNetworks.size() - 1;
+    }
+
+    public static boolean verifyFactoryResetCalled(int numTimes) {
+        return sResetCalledCount == numTimes;
+    }
+
+    @Implementation
+    protected void forget(int netId, WifiManager.ActionListener listener) {
+        mLastForgottenNetwork = netId;
+    }
+
+    public int getLastForgottenNetwork() {
+        return mLastForgottenNetwork;
+    }
+
+    @Implementation
+    protected void factoryReset() {
+        sResetCalledCount++;
+    }
+
+    @Resetter
+    public static void reset() {
+        sResetCalledCount = 0;
+    }
+
+    private WifiConfiguration makeCopy(WifiConfiguration config, int networkId) {
+        WifiConfiguration copy = Shadows.shadowOf(config).copy();
+        copy.networkId = networkId;
+        return copy;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/tts/PreferredEngineEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/tts/PreferredEngineEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..c945d60
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/tts/PreferredEngineEntryPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowTtsEngines;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowTtsEngines.class})
+public class PreferredEngineEntryPreferenceControllerTest {
+
+    private static final TextToSpeech.EngineInfo ENGINE_INFO = new TextToSpeech.EngineInfo();
+    private static final String INTENT_ACTION = "test_action";
+
+    static {
+        ENGINE_INFO.label = "Test Engine";
+        ENGINE_INFO.name = "com.android.car.settings.tts.test.Engine";
+    }
+
+    private ButtonPreference mPreference;
+    @Mock
+    private TtsEngines mEnginesHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowTtsEngines.setInstance(mEnginesHelper);
+        Context context = RuntimeEnvironment.application;
+
+        mPreference = new ButtonPreference(context);
+        PreferenceControllerTestHelper<PreferredEngineEntryPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(context,
+                        PreferredEngineEntryPreferenceController.class, mPreference);
+
+        Intent intent = new Intent(INTENT_ACTION);
+        when(mEnginesHelper.getSettingsIntent(ENGINE_INFO.name)).thenReturn(intent);
+        when(mEnginesHelper.getEngineInfo(ENGINE_INFO.name)).thenReturn(
+                ENGINE_INFO);
+        when(mEnginesHelper.getDefaultEngine()).thenReturn(ENGINE_INFO.name);
+
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowTtsEngines.reset();
+    }
+
+    @Test
+    public void performButtonClick_navigateToNextActivity() {
+        mPreference.performButtonClick();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual.getAction()).isEqualTo(INTENT_ACTION);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java
new file mode 100644
index 0000000..9134b47
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/tts/PreferredEngineOptionsPreferenceControllerTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowTextToSpeech;
+import com.android.car.settings.testutils.ShadowTtsEngines;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Arrays;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowTtsEngines.class, ShadowTextToSpeech.class})
+public class PreferredEngineOptionsPreferenceControllerTest {
+    private static final TextToSpeech.EngineInfo OTHER_ENGINE_INFO = new TextToSpeech.EngineInfo();
+    private static final TextToSpeech.EngineInfo CURRENT_ENGINE_INFO =
+            new TextToSpeech.EngineInfo();
+
+    static {
+        OTHER_ENGINE_INFO.label = "Test Engine 1";
+        OTHER_ENGINE_INFO.name = "com.android.car.settings.tts.test.Engine1";
+        CURRENT_ENGINE_INFO.label = "Test Engine 2";
+        CURRENT_ENGINE_INFO.name = "com.android.car.settings.tts.test.Engine2";
+    }
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<PreferredEngineOptionsPreferenceController>
+            mControllerHelper;
+    private PreferredEngineOptionsPreferenceController mController;
+    private PreferenceGroup mPreferenceGroup;
+    @Mock
+    private TtsEngines mEnginesHelper;
+    @Mock
+    private TextToSpeech mTextToSpeech;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowTtsEngines.setInstance(mEnginesHelper);
+        ShadowTextToSpeech.setInstance(mTextToSpeech);
+
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                PreferredEngineOptionsPreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+
+        when(mEnginesHelper.getEngines()).thenReturn(
+                Arrays.asList(OTHER_ENGINE_INFO, CURRENT_ENGINE_INFO));
+        when(mEnginesHelper.getEngineInfo(OTHER_ENGINE_INFO.name)).thenReturn(OTHER_ENGINE_INFO);
+        when(mEnginesHelper.getEngineInfo(CURRENT_ENGINE_INFO.name)).thenReturn(
+                CURRENT_ENGINE_INFO);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowTtsEngines.reset();
+        ShadowTextToSpeech.reset();
+    }
+
+    @Test
+    public void onCreate_populatesGroup() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+    }
+
+    @Test
+    public void refreshUi_currentEngineInfoSummarySet() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(
+                mPreferenceGroup.findPreference(CURRENT_ENGINE_INFO.name).getSummary()).isEqualTo(
+                mContext.getString(R.string.text_to_speech_current_engine));
+    }
+
+    @Test
+    public void refreshUi_otherEngineInfoSummaryEmpty() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name).getSummary()).isEqualTo(
+                "");
+    }
+
+    @Test
+    public void performClick_currentEngine_returnFalse() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        Preference currentEngine = mPreferenceGroup.findPreference(CURRENT_ENGINE_INFO.name);
+        assertThat(currentEngine.getOnPreferenceClickListener().onPreferenceClick(
+                currentEngine)).isFalse();
+    }
+
+    @Test
+    public void performClick_otherEngine_returnTrue() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
+        assertThat(otherEngine.getOnPreferenceClickListener().onPreferenceClick(
+                otherEngine)).isTrue();
+    }
+
+    @Test
+    public void performClick_otherEngine_initSuccess_changeCurrentEngine() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
+        otherEngine.performClick();
+
+        ShadowTextToSpeech.callInitializationCallbackWithStatus(TextToSpeech.SUCCESS);
+        assertThat(ShadowTextToSpeech.getLastConstructedEngine()).isEqualTo(OTHER_ENGINE_INFO.name);
+    }
+
+    @Test
+    public void performClick_otherEngine_initFail_keepCurrentEngine() {
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(CURRENT_ENGINE_INFO.name);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        Preference otherEngine = mPreferenceGroup.findPreference(OTHER_ENGINE_INFO.name);
+        otherEngine.performClick();
+
+        ShadowTextToSpeech.callInitializationCallbackWithStatus(TextToSpeech.ERROR);
+        assertThat(ShadowTextToSpeech.getLastConstructedEngine()).isEqualTo(
+                CURRENT_ENGINE_INFO.name);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackPreferenceControllerTest.java
new file mode 100644
index 0000000..f5f1df8
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackPreferenceControllerTest.java
@@ -0,0 +1,441 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+import android.speech.tts.Voice;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ActivityResultCallback;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.SeekBarPreference;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+import com.android.car.settings.testutils.ShadowTextToSpeech;
+import com.android.car.settings.testutils.ShadowTtsEngines;
+
+import com.google.android.collect.Lists;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Locale;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowTextToSpeech.class, ShadowTtsEngines.class,
+        ShadowSecureSettings.class})
+public class TtsPlaybackPreferenceControllerTest {
+
+    private static final String DEFAULT_ENGINE_NAME = "com.android.car.settings.tts.test.default";
+    private static final TextToSpeech.EngineInfo ENGINE_INFO = new TextToSpeech.EngineInfo();
+    private static final Voice VOICE = new Voice("Test Name", Locale.ENGLISH, /* quality= */0,
+            /* latency= */ 0, /* requiresNetworkConnection= */ true, /* features= */ null);
+
+    static {
+        ENGINE_INFO.label = "Test Engine";
+        ENGINE_INFO.name = "com.android.car.settings.tts.test.other";
+    }
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<TtsPlaybackPreferenceController>
+            mControllerHelper;
+    private TtsPlaybackPreferenceController mController;
+    private PreferenceGroup mPreferenceGroup;
+    private ListPreference mDefaultLanguagePreference;
+    private SeekBarPreference mSpeechRatePreference;
+    private SeekBarPreference mVoicePitchPreference;
+    private Preference mResetPreference;
+    @Mock
+    private TextToSpeech mTextToSpeech;
+    @Mock
+    private TtsEngines mEnginesHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowTextToSpeech.setInstance(mTextToSpeech);
+        ShadowTtsEngines.setInstance(mEnginesHelper);
+
+        mContext = RuntimeEnvironment.application;
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                TtsPlaybackPreferenceController.class, mPreferenceGroup);
+
+        mDefaultLanguagePreference = new ListPreference(mContext);
+        mDefaultLanguagePreference.setKey(mContext.getString(R.string.pk_tts_default_language));
+        mPreferenceGroup.addPreference(mDefaultLanguagePreference);
+
+        mSpeechRatePreference = new SeekBarPreference(mContext);
+        mSpeechRatePreference.setKey(mContext.getString(R.string.pk_tts_speech_rate));
+        mPreferenceGroup.addPreference(mSpeechRatePreference);
+
+        mVoicePitchPreference = new SeekBarPreference(mContext);
+        mVoicePitchPreference.setKey(mContext.getString(R.string.pk_tts_pitch));
+        mPreferenceGroup.addPreference(mVoicePitchPreference);
+
+        mResetPreference = new Preference(mContext);
+        mResetPreference.setKey(mContext.getString(R.string.pk_tts_reset));
+        mPreferenceGroup.addPreference(mResetPreference);
+
+        mController = mControllerHelper.getController();
+
+        when(mTextToSpeech.getCurrentEngine()).thenReturn(ENGINE_INFO.name);
+        when(mTextToSpeech.getVoice()).thenReturn(VOICE);
+        when(mEnginesHelper.parseLocaleString(VOICE.getLocale().toString())).thenReturn(
+                VOICE.getLocale());
+        when(mEnginesHelper.parseLocaleString(Locale.CANADA.toString())).thenReturn(Locale.CANADA);
+        when(mEnginesHelper.parseLocaleString(Locale.KOREA.toString())).thenReturn(Locale.KOREA);
+
+        Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_RATE,
+                TextToSpeech.Engine.DEFAULT_RATE);
+        Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_PITCH,
+                TextToSpeech.Engine.DEFAULT_PITCH);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowTtsEngines.reset();
+        ShadowTextToSpeech.reset();
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void onCreate_startsCheckVoiceData() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
+        verify(mControllerHelper.getMockFragmentController()).startActivityForResult(
+                intent.capture(), eq(TtsPlaybackPreferenceController.VOICE_DATA_CHECK),
+                any(ActivityResultCallback.class));
+
+        assertThat(intent.getValue().getAction()).isEqualTo(
+                TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
+        assertThat(intent.getValue().getPackage()).isEqualTo(ENGINE_INFO.name);
+    }
+
+    @Test
+    public void voiceDataCheck_processActivityResult_dataIsNull_defaultSynthRemainsUnchanged() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_SYNTH,
+                DEFAULT_ENGINE_NAME);
+
+        mController.processActivityResult(
+                TtsPlaybackPreferenceController.VOICE_DATA_CHECK,
+                TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, /* data= */ null);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_SYNTH)).isEqualTo(DEFAULT_ENGINE_NAME);
+    }
+
+    @Test
+    public void voiceDataCheck_processActivityResult_dataIsNotNull_updatesDefaultSynth() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_SYNTH,
+                DEFAULT_ENGINE_NAME);
+
+        Intent data = new Intent();
+        mController.processActivityResult(
+                TtsPlaybackPreferenceController.VOICE_DATA_CHECK,
+                TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, data);
+
+        assertThat(Settings.Secure.getString(mContext.getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_SYNTH)).isEqualTo(ENGINE_INFO.name);
+    }
+
+    @Test
+    public void voiceDataCheck_processActivityResult_checkSuccess_hasVoices_populatesPreference() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        // Check that the length is 0 initially.
+        assertThat(mDefaultLanguagePreference.getEntries()).isNull();
+
+        Intent data = new Intent();
+        data.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES,
+                Lists.newArrayList(
+                        Locale.ENGLISH.toString(),
+                        Locale.CANADA.toString(),
+                        Locale.KOREA.toString()
+                ));
+
+        ShadowTextToSpeech.callInitializationCallbackWithStatus(TextToSpeech.SUCCESS);
+        mController.processActivityResult(TtsPlaybackPreferenceController.VOICE_DATA_CHECK,
+                TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, data);
+
+        // Length is 3 languages + default language.
+        assertThat(mDefaultLanguagePreference.getEntries().length).isEqualTo(4);
+    }
+
+    @Test
+    public void getSampleText_processActivityResult_dataIsNull_setsDefaultText() {
+        mController.processActivityResult(TtsPlaybackPreferenceController.GET_SAMPLE_TEXT,
+                TextToSpeech.LANG_AVAILABLE, /* data= */ null);
+
+        assertThat(mController.getSampleText()).isEqualTo(
+                mContext.getString(R.string.tts_default_sample_string));
+    }
+
+    @Test
+    public void getSampleText_processActivityResult_emptyText_setsDefaultText() {
+        String testData = "";
+
+        Intent data = new Intent();
+        data.putExtra(TextToSpeech.Engine.EXTRA_SAMPLE_TEXT, testData);
+
+        mController.processActivityResult(TtsPlaybackPreferenceController.GET_SAMPLE_TEXT,
+                TextToSpeech.LANG_AVAILABLE, data);
+
+        assertThat(mController.getSampleText()).isEqualTo(
+                mContext.getString(R.string.tts_default_sample_string));
+    }
+
+    @Test
+    public void getSampleText_processActivityResult_dataIsNotNull_setsCorrectText() {
+        String testData = "Test sample text";
+
+        Intent data = new Intent();
+        data.putExtra(TextToSpeech.Engine.EXTRA_SAMPLE_TEXT, testData);
+
+        mController.processActivityResult(TtsPlaybackPreferenceController.GET_SAMPLE_TEXT,
+                TextToSpeech.LANG_AVAILABLE, data);
+
+        assertThat(mController.getSampleText()).isEqualTo(testData);
+    }
+
+    @Test
+    public void defaultLanguage_handlePreferenceChanged_passEmptyValue_setsDefault() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        Intent data = new Intent();
+        data.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES,
+                Lists.newArrayList(
+                        Locale.ENGLISH.toString(),
+                        Locale.CANADA.toString(),
+                        Locale.KOREA.toString()
+                ));
+        mController.processActivityResult(TtsPlaybackPreferenceController.VOICE_DATA_CHECK,
+                TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, data);
+
+        // Test change listener.
+        mDefaultLanguagePreference.callChangeListener("");
+
+        verify(mTextToSpeech).setLanguage(Locale.getDefault());
+    }
+
+    @Test
+    public void defaultLanguage_handlePreferenceChanged_passLocale_setsLocale() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        Intent data = new Intent();
+        data.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES,
+                Lists.newArrayList(
+                        Locale.ENGLISH.toString(),
+                        Locale.CANADA.toString(),
+                        Locale.KOREA.toString()
+                ));
+        mController.processActivityResult(TtsPlaybackPreferenceController.VOICE_DATA_CHECK,
+                TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, data);
+
+        // Test change listener.
+        mDefaultLanguagePreference.callChangeListener(Locale.ENGLISH.toString());
+
+        verify(mTextToSpeech).setLanguage(Locale.ENGLISH);
+    }
+
+    @Test
+    public void defaultLanguage_handlePreferenceChanged_passLocale_setsSummary() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        Intent data = new Intent();
+        data.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES,
+                Lists.newArrayList(
+                        Locale.ENGLISH.toString(),
+                        Locale.CANADA.toString(),
+                        Locale.KOREA.toString()
+                ));
+        mController.processActivityResult(TtsPlaybackPreferenceController.VOICE_DATA_CHECK,
+                TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, data);
+        mDefaultLanguagePreference.callChangeListener(Locale.ENGLISH.toString());
+
+        assertThat(mDefaultLanguagePreference.getSummary()).isEqualTo(
+                Locale.ENGLISH.getDisplayName());
+    }
+
+    @Test
+    public void speechRate_handlePreferenceChanged_updatesSecureSettings() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        int newSpeechRate = TextToSpeech.Engine.DEFAULT_RATE + 40;
+        mSpeechRatePreference.callChangeListener(newSpeechRate);
+
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE)).isEqualTo(
+                newSpeechRate);
+    }
+
+    @Test
+    public void speechRate_handlePreferenceChanged_updatesTts() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        int newSpeechRate = TextToSpeech.Engine.DEFAULT_RATE + 40;
+        mSpeechRatePreference.callChangeListener(newSpeechRate);
+
+        verify(mTextToSpeech).setSpeechRate(
+                newSpeechRate / TtsPlaybackSettingsManager.SCALING_FACTOR);
+    }
+
+    @Test
+    public void speechRate_handlePreferenceChanged_speaksSampleText() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        int newSpeechRate = TextToSpeech.Engine.DEFAULT_RATE + 40;
+        mSpeechRatePreference.callChangeListener(newSpeechRate);
+
+        verify(mTextToSpeech).speak(any(), eq(TextToSpeech.QUEUE_FLUSH), isNull(), eq("Sample"));
+    }
+
+    @Test
+    public void voicePitch_handlePreferenceChanged_updatesSecureSettings() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        int newVoicePitch = TextToSpeech.Engine.DEFAULT_PITCH + 40;
+        mVoicePitchPreference.callChangeListener(newVoicePitch);
+
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH)).isEqualTo(
+                newVoicePitch);
+    }
+
+    @Test
+    public void voicePitch_handlePreferenceChanged_updatesTts() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        int newVoicePitch = TextToSpeech.Engine.DEFAULT_PITCH + 40;
+        mVoicePitchPreference.callChangeListener(newVoicePitch);
+
+        verify(mTextToSpeech).setPitch(
+                newVoicePitch / TtsPlaybackSettingsManager.SCALING_FACTOR);
+    }
+
+    @Test
+    public void voicePitch_handlePreferenceChanged_speaksSampleText() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        int newVoicePitch = TextToSpeech.Engine.DEFAULT_PITCH + 40;
+        mVoicePitchPreference.callChangeListener(newVoicePitch);
+
+        verify(mTextToSpeech).speak(any(), eq(TextToSpeech.QUEUE_FLUSH), isNull(), eq("Sample"));
+    }
+
+    @Test
+    public void refreshUi_notInitialized_disablesPreference() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+
+        assertThat(mDefaultLanguagePreference.isEnabled()).isFalse();
+        assertThat(mSpeechRatePreference.isEnabled()).isFalse();
+        assertThat(mVoicePitchPreference.isEnabled()).isFalse();
+        assertThat(mResetPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_initialized_defaultLocaleIsNull_disablesPreference() {
+        when(mEnginesHelper.parseLocaleString(any())).thenReturn(null);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        ShadowTextToSpeech.callInitializationCallbackWithStatus(TextToSpeech.SUCCESS);
+
+        mController.refreshUi();
+
+        assertThat(mDefaultLanguagePreference.isEnabled()).isFalse();
+        assertThat(mSpeechRatePreference.isEnabled()).isFalse();
+        assertThat(mVoicePitchPreference.isEnabled()).isFalse();
+        assertThat(mResetPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_defaultLocaleNotSupported_disablesPreferencesExceptLanguage() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        ShadowTextToSpeech.callInitializationCallbackWithStatus(TextToSpeech.SUCCESS);
+
+        Intent data = new Intent();
+        data.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES,
+                Lists.newArrayList(
+                        // English is default locale, but isn't available.
+                        Locale.CANADA.toString(),
+                        Locale.KOREA.toString()
+                ));
+        mController.processActivityResult(TtsPlaybackPreferenceController.VOICE_DATA_CHECK,
+                TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, data);
+
+        mController.refreshUi();
+
+        assertThat(mDefaultLanguagePreference.isEnabled()).isTrue();
+        assertThat(mSpeechRatePreference.isEnabled()).isFalse();
+        assertThat(mVoicePitchPreference.isEnabled()).isFalse();
+        assertThat(mResetPreference.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_initialized_defaultLocaleSupported_enablesPreference() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        ShadowTextToSpeech.callInitializationCallbackWithStatus(TextToSpeech.SUCCESS);
+
+        Intent data = new Intent();
+        data.putStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES,
+                Lists.newArrayList(
+                        Locale.ENGLISH.toString(),
+                        Locale.CANADA.toString(),
+                        Locale.KOREA.toString()
+                ));
+        mController.processActivityResult(TtsPlaybackPreferenceController.VOICE_DATA_CHECK,
+                TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, data);
+
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isEnabled()).isTrue();
+        assertThat(mDefaultLanguagePreference.isEnabled()).isTrue();
+        assertThat(mSpeechRatePreference.isEnabled()).isTrue();
+        assertThat(mVoicePitchPreference.isEnabled()).isTrue();
+        assertThat(mResetPreference.isEnabled()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackSettingsManagerTest.java b/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackSettingsManagerTest.java
new file mode 100644
index 0000000..3df09dd
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackSettingsManagerTest.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2019 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.car.settings.tts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TtsEngines;
+import android.speech.tts.Voice;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+import com.android.car.settings.testutils.ShadowTextToSpeech;
+import com.android.car.settings.testutils.ShadowTtsEngines;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowAlertDialog;
+
+import java.util.Locale;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowTtsEngines.class, ShadowTextToSpeech.class, ShadowSecureSettings.class})
+public class TtsPlaybackSettingsManagerTest {
+
+    private static final String ENGINE_NAME = "com.android.car.settings.tts.test";
+    private static final String SAMPLE_TEXT = "Sample text";
+
+    private Context mContext;
+    private TtsPlaybackSettingsManager mPlaybackSettingsManager;
+    @Mock
+    private TextToSpeech mTts;
+    @Mock
+    private TtsEngines mEnginesHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowTextToSpeech.setInstance(mTts);
+        ShadowTtsEngines.setInstance(mEnginesHelper);
+
+        mContext = RuntimeEnvironment.application;
+        mPlaybackSettingsManager = new TtsPlaybackSettingsManager(mContext, mTts, mEnginesHelper);
+
+        when(mTts.getCurrentEngine()).thenReturn(ENGINE_NAME);
+        Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_RATE,
+                TextToSpeech.Engine.DEFAULT_RATE);
+        Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_PITCH,
+                TextToSpeech.Engine.DEFAULT_PITCH);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowTextToSpeech.reset();
+        ShadowTtsEngines.reset();
+        ShadowAlertDialog.reset();
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void updateSpeechRate_updatesSetting() {
+        int newSpeechRate = TextToSpeech.Engine.DEFAULT_RATE + 40;
+        mPlaybackSettingsManager.updateSpeechRate(newSpeechRate);
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_RATE, TextToSpeech.Engine.DEFAULT_RATE)).isEqualTo(
+                newSpeechRate);
+    }
+
+    @Test
+    public void updateSpeechRate_updatesTts() {
+        int newSpeechRate = TextToSpeech.Engine.DEFAULT_RATE + 40;
+        mPlaybackSettingsManager.updateSpeechRate(newSpeechRate);
+        verify(mTts).setSpeechRate(newSpeechRate / TtsPlaybackSettingsManager.SCALING_FACTOR);
+    }
+
+    @Test
+    public void getCurrentSpeechRate_returnsCorrectRate() {
+        int newSpeechRate = TextToSpeech.Engine.DEFAULT_RATE + 40;
+        mPlaybackSettingsManager.updateSpeechRate(newSpeechRate);
+
+        assertThat(mPlaybackSettingsManager.getCurrentSpeechRate()).isEqualTo(newSpeechRate);
+    }
+
+    @Test
+    public void resetSpeechRate_setsToDefault() {
+        int newSpeechRate = TextToSpeech.Engine.DEFAULT_RATE + 40;
+        mPlaybackSettingsManager.updateSpeechRate(newSpeechRate);
+
+        mPlaybackSettingsManager.resetSpeechRate();
+
+        assertThat(mPlaybackSettingsManager.getCurrentSpeechRate()).isEqualTo(
+                TextToSpeech.Engine.DEFAULT_RATE);
+    }
+
+    @Test
+    public void updateVoicePitch_updatesSetting() {
+        int newVoicePitch = TextToSpeech.Engine.DEFAULT_PITCH + 40;
+        mPlaybackSettingsManager.updateVoicePitch(newVoicePitch);
+        assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.TTS_DEFAULT_PITCH, TextToSpeech.Engine.DEFAULT_PITCH)).isEqualTo(
+                newVoicePitch);
+    }
+
+    @Test
+    public void updateVoicePitch_updatesTts() {
+        int newVoicePitch = TextToSpeech.Engine.DEFAULT_PITCH + 40;
+        mPlaybackSettingsManager.updateVoicePitch(newVoicePitch);
+        verify(mTts).setPitch(newVoicePitch / TtsPlaybackSettingsManager.SCALING_FACTOR);
+    }
+
+    @Test
+    public void getCurrentVoicePitch_returnsCorrectRate() {
+        int newVoicePitch = TextToSpeech.Engine.DEFAULT_PITCH + 40;
+        mPlaybackSettingsManager.updateVoicePitch(newVoicePitch);
+
+        assertThat(mPlaybackSettingsManager.getCurrentVoicePitch()).isEqualTo(newVoicePitch);
+    }
+
+    @Test
+    public void resetVoicePitch_setsToDefault() {
+        int newVoicePitch = TextToSpeech.Engine.DEFAULT_PITCH + 40;
+        mPlaybackSettingsManager.updateVoicePitch(newVoicePitch);
+
+        mPlaybackSettingsManager.resetVoicePitch();
+
+        assertThat(mPlaybackSettingsManager.getCurrentVoicePitch()).isEqualTo(
+                TextToSpeech.Engine.DEFAULT_PITCH);
+    }
+
+    @Test
+    public void getStoredTtsLocale_localeIsNotDefaultForEngine_returnsLocale() {
+        when(mEnginesHelper.isLocaleSetToDefaultForEngine(ENGINE_NAME)).thenReturn(false);
+        when(mEnginesHelper.getLocalePrefForEngine(ENGINE_NAME)).thenReturn(Locale.CHINESE);
+
+        assertThat(mPlaybackSettingsManager.getStoredTtsLocale()).isEqualTo(Locale.CHINESE);
+    }
+
+    @Test
+    public void getStoredTtsLocale_localeIsDefaultForEngine_returnsNull() {
+        when(mEnginesHelper.isLocaleSetToDefaultForEngine(ENGINE_NAME)).thenReturn(true);
+
+        assertThat(mPlaybackSettingsManager.getStoredTtsLocale()).isNull();
+    }
+
+    @Test
+    public void updateTtsLocale_nonNullLocale_setsLanguage() {
+        mPlaybackSettingsManager.updateTtsLocale(Locale.KOREAN);
+
+        verify(mTts).setLanguage(Locale.KOREAN);
+    }
+
+    @Test
+    public void updateTtsLocale_nullLocale_setsDefaultLanguage() {
+        mPlaybackSettingsManager.updateTtsLocale(null);
+
+        verify(mTts).setLanguage(Locale.getDefault());
+    }
+
+    @Test
+    public void updateTtsLocale_nonNullLocale_correctResultCode_updatesLocalePref() {
+        when(mTts.setLanguage(Locale.KOREAN)).thenReturn(TextToSpeech.LANG_AVAILABLE);
+        mPlaybackSettingsManager.updateTtsLocale(Locale.KOREAN);
+
+        verify(mEnginesHelper).updateLocalePrefForEngine(ENGINE_NAME, Locale.KOREAN);
+    }
+
+    @Test
+    public void updateTtsLocale_nonNullLocale_wrongResultCode_doesNotUpdateLocalePref() {
+        when(mTts.setLanguage(Locale.KOREAN)).thenReturn(TextToSpeech.LANG_MISSING_DATA);
+        mPlaybackSettingsManager.updateTtsLocale(Locale.KOREAN);
+
+        verify(mEnginesHelper, never()).updateLocalePrefForEngine(any(), any());
+    }
+
+    @Test
+    public void speakSampleText_requiresNetworkConnection_languageNotAvailable_showsAlert() {
+        Voice voice = new Voice("Test Name", Locale.FRANCE, /* quality= */0,
+                /* latency= */ 0, /* requiresNetworkConnection= */ true, /* features= */ null);
+        when(mTts.getVoice()).thenReturn(voice);
+        when(mEnginesHelper.parseLocaleString(Locale.FRANCE.toString())).thenReturn(Locale.FRANCE);
+        when(mTts.isLanguageAvailable(any(Locale.class))).thenReturn(
+                TextToSpeech.LANG_MISSING_DATA);
+
+        mPlaybackSettingsManager.speakSampleText(SAMPLE_TEXT);
+
+        assertThat(ShadowAlertDialog.getLatestAlertDialog()).isNotNull();
+    }
+
+    @Test
+    public void speakSampleText_requiresNetworkConnection_languageAvailable_speaksText() {
+        Voice voice = new Voice("Test Name", Locale.FRENCH, /* quality= */0,
+                /* latency= */ 0, /* requiresNetworkConnection= */ true, /* features= */ null);
+        when(mTts.getVoice()).thenReturn(voice);
+        when(mTts.isLanguageAvailable(Locale.FRENCH)).thenReturn(TextToSpeech.LANG_AVAILABLE);
+
+        mPlaybackSettingsManager.speakSampleText(SAMPLE_TEXT);
+
+        verify(mTts).speak(SAMPLE_TEXT, TextToSpeech.QUEUE_FLUSH, null, "Sample");
+    }
+
+    @Test
+    public void speakSampleText_doesNotRequireNetworkConnection_speaksText() {
+        Voice voice = new Voice("Test Name", Locale.FRENCH, /* quality= */0,
+                /* latency= */ 0, /* requiresNetworkConnection= */ false, /* features= */ null);
+        when(mTts.getVoice()).thenReturn(voice);
+
+        mPlaybackSettingsManager.speakSampleText(SAMPLE_TEXT);
+
+        verify(mTts).speak(SAMPLE_TEXT, TextToSpeech.QUEUE_FLUSH, null, "Sample");
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java
new file mode 100644
index 0000000..becafe8
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/units/UnitsBasePreferenceControllerTest.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2019 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.car.settings.units;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCar;
+import com.android.car.settings.testutils.ShadowCarUnitsManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCar.class, ShadowCarUnitsManager.class})
+public class UnitsBasePreferenceControllerTest {
+
+    private static final int TEST_PROPERTY_ID = -1;
+    private static final Unit[] AVAILABLE_UNITS =
+            {UnitsMap.YEAR, UnitsMap.SECS, UnitsMap.NANO_SECS};
+    private static final Unit DEFAULT_UNIT = UnitsMap.YEAR;
+
+    private Context mContext;
+    private ListPreference mPreference;
+    private PreferenceControllerTestHelper<TestUnitsBasePreferenceController> mControllerHelper;
+    private TestUnitsBasePreferenceController mController;
+    private CarUnitsManager mCarUnitsManager;
+
+    @Mock
+    private CarPropertyManager mCarPropertyManager;
+    @Mock
+    private CarPropertyValue mCarPropertyValue;
+
+    private static class TestUnitsBasePreferenceController extends UnitsBasePreferenceController {
+
+        private TestUnitsBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected int getPropertyId() {
+            return TEST_PROPERTY_ID;
+        }
+
+
+        @Override
+        protected Class<ListPreference> getPreferenceType() {
+            return ListPreference.class;
+        }
+    }
+
+    @Before
+    public void setup() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        ShadowCarUnitsManager.setUnitsSupportedByProperty(TEST_PROPERTY_ID, AVAILABLE_UNITS);
+        mCarUnitsManager = new CarUnitsManager(mContext);
+        mCarUnitsManager.setUnitUsedByProperty(TEST_PROPERTY_ID, DEFAULT_UNIT.getId());
+        mPreference = new ListPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(
+                mContext, TestUnitsBasePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUnitsManager.reset();
+    }
+
+
+    @Test
+    public void onCreate_connectsCarUnitsManager() {
+        assertThat(ShadowCarUnitsManager.isConnected()).isTrue();
+    }
+
+    @Test
+    public void onCreate_registersCarServiceListener() {
+        assertThat(ShadowCarUnitsManager.getListener())
+                .isEqualTo(mController.mOnCarServiceListener);
+    }
+
+    @Test
+    public void onCreate_preferenceIsConditionallyUnavailable() {
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void onCarServiceConnected_availableUnitsExist_preferenceIsAvailable() {
+        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(PreferenceController.AVAILABLE);
+    }
+
+    @Test
+    public void onCarServiceConnected_noAvailableUnits_preferenceIsConditionallyUnavailable() {
+        ShadowCarUnitsManager.setUnitsSupportedByProperty(TEST_PROPERTY_ID, null);
+        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+
+        assertThat(mController.getAvailabilityStatus())
+                .isEqualTo(PreferenceController.CONDITIONALLY_UNAVAILABLE);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsEntriesOfSupportedUnits() {
+        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntries = mController.getEntriesOfSupportedUnits();
+
+        assertThat(mPreference.getEntries()).isEqualTo(expectedEntries);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsSupportedUnitsIdsAsEntryValues() {
+        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        CharSequence[] expectedEntryValues = mController.getIdsOfSupportedUnits();
+
+        assertThat(mPreference.getEntryValues()).isEqualTo(expectedEntryValues);
+    }
+
+    @Test
+    public void onCarServiceConnected_setsUnitBeingUsedAsPreferenceValue() {
+        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        String expectedValue = Integer.toString(DEFAULT_UNIT.getId());
+
+        assertThat(mPreference.getValue()).isEqualTo(expectedValue);
+    }
+
+    @Test
+    public void onPreferenceChanged_runsSetUnitUsedByPropertyWithNewUnit() {
+        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        mController.handlePreferenceChanged(mPreference, Integer.toString(UnitsMap.SECS.getId()));
+
+        assertThat(mCarUnitsManager.getUnitUsedByProperty(TEST_PROPERTY_ID))
+                .isEqualTo(UnitsMap.SECS);
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitIdAsValue() {
+        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = UnitsMap.SECS;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getValue()).isEqualTo(Integer.toString(newUnit.getId()));
+    }
+
+    @Test
+    public void onPropertyChanged_propertyStatusIsAvailable_setsNewUnitAbbreviationAsSummary() {
+        mController.mOnCarServiceListener.handleServiceConnected(mCarPropertyManager);
+        Unit newUnit = UnitsMap.SECS;
+        when(mCarPropertyValue.getStatus()).thenReturn(CarPropertyValue.STATUS_AVAILABLE);
+        when(mCarPropertyValue.getValue()).thenReturn(newUnit.getId());
+        mController.mCarPropertyEventCallback.onChangeEvent(mCarPropertyValue);
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(mContext.getString(newUnit.getAbbreviationResId()));
+    }
+
+    @Test
+    public void onDestroy_disconnectsCarUnitsManager() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        assertThat(ShadowCarUnitsManager.isConnected()).isFalse();
+    }
+
+    @Test
+    public void onDestroy_unregistersCarServiceListener() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        assertThat(ShadowCarUnitsManager.getListener()).isNull();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/AddNewUserTaskTest.java b/tests/robotests/src/com/android/car/settings/users/AddNewUserTaskTest.java
index b9294f9..832dd70 100644
--- a/tests/robotests/src/com/android/car/settings/users/AddNewUserTaskTest.java
+++ b/tests/robotests/src/com/android/car/settings/users/AddNewUserTaskTest.java
@@ -19,7 +19,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.pm.UserInfo;
 
 import com.android.car.settings.CarSettingsRobolectricTestRunner;
@@ -48,28 +48,45 @@
 
     @Test
     public void testTaskCallsCreateNewNonAdminUser() {
-        mTask.execute("Test name");
+        String newUserName = "Test name";
+        mTask.execute(newUserName);
         Robolectric.flushBackgroundThreadScheduler();
 
-        verify(mCarUserManagerHelper).createNewNonAdminUser("Test name");
+        verify(mCarUserManagerHelper).createNewNonAdminUser(newUserName);
     }
 
     @Test
     public void testSwitchToNewUserIfUserCreated() {
-        UserInfo newUser = new UserInfo(10, "Test name", /* flags= */ 0);
-        when(mCarUserManagerHelper.createNewNonAdminUser("Test name")).thenReturn(newUser);
+        String newUserName = "Test name";
+        UserInfo newUser = new UserInfo(10, newUserName, /* flags= */ 0);
+        when(mCarUserManagerHelper.createNewNonAdminUser(newUserName)).thenReturn(newUser);
 
-        mTask.execute("Test name");
+        mTask.execute(newUserName);
         Robolectric.flushBackgroundThreadScheduler();
 
         verify(mCarUserManagerHelper).switchToUser(newUser);
     }
 
     @Test
-    public void testAddNewUserListenerCalled() {
-        mTask.execute("Test name");
+    public void testOnUserAddedSuccessCalledIfUserCreated() {
+        String newUserName = "Test name";
+        UserInfo newUser = new UserInfo(10, newUserName, /* flags= */ 0);
+        when(mCarUserManagerHelper.createNewNonAdminUser(newUserName)).thenReturn(newUser);
+
+        mTask.execute(newUserName);
         Robolectric.flushBackgroundThreadScheduler();
 
-        verify(mAddNewUserListener).onUserAdded();
+        verify(mAddNewUserListener).onUserAddedSuccess();
+    }
+
+    @Test
+    public void testOnUserAddedFailureCalledIfNullReturned() {
+        String newUserName = "Test name";
+        when(mCarUserManagerHelper.createNewNonAdminUser(newUserName)).thenReturn(null);
+
+        mTask.execute(newUserName);
+        Robolectric.flushBackgroundThreadScheduler();
+
+        verify(mAddNewUserListener).onUserAddedFailure();
     }
 }
diff --git a/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminFragmentTest.java
new file mode 100644
index 0000000..b6f41b5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminFragmentTest.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.pm.UserInfo;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for ChooseNewAdminFragment.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
+public class ChooseNewAdminFragmentTest {
+
+    private static final UserInfo TEST_ADMIN_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", /* flags= */ 0);
+    private BaseTestActivity mTestActivity;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUpTestActivity() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testBackButtonPressed_whenRemoveCancelled() {
+        ChooseNewAdminFragment fragment = ChooseNewAdminFragment.newInstance(TEST_ADMIN_USER);
+        mTestActivity.launchFragment(fragment);
+        Button actionButton = (Button) mTestActivity.findViewById(R.id.action_button1);
+
+        actionButton.callOnClick();
+        assertThat(mTestActivity.getOnBackPressedFlag()).isTrue();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminPreferenceControllerTest.java
new file mode 100644
index 0000000..e539143
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/ChooseNewAdminPreferenceControllerTest.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertThrows;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
+public class ChooseNewAdminPreferenceControllerTest {
+
+    private static final UserInfo TEST_ADMIN_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", /* flags= */ 0);
+    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
+            "TEST_OTHER_NAME", /* flags= */ 0);
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<ChooseNewAdminPreferenceController> mControllerHelper;
+    private ChooseNewAdminPreferenceController mController;
+    private ConfirmationDialogFragment mDialog;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                ChooseNewAdminPreferenceController.class);
+        mController = mControllerHelper.getController();
+        mController.setAdminInfo(TEST_ADMIN_USER);
+        mControllerHelper.setPreference(new LogicalPreferenceGroup(mContext));
+        mDialog = new ConfirmationDialogFragment.Builder(mContext).build();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testOnCreate_hasPreviousDialog_dialogListenerSet() {
+        when(mControllerHelper.getMockFragmentController().findDialogByTag(
+                ConfirmationDialogFragment.TAG)).thenReturn(mDialog);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mDialog.getConfirmListener()).isNotNull();
+    }
+
+    @Test
+    public void testCheckInitialized_noAdminInfoSet_throwsError() {
+        assertThrows(IllegalStateException.class,
+                () -> new PreferenceControllerTestHelper<>(mContext,
+                        ChooseNewAdminPreferenceController.class,
+                        new LogicalPreferenceGroup(mContext)));
+    }
+
+    @Test
+    public void testUserClicked_opensDialog() {
+        mController.userClicked(/* userToMakeAdmin= */ TEST_OTHER_USER);
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class),
+                eq(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void testAssignNewAdminAndRemoveOldAdmin_grantAdminCalled() {
+        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
+
+        verify(mCarUserManagerHelper).grantAdminPermissions(TEST_OTHER_USER);
+    }
+
+    @Test
+    public void testAssignNewAdminAndRemoveOldAdmin_removeUserCalled() {
+        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
+
+        verify(mCarUserManagerHelper).removeUser(eq(TEST_ADMIN_USER), anyString());
+    }
+
+    @Test
+    public void testAssignNewAdminAndRemoveOldAdmin_success_noErrorDialog() {
+        when(mCarUserManagerHelper.removeUser(TEST_ADMIN_USER,
+                mContext.getString(R.string.user_guest))).thenReturn(true);
+
+        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
+
+        verify(mControllerHelper.getMockFragmentController(), never()).showDialog(
+                any(ErrorDialog.class), any());
+    }
+
+    @Test
+    public void testAssignNewAdminAndRemoveOldAdmin_failure_errorDialog() {
+        when(mCarUserManagerHelper.removeUser(TEST_ADMIN_USER,
+                mContext.getString(R.string.user_guest))).thenReturn(false);
+
+        mController.assignNewAdminAndRemoveOldAdmin(TEST_OTHER_USER);
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(any(ErrorDialog.class),
+                any());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/ConfirmExitRetailModeDialogTest.java b/tests/robotests/src/com/android/car/settings/users/ConfirmExitRetailModeDialogTest.java
new file mode 100644
index 0000000..db8ee92
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/ConfirmExitRetailModeDialogTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.DialogTestUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+
+/**
+ * Tests for ConfirmExitRetailModeDialog.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ConfirmExitRetailModeDialogTest {
+    private BaseTestActivity mTestActivity;
+    private Fragment mTestFragment;
+    private ConfirmExitRetailModeDialog mDialog;
+
+    @Before
+    public void setUpTestActivity() {
+        MockitoAnnotations.initMocks(this);
+
+        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
+
+        mTestFragment = new Fragment();
+        mTestActivity.launchFragment(mTestFragment);
+
+        mDialog = new ConfirmExitRetailModeDialog();
+    }
+
+    @Test
+    public void testConfirmExitRetailModeInvokesOnExitRetailModeConfirmed() {
+        ConfirmExitRetailModeDialog.ConfirmExitRetailModeListener listener = Mockito.mock(
+                ConfirmExitRetailModeDialog.ConfirmExitRetailModeListener.class);
+        mDialog.setConfirmExitRetailModeListener(listener);
+        showDialog();
+
+        // Invoke exit retail mode.
+        DialogTestUtils.clickPositiveButton(mDialog);
+
+        verify(listener).onExitRetailModeConfirmed();
+        assertThat(isDialogShown()).isFalse(); // Dialog is dismissed.
+    }
+
+    @Test
+    public void testCancelDismissesDialog() {
+        showDialog();
+
+        // Invoke cancel.
+        DialogTestUtils.clickNegativeButton(mDialog);
+
+        assertThat(isDialogShown()).isFalse(); // Dialog is dismissed.
+    }
+
+    @Test
+    public void testNoConfirmClickListenerDismissesDialog() {
+        showDialog();
+
+        // Invoke confirm add user.
+        DialogTestUtils.clickPositiveButton(mDialog);
+
+        assertThat(isDialogShown()).isFalse(); // Dialog is dismissed.
+    }
+
+    private void showDialog() {
+        mDialog.show(mTestFragment);
+        assertThat(isDialogShown()).isTrue();
+    }
+
+    private boolean isDialogShown() {
+        return mTestActivity.getSupportFragmentManager()
+                .findFragmentByTag(ConfirmExitRetailModeDialog.DIALOG_TAG) != null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/EditUserNameEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/EditUserNameEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..c97b47b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/EditUserNameEntryPreferenceControllerTest.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static android.content.pm.UserInfo.FLAG_ADMIN;
+import static android.content.pm.UserInfo.FLAG_INITIALIZED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
+public class EditUserNameEntryPreferenceControllerTest {
+
+    private static final String TEST_USERNAME = "Test Username";
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<EditUserNameEntryPreferenceController>
+            mPreferenceControllerHelper;
+    private EditUserNameEntryPreferenceController mController;
+    private ButtonPreference mButtonPreference;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                EditUserNameEntryPreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+        mController.setUserInfo(new UserInfo());
+        mButtonPreference = new ButtonPreference(mContext);
+        mButtonPreference.setSelectable(false);
+        mPreferenceControllerHelper.setPreference(mButtonPreference);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testOnButtonClick_isCurrentUser_launchesEditUsernameFragment() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, /* flags= */ 0);
+        when(mCarUserManagerHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        mController.setUserInfo(userInfo);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mButtonPreference.performButtonClick();
+        verify(mPreferenceControllerHelper.getMockFragmentController()).launchFragment(
+                any(EditUsernameFragment.class));
+    }
+
+    @Test
+    public void testOnButtonClick_isNotCurrentUser_doesNothing() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, /* flags= */ 0);
+        when(mCarUserManagerHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mController.setUserInfo(userInfo);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mButtonPreference.performButtonClick();
+        verify(mPreferenceControllerHelper.getMockFragmentController(), never()).launchFragment(
+                any(EditUsernameFragment.class));
+    }
+
+    @Test
+    public void testRefreshUi_elementHasTitle() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, /* flags= */ 0);
+        when(mCarUserManagerHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mController.setUserInfo(userInfo);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+        assertThat(mButtonPreference.getTitle()).isEqualTo(TEST_USERNAME);
+    }
+
+    @Test
+    public void testRefreshUi_userNotSetup_setsSummary() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, /* flags= */ 0);
+        mController.setUserInfo(userInfo);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+        assertThat(mButtonPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.user_summary_not_set_up));
+    }
+
+    @Test
+    public void testRefreshUi_userSetup_noSummary() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME, FLAG_INITIALIZED);
+        mController.setUserInfo(userInfo);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+        assertThat(mButtonPreference.getSummary()).isNull();
+    }
+
+    @Test
+    public void testRefreshUi_isAdmin_notCurrentUser() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        when(mCarUserManagerHelper.isCurrentProcessUser(userInfo)).thenReturn(false);
+        mController.setUserInfo(userInfo);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+        assertThat(mButtonPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.user_admin));
+    }
+
+    @Test
+    public void testRefreshUi_isAdmin_currentUser() {
+        UserInfo userInfo = new UserInfo(/* id= */ 10, TEST_USERNAME,
+                FLAG_INITIALIZED | FLAG_ADMIN);
+        when(mCarUserManagerHelper.isCurrentProcessUser(userInfo)).thenReturn(true);
+        mController.setUserInfo(userInfo);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mController.refreshUi();
+        assertThat(mButtonPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.signed_in_admin_user));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/EditUsernameFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/EditUsernameFragmentTest.java
index 7475baa..d4b5061 100644
--- a/tests/robotests/src/com/android/car/settings/users/EditUsernameFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/users/EditUsernameFragmentTest.java
@@ -21,18 +21,18 @@
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.pm.UserInfo;
 import android.os.UserManager;
 import android.widget.Button;
+import android.widget.EditText;
 
 import com.android.car.settings.CarSettingsRobolectricTestRunner;
 import com.android.car.settings.R;
 import com.android.car.settings.testutils.BaseTestActivity;
 import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
 
-import com.google.android.material.textfield.TextInputEditText;
-
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -45,7 +45,7 @@
  * Tests for EditUsernameFragment.
  */
 @RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = { ShadowCarUserManagerHelper.class })
+@Config(shadows = {ShadowCarUserManagerHelper.class})
 public class EditUsernameFragmentTest {
     private BaseTestActivity mTestActivity;
 
@@ -58,9 +58,12 @@
     public void setUpTestActivity() {
         MockitoAnnotations.initMocks(this);
         ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
-        mTestActivity = Robolectric.buildActivity(BaseTestActivity.class)
-                .setup()
-                .get();
+        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
     }
 
     /**
@@ -72,8 +75,7 @@
         UserInfo testUser = new UserInfo(/* id= */ 10, testUserName, /* flags= */ 0);
         createEditUsernameFragment(testUser);
 
-        TextInputEditText userNameEditText =
-                (TextInputEditText) mTestActivity.findViewById(R.id.user_name_text_edit);
+        EditText userNameEditText = mTestActivity.findViewById(R.id.user_name_text_edit);
         assertThat(userNameEditText.getText().toString()).isEqualTo(testUserName);
     }
 
@@ -84,13 +86,13 @@
     public void testClickingOkSavesNewUserName() {
         UserInfo testUser = new UserInfo(/* id= */ 10, "user_name", /* flags= */ 0);
         createEditUsernameFragment(testUser);
-        TextInputEditText userNameEditText =
-                (TextInputEditText) mTestActivity.findViewById(R.id.user_name_text_edit);
+        EditText userNameEditText = mTestActivity.findViewById(R.id.user_name_text_edit);
         Button okButton = (Button) mTestActivity.findViewById(R.id.action_button2);
 
         String newUserName = "new_user_name";
         userNameEditText.requestFocus();
         userNameEditText.setText(newUserName);
+        assertThat(okButton.isEnabled()).isTrue();
         okButton.callOnClick();
 
         verify(mCarUserManagerHelper).setUserName(testUser, newUserName);
@@ -104,8 +106,7 @@
         int userId = 10;
         UserInfo testUser = new UserInfo(userId, /* name= */ "test_user", /* flags= */ 0);
         createEditUsernameFragment(testUser);
-        TextInputEditText userNameEditText =
-                (TextInputEditText) mTestActivity.findViewById(R.id.user_name_text_edit);
+        EditText userNameEditText = mTestActivity.findViewById(R.id.user_name_text_edit);
         Button cancelButton = (Button) mTestActivity.findViewById(R.id.action_button1);
 
         String newUserName = "new_user_name";
@@ -122,6 +123,19 @@
         verify(mUserManager, never()).setUserName(userId, newUserName);
     }
 
+    @Test
+    public void testEmptyUsernameCannotBeSaved() {
+        UserInfo testUser = new UserInfo(/* id= */ 10, "user_name", /* flags= */ 0);
+        createEditUsernameFragment(testUser);
+        EditText userNameEditText = mTestActivity.findViewById(R.id.user_name_text_edit);
+        Button okButton = (Button) mTestActivity.findViewById(R.id.action_button2);
+
+        userNameEditText.requestFocus();
+        userNameEditText.setText("");
+
+        assertThat(okButton.isEnabled()).isFalse();
+    }
+
     private void createEditUsernameFragment(UserInfo userInfo) {
         EditUsernameFragment fragment = EditUsernameFragment.newInstance(userInfo);
         mTestActivity.launchFragment(fragment);
diff --git a/tests/robotests/src/com/android/car/settings/users/MakeAdminPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/MakeAdminPreferenceControllerTest.java
new file mode 100644
index 0000000..5c62bcd
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/MakeAdminPreferenceControllerTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.matches;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.Bundle;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ButtonPreference;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
+public class MakeAdminPreferenceControllerTest {
+
+    private static final UserInfo TEST_USER = new UserInfo(/* id= */ 10,
+            "Test Username", /* flags= */0);
+
+    private PreferenceControllerTestHelper<MakeAdminPreferenceController>
+            mPreferenceControllerHelper;
+    private MakeAdminPreferenceController mController;
+    private ButtonPreference mButtonPreference;
+    private ConfirmationDialogFragment mDialog;
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Context context = RuntimeEnvironment.application;
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                MakeAdminPreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+        mController.setUserInfo(TEST_USER);
+        mButtonPreference = new ButtonPreference(context);
+        mButtonPreference.setSelectable(false);
+        mPreferenceControllerHelper.setPreference(mButtonPreference);
+        mDialog = new ConfirmationDialogFragment.Builder(context).build();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testOnCreate_hasPreviousDialog_dialogListenerSet() {
+        when(mPreferenceControllerHelper.getMockFragmentController().findDialogByTag(
+                ConfirmationDialogFragment.TAG)).thenReturn(mDialog);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mDialog.getConfirmListener()).isNotNull();
+    }
+
+    @Test
+    public void testOnButtonClick_showsDialog() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mButtonPreference.performButtonClick();
+        verify(mPreferenceControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmationDialogFragment.class),
+                matches(ConfirmationDialogFragment.TAG));
+    }
+
+    @Test
+    public void testListener_makeUserAdmin() {
+        Bundle arguments = new Bundle();
+        arguments.putParcelable(UsersDialogProvider.KEY_USER_TO_MAKE_ADMIN, TEST_USER);
+        mController.mConfirmListener.onConfirm(arguments);
+        verify(mCarUserManagerHelper).grantAdminPermissions(TEST_USER);
+    }
+
+    @Test
+    public void testListener_goBack() {
+        Bundle arguments = new Bundle();
+        arguments.putParcelable(UsersDialogProvider.KEY_USER_TO_MAKE_ADMIN, TEST_USER);
+        mController.mConfirmListener.onConfirm(arguments);
+        verify(mPreferenceControllerHelper.getMockFragmentController()).goBack();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/PermissionsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/PermissionsPreferenceControllerTest.java
new file mode 100644
index 0000000..9245f97
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/PermissionsPreferenceControllerTest.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/**
+ * Test for the preference controller which populates the various permissions preferences.
+ * Note that the switch preference represents the opposite of the restriction it is controlling.
+ * i.e. DISALLOW_ADD_USER may be the restriction, but the switch represents "create new users".
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class PermissionsPreferenceControllerTest {
+
+    private static final String TEST_RESTRICTION = UserManager.DISALLOW_ADD_USER;
+    private static final UserInfo TEST_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", /* flags= */ 0);
+
+    private PreferenceControllerTestHelper<PermissionsPreferenceController>
+            mPreferenceControllerHelper;
+    private PermissionsPreferenceController mController;
+    private PreferenceGroup mPreferenceGroup;
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+        ShadowCarUserManagerHelper.setMockInstance(mock(CarUserManagerHelper.class));
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                PermissionsPreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+        mController.setUserInfo(TEST_USER);
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mPreferenceControllerHelper.setPreference(mPreferenceGroup);
+        mCarUserManagerHelper = new CarUserManagerHelper(context);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testRefreshUi_populatesGroup() {
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(5);
+    }
+
+    @Test
+    public void testRefreshUi_callingTwice_noDuplicates() {
+        mController.refreshUi();
+        mController.refreshUi();
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(5);
+    }
+
+    @Test
+    public void testRefreshUi_setToFalse() {
+        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
+                TEST_RESTRICTION);
+        preference.setChecked(true);
+        mCarUserManagerHelper.setUserRestriction(TEST_USER, TEST_RESTRICTION, true);
+        mController.refreshUi();
+        assertThat(preference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void testRefreshUi_setToTrue() {
+        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
+                TEST_RESTRICTION);
+        preference.setChecked(false);
+        mCarUserManagerHelper.setUserRestriction(TEST_USER, TEST_RESTRICTION, false);
+        mController.refreshUi();
+        assertThat(preference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void testOnPreferenceChange_changeToFalse() {
+        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
+                TEST_RESTRICTION);
+        mCarUserManagerHelper.setUserRestriction(TEST_USER, TEST_RESTRICTION, true);
+        preference.callChangeListener(true);
+        assertThat(mCarUserManagerHelper.hasUserRestriction(TEST_RESTRICTION, TEST_USER)).isFalse();
+    }
+
+    @Test
+    public void testOnPreferenceChange_changeToTrue() {
+        SwitchPreference preference = getPreferenceForRestriction(mPreferenceGroup,
+                TEST_RESTRICTION);
+        mCarUserManagerHelper.setUserRestriction(TEST_USER, TEST_RESTRICTION, false);
+        preference.callChangeListener(false);
+        assertThat(mCarUserManagerHelper.hasUserRestriction(TEST_RESTRICTION, TEST_USER)).isTrue();
+    }
+
+    private SwitchPreference getPreferenceForRestriction(
+            PreferenceGroup preferenceGroup, String restriction) {
+        for (int i = 0; i < preferenceGroup.getPreferenceCount(); i++) {
+            SwitchPreference preference = (SwitchPreference) preferenceGroup.getPreference(i);
+            if (restriction.equals(preference.getExtras().getString(
+                    PermissionsPreferenceController.PERMISSION_TYPE_KEY))) {
+                return preference;
+            }
+        }
+        return null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/UserDetailsBaseFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/UserDetailsBaseFragmentTest.java
new file mode 100644
index 0000000..6aaed03
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/UserDetailsBaseFragmentTest.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.view.View;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+import com.android.car.settings.testutils.ShadowUserManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.annotation.Config;
+
+import java.util.Arrays;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowUserManager.class, ShadowCarUserManagerHelper.class,
+        ShadowUserIconProvider.class})
+public class UserDetailsBaseFragmentTest {
+
+    /*
+     * This class needs to be public and static in order for it to be recreated from instance
+     * state if necessary.
+     */
+    public static class TestUserDetailsBaseFragment extends UserDetailsBaseFragment {
+
+        @Override
+        protected String getTitleText() {
+            return "test_title";
+        }
+
+        @Override
+        protected int getPreferenceScreenResId() {
+            return R.xml.test_user_details_base_fragment;
+        }
+    }
+
+    private BaseTestActivity mTestActivity;
+    private UserDetailsBaseFragment mUserDetailsBaseFragment;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private UserManager mUserManager;
+
+    private Button mRemoveUserButton;
+
+    @Before
+    public void setUpTestActivity() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        ShadowUserManager.setInstance(mUserManager);
+
+        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowUserManager.reset();
+    }
+
+    @Test
+    public void testRemoveUserButtonVisible_whenAllowedToRemoveUsers() {
+        when(mCarUserManagerHelper.canCurrentProcessRemoveUsers()).thenReturn(true);
+        when(mCarUserManagerHelper.canUserBeRemoved(any())).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+        createUserDetailsBaseFragment();
+
+        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void testRemoveUserButtonHidden_whenNotAllowedToRemoveUSers() {
+        when(mCarUserManagerHelper.canCurrentProcessRemoveUsers()).thenReturn(false);
+        when(mCarUserManagerHelper.canUserBeRemoved(any())).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+        createUserDetailsBaseFragment();
+
+        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testRemoveUserButtonHidden_whenUserCannotBeRemoved() {
+        when(mCarUserManagerHelper.canCurrentProcessRemoveUsers()).thenReturn(true);
+        when(mCarUserManagerHelper.canUserBeRemoved(any())).thenReturn(false);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+        createUserDetailsBaseFragment();
+
+        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testRemoveUserButtonHidden_demoUser() {
+        when(mCarUserManagerHelper.canCurrentProcessRemoveUsers()).thenReturn(true);
+        when(mCarUserManagerHelper.canUserBeRemoved(any())).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(true);
+        createUserDetailsBaseFragment();
+
+        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void testRemoveUserButtonClick_createsRemovalDialog() {
+        when(mCarUserManagerHelper.canCurrentProcessRemoveUsers()).thenReturn(true);
+        when(mCarUserManagerHelper.canUserBeRemoved(any())).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
+        when(mCarUserManagerHelper.getAllPersistentUsers()).thenReturn(
+                Arrays.asList(new UserInfo()));
+        createUserDetailsBaseFragment();
+        mRemoveUserButton.performClick();
+
+        assertThat(mUserDetailsBaseFragment.findDialogByTag(
+                ConfirmationDialogFragment.TAG)).isNotNull();
+    }
+
+    private void createUserDetailsBaseFragment() {
+        UserInfo testUser = new UserInfo();
+        // Use UserDetailsFragment, since we cannot test an abstract class.
+        mUserDetailsBaseFragment = UserDetailsBaseFragment.addUserIdToFragmentArguments(
+                new TestUserDetailsBaseFragment(), testUser.id);
+        when(mUserManager.getUserInfo(testUser.id)).thenReturn(testUser);
+        mTestActivity.launchFragment(mUserDetailsBaseFragment);
+        mRemoveUserButton = (Button) mTestActivity.findViewById(R.id.action_button1);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/UserDetailsBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/UserDetailsBasePreferenceControllerTest.java
new file mode 100644
index 0000000..97a988f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/UserDetailsBasePreferenceControllerTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.testng.Assert.assertThrows;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
+public class UserDetailsBasePreferenceControllerTest {
+
+    private static class TestUserDetailsBasePreferenceController extends
+            UserDetailsBasePreferenceController<Preference> {
+
+        TestUserDetailsBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<Preference> getPreferenceType() {
+            return Preference.class;
+        }
+    }
+
+    private PreferenceControllerTestHelper<TestUserDetailsBasePreferenceController>
+            mPreferenceControllerHelper;
+    private TestUserDetailsBasePreferenceController mController;
+    private Preference mPreference;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        Context context = RuntimeEnvironment.application;
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(context,
+                TestUserDetailsBasePreferenceController.class);
+        mController = mPreferenceControllerHelper.getController();
+        mPreference = new Preference(context);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testCheckInitialized_missingUserInfo() {
+        assertThrows(() -> mPreferenceControllerHelper.setPreference(mPreference));
+    }
+
+    @Test
+    public void testOnCreate_registerListener() {
+        mController.setUserInfo(new UserInfo());
+        mPreferenceControllerHelper.setPreference(mPreference);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        verify(mCarUserManagerHelper).registerOnUsersUpdateListener(any(CarUserManagerHelper
+                .OnUsersUpdateListener.class));
+    }
+
+    @Test
+    public void testOnDestroy_unregisterListener() {
+        mController.setUserInfo(new UserInfo());
+        mPreferenceControllerHelper.setPreference(mPreference);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        ArgumentCaptor<CarUserManagerHelper.OnUsersUpdateListener> listenerArgumentCaptor =
+                ArgumentCaptor.forClass(CarUserManagerHelper.OnUsersUpdateListener.class);
+        verify(mCarUserManagerHelper).registerOnUsersUpdateListener(
+                listenerArgumentCaptor.capture());
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+        verify(mCarUserManagerHelper).unregisterOnUsersUpdateListener(
+                listenerArgumentCaptor.getValue());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/UserDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/UserDetailsFragmentTest.java
index 84daa8e..c6b51b2 100644
--- a/tests/robotests/src/com/android/car/settings/users/UserDetailsFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/users/UserDetailsFragmentTest.java
@@ -18,164 +18,97 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.when;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
 import android.content.pm.UserInfo;
-import android.view.View;
-import android.widget.Button;
+import android.os.UserManager;
+import android.widget.TextView;
 
 import com.android.car.settings.CarSettingsRobolectricTestRunner;
 import com.android.car.settings.R;
 import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
 import com.android.car.settings.testutils.ShadowUserIconProvider;
+import com.android.car.settings.testutils.ShadowUserManager;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
-/**
- * Tests for UserDetailsFragment.
- */
 @RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = { ShadowUserIconProvider.class })
+@Config(shadows = {ShadowUserManager.class, ShadowCarUserManagerHelper.class,
+        ShadowUserIconProvider.class})
 public class UserDetailsFragmentTest {
+
+    private static final String TEST_NAME = "test_name";
+    private static final String TEST_UPDATED_NAME = "test_updated_name";
+    private static final int TEST_USER_ID = 10;
+
+    private Context mContext;
     private BaseTestActivity mTestActivity;
     private UserDetailsFragment mUserDetailsFragment;
-
     @Mock
     private CarUserManagerHelper mCarUserManagerHelper;
     @Mock
-    private UserIconProvider mUserIconProvider;
+    private UserManager mUserManager;
 
-    private Button mRemoveUserButton;
-    private Button mSwitchUserButton;
+    private TextView mTitle;
 
     @Before
     public void setUpTestActivity() {
         MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        ShadowUserManager.setInstance(mUserManager);
 
-        when(mUserIconProvider.getUserIcon(any(), any())).thenReturn(null);
-
-        mTestActivity = Robolectric.buildActivity(BaseTestActivity.class)
-                .setup()
-                .get();
+        mContext = RuntimeEnvironment.application;
+        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
     }
 
-    /**
-     * Tests that if the current user cannot remove other users, the removeUserButton is hidden.
-     */
-    @Test
-    public void test_canCurrentProcessRemoveUsers_isFalse_hidesRemoveUserButton() {
-        doReturn(true).when(mCarUserManagerHelper).canCurrentProcessRemoveUsers();
-        doReturn(true).when(mCarUserManagerHelper).canUserBeRemoved(any());
-        doReturn(false).when(mCarUserManagerHelper).isCurrentProcessDemoUser();
-        createUserDetailsFragment();
-
-        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.VISIBLE);
-
-        doReturn(false).when(mCarUserManagerHelper).canCurrentProcessRemoveUsers();
-        refreshFragment();
-
-        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.GONE);
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+        ShadowUserManager.reset();
     }
 
-    /**
-     * Tests that if the user cannot be removed, the remove button is hidden.
-     */
     @Test
-    public void test_canUserBeRemoved_isFalse_hidesRemoveUserButton() {
-        doReturn(true).when(mCarUserManagerHelper).canCurrentProcessRemoveUsers();
-        doReturn(true).when(mCarUserManagerHelper).canUserBeRemoved(any());
-        doReturn(false).when(mCarUserManagerHelper).isCurrentProcessDemoUser();
+    public void testCarUserManagerHelperUpdateListener_showsCorrectText() {
+        UserInfo testUser = new UserInfo(TEST_USER_ID, TEST_NAME, /* flags= */ 0);
+        when(mUserManager.getUserInfo(TEST_USER_ID)).thenReturn(testUser);
         createUserDetailsFragment();
-
-        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.VISIBLE);
-
-        doReturn(false).when(mCarUserManagerHelper).canUserBeRemoved(any());
-        refreshFragment();
-
-        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.GONE);
+        mUserDetailsFragment.mOnUsersUpdateListener.onUsersUpdate();
+        assertThat(mTitle.getText()).isEqualTo(
+                UserUtils.getUserDisplayName(mContext, mCarUserManagerHelper, testUser));
     }
 
-    /**
-     * Tests that demo user cannot remove other users.
-     */
     @Test
-    public void test_isCurrentProcessDemoUser_isTrue_hidesRemoveUserButton() {
-        doReturn(true).when(mCarUserManagerHelper).canCurrentProcessRemoveUsers();
-        doReturn(true).when(mCarUserManagerHelper).canUserBeRemoved(any());
-        doReturn(false).when(mCarUserManagerHelper).isCurrentProcessDemoUser();
+    public void testCarUserManagerHelperUpdateListener_textChangesWithUserUpdate() {
+        UserInfo testUser = new UserInfo(TEST_USER_ID, TEST_NAME, /* flags= */ 0);
+        when(mUserManager.getUserInfo(TEST_USER_ID)).thenReturn(testUser);
+
         createUserDetailsFragment();
+        mUserDetailsFragment.mOnUsersUpdateListener.onUsersUpdate();
+        assertThat(mTitle.getText()).isEqualTo(
+                UserUtils.getUserDisplayName(mContext, mCarUserManagerHelper, testUser));
 
-        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.VISIBLE);
+        UserInfo testUserUpdated = new UserInfo(TEST_USER_ID, TEST_UPDATED_NAME, /* flags= */ 0);
+        when(mUserManager.getUserInfo(TEST_USER_ID)).thenReturn(testUserUpdated);
 
-        doReturn(true).when(mCarUserManagerHelper).isCurrentProcessDemoUser();
-        refreshFragment();
-
-        assertThat(mRemoveUserButton.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    /**
-     * Tests that if the current user cannot switch to other users, the switchUserButton is hidden.
-     */
-    @Test
-    public void test_canCurrentProcessSwitchUsers_isFalse_hidesSwitchUserButton() {
-        doReturn(true).when(mCarUserManagerHelper).canCurrentProcessSwitchUsers();
-        doReturn(false).when(mCarUserManagerHelper).isForegroundUser(any());
-        createUserDetailsFragment();
-
-        assertThat(mSwitchUserButton.getVisibility()).isEqualTo(View.VISIBLE);
-
-        doReturn(false).when(mCarUserManagerHelper).canCurrentProcessSwitchUsers();
-        refreshFragment();
-
-        assertThat(mSwitchUserButton.getVisibility()).isEqualTo(View.GONE);
-    }
-
-    /**
-     * Tests that if UserDetailsFragment is displaying foreground user already, switch button is
-     * hidden.
-     */
-    @Test
-    public void test_isForegroundUser_isTrue_hidesSwitchUserButton() {
-        doReturn(true).when(mCarUserManagerHelper).canCurrentProcessSwitchUsers();
-        doReturn(false).when(mCarUserManagerHelper).isForegroundUser(any());
-        createUserDetailsFragment();
-
-        assertThat(mSwitchUserButton.getVisibility()).isEqualTo(View.VISIBLE);
-
-        doReturn(false).when(mCarUserManagerHelper).canCurrentProcessSwitchUsers();
-        refreshFragment();
-
-        assertThat(mSwitchUserButton.getVisibility()).isEqualTo(View.GONE);
+        mUserDetailsFragment.mOnUsersUpdateListener.onUsersUpdate();
+        assertThat(mTitle.getText()).isEqualTo(
+                UserUtils.getUserDisplayName(mContext, mCarUserManagerHelper, testUserUpdated));
     }
 
     private void createUserDetailsFragment() {
-        UserInfo testUser = new UserInfo();
-
-        mUserDetailsFragment = UserDetailsFragment.newInstance(testUser);
-        mUserDetailsFragment.mCarUserManagerHelper = mCarUserManagerHelper;
+        mUserDetailsFragment = UserDetailsFragment.newInstance(TEST_USER_ID);
         mTestActivity.launchFragment(mUserDetailsFragment);
-
-        refreshButtons();
-    }
-
-    private void refreshFragment() {
-        mTestActivity.reattachFragment(mUserDetailsFragment);
-
-        refreshButtons();
-    }
-
-    private void refreshButtons() {
-        // Get buttons;
-        mRemoveUserButton = (Button) mTestActivity.findViewById(R.id.action_button1);
-        mSwitchUserButton = (Button) mTestActivity.findViewById(R.id.action_button2);
+        mTitle = mTestActivity.findViewById(R.id.title);
     }
 }
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/UsersBasePreferenceControllerTest.java
new file mode 100644
index 0000000..42e2b89
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/UsersBasePreferenceControllerTest.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static android.content.pm.UserInfo.FLAG_ADMIN;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
+public class UsersBasePreferenceControllerTest {
+
+    private static class TestUsersBasePreferenceController extends UsersBasePreferenceController {
+
+        TestUsersBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected void userClicked(UserInfo userInfo) {
+        }
+    }
+
+    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", /* flags= */ 0);
+    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
+            "TEST_OTHER_NAME", /* flags= */ 0);
+    private PreferenceControllerTestHelper<TestUsersBasePreferenceController> mControllerHelper;
+    private TestUsersBasePreferenceController mController;
+    private PreferenceGroup mPreferenceGroup;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                TestUsersBasePreferenceController.class, mPreferenceGroup);
+        mController = mControllerHelper.getController();
+        when(mCarUserManagerHelper.getCurrentProcessUserInfo()).thenReturn(TEST_CURRENT_USER);
+        when(mCarUserManagerHelper.isCurrentProcessUser(TEST_CURRENT_USER)).thenReturn(true);
+        when(mCarUserManagerHelper.getAllSwitchableUsers()).thenReturn(
+                Collections.singletonList(TEST_OTHER_USER));
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void onCreate_registersOnUsersUpdateListener() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        verify(mCarUserManagerHelper).registerOnUsersUpdateListener(
+                any(CarUserManagerHelper.OnUsersUpdateListener.class));
+    }
+
+    @Test
+    public void onCreate_populatesUsers() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        // Three users. Current user, other user, guest user.
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+    }
+
+    @Test
+    public void onDestroy_unregistersOnUsersUpdateListener() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        verify(mCarUserManagerHelper).unregisterOnUsersUpdateListener(
+                any(CarUserManagerHelper.OnUsersUpdateListener.class));
+    }
+
+    @Test
+    public void refreshUi_userChange_updatesGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        // Store the list of previous Preferences.
+        List<Preference> currentPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            currentPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        // Mock a change so that other user becomes an admin.
+        UserInfo adminOtherUser = new UserInfo(/* id= */ 11, "TEST_OTHER_NAME", FLAG_ADMIN);
+        when(mCarUserManagerHelper.getAllSwitchableUsers()).thenReturn(
+                Collections.singletonList(adminOtherUser));
+
+        mController.refreshUi();
+
+        List<Preference> newPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            newPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        assertThat(newPreferences).containsNoneIn(currentPreferences);
+    }
+
+    @Test
+    public void refreshUi_noChange_doesNotUpdateGroup() {
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+
+        // Store the list of previous Preferences.
+        List<Preference> currentPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            currentPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        mController.refreshUi();
+
+        List<Preference> newPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            newPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        assertThat(newPreferences).containsExactlyElementsIn(currentPreferences);
+    }
+
+    @Test
+    public void onUsersUpdated_updatesGroup() {
+        ArgumentCaptor<CarUserManagerHelper.OnUsersUpdateListener> listenerCaptor =
+                ArgumentCaptor.forClass(CarUserManagerHelper.OnUsersUpdateListener.class);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+        verify(mCarUserManagerHelper).registerOnUsersUpdateListener(listenerCaptor.capture());
+
+        // Store the list of previous Preferences.
+        List<Preference> currentPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            currentPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        // Mock a change so that other user becomes an admin.
+        UserInfo adminOtherUser = new UserInfo(/* id= */ 11, "TEST_OTHER_NAME", FLAG_ADMIN);
+        when(mCarUserManagerHelper.getAllSwitchableUsers()).thenReturn(
+                Collections.singletonList(adminOtherUser));
+
+        listenerCaptor.getValue().onUsersUpdate();
+
+        List<Preference> newPreferences = new ArrayList<>();
+        for (int i = 0; i < mPreferenceGroup.getPreferenceCount(); i++) {
+            newPreferences.add(mPreferenceGroup.getPreference(i));
+        }
+
+        assertThat(newPreferences).containsNoneIn(currentPreferences);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/UsersEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..e9744c5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/UsersEntryPreferenceControllerTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link UsersEntryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class})
+public class UsersEntryPreferenceControllerTest {
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    private Preference mPreference;
+    private PreferenceControllerTestHelper<UsersEntryPreferenceController> mControllerHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+
+        Context context = RuntimeEnvironment.application;
+        mPreference = new Preference(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                UsersEntryPreferenceController.class, mPreference);
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void preferenceClicked_adminUser_handled() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+
+        assertThat(
+                mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference)).isTrue();
+    }
+
+    @Test
+    public void preferenceClicked_adminUser_launchesUsersListFragment() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+
+        mPreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(
+                any(UsersListFragment.class));
+    }
+
+    @Test
+    public void preferenceClicked_nonAdminUser_handled() {
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+
+        assertThat(
+                mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference)).isTrue();
+    }
+
+    @Test
+    public void preferenceClicked_nonAdminUser_launchesUserDetailsFragment() {
+        int userId = 1234;
+        when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(userId);
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
+
+        mPreference.performClick();
+
+        ArgumentCaptor<UserDetailsFragment> fragmentCaptor = ArgumentCaptor.forClass(
+                UserDetailsFragment.class);
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(
+                fragmentCaptor.capture());
+        UserDetailsFragment launchedFragment = fragmentCaptor.getValue();
+        assertThat(launchedFragment.getArguments()).isNotNull();
+        assertThat(launchedFragment.getArguments().getInt(Intent.EXTRA_USER_ID)).isEqualTo(userId);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersItemProviderTest.java b/tests/robotests/src/com/android/car/settings/users/UsersItemProviderTest.java
deleted file mode 100644
index a563846..0000000
--- a/tests/robotests/src/com/android/car/settings/users/UsersItemProviderTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2018 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.car.settings.users;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.verify;
-import static org.robolectric.RuntimeEnvironment.application;
-
-import android.car.user.CarUserManagerHelper;
-import android.content.pm.UserInfo;
-import android.view.View;
-
-import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.R;
-import com.android.car.settings.testutils.ShadowTextListItem;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Tests for UsersItemProviderTest.
- */
-@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = { ShadowTextListItem.class })
-public class UsersItemProviderTest {
-    @Mock
-    private CarUserManagerHelper mCarUserManagerHelper;
-    @Mock
-    private UsersItemProvider.UserClickListener mUserClickListener;
-
-    @Before
-    public void setUpMocks() {
-        MockitoAnnotations.initMocks(this);
-    }
-
-    @Test
-    public void testFirstUserIsCurrentUser() {
-        UserInfo currentUser = new UserInfo();
-        String testName = "test_user_name";
-        currentUser.name = testName;
-        doReturn(currentUser).when(mCarUserManagerHelper).getCurrentForegroundUserInfo();
-
-        UsersItemProvider usersItemProvider = createProvider();
-
-        ShadowTextListItem textListItem = Shadow.extract(usersItemProvider.get(0));
-        assertThat(textListItem.getTitle())
-                .isEqualTo(application.getString(R.string.current_user_name, testName));
-    }
-
-    @Test
-    public void testDemoUserOnlySeesItself() {
-        UserInfo demoUser = new UserInfo(/* id= */ 10, /* name= */ "Demo", UserInfo.FLAG_DEMO);
-        doReturn(demoUser).when(mCarUserManagerHelper).getCurrentForegroundUserInfo();
-        doReturn(Arrays.asList(new UserInfo(), new UserInfo()))
-                .when(mCarUserManagerHelper).getAllSwitchableUsers();
-
-        UsersItemProvider usersItemProvider = createProvider();
-
-        assertThat(usersItemProvider.size()).isEqualTo(1);
-    }
-
-    @Test
-    public void testGuestUsersNotShown() {
-        UserInfo user10 = new UserInfo(/* id= */ 10, "User 10", /* flags= */ 0);
-        UserInfo user11 = new UserInfo(/* id= */ 11, "User 11", UserInfo.FLAG_GUEST);
-        UserInfo user12 = new UserInfo(/* id= */ 12, "User 12", UserInfo.FLAG_GUEST);
-        UserInfo user13 = new UserInfo(/* id= */ 13, "User 13", /* flags= */ 0);
-        UserInfo user14 = new UserInfo(/* id= */ 14, "User 14", /* flags= */ 0);
-        List<UserInfo> users = Arrays.asList(user10, user11, user12, user13);
-
-        doReturn(user14).when(mCarUserManagerHelper).getCurrentForegroundUserInfo();
-        doReturn(users).when(mCarUserManagerHelper).getAllSwitchableUsers();
-
-        UsersItemProvider provider = createProvider();
-
-        assertThat(getItem(provider, 0).getTitle())
-                .isEqualTo(application.getString(R.string.current_user_name, user14.name));
-        assertThat(getItem(provider, 1).getTitle()).isEqualTo(user10.name);
-        assertThat(getItem(provider, 2).getTitle()).isEqualTo(user13.name);
-    }
-
-    @Test
-    public void testGuestShownAsSeparateItem() {
-        UserInfo user10 = new UserInfo(/* id= */ 10, "User 10", /* flags= */ 0);
-        UserInfo user11 = new UserInfo(/* id= */ 11, "User 11", /* flags= */ UserInfo.FLAG_GUEST);
-        UserInfo user12 = new UserInfo(/* id= */ 12, "User 12", /* flags= */ UserInfo.FLAG_GUEST);
-        UserInfo user13 = new UserInfo(/* id= */ 13, "User 13", /* flags= */ 0);
-        List<UserInfo> users = Arrays.asList(user10, user11, user12, user13);
-
-        doReturn(new UserInfo(/* id= */ 14, "User 14", /* flags= */ 0))
-                .when(mCarUserManagerHelper).getCurrentForegroundUserInfo();
-        doReturn(users).when(mCarUserManagerHelper).getAllSwitchableUsers();
-
-        UsersItemProvider provider = createProvider();
-
-        assertThat(getItem(provider, 3).getTitle())
-                .isEqualTo(application.getString(R.string.user_guest));
-    }
-
-    @Test
-    public void testClickOnUsersInvokesOnUserClicked() {
-        UserInfo currentUser = new UserInfo(/* id= */ 11, "User 11", /* flags= */ 0);
-        List<UserInfo> otherUsers = Arrays.asList(
-                new UserInfo(/* id= */ 10, "User 10", /* flags= */ 0));
-
-        doReturn(currentUser).when(mCarUserManagerHelper).getCurrentForegroundUserInfo();
-        doReturn(otherUsers).when(mCarUserManagerHelper).getAllSwitchableUsers();
-
-        UsersItemProvider provider = createProvider();
-
-        // Clicking on current user invokes OnUserClicked.
-        ShadowTextListItem textListItem = getItem(provider, 0);
-        textListItem.getOnClickListener().onClick(new View(application.getApplicationContext()));
-        verify(mUserClickListener).onUserClicked(currentUser);
-
-        // Clicking on another user invokes OnUserClicked.
-        textListItem = getItem(provider, 1);
-        textListItem.getOnClickListener().onClick(new View(application.getApplicationContext()));
-        verify(mUserClickListener).onUserClicked(otherUsers.get(0));
-    }
-
-    @Test
-    public void testClickOnGuestInvokesOnGuestClicked() {
-        UserInfo currentUser = new UserInfo(/* id= */ 11, "User 11", /* flags= */ 0);
-        doReturn(currentUser).when(mCarUserManagerHelper).getCurrentForegroundUserInfo();
-
-        UsersItemProvider provider = createProvider();
-
-        // Clicking on guest user invokes OnGuestClicked.
-        ShadowTextListItem guestListItem = getItem(provider, 1);
-        guestListItem.getOnClickListener().onClick(new View(application.getApplicationContext()));
-        verify(mUserClickListener).onGuestClicked();
-    }
-
-    @Test
-    public void testSummariesForAdminUsers() {
-        UserInfo currentUser = new UserInfo(/* id= */ 11, "User 11",
-                UserInfo.FLAG_ADMIN | UserInfo.FLAG_INITIALIZED);
-        List<UserInfo> otherUsers = Arrays.asList(new UserInfo(/* id= */ 10, "User 10",
-                UserInfo.FLAG_ADMIN | UserInfo.FLAG_INITIALIZED));
-
-        doReturn(currentUser).when(mCarUserManagerHelper).getCurrentForegroundUserInfo();
-        doReturn(otherUsers).when(mCarUserManagerHelper).getAllSwitchableUsers();
-
-        UsersItemProvider provider = createProvider();
-
-        assertThat(getItem(provider, 0).getBody())
-                .isEqualTo(application.getString(R.string.signed_in_admin_user));
-        assertThat(getItem(provider, 1).getBody())
-                .isEqualTo(application.getString(R.string.user_admin));
-    }
-
-    @Test
-    public void testSummariesForNonInitializedUsers() {
-        UserInfo currentUser = new UserInfo(/* id= */ 11, "User 11", UserInfo.FLAG_INITIALIZED);
-        List<UserInfo> otherUsers = Arrays.asList(
-                new UserInfo(/* id= */ 10, "User 10", /* flags= */ 0));
-
-        doReturn(currentUser).when(mCarUserManagerHelper).getCurrentForegroundUserInfo();
-        doReturn(otherUsers).when(mCarUserManagerHelper).getAllSwitchableUsers();
-
-        UsersItemProvider provider = createProvider();
-
-        assertThat(getItem(provider, 0).getBody()).isNull();
-        assertThat(getItem(provider, 1).getBody())
-                .isEqualTo(application.getString(R.string.user_summary_not_set_up));
-    }
-
-
-    private UsersItemProvider createProvider() {
-        return new UsersItemProvider(RuntimeEnvironment.application.getApplicationContext(),
-                mUserClickListener, mCarUserManagerHelper);
-    }
-
-    private ShadowTextListItem getItem(UsersItemProvider provider, int index) {
-        return Shadow.extract(provider.get(index));
-    }
-}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersListFragmentTest.java b/tests/robotests/src/com/android/car/settings/users/UsersListFragmentTest.java
new file mode 100644
index 0000000..09a3871
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/UsersListFragmentTest.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.widget.Button;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+
+/**
+ * Tests for UserDetailsFragment.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
+public class UsersListFragmentTest {
+
+    private Context mContext;
+    private BaseTestActivity mTestActivity;
+    private UsersListFragment mFragment;
+    private Button mActionButton;
+    private ConfirmationDialogFragment mDialog;
+
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private UserManager mUserManager;
+
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mContext = RuntimeEnvironment.application;
+        mTestActivity = Robolectric.setupActivity(BaseTestActivity.class);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    /* Test that onCreateNewUserConfirmed invokes a creation of a new non-admin. */
+    @Test
+    public void testOnCreateNewUserConfirmedInvokesCreateNewNonAdminUser() {
+        createUsersListFragment();
+        mFragment.mConfirmListener.onConfirm(/* arguments= */ null);
+        Robolectric.flushBackgroundThreadScheduler();
+        verify(mCarUserManagerHelper)
+                .createNewNonAdminUser(mContext.getString(R.string.user_new_user_name));
+    }
+
+    /* Test that if we're in demo user, click on the button starts exit out of the retail mode. */
+    @Test
+    public void testCallOnClick_demoUser_exitRetailMode() {
+        doReturn(true).when(mCarUserManagerHelper).isCurrentProcessDemoUser();
+        createUsersListFragment();
+        mActionButton.callOnClick();
+        assertThat(isDialogShown(ConfirmExitRetailModeDialog.DIALOG_TAG)).isTrue();
+    }
+
+    /* Test that if the max num of users is reached, click on the button informs user of that. */
+    @Test
+    public void testCallOnClick_userLimitReached_showErrorDialog() {
+        doReturn(5).when(mCarUserManagerHelper).getMaxSupportedRealUsers();
+        doReturn(true).when(mCarUserManagerHelper).isUserLimitReached();
+        createUsersListFragment();
+
+        mActionButton.callOnClick();
+        assertThat(isDialogShown(MaxUsersLimitReachedDialog.DIALOG_TAG)).isTrue();
+    }
+
+    /* Test that if user can add other users, click on the button creates a dialog to confirm. */
+    @Test
+    public void testCallOnClick_showAddUserDialog() {
+        doReturn(true).when(mCarUserManagerHelper).canCurrentProcessAddUsers();
+        createUsersListFragment();
+
+        mActionButton.callOnClick();
+        assertThat(isDialogShown(ConfirmationDialogFragment.TAG)).isTrue();
+    }
+
+    private void createUsersListFragment() {
+        UserInfo testUser = new UserInfo();
+        mFragment = new UsersListFragment();
+        doReturn(testUser).when(mCarUserManagerHelper).getCurrentProcessUserInfo();
+        doReturn(testUser).when(mUserManager).getUserInfo(anyInt());
+        doReturn(new ArrayList<UserInfo>()).when(mCarUserManagerHelper).getAllSwitchableUsers();
+        doReturn(null).when(mCarUserManagerHelper).createNewNonAdminUser(any());
+        mTestActivity.launchFragment(mFragment);
+        refreshButtons();
+    }
+
+    private void refreshButtons() {
+        mActionButton = (Button) mTestActivity.findViewById(R.id.action_button1);
+    }
+
+    private boolean isDialogShown(String tag) {
+        return mTestActivity.getSupportFragmentManager().findFragmentByTag(tag) != null;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/users/UsersListPreferenceControllerTest.java
new file mode 100644
index 0000000..73b7fba
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/UsersListPreferenceControllerTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static android.content.pm.UserInfo.FLAG_ADMIN;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowUserIconProvider;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.Collections;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserIconProvider.class})
+public class UsersListPreferenceControllerTest {
+
+    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 10,
+            "TEST_USER_NAME", FLAG_ADMIN);
+    private static final UserInfo TEST_OTHER_USER = new UserInfo(/* id= */ 11,
+            "TEST_OTHER_NAME", /* flags= */ 0);
+
+    private PreferenceControllerTestHelper<UsersListPreferenceController> mControllerHelper;
+    private PreferenceGroup mPreferenceGroup;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+        MockitoAnnotations.initMocks(this);
+        ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+        mPreferenceGroup = new LogicalPreferenceGroup(context);
+        mControllerHelper = new PreferenceControllerTestHelper<>(context,
+                UsersListPreferenceController.class, mPreferenceGroup);
+
+        when(mCarUserManagerHelper.getCurrentProcessUserInfo()).thenReturn(TEST_CURRENT_USER);
+        when(mCarUserManagerHelper.isCurrentProcessUser(TEST_CURRENT_USER)).thenReturn(true);
+        when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
+        when(mCarUserManagerHelper.getAllSwitchableUsers()).thenReturn(
+                Collections.singletonList(TEST_OTHER_USER));
+
+        mControllerHelper.markState(Lifecycle.State.STARTED);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarUserManagerHelper.reset();
+    }
+
+    @Test
+    public void testPreferencePerformClick_currentAdminUser_openNewFragment() {
+        mPreferenceGroup.getPreference(0).performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(
+                any(UserDetailsFragment.class));
+    }
+
+    @Test
+    public void testPreferencePerformClick_otherNonAdminUser_openNewFragment() {
+        mPreferenceGroup.getPreference(1).performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).launchFragment(
+                any(UserDetailsPermissionsFragment.class));
+    }
+
+    @Test
+    public void testPreferencePerformClick_guestUser_noAction() {
+        mPreferenceGroup.getPreference(2).performClick();
+
+        verify(mControllerHelper.getMockFragmentController(), never()).launchFragment(any());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/users/UsersPreferenceProviderTest.java b/tests/robotests/src/com/android/car/settings/users/UsersPreferenceProviderTest.java
new file mode 100644
index 0000000..b08723b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/users/UsersPreferenceProviderTest.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2018 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.car.settings.users;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.UserInfo;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class UsersPreferenceProviderTest {
+
+    private static final String TEST_CURRENT_USER_NAME = "Current User";
+    private static final String TEST_OTHER_USER_1_NAME = "User 1";
+    private static final String TEST_OTHER_USER_2_NAME = "User 2";
+    private static final String TEST_GUEST_USER_1_NAME = "Guest 1";
+    private static final String TEST_GUEST_USER_2_NAME = "Guest 2";
+
+    private static final UserInfo TEST_CURRENT_USER = new UserInfo(/* id= */ 14,
+            TEST_CURRENT_USER_NAME, /* flags= */ 0);
+    private static final UserInfo TEST_OTHER_USER_1 = new UserInfo(/* id= */ 10,
+            TEST_OTHER_USER_1_NAME, /* flags= */ 0);
+    private static final UserInfo TEST_OTHER_USER_2 = new UserInfo(/* id= */ 11,
+            TEST_OTHER_USER_2_NAME, /* flags= */ 0);
+    private static final UserInfo TEST_GUEST_USER_1 = new UserInfo(/* id= */ 12,
+            TEST_GUEST_USER_1_NAME, /* flags= */ UserInfo.FLAG_GUEST);
+    private static final UserInfo TEST_GUEST_USER_2 = new UserInfo(/* id= */ 13,
+            TEST_GUEST_USER_2_NAME, /* flags= */ UserInfo.FLAG_GUEST);
+
+
+    private Context mContext;
+    @Mock
+    private CarUserManagerHelper mCarUserManagerHelper;
+    @Mock
+    private UsersPreferenceProvider.UserClickListener mUserClickListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+
+        List<UserInfo> users = Arrays.asList(TEST_OTHER_USER_1, TEST_GUEST_USER_1,
+                TEST_GUEST_USER_2,
+                TEST_OTHER_USER_2);
+
+        doReturn(TEST_CURRENT_USER).when(mCarUserManagerHelper).getCurrentProcessUserInfo();
+        doReturn(true).when(mCarUserManagerHelper).isCurrentProcessUser(TEST_CURRENT_USER);
+        doReturn(users).when(mCarUserManagerHelper).getAllSwitchableUsers();
+    }
+
+    @Test
+    public void testCreateUserList_firstUserIsCurrentUser() {
+        UsersPreferenceProvider provider = createProvider();
+
+        Preference first = provider.createUserList().get(0);
+        assertThat(first.getTitle()).isEqualTo(
+                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
+    }
+
+    @Test
+    public void testCreateUserList_repeatedGuestUserNotShown() {
+        UsersPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createUserList();
+        assertThat(userList.size()).isEqualTo(4); // 3 real users + guest item.
+        assertThat(userList.get(0).getTitle()).isEqualTo(
+                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
+        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
+        assertThat(userList.get(2).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
+    }
+
+    @Test
+    public void testCreateUserList_guestShownAsSeparateLastElement() {
+        UsersPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createUserList();
+        assertThat(userList.get(userList.size() - 1).getTitle()).isEqualTo(
+                mContext.getString(R.string.user_guest));
+    }
+
+    @Test
+    public void testCreateUserList_currentUserNotShown() {
+        UsersPreferenceProvider provider = createProvider();
+        provider.setIncludeCurrentUser(false);
+
+        List<Preference> userList = provider.createUserList();
+        assertThat(userList.size()).isEqualTo(3); // 3 real users + guest item.
+        assertThat(userList.get(0).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
+        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
+        assertThat(userList.get(2).getTitle()).isEqualTo(
+                mContext.getString(R.string.user_guest));
+    }
+
+    @Test
+    public void testCreateUserList_guestNotShown() {
+        UsersPreferenceProvider provider = createProvider();
+        provider.setIncludeGuest(false);
+
+        List<Preference> userList = provider.createUserList();
+        assertThat(userList.size()).isEqualTo(3); // 3 real users.
+        assertThat(userList.get(0).getTitle()).isEqualTo(
+                mContext.getString(R.string.current_user_name, TEST_CURRENT_USER_NAME));
+        assertThat(userList.get(1).getTitle()).isEqualTo(TEST_OTHER_USER_1_NAME);
+        assertThat(userList.get(2).getTitle()).isEqualTo(TEST_OTHER_USER_2_NAME);
+    }
+
+    @Test
+    public void testPerformClick_currentUser_invokesUserClickListener() {
+        UsersPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createUserList();
+        userList.get(0).performClick();
+        verify(mUserClickListener).onUserClicked(TEST_CURRENT_USER);
+    }
+
+    @Test
+    public void testPerformClick_otherUser_invokesUserClickListener() {
+        UsersPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createUserList();
+        userList.get(1).performClick();
+        verify(mUserClickListener).onUserClicked(TEST_OTHER_USER_1);
+    }
+
+    @Test
+    public void testPerformClick_guestUser_doesntInvokeUserClickListener() {
+        UsersPreferenceProvider provider = createProvider();
+
+        List<Preference> userList = provider.createUserList();
+        userList.get(userList.size() - 1).performClick();
+        verify(mUserClickListener, never()).onUserClicked(any(UserInfo.class));
+    }
+
+    private UsersPreferenceProvider createProvider() {
+        return new UsersPreferenceProvider(mContext, mCarUserManagerHelper, mUserClickListener);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/AccessPointListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/AccessPointListPreferenceControllerTest.java
new file mode 100644
index 0000000..7ecf4ae
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/AccessPointListPreferenceControllerTest.java
@@ -0,0 +1,253 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+import android.util.Pair;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarWifiManager;
+import com.android.car.settings.testutils.ShadowWifiManager;
+import com.android.car.settings.wifi.details.WifiDetailsFragment;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarWifiManager.class, ShadowWifiManager.class})
+public class AccessPointListPreferenceControllerTest {
+    private static final int SIGNAL_LEVEL = 1;
+    @Mock
+    private AccessPoint mMockAccessPoint1;
+    @Mock
+    private AccessPoint mMockAccessPoint2;
+    @Mock
+    private CarWifiManager mMockCarWifiManager;
+
+    private Context mContext;
+    private PreferenceGroup mPreferenceGroup;
+    private AccessPointListPreferenceController mController;
+    private FragmentController mFragmentController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarWifiManager.setInstance(mMockCarWifiManager);
+        mContext = RuntimeEnvironment.application;
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI,
+                true);
+        mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+        PreferenceControllerTestHelper<AccessPointListPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        AccessPointListPreferenceController.class, mPreferenceGroup);
+        mController = controllerHelper.getController();
+        mFragmentController = controllerHelper.getMockFragmentController();
+
+        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_NONE);
+        when(mMockAccessPoint1.getLevel()).thenReturn(SIGNAL_LEVEL);
+        when(mMockAccessPoint2.getSecurity()).thenReturn(AccessPoint.SECURITY_NONE);
+        when(mMockAccessPoint2.getLevel()).thenReturn(SIGNAL_LEVEL);
+
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarWifiManager.reset();
+    }
+
+    @Test
+    public void refreshUi_emptyList_notVisible() {
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(new ArrayList<>());
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isEqualTo(false);
+    }
+
+    @Test
+    public void refreshUi_notEmpty_visible() {
+        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.isVisible()).isEqualTo(true);
+    }
+
+    @Test
+    public void refreshUi_notEmpty_listCount() {
+        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(accessPointList.size());
+    }
+
+    @Test
+    public void onUxRestrictionsChanged_switchToSavedApOnly() {
+        List<AccessPoint> allAccessPointList = Arrays.asList(mMockAccessPoint1, mMockAccessPoint2);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(allAccessPointList);
+        List<AccessPoint> savedAccessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getSavedAccessPoints()).thenReturn(savedAccessPointList);
+        mController.refreshUi();
+
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(allAccessPointList.size());
+
+        CarUxRestrictions noSetupRestrictions = new CarUxRestrictions.Builder(
+                true, CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP, 0).build();
+        mController.onUxRestrictionsChanged(noSetupRestrictions);
+        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(savedAccessPointList.size());
+    }
+
+    @Test
+    public void performClick_noSecurityNotConnectedAccessPoint_connect() {
+        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_NONE);
+        when(mMockAccessPoint1.isSaved()).thenReturn(false);
+        when(mMockAccessPoint1.isActive()).thenReturn(false);
+        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
+        mController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+        verify(mMockCarWifiManager).connectToPublicWifi(eq(mMockAccessPoint1), any());
+    }
+
+    @Test
+    public void performClick_activeAccessPoint_showDetailsFragment() {
+        when(mMockAccessPoint1.isActive()).thenReturn(true);
+        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
+        mController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+        verify(mFragmentController).launchFragment(any(WifiDetailsFragment.class));
+    }
+
+    @Test
+    public void performClick_savedAccessPoint_connect() {
+        when(mMockAccessPoint1.isSaved()).thenReturn(true);
+        when(mMockAccessPoint1.isActive()).thenReturn(false);
+        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
+        mController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).performClick();
+        verify(mMockCarWifiManager).connectToSavedWifi(eq(mMockAccessPoint1), any());
+    }
+
+    @Test
+    public void performButtonClick_savedAccessPoint_wrongPassword_forgetsNetwork() {
+        int netId = 1;
+
+        WifiConfiguration config = mock(WifiConfiguration.class);
+        WifiConfiguration.NetworkSelectionStatus status = mock(
+                WifiConfiguration.NetworkSelectionStatus.class);
+        config.networkId = netId;
+        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
+        when(mMockAccessPoint1.isSaved()).thenReturn(true);
+        when(mMockAccessPoint1.getConfig()).thenReturn(config);
+        when(config.getNetworkSelectionStatus()).thenReturn(status);
+        when(status.isNetworkEnabled()).thenReturn(false);
+        when(status.getNetworkSelectionDisableReason()).thenReturn(
+                WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD);
+
+        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
+        mController.refreshUi();
+
+        ButtonPasswordEditTextPreference preference =
+                (ButtonPasswordEditTextPreference) mPreferenceGroup.getPreference(0);
+        preference.performButtonClick();
+
+        assertThat(getShadowWifiManager().getLastForgottenNetwork()).isEqualTo(netId);
+    }
+
+    @Test
+    public void callChangeListener_newSecureAccessPoint_wifiAdded() {
+        String ssid = "test_ssid";
+        String password = "test_password";
+        when(mMockAccessPoint1.getSsid()).thenReturn(ssid);
+        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
+        when(mMockAccessPoint1.isSaved()).thenReturn(false);
+        when(mMockAccessPoint1.isActive()).thenReturn(false);
+        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
+        mController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).callChangeListener(password);
+        WifiConfiguration lastAdded = getShadowWifiManager().getLastAddedNetworkConfiguration();
+
+        assertThat(lastAdded.SSID).contains(ssid);
+        assertThat(lastAdded.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA_PSK);
+        assertThat(lastAdded.preSharedKey).contains(password);
+    }
+
+    @Test
+    public void callChangeListener_newSecureAccessPoint_wifiEnabled() {
+        String ssid = "test_ssid";
+        String password = "test_password";
+        when(mMockAccessPoint1.getSsid()).thenReturn(ssid);
+        when(mMockAccessPoint1.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
+        when(mMockAccessPoint1.isSaved()).thenReturn(false);
+        when(mMockAccessPoint1.isActive()).thenReturn(false);
+        List<AccessPoint> accessPointList = Arrays.asList(mMockAccessPoint1);
+        when(mMockCarWifiManager.getAllAccessPoints()).thenReturn(accessPointList);
+        mController.refreshUi();
+
+        mPreferenceGroup.getPreference(0).callChangeListener(password);
+        Pair<Integer, Boolean> lastEnabled = getShadowWifiManager().getLastEnabledNetwork();
+
+        // Enable should be called on the most recently added network id.
+        assertThat(lastEnabled.first).isEqualTo(getShadowWifiManager().getLastAddedNetworkId());
+        // WifiUtil will try to enable the network right away.
+        assertThat(lastEnabled.second).isTrue();
+    }
+
+    private ShadowWifiManager getShadowWifiManager() {
+        return Shadow.extract(mContext.getSystemService(WifiManager.class));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/AccessPointPreferenceTest.java b/tests/robotests/src/com/android/car/settings/wifi/AccessPointPreferenceTest.java
new file mode 100644
index 0000000..2e6a5e1
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/AccessPointPreferenceTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.net.wifi.WifiConfiguration;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowAlertDialog;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AccessPointPreferenceTest {
+
+    private static final String TEST_KEY = "test_key";
+    private AccessPointPreference mPreference;
+
+    @Mock
+    private AccessPoint mAccessPoint;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        Context context = RuntimeEnvironment.application;
+        FragmentController<TestSettingsFragment> fragmentController = FragmentController.of(
+                new TestSettingsFragment());
+        TestSettingsFragment fragment = fragmentController.get();
+        fragmentController.setup();
+
+        mPreference = new AccessPointPreference(context, mAccessPoint);
+        mPreference.setKey(TEST_KEY);
+        fragment.getPreferenceScreen().addPreference(mPreference);
+    }
+
+    @Test
+    public void onClick_securityTypeNone_doesntOpenDialog() {
+        when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_NONE);
+        mPreference.onClick();
+
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        assertThat(dialog).isNull();
+    }
+
+    @Test
+    public void onClick_hasSecurity_isSaved_correctPassword_doesntOpenDialog() {
+        WifiConfiguration config = mock(WifiConfiguration.class);
+        WifiConfiguration.NetworkSelectionStatus status = mock(
+                WifiConfiguration.NetworkSelectionStatus.class);
+        when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
+        when(mAccessPoint.isSaved()).thenReturn(true);
+        when(mAccessPoint.getConfig()).thenReturn(config);
+        when(config.getNetworkSelectionStatus()).thenReturn(status);
+        when(status.isNetworkEnabled()).thenReturn(true);
+        mPreference.onClick();
+
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        assertThat(dialog).isNull();
+
+    }
+
+    @Test
+    public void onClick_hasSecurity_isSaved_incorrectPassword_opensDialog() {
+        WifiConfiguration config = mock(WifiConfiguration.class);
+        WifiConfiguration.NetworkSelectionStatus status = mock(
+                WifiConfiguration.NetworkSelectionStatus.class);
+        when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
+        when(mAccessPoint.isSaved()).thenReturn(true);
+        when(mAccessPoint.getConfig()).thenReturn(config);
+        when(config.getNetworkSelectionStatus()).thenReturn(status);
+        when(status.isNetworkEnabled()).thenReturn(false);
+        when(status.getNetworkSelectionDisableReason()).thenReturn(
+                WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD);
+        mPreference.onClick();
+
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        assertThat(dialog).isNotNull();
+    }
+
+    @Test
+    public void onClick_hasSecurity_isNotSaved_opensDialog() {
+        when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_PSK);
+        when(mAccessPoint.isSaved()).thenReturn(false);
+        mPreference.onClick();
+
+        AlertDialog dialog = ShadowAlertDialog.getLatestAlertDialog();
+        assertThat(dialog).isNotNull();
+    }
+
+    /** Concrete {@link SettingsFragment} for testing. */
+    public static class TestSettingsFragment extends SettingsFragment {
+        @Override
+        protected int getPreferenceScreenResId() {
+            return R.xml.settings_fragment;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/AddWifiFragmentTest.java b/tests/robotests/src/com/android/car/settings/wifi/AddWifiFragmentTest.java
new file mode 100644
index 0000000..b48d36f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/AddWifiFragmentTest.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.widget.Button;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
+import com.android.car.settings.testutils.ShadowWifiManager;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowLocalBroadcastManager.class, ShadowWifiManager.class})
+public class AddWifiFragmentTest {
+
+    private Context mContext;
+    private LocalBroadcastManager mLocalBroadcastManager;
+    private AddWifiFragment mFragment;
+    private FragmentController<AddWifiFragment> mFragmentController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
+        mFragment = new AddWifiFragment();
+        mFragmentController = FragmentController.of(mFragment);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowLocalBroadcastManager.reset();
+        ShadowWifiManager.reset();
+    }
+
+    @Test
+    public void onStart_registersNameChangeListener() {
+        mFragmentController.create().start();
+
+        assertThat(isReceiverRegisteredForAction(
+                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isTrue();
+    }
+
+    @Test
+    public void onStart_registersSecurityChangeListener() {
+        mFragmentController.create().start();
+
+        assertThat(isReceiverRegisteredForAction(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isTrue();
+    }
+
+    @Test
+    public void onStop_unregistersNameChangeListener() {
+        mFragmentController.create().start();
+        mFragmentController.stop();
+
+        assertThat(isReceiverRegisteredForAction(
+                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isFalse();
+    }
+
+    @Test
+    public void onStop_unregistersSecurityChangeListener() {
+        mFragmentController.create().start();
+        mFragmentController.stop();
+
+        assertThat(isReceiverRegisteredForAction(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isFalse();
+    }
+
+    @Test
+    public void initialState_buttonDisabled() {
+        mFragmentController.setup();
+        assertThat(getAddWifiButton().isEnabled()).isFalse();
+    }
+
+    @Test
+    public void receiveNameChangeIntent_emptyName_buttonDisabled() {
+        mFragmentController.setup();
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, "");
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        assertThat(getAddWifiButton().isEnabled()).isFalse();
+    }
+
+    @Test
+    public void receiveNameChangeIntent_name_buttonEnabled() {
+        mFragmentController.setup();
+        String networkName = "test_network_name";
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        assertThat(getAddWifiButton().isEnabled()).isTrue();
+    }
+
+    @Test
+    public void receiveSecurityChangeIntent_nameSet_buttonDisabled() {
+        mFragmentController.setup();
+        String networkName = "test_network_name";
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                AccessPoint.SECURITY_PSK);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        assertThat(getAddWifiButton().isEnabled()).isFalse();
+    }
+
+    private Button getAddWifiButton() {
+        return mFragment.requireActivity().findViewById(R.id.action_button1);
+    }
+
+    private boolean isReceiverRegisteredForAction(String action) {
+        List<ShadowLocalBroadcastManager.Wrapper> receivers =
+                ShadowLocalBroadcastManager.getRegisteredBroadcastReceivers();
+
+        boolean found = false;
+        for (ShadowLocalBroadcastManager.Wrapper receiver : receivers) {
+            if (receiver.getIntentFilter().hasAction(action)) {
+                found = true;
+            }
+        }
+
+        return found;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/AddWifiPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/AddWifiPreferenceControllerTest.java
new file mode 100644
index 0000000..f02fb8b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/AddWifiPreferenceControllerTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.net.wifi.WifiManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AddWifiPreferenceControllerTest {
+
+    private static final List<Integer> VISIBLE_STATES = Arrays.asList(
+            WifiManager.WIFI_STATE_ENABLED,
+            WifiManager.WIFI_STATE_DISABLING,
+            WifiManager.WIFI_STATE_ENABLING,
+            WifiManager.WIFI_STATE_UNKNOWN);
+    private static final List<Integer> INVISIBLE_STATES = Arrays.asList(
+            WifiManager.WIFI_STATE_DISABLED);
+
+    private Preference mPreference;
+    private AddWifiPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+        mPreference = new Preference(context);
+        PreferenceControllerTestHelper<AddWifiPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(context, AddWifiPreferenceController.class,
+                        mPreference);
+        mController = controllerHelper.getController();
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void onWifiStateChanged_invisible() {
+        for (int state : INVISIBLE_STATES) {
+            mController.onWifiStateChanged(state);
+            assertThat(mPreference.isVisible()).isEqualTo(false);
+        }
+    }
+
+    @Test
+    public void onWifiStateChanged_visible() {
+        for (int state : VISIBLE_STATES) {
+            mController.onWifiStateChanged(state);
+            assertThat(mPreference.isVisible()).isEqualTo(true);
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreferenceTest.java b/tests/robotests/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreferenceTest.java
new file mode 100644
index 0000000..198a4cb
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreferenceTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.view.ContextThemeWrapper;
+import android.view.View;
+
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ButtonPasswordEditTextPreferenceTest {
+
+    private PreferenceViewHolder mViewHolder;
+    private ButtonPasswordEditTextPreference mButtonPreference;
+
+    @Before
+    public void setUp() {
+        Context context = RuntimeEnvironment.application;
+        Context themedContext = new ContextThemeWrapper(context, R.style.CarSettingTheme);
+        View rootView = View.inflate(themedContext, R.layout.two_action_preference, /* root= */
+                null);
+        mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
+        mButtonPreference = new ButtonPasswordEditTextPreference(RuntimeEnvironment.application);
+    }
+
+    @Test
+    public void buttonClicked_callsListener() {
+        mButtonPreference.onBindViewHolder(mViewHolder);
+        ButtonPasswordEditTextPreference.OnButtonClickListener listener = mock(
+                ButtonPasswordEditTextPreference.OnButtonClickListener.class);
+        mButtonPreference.setOnButtonClickListener(listener);
+
+        mViewHolder.findViewById(android.R.id.widget_frame).performClick();
+
+        verify(listener).onButtonClick(mButtonPreference);
+    }
+
+    @Test
+    public void performButtonClick_listenerSetAndButtonVisible_listenerFired() {
+        ButtonPasswordEditTextPreference.OnButtonClickListener listener = mock(
+                ButtonPasswordEditTextPreference.OnButtonClickListener.class);
+        mButtonPreference.setOnButtonClickListener(listener);
+        mButtonPreference.showButton(true);
+
+        mButtonPreference.performButtonClick();
+        verify(listener).onButtonClick(mButtonPreference);
+    }
+
+    @Test
+    public void performButtonClick_listenerSetAndButtonInvisible_listenerNotFired() {
+        ButtonPasswordEditTextPreference.OnButtonClickListener listener = mock(
+                ButtonPasswordEditTextPreference.OnButtonClickListener.class);
+        mButtonPreference.setOnButtonClickListener(listener);
+        mButtonPreference.showButton(false);
+
+        mButtonPreference.performButtonClick();
+        verify(listener, never()).onButtonClick(mButtonPreference);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/NetworkNamePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/NetworkNamePreferenceControllerTest.java
new file mode 100644
index 0000000..6f8364a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/NetworkNamePreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.EditTextPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowLocalBroadcastManager.class})
+public class NetworkNamePreferenceControllerTest {
+
+    private static final String TEST_SSID = "test_ssid";
+
+    private Context mContext;
+    private EditTextPreference mEditTextPreference;
+    private NetworkNamePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mEditTextPreference = new EditTextPreference(mContext);
+        PreferenceControllerTestHelper<NetworkNamePreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        NetworkNamePreferenceController.class, mEditTextPreference);
+        mController = controllerHelper.getController();
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowLocalBroadcastManager.reset();
+    }
+
+    @Test
+    public void refreshUi_defaultState_showsDefaultString() {
+        mController.refreshUi();
+        assertThat(mEditTextPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.default_network_name_summary));
+    }
+
+    @Test
+    public void handlePreferenceChanged_newTextIsSet() {
+        mEditTextPreference.setText("Old value");
+        mEditTextPreference.callChangeListener("New value");
+        assertThat(mEditTextPreference.getSummary()).isEqualTo("New value");
+    }
+
+    @Test
+    public void handlePreferenceChanged_broadcastIsSent() {
+        String value = "New value";
+        mEditTextPreference.callChangeListener(value);
+
+        List<Intent> intents = ShadowLocalBroadcastManager.getSentBroadcastIntents();
+        assertThat(intents).hasSize(1);
+        assertThat(intents.get(0).getAction()).isEqualTo(
+                NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        assertThat(intents.get(0).getStringExtra(
+                NetworkNamePreferenceController.KEY_NETWORK_NAME)).isEqualTo(value);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java b/tests/robotests/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java
new file mode 100644
index 0000000..cbcef40
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/NetworkNameRestrictedPasswordEditTextPreferenceTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+import com.android.car.settings.testutils.FragmentController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadows.ShadowDialog;
+import org.robolectric.shadows.ShadowToast;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class NetworkNameRestrictedPasswordEditTextPreferenceTest {
+
+    private static final String KEY = "test_key";
+
+    private Context mContext;
+    private NetworkNameRestrictedPasswordEditTextPreference mPreference;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        FragmentController<TestSettingsFragment> fragmentController = FragmentController.of(
+                new TestSettingsFragment());
+        TestSettingsFragment fragment = fragmentController.get();
+        fragmentController.setup();
+
+        mPreference = new NetworkNameRestrictedPasswordEditTextPreference(mContext);
+        mPreference.setKey(KEY);
+        fragment.getPreferenceScreen().addPreference(mPreference);
+    }
+
+    @Test
+    public void performClick_noName_toastShown() {
+        mPreference.performClick();
+
+        assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
+                mContext.getString(R.string.wifi_no_network_name));
+    }
+
+    @Test
+    public void performClick_hasName_showsDialog() {
+        mPreference.setNetworkName("test_name");
+        mPreference.performClick();
+
+        assertThat(ShadowDialog.getLatestDialog()).isNotNull();
+    }
+
+    /** Concrete {@link SettingsFragment} for testing. */
+    public static class TestSettingsFragment extends SettingsFragment {
+        @Override
+        protected int getPreferenceScreenResId() {
+            return R.xml.settings_fragment;
+        }
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java
new file mode 100644
index 0000000..28b555a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/NetworkPasswordPreferenceControllerTest.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+import android.util.Pair;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
+import com.android.car.settings.testutils.ShadowWifiManager;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowLocalBroadcastManager.class, ShadowWifiManager.class})
+public class NetworkPasswordPreferenceControllerTest {
+
+    private Context mContext;
+    private LocalBroadcastManager mLocalBroadcastManager;
+    private NetworkNameRestrictedPasswordEditTextPreference mPasswordEditTextPreference;
+    private PreferenceControllerTestHelper<NetworkPasswordPreferenceController>
+            mPreferenceControllerHelper;
+    private NetworkPasswordPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
+        mPasswordEditTextPreference = new NetworkNameRestrictedPasswordEditTextPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                NetworkPasswordPreferenceController.class, mPasswordEditTextPreference);
+        mController = mPreferenceControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowLocalBroadcastManager.reset();
+        ShadowWifiManager.reset();
+    }
+
+    @Test
+    public void onStart_registersNameChangeListener() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(isReceiverRegisteredForAction(
+                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isTrue();
+    }
+
+    @Test
+    public void onStart_registersSecurityChangeListener() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(isReceiverRegisteredForAction(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isTrue();
+    }
+
+    @Test
+    public void onStop_unregistersNameChangeListener() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(isReceiverRegisteredForAction(
+                NetworkNamePreferenceController.ACTION_NAME_CHANGE)).isFalse();
+    }
+
+    @Test
+    public void onStop_unregistersSecurityChangeListener() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(isReceiverRegisteredForAction(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE)).isFalse();
+    }
+
+    @Test
+    public void receiveNameChangeIntent_emptyName_dialogNameRemoved() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, "");
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        assertThat(mPasswordEditTextPreference.getDialogTitle()).isEqualTo(
+                mContext.getString(R.string.wifi_password));
+    }
+
+    @Test
+    public void receiveNameChangeIntent_name_dialogNameSet() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        String networkName = "test_network_name";
+        Intent intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        assertThat(mPasswordEditTextPreference.getDialogTitle()).isEqualTo(networkName);
+    }
+
+    @Test
+    public void receiveSecurityChangeIntent_setUnsecureType_preferenceHidden() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                AccessPoint.SECURITY_NONE);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        assertThat(mPasswordEditTextPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void receiveSecurityChangeIntent_setSecureType_preferenceVisible() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                AccessPoint.SECURITY_PSK);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        assertThat(mPasswordEditTextPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceChanged_hasSecurity_networkNameSet_wifiAdded() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        String networkName = "network_name";
+        String password = "password";
+        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                AccessPoint.SECURITY_PSK);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+        mPasswordEditTextPreference.callChangeListener(password);
+
+        WifiConfiguration lastAdded = getShadowWifiManager().getLastAddedNetworkConfiguration();
+        assertThat(lastAdded.SSID).contains(networkName);
+        assertThat(lastAdded.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA_PSK);
+        assertThat(lastAdded.preSharedKey).contains(password);
+    }
+
+    @Test
+    public void handlePreferenceChanged_hasSecurity_networkNameSet_wifiEnabled() {
+        mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        String networkName = "network_name";
+        String password = "password";
+        Intent intent = new Intent(NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        intent.putExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                AccessPoint.SECURITY_PSK);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+
+        intent = new Intent(NetworkNamePreferenceController.ACTION_NAME_CHANGE);
+        intent.putExtra(NetworkNamePreferenceController.KEY_NETWORK_NAME, networkName);
+        mLocalBroadcastManager.sendBroadcastSync(intent);
+        mPasswordEditTextPreference.callChangeListener(password);
+
+        Pair<Integer, Boolean> lastEnabled = getShadowWifiManager().getLastEnabledNetwork();
+        // Enable should be called on the most recently added network id.
+        assertThat(lastEnabled.first).isEqualTo(getShadowWifiManager().getLastAddedNetworkId());
+        // WifiUtil will try to enable the network right away.
+        assertThat(lastEnabled.second).isTrue();
+    }
+
+    private ShadowWifiManager getShadowWifiManager() {
+        return Shadow.extract(mContext.getSystemService(WifiManager.class));
+    }
+
+    private boolean isReceiverRegisteredForAction(String action) {
+        List<ShadowLocalBroadcastManager.Wrapper> receivers =
+                ShadowLocalBroadcastManager.getRegisteredBroadcastReceivers();
+
+        boolean found = false;
+        for (ShadowLocalBroadcastManager.Wrapper receiver : receivers) {
+            if (receiver.getIntentFilter().hasAction(action)) {
+                found = true;
+            }
+        }
+
+        return found;
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java
new file mode 100644
index 0000000..361e107
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/NetworkSecurityPreferenceControllerTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowLocalBroadcastManager.class})
+public class NetworkSecurityPreferenceControllerTest {
+
+    private Context mContext;
+    private ListPreference mListPreference;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mListPreference = new ListPreference(mContext);
+        PreferenceControllerTestHelper<NetworkSecurityPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        NetworkSecurityPreferenceController.class, mListPreference);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowLocalBroadcastManager.reset();
+    }
+
+    @Test
+    public void handlePreferenceChanged_unsecureNetwork_summaryUpdated() {
+        String value = Integer.toString(AccessPoint.SECURITY_NONE);
+        mListPreference.callChangeListener(value);
+
+        assertThat(mListPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.wifi_security_none));
+    }
+
+    @Test
+    public void handlePreferenceChanged_pskNetwork_summaryUpdated() {
+        String value = Integer.toString(AccessPoint.SECURITY_PSK);
+        mListPreference.callChangeListener(value);
+
+        assertThat(mListPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.wifi_security_psk_generic));
+    }
+
+    @Test
+    public void handlePreferenceChanged_broadcastIsSent() {
+        String value = Integer.toString(AccessPoint.SECURITY_PSK);
+        mListPreference.callChangeListener(value);
+
+        List<Intent> intents = ShadowLocalBroadcastManager.getSentBroadcastIntents();
+        assertThat(intents).hasSize(1);
+        assertThat(intents.get(0).getAction()).isEqualTo(
+                NetworkSecurityPreferenceController.ACTION_SECURITY_CHANGE);
+        assertThat(intents.get(0).getIntExtra(NetworkSecurityPreferenceController.KEY_SECURITY_TYPE,
+                AccessPoint.SECURITY_NONE)).isEqualTo(Integer.parseInt(value));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..e8fc536
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiEntryPreferenceControllerTest.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.MasterSwitchPreference;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarWifiManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+
+/** Unit test for {@link WifiEntryPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarWifiManager.class})
+public class WifiEntryPreferenceControllerTest {
+
+    private Context mContext;
+    private MasterSwitchPreference mMasterSwitchPreference;
+    private PreferenceControllerTestHelper<WifiEntryPreferenceController> mControllerHelper;
+    private WifiEntryPreferenceController mController;
+    @Mock
+    private CarWifiManager mCarWifiManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+        mContext = RuntimeEnvironment.application;
+        mMasterSwitchPreference = new MasterSwitchPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                WifiEntryPreferenceController.class, mMasterSwitchPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarWifiManager.reset();
+    }
+
+    @Test
+    public void onCreate_setsListener() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_WIFI, /* supported= */ true);
+        assertThat(mMasterSwitchPreference.getSwitchToggleListener()).isNull();
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        assertThat(mMasterSwitchPreference.getSwitchToggleListener()).isNotNull();
+    }
+
+    @Test
+    public void refreshUi_wifiDisabled_setsSwitchUnchecked() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_WIFI, /* supported= */ true);
+        when(mCarWifiManager.isWifiEnabled()).thenReturn(false);
+        mMasterSwitchPreference.setSwitchChecked(true);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+        assertThat(mMasterSwitchPreference.isSwitchChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_wifiEnabled_setsSwitchChecked() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_WIFI, /* supported= */ true);
+        when(mCarWifiManager.isWifiEnabled()).thenReturn(true);
+        mMasterSwitchPreference.setSwitchChecked(false);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        mController.refreshUi();
+        assertThat(mMasterSwitchPreference.isSwitchChecked()).isTrue();
+    }
+
+    @Test
+    public void getAvailabilityStatus_wifiAvailable_available() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_WIFI, /* supported= */ true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_wifiNotAvailable_unsupportedOnDevice() {
+        Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
+                PackageManager.FEATURE_WIFI, /* supported= */ false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiStatusPreferenceControllerTest.java
new file mode 100644
index 0000000..32692dd
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiStatusPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.net.wifi.WifiManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class WifiStatusPreferenceControllerTest {
+    private static final List<Integer> VISIBLE_STATES = Arrays.asList(
+            WifiManager.WIFI_STATE_DISABLED,
+            WifiManager.WIFI_STATE_ENABLING);
+    private static final List<Integer> INVISIBLE_STATES = Arrays.asList(
+            WifiManager.WIFI_STATE_ENABLED,
+            WifiManager.WIFI_STATE_DISABLING,
+            WifiManager.WIFI_STATE_UNKNOWN);
+
+    private Context mContext;
+    private Preference mPreference;
+    private WifiStatusPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new Preference(mContext);
+        PreferenceControllerTestHelper<WifiStatusPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        WifiStatusPreferenceController.class, mPreference);
+        mController = controllerHelper.getController();
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void onWifiStateChanged_invisible() {
+        for (int state : INVISIBLE_STATES) {
+            mController.onWifiStateChanged(state);
+            assertThat(mPreference.isVisible()).isEqualTo(false);
+        }
+    }
+
+    @Test
+    public void onWifiStateChanged_visible() {
+        for (int state : VISIBLE_STATES) {
+            mController.onWifiStateChanged(state);
+            assertThat(mPreference.isVisible()).isEqualTo(true);
+        }
+    }
+
+    @Test
+    public void onWifiStateChanged_disabled() {
+        mController.onWifiStateChanged(WifiManager.WIFI_STATE_DISABLED);
+        assertThat(mPreference.getTitle())
+                .isEqualTo(mContext.getResources().getString(R.string.wifi_disabled));
+    }
+
+    @Test
+    public void onWifiStateChanged_enabling() {
+        mController.onWifiStateChanged(WifiManager.WIFI_STATE_ENABLING);
+        assertThat(mPreference.getTitle())
+                .isEqualTo(mContext.getResources().getString(R.string.loading_wifi_list));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceControllerTest.java
new file mode 100644
index 0000000..43fa83e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherApBandPreferenceControllerTest.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.net.wifi.WifiConfiguration;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarWifiManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarWifiManager.class})
+public class WifiTetherApBandPreferenceControllerTest {
+
+    private Context mContext;
+    private ListPreference mPreference;
+    private PreferenceControllerTestHelper<WifiTetherApBandPreferenceController>
+            mControllerHelper;
+    private CarWifiManager mCarWifiManager;
+    private WifiTetherApBandPreferenceController mController;
+
+    @Before
+    public void setup() {
+        mContext = RuntimeEnvironment.application;
+        mCarWifiManager = new CarWifiManager(mContext);
+        mPreference = new ListPreference(mContext);
+        mControllerHelper =
+                new PreferenceControllerTestHelper<WifiTetherApBandPreferenceController>(mContext,
+                        WifiTetherApBandPreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarWifiManager.reset();
+    }
+
+    @Test
+    public void onStart_5GhzBandNotSupported_preferenceIsNotEnabled() {
+        ShadowCarWifiManager.setIsDualBandSupported(false);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(!mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onStart_5GhzBandNotSupported_summarySetToChoose2Ghz() {
+        ShadowCarWifiManager.setIsDualBandSupported(false);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreference.getSummary())
+                .isEqualTo(mContext.getString(R.string.wifi_ap_choose_2G));
+    }
+
+    @Test
+    public void onStart_5GhzBandIsSupported_preferenceIsEnabled() {
+        ShadowCarWifiManager.setIsDualBandSupported(true);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreference.isEnabled()).isTrue();
+    }
+
+    @Test
+    public void onStart_wifiConfigApBandSetTo2Ghz_valueIsSetTo2Ghz() {
+        ShadowCarWifiManager.setIsDualBandSupported(true);
+        WifiConfiguration config = new WifiConfiguration();
+        config.apBand = WifiConfiguration.AP_BAND_2GHZ;
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreference.getValue())
+                .isEqualTo(Integer.toString(WifiConfiguration.AP_BAND_2GHZ));
+    }
+
+    @Test
+    public void onStart_wifiConfigApBandSetTo5Ghz_valueIsSetTo5Ghz() {
+        ShadowCarWifiManager.setIsDualBandSupported(true);
+        WifiConfiguration config = new WifiConfiguration();
+        config.apBand = WifiConfiguration.AP_BAND_5GHZ;
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreference.getValue())
+                .isEqualTo(Integer.toString(WifiConfiguration.AP_BAND_5GHZ));
+    }
+
+    @Test
+    public void onPreferenceChangedTo5Ghz_updatesApBandConfigTo5Ghz() {
+        ShadowCarWifiManager.setIsDualBandSupported(true);
+        ShadowCarWifiManager.setIsDualModeSupported(false);
+        WifiConfiguration config = new WifiConfiguration();
+        config.apBand = WifiConfiguration.AP_BAND_2GHZ;
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.handlePreferenceChanged(mPreference,
+                Integer.toString(WifiConfiguration.AP_BAND_5GHZ));
+
+        assertThat(mCarWifiManager.getWifiApConfig().apBand)
+                .isEqualTo(WifiConfiguration.AP_BAND_5GHZ);
+    }
+
+    @Test
+    public void onPreferenceChangedTo2Ghz_updatesApBandConfigTo2Ghz() {
+        ShadowCarWifiManager.setIsDualBandSupported(true);
+        ShadowCarWifiManager.setIsDualModeSupported(false);
+        WifiConfiguration config = new WifiConfiguration();
+        config.apBand = WifiConfiguration.AP_BAND_5GHZ;
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.handlePreferenceChanged(mPreference,
+                Integer.toString(WifiConfiguration.AP_BAND_2GHZ));
+
+        assertThat(mCarWifiManager.getWifiApConfig().apBand)
+                .isEqualTo(WifiConfiguration.AP_BAND_2GHZ);
+    }
+
+    @Test
+    public void onStart_dualModeIsSupported_summarySetToPrefer5Ghz() {
+        ShadowCarWifiManager.setIsDualBandSupported(true);
+        ShadowCarWifiManager.setIsDualModeSupported(true);
+        WifiConfiguration config = new WifiConfiguration();
+        config.apBand = WifiConfiguration.AP_BAND_5GHZ;
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        assertThat(mPreference.getSummary()).isEqualTo(
+                mContext.getString(R.string.wifi_ap_prefer_5G));
+    }
+
+    @Test
+    public void onPreferenceChangedTo5Ghz_dualModeIsSupported_defaultToApBandAny() {
+        ShadowCarWifiManager.setIsDualBandSupported(true);
+        ShadowCarWifiManager.setIsDualModeSupported(true);
+        WifiConfiguration config = new WifiConfiguration();
+        config.apBand = WifiConfiguration.AP_BAND_2GHZ;
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.handlePreferenceChanged(mPreference,
+                Integer.toString(WifiConfiguration.AP_BAND_5GHZ));
+
+        assertThat(mCarWifiManager.getWifiApConfig().apBand)
+                .isEqualTo(WifiConfiguration.AP_BAND_ANY);
+    }
+
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherAutoOffPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherAutoOffPreferenceControllerTest.java
new file mode 100644
index 0000000..b179b72
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherAutoOffPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class WifiTetherAutoOffPreferenceControllerTest {
+
+    private Context mContext;
+    private TwoStatePreference mTwoStatePreference;
+    private PreferenceControllerTestHelper<WifiTetherAutoOffPreferenceController> mControllerHelper;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mTwoStatePreference = new SwitchPreference(mContext);
+        mControllerHelper =
+                new PreferenceControllerTestHelper<WifiTetherAutoOffPreferenceController>(mContext,
+                        WifiTetherAutoOffPreferenceController.class, mTwoStatePreference);
+    }
+
+    @Test
+    public void onStart_tetherAutoOff_on_shouldReturnSwitchStateOn() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.SOFT_AP_TIMEOUT_ENABLED, 1);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void onStart_tetherAutoOff_off_shouldReturnSwitchStateOff() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.SOFT_AP_TIMEOUT_ENABLED, 0);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onSwitchOn_shouldReturnAutoOff_on() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.SOFT_AP_TIMEOUT_ENABLED, 0);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mTwoStatePreference.performClick();
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.SOFT_AP_TIMEOUT_ENABLED, 0))
+                .isEqualTo(1);
+    }
+
+    @Test
+    public void onSwitchOff_shouldReturnAutoOff_off() {
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.SOFT_AP_TIMEOUT_ENABLED, 1);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+        mTwoStatePreference.performClick();
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.SOFT_AP_TIMEOUT_ENABLED, 1))
+                .isEqualTo(0);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherBasePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherBasePreferenceControllerTest.java
new file mode 100644
index 0000000..0335364
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherBasePreferenceControllerTest.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.ValidatedEditTextPreference;
+import com.android.car.settings.testutils.ShadowCarWifiManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarWifiManager.class})
+public class WifiTetherBasePreferenceControllerTest {
+
+    private static final String SUMMARY = "SUMMARY";
+    private static final String DEFAULT_SUMMARY = "DEFAULT_SUMMARY";
+
+    private static class TestWifiTetherBasePreferenceController extends
+            WifiTetherBasePreferenceController<Preference> {
+
+        private String mSummary;
+        private String mDefaultSummary;
+
+        TestWifiTetherBasePreferenceController(Context context, String preferenceKey,
+                FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+            super(context, preferenceKey, fragmentController, uxRestrictions);
+        }
+
+        @Override
+        protected Class<Preference> getPreferenceType() {
+            return Preference.class;
+        }
+
+        @Override
+        protected String getSummary() {
+            return mSummary;
+        }
+
+        @Override
+        protected String getDefaultSummary() {
+            return mDefaultSummary;
+        }
+
+        protected void setConfigSummaries(@Nullable String summary,
+                @Nullable String defaultSummary) {
+            mSummary = summary;
+            mDefaultSummary = defaultSummary;
+        }
+    }
+
+    private Context mContext;
+    private ValidatedEditTextPreference mPreference;
+    private PreferenceControllerTestHelper<TestWifiTetherBasePreferenceController>
+            mControllerHelper;
+    private TestWifiTetherBasePreferenceController mController;
+
+    @Before
+    public void setup() {
+        mContext = RuntimeEnvironment.application;
+        mPreference = new ValidatedEditTextPreference(mContext);
+        mControllerHelper =
+                new PreferenceControllerTestHelper<TestWifiTetherBasePreferenceController>(mContext,
+                        TestWifiTetherBasePreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarWifiManager.reset();
+    }
+
+    @Test
+    public void onStart_shouldStartCarWifiManager() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        assertThat(getShadowCarWifiManager().getCurrentState())
+                .isEqualTo(getShadowCarWifiManager().STATE_STARTED);
+    }
+
+    @Test
+    public void onStop_shouldStopCarWifiManager() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(getShadowCarWifiManager().getCurrentState())
+                .isEqualTo(getShadowCarWifiManager().STATE_STOPPED);
+    }
+
+    @Test
+    public void onDestroy_shouldDestroyCarWifiManager() {
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+
+        assertThat(getShadowCarWifiManager().getCurrentState())
+                .isEqualTo(getShadowCarWifiManager().STATE_DESTROYED);
+    }
+
+    @Test
+    public void noSummaryToShow_defaultSummarySet_shouldShowDefaultSummary() {
+        mController.setConfigSummaries(/* summary= */ null, DEFAULT_SUMMARY);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getSummary()).isEqualTo(DEFAULT_SUMMARY);
+    }
+
+    @Test
+    public void noSummaryToShow_defaultSummaryNotSet_shouldNotShowSummary() {
+        mController.setConfigSummaries(/* summary= */ null, /* defaultSummary= */ null);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getSummary()).isEqualTo(null);
+    }
+
+    @Test
+    public void summaryToShow_defaultSummarySet_shouldShowNonDefaultSummary() {
+        mController.setConfigSummaries(SUMMARY, DEFAULT_SUMMARY);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getSummary()).isEqualTo(SUMMARY);
+    }
+
+    @Test
+    public void summaryToShow_defaultSummaryNotSet_shouldSHowNonDefaultSummary() {
+        mController.setConfigSummaries(SUMMARY, /* defaultSummary= */ null);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.updateState(mPreference);
+
+        assertThat(mPreference.getSummary()).isEqualTo(SUMMARY);
+    }
+
+    private ShadowCarWifiManager getShadowCarWifiManager() {
+        return Shadow.extract(new CarWifiManager(mContext));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherFragmentTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherFragmentTest.java
new file mode 100644
index 0000000..e93f25f
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherFragmentTest.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.wifi.WifiManager;
+import android.widget.Switch;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowCarWifiManager;
+import com.android.car.settings.testutils.ShadowConnectivityManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarWifiManager.class, ShadowConnectivityManager.class})
+public class WifiTetherFragmentTest {
+
+    private Context mContext;
+    private WifiTetherFragment mFragment;
+    private FragmentController<WifiTetherFragment> mFragmentController;
+    @Mock
+    private CarWifiManager mCarWifiManager;
+    @Mock
+    private ConnectivityManager mConnectivityManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mFragment = new WifiTetherFragment();
+        mFragmentController = FragmentController.of(mFragment);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowConnectivityManager.reset();
+        ShadowCarWifiManager.reset();
+    }
+
+    @Test
+    public void onStart_tetherStateOn_shouldReturnSwitchStateOn() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(true);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+
+        mFragmentController.setup();
+
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
+    }
+
+    @Test
+    public void onStart_tetherStateOff_shouldReturnSwitchStateOff() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+
+        mFragmentController.setup();
+
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
+    }
+
+    @Test
+    public void onSwitchOn_shouldAttemptTetherOn() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+
+        mFragmentController.setup();
+        findSwitch(mFragment.requireActivity()).performClick();
+
+        assertThat(getShadowConnectivityManager().verifyStartTetheringCalled(1)).isTrue();
+        assertThat(getShadowConnectivityManager().getTetheringType()
+                == ConnectivityManager.TETHERING_WIFI).isTrue();
+    }
+
+    @Test
+    public void onSwitchOff_shouldAttemptTetherOff() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(true);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+
+        mFragmentController.setup();
+        findSwitch(mFragment.requireActivity()).performClick();
+
+        assertThat(getShadowConnectivityManager().verifyStopTetheringCalled(1)).isTrue();
+        assertThat(getShadowConnectivityManager().getTetheringType()
+                == ConnectivityManager.TETHERING_WIFI).isTrue();
+    }
+
+    @Test
+    public void onTetherEnabling_shouldReturnSwitchStateDisabled() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+        mFragmentController.setup();
+
+        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
+        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_ENABLING);
+        mContext.sendBroadcast(intent);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isFalse();
+    }
+
+    @Test
+    public void onTetherEnabled_shouldReturnSwitchStateEnabledAndOn() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+        mFragmentController.setup();
+
+        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
+        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_ENABLED);
+        mContext.sendBroadcast(intent);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isTrue();
+    }
+
+    @Test
+    public void onTetherDisabled_shouldReturnSwitchStateEnabledAndOff() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+        mFragmentController.setup();
+
+        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
+        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_DISABLED);
+        mContext.sendBroadcast(intent);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
+    }
+
+    @Test
+    public void onEnableTetherFailed_shouldReturnSwitchStateEnabledAndOff() {
+        when(mCarWifiManager.isWifiApEnabled()).thenReturn(false);
+        ShadowCarWifiManager.setInstance(mCarWifiManager);
+        mFragmentController.setup();
+
+        Intent intent = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
+        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_ENABLING);
+        mContext.sendBroadcast(intent);
+
+        Intent intent2 = new Intent(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
+        intent.putExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_FAILED);
+        mContext.sendBroadcast(intent2);
+
+        assertThat(findSwitch(mFragment.requireActivity()).isEnabled()).isTrue();
+        assertThat(findSwitch(mFragment.requireActivity()).isChecked()).isFalse();
+    }
+
+    private Switch findSwitch(Activity activity) {
+        return activity.findViewById(R.id.toggle_switch);
+    }
+
+    private ShadowConnectivityManager getShadowConnectivityManager() {
+        return Shadow.extract(mContext.getSystemService(Context.CONNECTIVITY_SERVICE));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherNamePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherNamePreferenceControllerTest.java
new file mode 100644
index 0000000..dd42a25
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherNamePreferenceControllerTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.net.wifi.WifiConfiguration;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.ValidatedEditTextPreference;
+import com.android.car.settings.testutils.ShadowCarWifiManager;
+
+import org.junit.After;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarWifiManager.class})
+public class WifiTetherNamePreferenceControllerTest {
+
+    private Context mContext;
+    private ValidatedEditTextPreference mPreference;
+    private PreferenceControllerTestHelper<WifiTetherNamePreferenceController> mControllerHelper;
+    private CarWifiManager mCarWifiManager;
+
+    @After
+    public void tearDown() {
+        ShadowCarWifiManager.reset();
+    }
+
+    @Test
+    public void onStart_wifiConfigHasSSID_setsSummary() {
+        mContext = RuntimeEnvironment.application;
+        mCarWifiManager = new CarWifiManager(mContext);
+        String testSSID = "TEST_SSID";
+        WifiConfiguration config = new WifiConfiguration();
+        config.SSID = testSSID;
+        getShadowCarWifiManager().setWifiApConfig(config);
+        mPreference = new ValidatedEditTextPreference(mContext);
+        mControllerHelper =
+                new PreferenceControllerTestHelper<WifiTetherNamePreferenceController>(mContext,
+                        WifiTetherNamePreferenceController.class, mPreference);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        assertThat(mPreference.getSummary()).isEqualTo(testSSID);
+    }
+
+    private ShadowCarWifiManager getShadowCarWifiManager() {
+        return Shadow.extract(mCarWifiManager);
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceControllerTest.java
new file mode 100644
index 0000000..613525b
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherPasswordPreferenceControllerTest.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.net.wifi.WifiConfiguration;
+import android.text.InputType;
+import android.text.TextUtils;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.ValidatedEditTextPreference;
+import com.android.car.settings.testutils.ShadowCarWifiManager;
+import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarWifiManager.class, ShadowLocalBroadcastManager.class})
+public class WifiTetherPasswordPreferenceControllerTest {
+
+    private static final String TEST_PASSWORD = "TEST_PASSWORD";
+
+    private Context mContext;
+    private ValidatedEditTextPreference mPreference;
+    private PreferenceControllerTestHelper<WifiTetherPasswordPreferenceController>
+            mControllerHelper;
+    private CarWifiManager mCarWifiManager;
+    private LocalBroadcastManager mLocalBroadcastManager;
+    private WifiTetherPasswordPreferenceController mController;
+
+    @Before
+    public void setup() {
+        mContext = RuntimeEnvironment.application;
+        mCarWifiManager = new CarWifiManager(mContext);
+        mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
+        mPreference = new ValidatedEditTextPreference(mContext);
+        mControllerHelper =
+                new PreferenceControllerTestHelper<WifiTetherPasswordPreferenceController>(mContext,
+                        WifiTetherPasswordPreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarWifiManager.reset();
+        ShadowLocalBroadcastManager.reset();
+        SharedPreferences sp = mContext.getSharedPreferences(
+                WifiTetherPasswordPreferenceController.SHARED_PREFERENCE_PATH,
+                Context.MODE_PRIVATE);
+        sp.edit().remove(WifiTetherPasswordPreferenceController.KEY_SAVED_PASSWORD).commit();
+    }
+
+    @Test
+    public void onStart_securityTypeIsNotNone_visibilityIsSetToTrue() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = null;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStart_securityTypeIsNotNone_wifiConfigHasPassword_setsPasswordAsSummary() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = TEST_PASSWORD;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreference.getSummary()).isEqualTo(TEST_PASSWORD);
+    }
+
+    @Test
+    public void onStart_securityTypeIsNotNone_wifiConfigHasPassword_obscuresSummary() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = TEST_PASSWORD;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreference.getSummaryInputType())
+                .isEqualTo((InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD));
+    }
+
+    @Test
+    public void onStart_securityTypeIsNotNone_wifiConfigHasNoPassword_passwordIsNotEmpty() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = "";
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(!TextUtils.isEmpty(mPreference.getSummary())).isTrue();
+    }
+
+    @Test
+    public void onStart_securityTypeIsNotNone_wifiConfigHasNoPassword_obscuresSummary() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = "";
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(mPreference.getSummaryInputType())
+                .isEqualTo((InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD));
+    }
+
+    @Test
+    public void onStart_securityTypeIsNone_visibilityIsSetToFalse() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = null;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(!mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void onStart_receiverIsRegisteredOnLocalBroadcastManager() {
+        WifiConfiguration config = new WifiConfiguration();
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(
+                ShadowLocalBroadcastManager.getRegisteredBroadcastReceivers().size())
+                .isEqualTo(1);
+    }
+
+    @Test
+    public void onStop_receiverIsUnregisteredFromLocalBroadcastManager() {
+        WifiConfiguration config = new WifiConfiguration();
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+        assertThat(
+                ShadowLocalBroadcastManager.getRegisteredBroadcastReceivers().size())
+                .isEqualTo(0);
+    }
+
+    @Test
+    public void onSecurityChangedToNone_visibilityIsFalse() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        Intent intent = new Intent(
+                WifiTetherSecurityPreferenceController.ACTION_SECURITY_TYPE_CHANGED);
+        intent.putExtra(WifiTetherSecurityPreferenceController.KEY_SECURITY_TYPE,
+                WifiConfiguration.KeyMgmt.NONE);
+        mLocalBroadcastManager.sendBroadcast(intent);
+
+        assertThat(mPreference.isVisible()).isFalse();
+    }
+
+    @Test
+    public void onSecurityChangedToWPA2PSK_visibilityIsTrue() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        Intent intent = new Intent(
+                WifiTetherSecurityPreferenceController.ACTION_SECURITY_TYPE_CHANGED);
+        intent.putExtra(WifiTetherSecurityPreferenceController.KEY_SECURITY_TYPE,
+                WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mLocalBroadcastManager.sendBroadcast(intent);
+
+        assertThat(mPreference.isVisible()).isTrue();
+    }
+
+    @Test
+    public void onChangePassword_updatesPassword() {
+        String oldPassword = "OLD_PASSWORD";
+        String newPassword = "NEW_PASSWORD";
+
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = oldPassword;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.handlePreferenceChanged(mPreference, newPassword);
+        String passwordReturned = mCarWifiManager.getWifiApConfig().preSharedKey;
+
+        assertThat(passwordReturned).isEqualTo(newPassword);
+    }
+
+    @Test
+    public void onChangePassword_savesNewPassword() {
+        String oldPassword = "OLD_PASSWORD";
+        String newPassword = "NEW_PASSWORD";
+
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = oldPassword;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+        mController.handlePreferenceChanged(mPreference, newPassword);
+
+        SharedPreferences sp = mContext.getSharedPreferences(
+                WifiTetherPasswordPreferenceController.SHARED_PREFERENCE_PATH,
+                Context.MODE_PRIVATE);
+
+        String savedPassword = sp.getString(
+                WifiTetherPasswordPreferenceController.KEY_SAVED_PASSWORD, "");
+
+        assertThat(savedPassword).isEqualTo(newPassword);
+    }
+
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceControllerTest.java
new file mode 100644
index 0000000..67ac93e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/WifiTetherSecurityPreferenceControllerTest.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.net.wifi.WifiConfiguration;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.preference.ListPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCarWifiManager;
+import com.android.car.settings.testutils.ShadowLocalBroadcastManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCarWifiManager.class, ShadowLocalBroadcastManager.class})
+public class WifiTetherSecurityPreferenceControllerTest {
+
+    private Context mContext;
+    private ListPreference mPreference;
+    private PreferenceControllerTestHelper<WifiTetherSecurityPreferenceController>
+            mControllerHelper;
+    private CarWifiManager mCarWifiManager;
+    private LocalBroadcastManager mLocalBroadcastManager;
+    private WifiTetherSecurityPreferenceController mController;
+
+    @Before
+    public void setup() {
+        mContext = RuntimeEnvironment.application;
+        mCarWifiManager = new CarWifiManager(mContext);
+        mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
+        mPreference = new ListPreference(mContext);
+        mControllerHelper =
+                new PreferenceControllerTestHelper<WifiTetherSecurityPreferenceController>(mContext,
+                        WifiTetherSecurityPreferenceController.class, mPreference);
+        mController = mControllerHelper.getController();
+    }
+
+    @After
+    public void tearDown() {
+        ShadowCarWifiManager.reset();
+        ShadowLocalBroadcastManager.reset();
+        SharedPreferences sp = mContext.getSharedPreferences(
+                WifiTetherPasswordPreferenceController.SHARED_PREFERENCE_PATH,
+                Context.MODE_PRIVATE);
+        sp.edit().remove(WifiTetherPasswordPreferenceController.KEY_SAVED_PASSWORD).commit();
+    }
+
+    @Test
+    public void onStart_securityTypeSetToNone_setsValueToNone() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = null;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(Integer.parseInt(mPreference.getValue()))
+                .isEqualTo(WifiConfiguration.KeyMgmt.NONE);
+    }
+
+    @Test
+    public void onStart_securityTypeSetToWPA2PSK_setsValueToWPA2PSK() {
+        String testPassword = "TEST_PASSWORD";
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = testPassword;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        assertThat(Integer.parseInt(mPreference.getValue()))
+                .isEqualTo(WifiConfiguration.KeyMgmt.WPA2_PSK);
+    }
+
+    @Test
+    public void onPreferenceChangedToNone_updatesSecurityTypeToNone() {
+        String testPassword = "TEST_PASSWORD";
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = testPassword;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        mController.handlePreferenceChanged(mPreference,
+                Integer.toString(WifiConfiguration.KeyMgmt.NONE));
+
+        assertThat(mCarWifiManager.getWifiApConfig().getAuthType())
+                .isEqualTo(WifiConfiguration.KeyMgmt.NONE);
+
+    }
+
+    @Test
+    public void onPreferenceChangedToWPA2PSK_updatesSecurityTypeToWPA2PSK() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = null;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        mController.handlePreferenceChanged(mPreference,
+                Integer.toString(WifiConfiguration.KeyMgmt.WPA2_PSK));
+
+        assertThat(mCarWifiManager.getWifiApConfig().getAuthType())
+                .isEqualTo(WifiConfiguration.KeyMgmt.WPA2_PSK);
+    }
+
+    @Test
+    public void onPreferenceSwitchFromNoneToWPA2PSK_retrievesSavedPassword() {
+        String savedPassword = "SAVED_PASSWORD";
+        SharedPreferences sp = mContext.getSharedPreferences(
+                WifiTetherPasswordPreferenceController.SHARED_PREFERENCE_PATH,
+                Context.MODE_PRIVATE);
+        sp.edit().putString(WifiTetherPasswordPreferenceController.KEY_SAVED_PASSWORD,
+                savedPassword).commit();
+
+        WifiConfiguration config = new WifiConfiguration();
+        config.preSharedKey = null;
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        mController.handlePreferenceChanged(mPreference,
+                Integer.toString(WifiConfiguration.KeyMgmt.WPA2_PSK));
+
+        assertThat(mCarWifiManager.getWifiApConfig().preSharedKey).isEqualTo(savedPassword);
+    }
+
+    @Test
+    public void onPreferenceChanged_broadcastsExactlyOneIntent() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        int newSecurityType = WifiConfiguration.KeyMgmt.WPA2_PSK;
+        mController.handlePreferenceChanged(mPreference, newSecurityType);
+
+        assertThat(ShadowLocalBroadcastManager.getSentBroadcastIntents().size()).isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChangedToWPA2PSK_broadcastsSecurityTypeWPA2PSK() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        int newSecurityType = WifiConfiguration.KeyMgmt.WPA2_PSK;
+
+        mController.handlePreferenceChanged(mPreference, newSecurityType);
+
+        Intent expectedIntent = new Intent(
+                WifiTetherSecurityPreferenceController.ACTION_SECURITY_TYPE_CHANGED);
+        expectedIntent.putExtra(WifiTetherSecurityPreferenceController.KEY_SECURITY_TYPE,
+                newSecurityType);
+
+        assertThat(
+                ShadowLocalBroadcastManager.getSentBroadcastIntents().get(0).toString())
+                .isEqualTo(expectedIntent.toString());
+    }
+
+    @Test
+    public void onPreferenceChangedToNone_broadcastsSecurityTypeNone() {
+        WifiConfiguration config = new WifiConfiguration();
+        config.allowedKeyManagement.clear();
+        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        mCarWifiManager.setWifiApConfig(config);
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+        int newSecurityType = WifiConfiguration.KeyMgmt.NONE;
+
+        mController.handlePreferenceChanged(mPreference, newSecurityType);
+
+        Intent expectedIntent = new Intent(
+                WifiTetherSecurityPreferenceController.ACTION_SECURITY_TYPE_CHANGED);
+        expectedIntent.putExtra(WifiTetherSecurityPreferenceController.KEY_SECURITY_TYPE,
+                newSecurityType);
+
+        assertThat(
+                ShadowLocalBroadcastManager.getSentBroadcastIntents().get(0).toString())
+                .isEqualTo(expectedIntent.toString());
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java
new file mode 100644
index 0000000..89a6b6a
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/details/WifiFrequencyPreferenceControllerTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class WifiFrequencyPreferenceControllerTest {
+
+    @Mock
+    private AccessPoint mMockAccessPoint;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+    @Mock
+    private NetworkInfo mMockNetworkInfo;
+    @Mock
+    private WifiInfo mMockWifiInfo;
+
+    private WifiDetailsPreference mPreference;
+    private Context mContext;
+    private WifiFrequencyPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI, true);
+        mPreference = new WifiDetailsPreference(mContext);
+
+        PreferenceControllerTestHelper<WifiFrequencyPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        WifiFrequencyPreferenceController.class, mPreference);
+        mController = (WifiFrequencyPreferenceController) controllerHelper.getController().init(
+                mMockAccessPoint, mMockWifiInfoProvider);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+
+        when(mMockWifiInfoProvider.getWifiInfo()).thenReturn(mMockWifiInfo);
+        when(mMockWifiInfo.getFrequency()).thenReturn(AccessPoint.LOWER_FREQ_24GHZ);
+    }
+
+    @Test
+    public void onWifiChanged_shouldHaveDetailTextSet() {
+        when(mMockAccessPoint.isActive()).thenReturn(true);
+        when(mMockWifiInfo.getFrequency()).thenReturn(AccessPoint.LOWER_FREQ_5GHZ);
+
+        String expected = mContext.getResources().getString(R.string.wifi_band_5ghz);
+        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
+        assertThat(mPreference.getDetailText()).isEqualTo(expected);
+    }
+
+    @Test
+    public void onWifiChanged_isNotActive_noUpdate() {
+        when(mMockAccessPoint.isActive()).thenReturn(false);
+
+        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
+        assertThat(mPreference.getDetailText()).isNull();
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java
new file mode 100644
index 0000000..dc54df2
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/details/WifiGatewayPreferenceControllerTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.RouteInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+import java.net.InetAddress;
+import java.util.Arrays;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class WifiGatewayPreferenceControllerTest {
+
+    private static final String GATE_WAY = "gateway";
+
+    @Mock
+    private AccessPoint mMockAccessPoint;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+    @Mock
+    private Network mMockNetwork;
+    @Mock
+    private LinkProperties mMockLinkProperties;
+    @Mock
+    private RouteInfo mMockRouteInfo;
+    @Mock
+    private InetAddress mMockInetAddress;
+
+    private Context mContext;
+    private WifiDetailsPreference mPreference;
+    private WifiGatewayPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI, true);
+        mPreference = new WifiDetailsPreference(mContext);
+        when(mMockWifiInfoProvider.getLinkProperties()).thenReturn(mMockLinkProperties);
+
+        PreferenceControllerTestHelper<WifiGatewayPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        WifiGatewayPreferenceController.class, mPreference);
+        mController = (WifiGatewayPreferenceController) controllerHelper.getController().init(
+                mMockAccessPoint, mMockWifiInfoProvider);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void onWifiChanged_shouldHaveDetailTextSet() {
+        when(mMockAccessPoint.isActive()).thenReturn(true);
+        when(mMockLinkProperties.getRoutes()).thenReturn(Arrays.asList(mMockRouteInfo));
+        when(mMockRouteInfo.isIPv4Default()).thenReturn(true);
+        when(mMockRouteInfo.hasGateway()).thenReturn(true);
+        when(mMockRouteInfo.getGateway()).thenReturn(mMockInetAddress);
+        when(mMockInetAddress.getHostAddress()).thenReturn(GATE_WAY);
+
+        mController.onLinkPropertiesChanged(mMockNetwork, mMockLinkProperties);
+        assertThat(mPreference.getDetailText()).isEqualTo(GATE_WAY);
+    }
+
+    @Test
+    public void onWifiChanged_isNotActive_noUpdate() {
+        when(mMockAccessPoint.isActive()).thenReturn(false);
+
+        mController.onLinkPropertiesChanged(mMockNetwork, mMockLinkProperties);
+        assertThat(mPreference.getDetailText()).isNull();
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiInfoProviderImplTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiInfoProviderImplTest.java
new file mode 100644
index 0000000..9928f52
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/details/WifiInfoProviderImplTest.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.NetworkRequest;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.Handler;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.wifi.details.WifiInfoProvider.Listener;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class WifiInfoProviderImplTest {
+    private static final int LEVEL = 1;
+    private static final int RSSI = -55;
+    private static final int LINK_SPEED = 123;
+    private static final String MAC_ADDRESS = WifiInfo.DEFAULT_MAC_ADDRESS;
+    private static final String SECURITY = "None";
+
+    @Mock
+    private AccessPoint mMockAccessPoint;
+    @Mock
+    private ConnectivityManager mMockConnectivityManager;
+    @Mock
+    private Network mMockNetwork;
+    @Mock
+    private NetworkInfo mMockNetworkInfo;
+    @Mock
+    private NetworkInfo mMockNetworkInfo2;
+    @Mock
+    private WifiConfiguration mMockWifiConfig;
+    @Mock
+    private WifiInfo mMockWifiInfo;
+    @Mock
+    private WifiInfo mMockWifiInfo2;
+    @Mock
+    private LinkProperties mMockLinkProperties;
+    @Mock
+    private LinkProperties mMockChangedLinkProperties;
+    @Mock
+    private NetworkCapabilities mMockNetworkCapabilities;
+    @Mock
+    private NetworkCapabilities mMockChangedNetworkCapabilities;
+    @Mock
+    private WifiManager mMockWifiManager;
+    @Mock
+    private Listener mMockListener;
+
+    @Captor
+    private ArgumentCaptor<NetworkCallback> mCallbackCaptor;
+
+    private Context mContext;
+    private WifiInfoProviderImpl mWifiInfoProviderImpl;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = spy(RuntimeEnvironment.application);
+        when(mContext.getSystemService(ConnectivityManager.class))
+                .thenReturn(mMockConnectivityManager);
+        when(mContext.getSystemService(WifiManager.class)).thenReturn(mMockWifiManager);
+        when(mMockAccessPoint.getConfig()).thenReturn(mMockWifiConfig);
+        when(mMockAccessPoint.getLevel()).thenReturn(LEVEL);
+        when(mMockAccessPoint.getSecurityString(false)).thenReturn(SECURITY);
+        when(mMockConnectivityManager.getNetworkInfo(any(Network.class)))
+                .thenReturn(mMockNetworkInfo);
+        when(mMockConnectivityManager.getLinkProperties(any(Network.class)))
+                .thenReturn(mMockLinkProperties);
+        when(mMockConnectivityManager.getNetworkCapabilities(any(Network.class)))
+                .thenReturn(mMockNetworkCapabilities);
+        doNothing().when(mMockConnectivityManager).registerNetworkCallback(
+                nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
+        when(mMockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED);
+        when(mMockWifiInfo.getRssi()).thenReturn(RSSI);
+        when(mMockWifiInfo.getMacAddress()).thenReturn(MAC_ADDRESS);
+        when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo);
+
+        when(mMockWifiManager.getCurrentNetwork()).thenReturn(mMockNetwork);
+
+        mWifiInfoProviderImpl = new WifiInfoProviderImpl(mContext, mMockAccessPoint);
+        mWifiInfoProviderImpl.addListener(mMockListener);
+    }
+
+    @Test
+    public void onStart_allFieldsInitialized() {
+        mWifiInfoProviderImpl.onStart();
+
+        assertThat(mWifiInfoProviderImpl.getNetworkInfo()).isNotNull();
+        assertThat(mWifiInfoProviderImpl.getWifiInfo()).isNotNull();
+        assertThat(mWifiInfoProviderImpl.getNetwork()).isNotNull();
+        assertThat(mWifiInfoProviderImpl.getNetworkCapabilities()).isNotNull();
+        assertThat(mWifiInfoProviderImpl.getNetworkConfiguration()).isNotNull();
+        assertThat(mWifiInfoProviderImpl.getLinkProperties()).isNotNull();
+    }
+
+    @Test
+    public void onStart_listenerCallback() {
+        mWifiInfoProviderImpl.onStart();
+        verify(mMockListener).onWifiChanged(eq(mMockNetworkInfo), eq(mMockWifiInfo));
+    }
+
+    @Test
+    public void onStart_getsNetwork() {
+        mWifiInfoProviderImpl.onStart();
+        assertThat(mWifiInfoProviderImpl.getNetwork()).isEqualTo(mMockNetwork);
+    }
+
+    @Test
+    public void networkCallback_shouldBeRegisteredOnStart() {
+        mWifiInfoProviderImpl.onStart();
+
+        verify(mMockConnectivityManager).registerNetworkCallback(
+                nullable(NetworkRequest.class), mCallbackCaptor.capture(), nullable(Handler.class));
+    }
+
+    @Test
+    public void networkCallback_shouldBeUnregisteredOnStop() {
+        mWifiInfoProviderImpl.onStart();
+        mWifiInfoProviderImpl.onStop();
+
+        verify(mMockConnectivityManager)
+                .unregisterNetworkCallback(mCallbackCaptor.getValue());
+    }
+
+    @Test
+    public void networkStateChangedIntent_shouldRefetchInfo() {
+        mWifiInfoProviderImpl.onStart();
+
+        assertThat(mWifiInfoProviderImpl.getNetwork()).isEqualTo(mMockNetwork);
+        assertThat(mWifiInfoProviderImpl.getWifiInfo()).isEqualTo(mMockWifiInfo);
+        assertThat(mWifiInfoProviderImpl.getNetworkInfo()).isEqualTo(mMockNetworkInfo);
+
+        when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo2);
+        when(mMockConnectivityManager.getNetworkInfo(any(Network.class)))
+                .thenReturn(mMockNetworkInfo2);
+
+        mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION));
+
+        assertThat(mWifiInfoProviderImpl.getNetwork()).isEqualTo(mMockNetwork);
+        assertThat(mWifiInfoProviderImpl.getWifiInfo()).isEqualTo(mMockWifiInfo2);
+        assertThat(mWifiInfoProviderImpl.getNetworkInfo()).isEqualTo(mMockNetworkInfo2);
+    }
+
+    @Test
+    public void rssiChangedIntent_shouldRefetchInfo() {
+        mWifiInfoProviderImpl.onStart();
+
+        assertThat(mWifiInfoProviderImpl.getNetwork()).isEqualTo(mMockNetwork);
+        assertThat(mWifiInfoProviderImpl.getWifiInfo()).isEqualTo(mMockWifiInfo);
+        assertThat(mWifiInfoProviderImpl.getNetworkInfo()).isEqualTo(mMockNetworkInfo);
+
+        when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo2);
+        when(mMockConnectivityManager.getNetworkInfo(any(Network.class)))
+                .thenReturn(mMockNetworkInfo2);
+
+        mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
+
+        assertThat(mWifiInfoProviderImpl.getNetwork()).isEqualTo(mMockNetwork);
+        assertThat(mWifiInfoProviderImpl.getWifiInfo()).isEqualTo(mMockWifiInfo2);
+        assertThat(mWifiInfoProviderImpl.getNetworkInfo()).isEqualTo(mMockNetworkInfo2);
+    }
+
+    @Test
+    public void onLost_lisntenerCallback() {
+        mWifiInfoProviderImpl.onStart();
+
+        mCallbackCaptor.getValue().onLost(mMockNetwork);
+
+        verify(mMockListener).onLost(any(Network.class));
+    }
+
+    @Test
+    public void onLinkPropertiesChanged_lisntenerCallback() {
+        mWifiInfoProviderImpl.onStart();
+
+        mCallbackCaptor.getValue().onLinkPropertiesChanged(
+                mMockNetwork, mMockChangedLinkProperties);
+
+        verify(mMockListener).onLinkPropertiesChanged(
+                any(Network.class), eq(mMockChangedLinkProperties));
+    }
+
+    @Test
+    public void onCapabilitiesChanged_lisntenerCallback() {
+        mWifiInfoProviderImpl.onStart();
+
+        mCallbackCaptor.getValue().onCapabilitiesChanged(
+                mMockNetwork, mMockChangedNetworkCapabilities);
+
+        verify(mMockListener).onCapabilitiesChanged(
+                any(Network.class), eq(mMockChangedNetworkCapabilities));
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java
new file mode 100644
index 0000000..7fb3b48
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/details/WifiMacAddressPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class WifiMacAddressPreferenceControllerTest {
+
+    private static final String MAC_ADDRESS = "mac address";
+
+    @Mock
+    private AccessPoint mMockAccessPoint;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+    @Mock
+    private NetworkInfo mMockNetworkInfo;
+    @Mock
+    private WifiInfo mMockWifiInfo;
+
+    private Context mContext;
+    private WifiDetailsPreference mPreference;
+    private WifiMacAddressPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI, true);
+        mPreference = new WifiDetailsPreference(mContext);
+        when(mMockWifiInfoProvider.getWifiInfo()).thenReturn(mMockWifiInfo);
+
+        PreferenceControllerTestHelper<WifiMacAddressPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        WifiMacAddressPreferenceController.class, mPreference);
+        mController = (WifiMacAddressPreferenceController) controllerHelper.getController().init(
+                mMockAccessPoint, mMockWifiInfoProvider);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void onWifiChanged_shouldHaveDetailTextSet() {
+        when(mMockAccessPoint.isActive()).thenReturn(true);
+        when(mMockWifiInfo.getMacAddress()).thenReturn(MAC_ADDRESS);
+
+        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
+        assertThat(mPreference.getDetailText()).isEqualTo(MAC_ADDRESS);
+    }
+
+    @Test
+    public void onWifiChanged_isNotActive_noUpdate() {
+        when(mMockAccessPoint.isActive()).thenReturn(false);
+
+        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
+        assertThat(mPreference.getDetailText()).isNull();
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java
new file mode 100644
index 0000000..fbe4ac7
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/details/WifiSignalStrengthPreferenceControllerTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2018 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.car.settings.wifi.details;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
+
+import androidx.lifecycle.Lifecycle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.settingslib.wifi.AccessPoint;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class WifiSignalStrengthPreferenceControllerTest {
+
+    private static final int LEVEL = 1;
+
+    @Mock
+    private AccessPoint mMockAccessPoint;
+    @Mock
+    private WifiInfoProvider mMockWifiInfoProvider;
+    @Mock
+    private NetworkInfo mMockNetworkInfo;
+    @Mock
+    private WifiInfo mMockWifiInfo;
+
+    private WifiDetailsPreference mWifiDetailPreference;
+    private Context mContext;
+    private WifiSignalStrengthPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mContext = RuntimeEnvironment.application;
+        shadowOf(mContext.getPackageManager()).setSystemFeature(PackageManager.FEATURE_WIFI, true);
+
+        mWifiDetailPreference = new WifiDetailsPreference(mContext);
+        when(mMockAccessPoint.getLevel()).thenReturn(LEVEL);
+
+        PreferenceControllerTestHelper<WifiSignalStrengthPreferenceController> controllerHelper =
+                new PreferenceControllerTestHelper<>(mContext,
+                        WifiSignalStrengthPreferenceController.class, mWifiDetailPreference);
+        mController =
+                (WifiSignalStrengthPreferenceController) controllerHelper.getController().init(
+                        mMockAccessPoint, mMockWifiInfoProvider);
+        controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @Test
+    public void onWifiChanged_shouldHaveDetailTextSet() {
+        when(mMockAccessPoint.isActive()).thenReturn(true);
+        String expectedStrength =
+                mContext.getResources().getStringArray(R.array.wifi_signals)[LEVEL];
+
+        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
+        assertThat(mWifiDetailPreference.getDetailText()).isEqualTo(expectedStrength);
+    }
+
+    @Test
+    public void onWifiChanged_isNotActive_noUpdate() {
+        when(mMockAccessPoint.isActive()).thenReturn(false);
+
+        mController.onWifiChanged(mMockNetworkInfo, mMockWifiInfo);
+        assertThat(mWifiDetailPreference.getDetailText()).isNull();
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..f9bc2ab
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/preferences/CellularFallbackTogglePreferenceControllerTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi.preferences;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class CellularFallbackTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private SwitchPreference mPreference;
+    private PreferenceControllerTestHelper<CellularFallbackTogglePreferenceController>
+            mPreferenceControllerHelper;
+    private CellularFallbackTogglePreferenceController mController;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+
+        mPreference = new SwitchPreference(mContext);
+        mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                CellularFallbackTogglePreferenceController.class, mPreference);
+        mController = mPreferenceControllerHelper.getController();
+        mPreferenceControllerHelper.markState(Lifecycle.State.CREATED);
+    }
+
+    @Test
+    public void refreshUi_unchecked() {
+        Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI, null);
+        mPreference.setChecked(true);
+
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_checked() {
+        Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI, "1");
+        mPreference.setChecked(false);
+
+        mController.refreshUi();
+        assertThat(mPreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void handlePreferenceChanged_toggleFalse_setsNull() {
+        Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI, "1");
+
+        mPreference.callChangeListener(false);
+        assertThat(Settings.Global.getString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI)).isNull();
+    }
+
+    @Test
+    public void handlePreferenceChanged_toggleTrue_setsEnabled() {
+        Settings.Global.putString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI, null);
+
+        mPreference.callChangeListener(true);
+        assertThat(Settings.Global.getString(mContext.getContentResolver(),
+                Settings.Global.NETWORK_AVOID_BAD_WIFI)).isEqualTo("1");
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/preferences/ConfirmEnableWifiScanningDialogFragmentTest.java b/tests/robotests/src/com/android/car/settings/wifi/preferences/ConfirmEnableWifiScanningDialogFragmentTest.java
new file mode 100644
index 0000000..cb331a5
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/preferences/ConfirmEnableWifiScanningDialogFragmentTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi.preferences;
+
+import static org.mockito.Mockito.verify;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
+import org.robolectric.shadows.ShadowDialog;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class ConfirmEnableWifiScanningDialogFragmentTest {
+
+    private ConfirmEnableWifiScanningDialogFragment mFragment;
+    @Mock
+    private ConfirmEnableWifiScanningDialogFragment.WifiScanningEnabledListener mListener;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mFragment = new ConfirmEnableWifiScanningDialogFragment();
+        mFragment.setWifiScanningEnabledListener(mListener);
+    }
+
+    @Test
+    public void onClick_positiveButton_callsListener() {
+        AlertDialog dialog = showDialog(mFragment);
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+        verify(mListener).onWifiScanningEnabled();
+    }
+
+    private AlertDialog showDialog(ConfirmEnableWifiScanningDialogFragment fragment) {
+        BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+        activity.showDialog(fragment, /* tag= */ null);
+        return (AlertDialog) ShadowDialog.getLatestDialog();
+    }
+}
diff --git a/tests/robotests/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java
new file mode 100644
index 0000000..6a4a2e4
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/wifi/preferences/WifiWakeupTogglePreferenceControllerTest.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2019 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.car.settings.wifi.preferences;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.location.LocationManager;
+import android.os.Process;
+import android.provider.Settings;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowLocationManager;
+import com.android.car.settings.testutils.ShadowSecureSettings;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.shadows.ShadowToast;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSecureSettings.class, ShadowLocationManager.class})
+public class WifiWakeupTogglePreferenceControllerTest {
+
+    private Context mContext;
+    private PreferenceControllerTestHelper<WifiWakeupTogglePreferenceController> mControllerHelper;
+    private WifiWakeupTogglePreferenceController mController;
+    private TwoStatePreference mTwoStatePreference;
+    private LocationManager mLocationManager;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        mLocationManager = (LocationManager) mContext.getSystemService(Service.LOCATION_SERVICE);
+        mTwoStatePreference = new SwitchPreference(mContext);
+        mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+                WifiWakeupTogglePreferenceController.class, mTwoStatePreference);
+        mController = mControllerHelper.getController();
+
+        mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+    }
+
+    @After
+    public void tearDown() {
+        ShadowSecureSettings.reset();
+    }
+
+    @Test
+    public void handlePreferenceClicked_locationDisabled_startNewActivity() {
+        setLocationEnabled(false);
+
+        mTwoStatePreference.performClick();
+
+        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+        assertThat(actual.getAction()).isEqualTo(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+    }
+
+    @Test
+    public void handlePreferenceClicked_wifiWakeupEnabled_disablesWifiWakeup() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                1);
+
+        mTwoStatePreference.performClick();
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_WAKEUP_ENABLED, 1))
+                .isEqualTo(0);
+    }
+
+    @Test
+    public void handlePreferenceClicked_wifiScanningDisabled_showsDialog() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+
+        mTwoStatePreference.performClick();
+
+        verify(mControllerHelper.getMockFragmentController()).showDialog(
+                any(ConfirmEnableWifiScanningDialogFragment.class),
+                eq(ConfirmEnableWifiScanningDialogFragment.TAG));
+    }
+
+    @Test
+    public void handlePreferenceClicked_wifiScanningEnabled_wifiWakeupDisabled_enablesWifiWakeup() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 1);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+
+        mTwoStatePreference.performClick();
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_WAKEUP_ENABLED, 0))
+                .isEqualTo(1);
+    }
+
+    @Test
+    public void refreshUi_wifiWakeupEnabled_wifiScanningEnabled_locationEnabled_isChecked() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 1);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                1);
+        mTwoStatePreference.setChecked(false);
+
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isChecked()).isTrue();
+    }
+
+    @Test
+    public void refreshUi_wifiWakeupDisabled_wifiScanningEnabled_locationEnabled_isNotChecked() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 1);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+        mTwoStatePreference.setChecked(true);
+
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_wifiWakeupEnabled_wifiScanningDisabled_locationEnabled_isNotChecked() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                1);
+        mTwoStatePreference.setChecked(true);
+
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void refreshUi_wifiWakeupEnabled_wifiScanningEnabled_locationDisabled_isNotChecked() {
+        setLocationEnabled(false);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 1);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                1);
+        mTwoStatePreference.setChecked(true);
+
+        mController.refreshUi();
+
+        assertThat(mTwoStatePreference.isChecked()).isFalse();
+    }
+
+    @Test
+    public void onWifiScanningEnabled_setsWifiScanningOn() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+
+        mController.onWifiScanningEnabled();
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0)).isEqualTo(1);
+    }
+
+    @Test
+    public void onWifiScanningEnabled_showsToast() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+
+        mController.onWifiScanningEnabled();
+
+        assertThat(ShadowToast.showedToast(
+                mContext.getString(R.string.wifi_settings_scanning_required_enabled))).isTrue();
+    }
+
+    @Test
+    public void onWifiScanningEnabled_enablesWifiWakeup() {
+        setLocationEnabled(true);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0);
+        Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED,
+                0);
+
+        mController.onWifiScanningEnabled();
+
+        assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.WIFI_WAKEUP_ENABLED, 0)).isEqualTo(1);
+    }
+
+    private void setLocationEnabled(boolean enabled) {
+        mLocationManager.setLocationEnabledForUser(enabled, Process.myUserHandle());
+    }
+}
