Merge "Update animation on storage item" into tm-dev am: 2d1c853931

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/17092203

Change-Id: If9d29b30f37e99467fd49de9144f9127a2f1ac8b
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 214d32a..012b922 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -131,7 +131,8 @@
             android:usesCleartextTraffic="true"
             android:defaultToDeviceProtectedStorage="true"
             android:directBootAware="true"
-            android:appComponentFactory="androidx.core.app.CoreComponentFactory">
+            android:appComponentFactory="androidx.core.app.CoreComponentFactory"
+            android:gwpAsanMode="always">
 
         <uses-library android:name="org.apache.http.legacy" />
 
@@ -851,7 +852,7 @@
         </activity>
 
         <activity
-            android:name=".Settings$AppLocalePickerActivity"
+            android:name=".localepicker.AppLocalePickerActivity"
             android:label="@string/app_locale_picker_title"
             android:exported="true" >
             <intent-filter>
@@ -859,8 +860,6 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:scheme="package" />
             </intent-filter>
-            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
         </activity>
 
         <activity
diff --git a/res/layout/app_locale_picker.xml b/res/layout/app_locale_picker.xml
new file mode 100644
index 0000000..51e35ef
--- /dev/null
+++ b/res/layout/app_locale_picker.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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:id="@+id/app_locale_detail_container"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:id="@+id/app_locale_detail"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+
+    <FrameLayout
+        android:id="@+id/app_locale_picker_with_region"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index a735e34..40ecb99 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"\'n Herselflaai word vereis om rekenaarmodus vir sekondêre skerms te verplig."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Herselflaai nou"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Herselflaai later"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Ruimtelike oudio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Meesleurende oudio klink asof dit van oral rondom jou af kom. Dit werk net met sommige media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Maak oudio realistieser"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Verskuif posisionering van oudio sodat dit natuurliker klink."</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index db86284..beabb5a 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"የዴስክቶፕ ሁነታን በሁለተኛ ደረጃ ማሳያዎች ላይ ለማስገደድ ዳግም ማስነሳት ያስፈልጋል።"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ዳግም አስነሳ"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"በኋላ ዳግም አስነሳ"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"ከባቢያዊ ኦዲዮ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"አስማጭ ኦዲዮ ከአካባቢዎ የመጣ ይመስላል። ከአንዳንድ ሚዲያዎች ጋር ብቻ ይሰራል።"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ኦዲዮን ይበልጥ ትክክለኛ ያድርጉት"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ይበልጥ ተፈጥሯዊ እንዲመስል የድምጽ አቀማመጥን ይቀይሩ።"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index f774987..b9256ca 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -6072,4 +6072,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"يجب إعادة التشغيل لفرض وضع الكمبيوتر المكتبي على الشاشات الثانوية."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"إعادة التشغيل الآن"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"إعادة التشغيل لاحقًا"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"الصوت المكاني"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"الصوت الغامر يبدو وكأنه يأتي من جميع الجهات المحيطة بك. هذه الميزة غير متوافقة مع كل الوسائط."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"جعل الصوت أكثر واقعية"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"تكييف الصوت مع وضعية الرأس لخوض تجربة أكثر واقعية"</string>
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 33392e7..c3e7d81 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -5716,4 +5716,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"গৌণ ডিছপ্লেত ডেস্কটপ ম’ড সক্ষম কৰিবৰ বাবে ৰিবুটৰ প্ৰয়োজন।"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"এতিয়াই ৰিবুট কৰক"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"পাছত ৰিবুট কৰক"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"প্ৰকৃত অভিজ্ঞতা দিয়া অডিঅ’"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ইমাৰ্ছিভ অডিঅ’, এইটো আপোনাৰ চৌপাশৰ আটাইবোৰ দিশৰ পৰা অহা যেন লাগিছে। কেৱল কিছুমান মিডিয়াৰ সৈতে কাম কৰে।"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"অডিঅ’ অধিক বাস্তৱিক কৰক"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"অডিঅ’টো অধিক প্ৰাকৃতিক শুনা পাবলৈ সেইটো স্থান সলনি কৰক।"</string>
 </resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 211251f..6785b0c 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"İkinci dərəcəli displeylərdə masaüstü rejimini məcburi aktiv etmək üçün yenidən başlatma tələb olunur."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"İndi yenidən başladın"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Sonra yeniden başladın"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"3D audio effekti"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"İmmersiv audio ətrafınızdan gələn kimi görünür. Yalnız bəzi medialar ilə işləyir."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Audionu daha real edin"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Audionun yerini dəyişdirin ki, daha təbii səslənsin."</string>
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 573812d..f02a9f1 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -5794,4 +5794,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Morate da restartujete da biste prinudno omogućili režim za računare na sekundarnim ekranima."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Restartuj"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Restartuj kasnije"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Prostorni zvuk"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Realistični zvuk deluje kao da je svuda oko vas. Ovo radi samo sa određenim medijskim sadržajem."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Neka zvuk bude realističniji"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Promenite položaj audio opreme da bi zvučala prirodnije."</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 1c3e3e9..2a8f7c5 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -5885,4 +5885,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Каб прымусова ўключыць на дадатковых дысплэях рэжым працоўнага стала, патрабуецца перазагрузка."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Перазагрузіць зараз"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Перазагрузіць пазней"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Прасторавы гук"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Імерсіўнае аўдыя стварае ўражанне, што гук ідзе адусюль. Працуе толькі з пэўным мультымедыйным змесцівам."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Зрабіце гучанне аўдыя больш рэалістычным"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Перамясціце крыніцу гуку, каб гучанне было больш натуральным."</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 551249c..4268618 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -5718,4 +5718,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"За да се зададе принудително настолният режим на алтернативни дисплеи, се изисква рестартиране."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Рестартиране сега"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Рестартиране по-късно"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Пространствено аудио"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"При всеобхватното аудио звукът сякаш идва отвсякъде около вас. Не работи с всяко мултимедийно съдържание."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Аудиото да звучи по-реалистично"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Промяна на позиционирането на аудиото така, че да звучи по-естествено."</string>
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 53f54ae..f685ba4 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"সেকেন্ডারি ডিসপ্লেতে ডেস্কটপ মোড জোর করে চালানোর জন্য রিবুট করতে হবে।"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"এখনই রিবুট করুন"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"পরে রিবুট করুন"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"স্পেশ্যাল অডিও"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ইমারসিভ অডিও শুনে এমন লাগে যেন আওয়াজ আপনার আশপাশ থেকে আসছে। এটি কয়েকটি মিডিয়াতে ব্যবহার করা যাবে।"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"অডিও আরও বাস্তববাদী করে তুলুন"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"অডিও আরও ন্যাচরাল তৈরি করার জন্য স্থান পরিবর্তন করুন।"</string>
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 57c9edb..08dae6f 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -5794,4 +5794,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Potrebno je ponovno pokretanje da se nametne način rada računara na sekundarnim ekranima."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Ponovo pokreni sada"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Ponovo pokreni kasnije"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Prostorni zvuk"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Uz fokusirani zvuk će vam se činiti da zvuk dolazi sa svih strana. Funkcionira samo s određenim medijima."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Učinite zvuk realističnijim"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Promijenite položaj zvuka da zvuči prirodnije."</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 5cbb224..563a66c 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Cal reiniciar per forçar el mode d\'escriptori en pantalles secundàries."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reinicia ara"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reinicia més tard"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Àudio espacial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Amb l\'àudio immersiu, et donarà la sensació que l\'àudio arriba per totes bandes. Només funciona amb alguns continguts multimèdia."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Fes que l\'àudio sigui més realista"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Canvia la posició de l\'àudio perquè soni més natural."</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 7250dc6..0a0c47f 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -5894,4 +5894,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"K vynucení režimu plochy na sekundárních displejích je vyžadován restart."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Restartovat hned"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Restartovat později"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Prostorový zvuk"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Prostorový zvuk vyvolává dojem, že vychází ze všech stran kolem vás. Funguje jen s některými médii."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Získejte realističtější zvuk"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Posuňte umístění zvuku, aby zněl přirozeněji."</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 8b75c01..93127a1 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Du skal genstarte for at gennemtvinge aktivering af computertilstand på sekundære skærme."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Genstart nu"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Genstart senere"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Rumlig lyd"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Lyden er optimal, når den kan høres lige godt i hele rummet. Fungerer kun sammen med nogle former for medier."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Gør lyden mere realistisk"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Skift lydpositionering, så lyden bliver mere naturlig."</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 49b889d..e2868d7 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -5708,4 +5708,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Damit der Desktop-Modus auf sekundären Bildschirmen erzwungen wird, musst du das Gerät neu starten."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Jetzt neu starten"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Später neu starten"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Raumklang"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Lässt dich in ein Audioerlebnis eintauchen, bei dem der Klang aus allen Richtungen kommt. Funktioniert nicht mit allen Medieninhalten."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Ein natürlicheres Audioerlebnis"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Passt den Sound für einen realistischeren Klang an deine Kopfbewegungen an."</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index b3c0eff..fa6c06a 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -5715,4 +5715,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Απαιτείται επανεκκίνηση για την επιβολή χρήσης της λειτουργίας υπολογιστή σε δευτερεύουσες οθόνες."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Επανεκκίνηση τώρα"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Επανεκκίνηση αργότερα"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Χωρικός ήχος"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Συναρπαστικός ήχος που μοιάζει να έρχεται από κάθε σημείο γύρω σας. Λειτουργεί μόνο με ορισμένο περιεχόμενο μέσων."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Πιο ρεαλιστικός ήχος"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Μετατόπιση θέσης ήχου προκειμένου να ακούγεται πιο φυσικός."</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index fbfe260..e2c9dc1 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -5715,4 +5715,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"A reboot is required to force desktop mode on secondary displays."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reboot now"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reboot later"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Spatial audio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Immersive audio seems like it\'s coming from all around you. Only works with some media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Make audio more realistic"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Shift positioning of audio so that it sounds more natural."</string>
 </resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 753f79f..57b3e49 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -5715,4 +5715,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"A reboot is required to force desktop mode on secondary displays."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reboot now"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reboot later"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Spatial audio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Immersive audio seems like it\'s coming from all around you. Only works with some media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Make audio more realistic"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Shift positioning of audio so that it sounds more natural."</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 5807d6b..0272184 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -5715,4 +5715,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"A reboot is required to force desktop mode on secondary displays."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reboot now"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reboot later"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Spatial audio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Immersive audio seems like it\'s coming from all around you. Only works with some media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Make audio more realistic"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Shift positioning of audio so that it sounds more natural."</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 8c5ae2e..d5cad97 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -5715,4 +5715,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"A reboot is required to force desktop mode on secondary displays."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reboot now"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reboot later"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Spatial audio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Immersive audio seems like it\'s coming from all around you. Only works with some media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Make audio more realistic"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Shift positioning of audio so that it sounds more natural."</string>
 </resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 81f7edc..60b0e1a 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -5701,4 +5701,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‏‎‏‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‎‎A reboot is required to force desktop mode on secondary displays.‎‏‎‎‏‎"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‎‎‏‎‎‏‏‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‎‏‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‎Reboot now‎‏‎‎‏‎"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‎‎‎‏‏‏‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‎‎‎‎Reboot later‎‏‎‎‏‎"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‎‎‏‎‎‎‏‏‎‏‎‎‏‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‏‏‏‏‏‎Spatial audio‎‏‎‎‏‎"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‎‏‎‏‏‎‎‎Immersive audio seems like it\'s coming from all around you. Only works with some media.‎‏‎‎‏‎"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎Make audio more realistic‎‏‎‎‏‎"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‏‏‎‏‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎Shift positioning of audio so it sounds more natural.‎‏‎‎‏‎"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index a27906a..313af0e 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -5717,4 +5717,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Se debe reiniciar para forzar el modo de computadora en las pantallas secundarias."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reiniciar ahora"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar más adelante"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Sonido espacial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"El audio envolvente hace que parezca que el sonido se emite todo a tu alrededor. Solo funciona con ciertos tipos de contenido multimedia."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Haz que el audio sea más realista"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Cambia el posicionamiento del audio para que suene más natural."</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index e2050ef..c516e9a 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Debes reiniciar para forzar el modo de escritorio en pantallas secundarias."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reiniciar ahora"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar más tarde"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Audio espacial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"El sonido envolvente parece que se origina en muchos puntos a tu alrededor. Solo funciona con algunos contenidos multimedia."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Consigue un sonido más realista"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Cambia la posición del audio para que suene más natural."</string>
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index acd222a..b569f41 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -5718,4 +5718,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Töölauarežiimi teisestele ekraanidele sundimiseks on vaja taaskäivitada."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Taaskäivita kohe"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Taaskäivita hiljem"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Ruumiline heli"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Esitatav heli kõlab, nagu ümbritseks see teid. Toimib ainult teatud meediasisu puhul."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Heli loomulikumaks muutmine"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Heli paigutuse muutmine, et see kõlaks loomulikumalt."</string>
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 0d21aea..fa088e7 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Mahaigaineko modua bigarren mailako pantailetan erabiltzera behartzeko, gailua berrabiarazi egin behar da."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Berrabiarazi"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Berrabiarazi geroago"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"360°-ko audioa"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Audio inguratzailearekin, soinua alde guztietatik datorrela ematen du. Multimedia-eduki batzuetan bakarrik funtzionatzen du."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Bihurtu audioa errealistagoa"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Aldatu audioaren posizioa naturalago entzun dadin."</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 5b067af..30bc659 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"برای رفتن به حالت میز کار در نمایشگرهای ثانویه، راه‌اندازی مجدد الزامی است."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"اکنون راه‌اندازی مجدد شود"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"بعداً راه‌اندازی مجدد شود"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"صدای فراگیر"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"صدای سه‌بعدی به‌این صورت است که انگار از دورتادور شما شنیده می‌شود. فقط با بعضی رسانه‌ها سازگار است."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"واقعی‌تر کردن صدا"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"موقعیت صدا را تغییر می‌دهد تا طبیعی‌تر شنیده شود."</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6b0417c..e0e69e8a9 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -5716,4 +5716,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Työpöytätilan pakottaminen toissijaisille näytöille edellyttää uudelleenkäynnistystä."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Käynnistä uudelleen nyt"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Käynnistä uudelleen myöhemmin"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Spatiaalinen audio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Immersiivinen audio tuntuu kuuluvan kaikkialta ympäriltäsi. Ei toimi kaiken median kanssa."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Tee audiosta realistisempaa"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Muuta audion sijaintia, jotta se kuulostaa luonnollisemmalta."</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index a6edef0..4a0f79e 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -5716,4 +5716,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Vous devez redémarrer l\'appareil pour forcer le mode Bureau sur des écrans secondaires."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Redémarrer maintenant"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Redémarrer plus tard"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Son spatialisé"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Le son immersif donne l\'impression d\'émaner tout autour de vous. Fonctionne uniquement avec certains contenus multimédias."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Rendre le son plus réaliste"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Déplacez le positionnement audio pour rendre le son plus naturel."</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 3b88d9d..4166bcb 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Un redémarrage est nécessaire pour forcer le mode bureau sur les écrans secondaires."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Redémarrer maintenant"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Redémarrer plus tard"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Son spatial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Le son immersif semble provenir de toutes les directions. Cette fonctionnalité n\'est disponible qu\'avec certains contenus multimédias."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Rendre le son plus réaliste"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Changez la localisation du son afin qu\'il soit plus naturel."</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 88a6edd..b055f35 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Cómpre reiniciar o dispositivo para forzar o modo de escritorio nas pantallas secundarias."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reiniciar agora"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar máis adiante"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Audio espacial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Coa experiencia de audio envolvente, terás a sensación de que o son chega do teu arredor. Esta función só é compatible con algún contido multimedia."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Facer o audio máis realista"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Cambia a distribución do audio para que soe máis natural."</string>
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 6ac8200..5b27ae4 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ગૌણ ડિસ્પ્લે પર ડેસ્કટૉપ મોડ લાગુ થવાની ફરજ પાડવા માટે રીબૂટ કરવું જરૂરી છે."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"હમણાં રીબૂટ કરો"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"પછીથી રીબૂટ કરો"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"દિશાનુસાર ઑડિયો"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"તલ્લીન કરી દેનારો ઑડિયો જાણે તમારી ચારે તરફ્થી સંભળાતો હોય એમ લાગે છે. માત્ર અમુક મીડિયા કન્ટેન્ટ સાથે જ કામ કરે છે."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ઑડિયોને વધુ વાસ્તવિક બનાવો"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ઑડિયો વધુ સાહજિક રીતે સંભળાય તે માટે તેનું સ્થાન બદલો."</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 6fbc8be..e42bd39 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -5716,4 +5716,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"दूसरे डिसप्ले पर डेस्कटॉप मोड को ज़बरदस्ती चलाने के लिए, डिवाइस को फिर से चालू करना होगा."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"अभी रीबूट (फिर से चालू) करें"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"बाद में रीबूट (फिर से चालू) करें"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"स्पेशल ऑडियो"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"बेहतरीन ऑडियो को सुनकर ऐसा लगता है, जैसे कि आवाज़ आपके आस-पास से आ रही है. यह कुछ मीडिया के साथ ही काम करता है."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ऑडियो को वास्तविक बनाना"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"नैचुरल आवाज़ पाने के लिए, ऑडियो की जगह बदलें."</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 35d2deb..8f31a45 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -5796,4 +5796,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Za prisilno uključivanje načina radne površine na sekundarnim zaslonima potrebno je ponovno pokretanje."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Ponovno pokreni sada"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Ponovno pokreni kasnije"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Prostorni zvuk"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Okružujućim zvukom stvara se dojam da zvuk dopire do vas iz svih smjerova. Radi samo s određenim medijskim sadržajima."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Učini zvuk realističnijim"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Promijenite položaj audiouređaja za prirodniji zvuk."</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 03d5308..d4252fb 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Az asztali mód másodlagos kijelzőkön való kényszerítéséhez újraindításra van szükség."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Újraindítás most"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Újraindítás később"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Térhatású hang"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"A térhatású hangzás jóvoltából a hang olyan, mintha minden irányból érkezne. Csak bizonyos médiatartalmak esetében működik."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Valósághűbb hangzást kaphat"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Az audio helyzetének módosításával természetesebb hangzást biztosít."</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 0472601..d22631b 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Լրացուցիչ էկրաններին համակարգչի ռեժիմը հարկադրաբար միացնելու համար պահանջվում է վերաբեռնում։"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Վերաբեռնել հիմա"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Վերաբեռնել ավելի ուշ"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Տարածական ձայն"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Տարածական ձայնը ձեր շուրջ է հնչում։ Այն աջակցվում է ոչ բոլոր մեդիա ծառայությունների կողմից։"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Ավելի իրական հնչողություն"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Փոխեք աուդիոյի դիրքը, որպեսզի ձայնն ավելի բնական հնչի։"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index fd12a47..ce54edb 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Perlu memulai ulang untuk memaksa mode desktop di layar sekunder."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Mulai ulang sekarang"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Mulai ulang nanti"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Audio spasial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Audio yang imersif seolah-olah berasal dari sekitar Anda. Hanya berfungsi di beberapa media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Jadikan audio terasa lebih realistis"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Menggeser posisi audio agar terdengar lebih natural."</string>
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 76580f7..8fcb8f4 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -5716,4 +5716,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Endurræsingar er krafist til að þvinga skjáborðsstillingu á öðrum skjáum."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Endurræsa núna"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Endurræsa seinna"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Rýmishljóð"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Víðómur hljómar eins og hann sé allt um kring. Virkar aðeins með tilteknu efni."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Gerðu hljóðið raunverulegra"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Hljóðið færist til svo að hljómurinn sé sem eðlilegastur."</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 80fc224..6ddb616 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"È necessario riavviare per forzare la modalità desktop su display secondari."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Riavvia ora"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Riavvia più tardi"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Audio spaziale"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"L\'audio immersivo ti circonda. È supportato soltanto con alcuni contenuti multimediali."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Rendi l\'audio più realistico"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Cambia la posizione dell\'audio per renderlo più naturale."</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 52c93c2..729e146 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -5885,4 +5885,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"צריך להפעיל מחדש כדי לאלץ את הצגת הגרסה למחשב במסכים המשניים."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"להפעיל מחדש עכשיו"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"להפעיל מחדש מאוחר יותר"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"אודיו מרחבי"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"אודיו עשיר גורם לך להרגיש שהצלילים עוטפים אותך. הוא פועל רק עם אמצעי מדיה מסוימים."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"שינוי האודיו למציאותי יותר"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"שינוי המיקום של האודיו לקבלת צליל טבעי יותר."</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 1d47bfe..266b0d4 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"セカンダリ ディスプレイをデスクトップ モードに強制的に切り替えるには、再起動が必要です。"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"今すぐ再起動する"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"後で再起動する"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"空間音声"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"臨場感あふれる音声で包み込まれたように聞こえます。一部のメディアでのみ機能します。"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"音声のリアリティを高める"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"音声の位置をずらして自然に聞こえるようにします。"</string>
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index c7e4f9e..c34c65e 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"მეორეულ ეკრანზე დესკტოპ რეჟიმის იძულებით გასააქტიურებლად საჭიროა გადატვირთვა."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ახლავე გადატვირთვა"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"გადატვირთვა მოგვიანებით"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"სივრცითი აუდიო"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"იმერსიული აუდიო თითქოს მთლიანად თქვენს გარშემო ისმის. მუშაობს მხოლოდ გარკვეულ მედიასთან."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"გახადეთ ხმა უფრო რეალური"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"შეცვალეთ აუდიოს პოზიციონირება, რომ ხმა უფრო ბუნებრივად ისმოდეს."</string>
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 321656e..0911c05 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Қосымша дисплейлерде жұмыс үстелі режимін мәжбүрлеп белсендіру үшін құрылғыны өшіріп қосу қажет."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Қазір өшіріп қосу"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Кейінірек өшіріп қосу"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Көлемді дыбыс"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Иммерсивті дыбыс жан-жағыңыздан естілетіндей әсер береді. Кейбір медиақұрылғыда ғана қолжетімді."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Дыбысты барынша шынайы етіңіз"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Дыбыс барынша жанды шығу үшін оның орнын өзгертіңіз."</string>
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 2c5036b..12d896e 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"តម្រូវឱ្យចាប់ផ្ដើមឡើងវិញ ដើម្បីបង្ខំមុខងារកុំព្យូទ័រនៅលើផ្ទាំងអេក្រង់បន្ទាប់បន្សំ។"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ចាប់ផ្ដើមឡើងវិញ​ឥឡូវនេះ"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"ចាប់​ផ្ដើម​ឡើង​វិញ​ពេល​ក្រោយ"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"សំឡេង​ខ្ទររណ្ដំ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"សំឡេងដ៏ជក់ចិត្តហាក់ដូចជាចេញមកពីជុំវិញខ្លួនអ្នក។ ដំណើរការជាមួយមេឌៀមួយចំនួនប៉ុណ្ណោះ។"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ធ្វើឱ្យសំឡេងកាន់តែមានលក្ខណៈដូចពិតជាក់ស្ដែង"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ប្ដូរទីតាំងសំឡេង ដើម្បីឱ្យសំឡេងកាន់តែមានលក្ខណៈធម្មជាតិ។"</string>
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 89b0d29..06b9960 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ಸೆಕೆಂಡರಿ ಡಿಸ್‌ಪ್ಲೇಗಳಲ್ಲಿ ಡೆಸ್ಕ್‌ಟಾಪ್ ಮೋಡ್ ಅನ್ನು ಬಲವಂತವಾಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲು ರೀಬೂಟ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ಈಗಲೇ ರೀಬೂಟ್ ಮಾಡಿ"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"ನಂತರ ರೀಬೂಟ್ ಮಾಡಿ"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"ಪ್ರಾದೇಶಿಕ ಆಡಿಯೊ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ತಲ್ಲೀನವಾದ ಆಡಿಯೋದ ಅನುಭವವು ನಿಮ್ಮ ಸುತ್ತಮುತ್ತಲಿಂದಲೇ ಬರುತ್ತಿರುವಂತೆ ಭಾಸವಾಗುತ್ತದೆ. ಕೆಲವು ಮೀಡಿಯಾ ಜೊತೆ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ಆಡಿಯೋ ಇನ್ನಷ್ಟು ನೈಜವಾಗಿ ಕೇಳುವಂತೆ ಮಾಡಿ"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ಆಡಿಯೋದ ಸ್ಥಾನವನ್ನು ಬದಲಿಸಿ ಅದರಿಂದ ನೈಜವಾಗಿ ಕೇಳಿಸುತ್ತದೆ."</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index c42e4d3..18916de 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -5707,4 +5707,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"보조 디스플레이에서 데스크톱 모드를 강제 실행하려면 재부팅해야 합니다."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"지금 재부팅"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"나중에 재부팅"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"서라운드 오디오"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"사용자의 주변에서 들리는 것처럼 소리를 재생하는 몰입형 오디오입니다. 일부 미디어에서만 호환됩니다."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"사실적인 오디오"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"소리가 좀 더 자연스럽게 들리도록 사용자의 머리 위치에 따라 오디오 재생을 조정합니다."</string>
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 05cba74..888a10a 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Кошумча экрандарда иш такта режимин мажбурлап иштетүү үчүн өчүрүп-күйгүзүү керек."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Азыр өчүрүп-күйгүзүү"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Кийинчерээк өчүрүп-күйгүзүү"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Мейкиндиктүү аудио"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Сүңгүтүүчү аудио бардык жерден келип жаткандай угулат. Айрым медиа менен гана иштейт."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Аудиону реалдуу угулгандай кылуу"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Аудиону тууралап жайгаштырып, үнү табигый угулгандай кылыңыз."</string>
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index ec76972..ce05862 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ຕ້ອງປິດ​ເປີດ​ໃໝ່ເພື່ອບັງຄັບໂໝດເດັສທັອບຢູ່ໜ້າຈໍທີສອງ."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ປິດ​ເປີດ​ໃໝ່ໃນຕອນນີ້"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"ປິດ​ເປີດ​ໃໝ່ໃນພາຍຫຼັງ"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"ສຽງຮອບທິດທາງ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ສຽງແບບອິມເມີສີບຄືກັບວ່າມັນດັງມາຈາກທຸກທິດອ້ອມຕົວທ່ານ. ໃຊ້ໄດ້ໃນມີເດຍບາງຢ່າງເທົ່ານັ້ນ."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ເຮັດໃຫ້ສຽງສົມຈິງຫຼາຍຂຶ້ນ"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ໃຫ້ຍ້າຍຕຳແໜ່ງສຽງເພື່ອໃຫ້ໄດ້ຍິນເປັນທຳມະຊາດຫຼາຍຂຶ້ນ."</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 96a6578..dc2f3a7 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -5883,4 +5883,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Norint priverstinai įjungti darbalaukio režimą antriniuose ekranuose, būtina paleisti iš naujo."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Paleisti iš naujo dabar"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Paleisti iš naujo vėliau"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Erdvinis garsas"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Įtraukiantis garsas skamba taip, tarsi jo šaltinis būtų visai šalia jūsų. Veikia tik su tam tikromis medijomis."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Kad garsas skambėtų kuo realistiškiau"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Garso sklidimo kryptis perskirtoma, kad skambėtų kuo natūraliau."</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 887bdfb..5537f78 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -5805,4 +5805,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Lai piespiedu kārtā aktivizētu darbvirsmas režīmu sekundārajos displejos, nepieciešama atkārtota palaišana."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Atkārtoti palaist tūlīt"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Atkārtoti palaist vēlāk"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Telpiskais audio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Iekļaujošais audio saturs šķietami ir dzirdams visapkārt. Darbojas tikai noteiktam multivides saturam."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Reālistiskāka audio satura iegūšana"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Mainiet audio pozīciju, lai skaņa būtu dabiskāka."</string>
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index fa8568c..10fd902 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -5717,4 +5717,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Потребно е рестартирање за да се присили режимот на компјутер на секундарни екрани."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Рестартирај сега"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Рестартирај подоцна"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Просторен звук"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Имерзивното аудио звучи како да доаѓа од секаде околу вас. Функционира само со некои аудиовизуелни содржини."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Направете го аудиото пореално"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Поместете ја положбата на аудиото за да звучи поприродно."</string>
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 579bbd1..137138f 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ദ്വിതീയ ഡിസ്പ്ലേകളെ നിർബന്ധിതമായി ഡെസ്ക്ക്ടോപ്പ് മോഡിലാക്കാൻ റീബൂട്ട് ചെയ്യേണ്ടതുണ്ട്."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ഇപ്പോൾ റീബൂട്ട് ചെയ്യുക"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"പിന്നീട് റീബൂട്ട് ചെയ്യുക"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"സ്പേഷ്യൽ ഓഡിയോ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ഇമേഴ്സീവ് ഓഡിയോ നിങ്ങളുടെ ചുറ്റും നിന്ന് വരുന്നതായി തോന്നുന്നു. ചില മീഡിയയിൽ മാത്രം പ്രവർത്തിക്കുന്നു."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ഓഡിയോ കൂടുതൽ സ്വാഭാവികമാക്കുക"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ഓഡിയോ കൂടുതൽ സ്വാഭാവികതയുള്ളതായി തോന്നാൽ അതിന്റെ സ്ഥാനം മാറ്റുക."</string>
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index c3aa810..254f9d7 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Хоёрдогч дэлгэц дээр дэлгэцийн горимыг хүчлэхийн тулд дахин асаах шаардлагатай."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Одоо дахин асаах"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Дараа дахин асаах"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Орон зайн аудио"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Таны эргэн тойрноос гарч буй мэт гайхалтай аудио. Зөвхөн зарим медиатай ажиллана."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Аудиог илүү бодит болгох"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Аудионы байрлалыг шилжүүлснээр илүү төрөлхийн мэт сонсогдоно."</string>
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 29a009d..4f3bbf3 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"दुय्यम डिस्प्लेवर डेस्कटॉप मोडची सक्ती करण्यासाठी, रीबूट करणे आवश्यक आहे."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"आता रीबूट करा"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"नंतर रीबूट करा"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"अवकाशीय ऑडिओ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"वेधक ऑडिओ हा तुमच्या आजूबाजूने येत आहे असे वाटते. फक्त काही मीडियासोबत काम करते."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ऑडिओ आणखी वास्तववादी बनवा"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"आणखी नैसर्गिक वाटण्यासाठी ऑडिओचे स्थान निर्धारण शिफ्ट करा."</string>
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 27754ea..56d48ad 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"But semula diperlukan untuk memaksa mod desktop pada paparan sekunder."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"But semula sekarang"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"But semula kemudian"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Audio ruang"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Audio yang mengasyikkan seolah-olah bunyi audio datang dari sekeliling anda. Hanya berfungsi dengan sesetengah media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Jadikan bunyi audio lebih realistik"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Alihkan kedudukan audio supaya bunyi audio lebih semula jadi."</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 7b041ad..99ad432 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"အရန်ဖန်သားပြင်တွင် ဒက်စ်တော့မုဒ်ကို မဖြစ်မနေ အသုံးပြုရန်အတွက် ပြန်လည်စတင်ရန် လိုအပ်သည်။"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ယခု ပြန်လည်စတင်ရန်"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"နောက်မှ ပြန်လည်စတင်ရန်"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"စပေရှယ် အသံ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"လွှမ်းခြုံသည့်အသံသည် သင့်ပတ်ပတ်လည်မှ လာသည့်ပုံစံမျိုး ဖြစ်သည်။ မီဒီယာအချို့နှင့်သာ သုံးနိုင်သည်။"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"အသံ ပိုသဘာဝကျအောင် လုပ်ရန်"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ပိုသဘာဝကျစေရန် အသံထည့်သွင်းမှုကို ပြောင်းရွှေ့နိုင်သည်။"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 0d1b2c7..e8504d8 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"En omstart kreves for å tvinge skrivebordmodus på sekundære skjermer."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Start på nytt nå"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Start på nytt senere"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Romlig lyd"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Omsluttende lyd høres ut som om den kommer fra alle kanter. Dette fungerer bare med enkelte medier."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Gjør lyd mer realistisk"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Endre plasseringen til lyd, slik at den høres mer naturlig ut."</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 256377a..edc66d8 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"सहायक डिस्प्लेहरूमा डेस्कटप मोड बलपूर्वक लागू गर्न रिबुट गर्नु पर्ने हुन्छ।"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"अहिले नै रिबुट गर्नुहोस्"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"पछि रिबुट गर्नुहोस्"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"स्पाटियल अडियो"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"इमर्सिभ अडियो सुन्दा चारैतिरबाट साउन्ड आएको जस्तै लाग्छ। यो अडियोले केही मिडियामा मात्र काम गर्छ।"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"अडियो अझ यथार्थपरक बनाउनुहोस्"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"अडियोको साउन्ड थप प्राकृतिक बनाउन उक्त अडियोको स्थिति बदल्नुहोस्।"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 105d0a4..4e67cd7 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Je moet opnieuw opstarten om de desktopmodus af te dwingen op secundaire schermen."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Nu opnieuw opstarten"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Later opnieuw opstarten"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Ruimtelijke audio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Ruimtelijke audio lijkt van overal om je heen te komen. Werkt alleen met bepaalde media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Audio realistischer maken"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Verschuif de positionering van audio zodat deze natuurlijker klinkt."</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index b30a0c4..2d2b6c1 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ସେକେଣ୍ଡାରୀ ଡିସପ୍ଲେରେ ଡେସ୍କଟପ ମୋଡକୁ ବାଧ୍ୟତାମୂଳକ ଭାବେ ଚାଲୁ କରିବା ପାଇଁ ରିବୁଟ କରିବା ଆବଶ୍ୟକ।"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ବର୍ତ୍ତମାନ ରିବୁଟ କରନ୍ତୁ"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"ପରେ ରିବୁଟ କରନ୍ତୁ"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"ସ୍ପେସିଅଲ ଅଡିଓ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ଇମରସିଭ ଅଡିଓ ଆପଣଙ୍କ ଚାରିପାଖରୁ ଆସୁଥିବା ପରି ଲାଗେ। କେବଳ କିଛି ମିଡିଆରେ କାମ କରେ।"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ଅଡିଓକୁ ଅଧିକ ବାସ୍ତବିକ କରନ୍ତୁ"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ଅଡିଓର ସାଉଣ୍ଡକୁ ଅଧିକ ପ୍ରାକୃତିକ କରିବା ପାଇଁ ଏହାର ସ୍ଥିତି ପରିବର୍ତ୍ତନ କରନ୍ତୁ।"</string>
 </resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 011c7a8..a4c2ec4 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ਸੈਕੰਡਰੀ ਡਿਸਪਲੇਆਂ \'ਤੇ ਡੈਸਕਟਾਪ ਮੋਡ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਚਾਲੂ ਕਰਨ ਲਈ ਰੀਬੂਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ਹੁਣੇ ਰੀਬੂਟ ਕਰੋ"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"ਬਾਅਦ ਵਿੱਚ ਰੀਬੂਟ ਕਰੋ"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"ਸਥਾਨ-ਅਨੁਕੂਲ ਆਡੀਓ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ਇਮਰਸਿਵ ਆਡੀਓ ਇੰਝ ਲੱਗਦੀ ਹੈ ਕਿ ਇਹ ਤੁਹਾਡੇ ਆਲੇ-ਦੁਆਲੇ ਤੋਂ ਆ ਰਹੀ ਹੈ। ਸਿਰਫ਼ ਕੁਝ ਮੀਡੀਆ ਨਾਲ ਹੀ ਕੰਮ ਕਰਦਾ ਹੈ।"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ਆਡੀਓ ਨੂੰ ਜ਼ਿਆਦਾ ਵਾਸਤਵਿਕ ਬਣਾਓ"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ਆਡੀਓ ਦੀ ਸਥਿਤੀ ਬਦਲੋ ਤਾਂ ਜੋ ਇਹ ਵਧੇਰੇ ਕੁਦਰਤੀ ਹੋਵੇ।"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 54d0900..3cb390d 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -5894,4 +5894,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Wymuszenie wersji na komputery na dodatkowych wyświetlaczach wymaga ponownego uruchomienia."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Uruchom ponownie teraz"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Uruchom ponownie później"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Dźwięk przestrzenny"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Dźwięk immersyjny brzmi, jakby rozlegał się wokół Ciebie. Działa tylko w przypadku niektórych multimediów."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Zadbaj o realistyczny dźwięk"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Zmień pozycjonowanie dźwięku, aby brzmiał bardziej naturalnie."</string>
 </resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 349926c..b6ff537 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -5706,4 +5706,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"É necessário reiniciar o dispositivo para forçar o modo área de trabalho em telas secundárias."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reiniciar agora"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar mais tarde"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Áudio espacial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"O áudio imersivo é aquele que parece que vem de todos os lados. Ele só funciona com alguns tipos de mídia."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Deixar o áudio mais realista"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Mude posição do áudio para que o som fique mais natural."</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index b2bd8cb..5747373 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -5715,4 +5715,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"É necessário reiniciar para forçar o modo de ambiente de trabalho em ecrãs secundários."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reiniciar agora"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar mais tarde"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Áudio espacial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"O áudio envolvente dá a sensação de que o som provém de todas as direções. Funciona apenas com alguns conteúdos multimédia."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Faça com que o som soe de forma mais realista"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Mude o posicionamento do áudio para que soe mais natural."</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 349926c..b6ff537 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -5706,4 +5706,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"É necessário reiniciar o dispositivo para forçar o modo área de trabalho em telas secundárias."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reiniciar agora"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reiniciar mais tarde"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Áudio espacial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"O áudio imersivo é aquele que parece que vem de todos os lados. Ele só funciona com alguns tipos de mídia."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Deixar o áudio mais realista"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Mude posição do áudio para que o som fique mais natural."</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index f23528f..5ddd04c 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -5796,4 +5796,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Este nevoie de o repornire pentru a impune modul computer pe ecranele secundare."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reporniți acum"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reporniți mai târziu"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Sunet spațial"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Pare că sunetul captivant vă învăluie. Funcționează doar cu anumite tipuri de conținut media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Obțineți un sunet mai realist"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Schimbați poziția dispozitivului audio pentru un sunet mai natural."</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 6ea5cc7..9ff891e 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -5882,4 +5882,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Чтобы принудительно включить режим рабочего стола на дополнительных экранах, требуется перезагрузка."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Перезагрузить сейчас"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Перезагрузить позже"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Пространственный звук"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Звук со всех сторон, который создает эффект присутствия. Поддерживается не для всего медиаконтента."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Более реалистичное звучание"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Сделать звучание более естественным"</string>
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 532a715..c066a9b 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ද්විතීයික සංදර්ශකවල ඩෙස්ක්ටොප් ප්‍රකාරය බල කිරීමට නැවත පණ ගැන්වීමක් අවශ්‍ය වේ."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"දැන් නැවත පණ ගන්වන්න"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"පසුව නැවත පණ ගන්වන්න"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"අවකාශීය ශ්‍රව්‍ය"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ගිල්වුම් ශ්‍රව්‍යය ඔබ අවට සැම තැනකින්ම එන බව පෙනේ. සමහර මාධ්‍ය සමග පමණක් ක්‍රියා කරයි."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ශ්‍රව්‍යය වඩාත් යථාර්ථවාදී බවට පත් කරන්න"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"එය වඩාත් ස්වභාවික වන ලෙස ශ්‍රව්‍යයෙහි ස්ථානගත කිරීම මාරු කරන්න."</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 33c3414..91c171b 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -5884,4 +5884,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Vynútenie režimu pracovnej plochy na sekundárnych obrazovkách vyžaduje reštartovanie."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Reštartovať"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Reštartovať neskôr"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Priestorový zvuk"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Pohlcujúci zvuk je taký, pri ktorom sa zdá, že vychádza zo všetkých strán. Funguje iba s niektorými médiami."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Získajte realistickejší zvuk"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Upravte rozmiestnenie audiozariadení, aby bol zvuk prirodzenejší."</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 409cb28..83039c0 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -5884,4 +5884,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Če želite vsiliti namizni način na sekundarnih zaslonih, morate znova zagnati napravo."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Znova zaženi"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Znova zaženi pozneje"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Prostorski zvok"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Prostorski zvok ustvari vtis, da prihaja od vsepovsod okoli vas. Deluje samo z nekaterimi predstavnostmi."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Bolj realističen zvok"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Nastavite lahko sledenje zvoku, da zveni bolj naravno."</string>
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index e5536b2..545ea0d 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -5716,4 +5716,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Kërkohet të rindizet për të detyruar modalitetin e desktopit në ekranet dytësore."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Rindize tani"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Rindize më vonë"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Audio hapësinore"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Audioja përfshirëse duket sikur vjen nga kudo përreth teje. Funksionon vetëm me disa media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Bëje audion më reale"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Ndrysho pozicionimin e audios në mënyrë që të ketë tinguj sa më natyralë."</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 43a9d90..04b2afd 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -5794,4 +5794,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Морате да рестартујете да бисте принудно омогућили режим за рачунаре на секундарним екранима."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Рестартуј"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Рестартуј касније"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Просторни звук"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Реалистични звук делује као да је свуда око вас. Ово ради само са одређеним медијским садржајем."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Нека звук буде реалистичнији"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Промените положај аудио опреме да би звучала природније."</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index be8a59f..6c10680 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -5716,4 +5716,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Du måste starta om enheten om du vill tvinga fram datorläge på sekundära skärmar."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Starta om nu"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Starta om senare"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Rumsligt ljud"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Uppslukande ljud som verkar omge dig. Fungerar inte med all media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Gör ljudet mer realistiskt"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Ändra ljudet efter huvudets position så det låter naturligare."</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 0b2a4aa..ecf6828 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -5706,4 +5706,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Itahitaji kuwashwa tena ili kuwezesha hali ya kompyuta ya mezani kwenye skrini nyingine."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Washa tena sasa"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Washa tena baadaye"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Sauti bora"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Sauti murua inaonekana kama inatoka pande zote. Inafanya kazi na baadhi ya programu tu."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Fanya sauti iwe halisi zaidi"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Hamisha nafasi ya sauti ili isikike kuwa ya asili zaidi."</string>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index a5e4093..1dfd334 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"இரண்டாம் நிலைத் திரையில் டெஸ்க்டாப் பயன்முறையைப் பயன்படுத்த, சாதனத்தை மீண்டும் தொடங்குதல் அவசியம்."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"இப்போதே மீண்டும் தொடங்கு"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"பிறகு மீண்டும் தொடங்கு"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"சுற்றிலும் கேட்கும் ஆடியோ"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"உங்களைச் சுற்றி கேட்பதைப் போன்று ஆடியோ தத்ரூபமாக இருக்கும். சில மீடியாக்களில் மட்டுமே செயல்படும்."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ஆடியோவை மேலும் துல்லியமாக்குதல்"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ஆடியோவின் நிலையை மாற்றி அதை இயல்பாக ஒலிக்கச் செய்யும்."</string>
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index e7b1c03..c9167cc 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ద్వితీయ డిస్‌ప్లేలలో డెస్క్‌టాప్ మోడ్‌ను బలవంతంగా ఆన్ చేయడానికి రీబూట్ చేయడం అవసరం."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ఇప్పుడే రీబూట్ చేయండి"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"తర్వాత రీబూట్ చేయండి"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"మైమరపించే ఆడియో"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"లీనమయ్యే ఆడియో మీ చుట్టుపక్కల నుండి వస్తున్నట్లుగా ఉంది. కొంత మీడియాతో మాత్రమే పని చేస్తుంది."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ఆడియోను మరింత సహజమైనదిగా చేయండి"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ఆడియో తాలూకు స్థానాన్ని షిఫ్ట్ చేయండి, తద్వారా ఇది మరింత సహజంగా అనిపిస్తుంది."</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index fa73214..0e891bc 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"ต้องรีบูตเพื่อบังคับให้จอแสดงผลสำรองใช้โหมดเดสก์ท็อป"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"รีบูตเลย"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"รีบูตภายหลัง"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"เสียงรอบทิศทาง"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"เสียงแบบกระหึ่มจะให้ความรู้สึกเหมือนกับว่าเสียงมาจากรอบตัวคุณ โดยจะใช้ได้ในบางสื่อเท่านั้น"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"ทำให้เสียงสมจริงยิ่งขึ้น"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"ปรับเปลี่ยนตำแหน่งของเสียงเพื่อให้ฟังได้อย่างเป็นธรรมชาติมากขึ้น"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 715ad6f..f4f799b 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -5704,4 +5704,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Kinakailangang mag-reboot para sapilitang mailapat ang desktop mode sa mga pangalawang display."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Mag-reboot ngayon"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Mag-reboot sa ibang pagkakataon"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Spatial audio"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Immersive na audio na parang nanggagaling sa buong paligid mo. Gumagana lang sa ilang media."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Gawing mas makatotohanan ang audio"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Palitan ang pagpoposisyon ng audio para mas natural ang tunog nito."</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 1dde86b..d51edcd 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -5716,4 +5716,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"İkincil ekranlarda masaüstü modunu zorlamak için yeniden başlatma gerekir."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Şimdi yeniden başlat"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Sonra yeniden başlat"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Üç boyutlu ses"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Üç boyutlu seste duyduklarınız etrafınızdan geliyormuş gibi hissettirir. Bu özellik yalnızca bazı medyalarla çalışır."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Sesi daha gerçekçi hale getirme"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Sesin çıktığı yeri değiştirerek kulağa daha doğal gelmesini sağlayın."</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index b1f9da8..7584560 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -5883,4 +5883,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Щоб примусово застосувати режим робочого столу на додаткових екранах, перезапустіть пристрій."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Перезапустити зараз"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Перезапустити пізніше"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Просторовий звук"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Звук настільки реалістичний, що, здається, він лунає звідусіль. Функція підтримує лише певні типи медіафайлів."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Зробіть звук реалістичнішим"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Змініть позиціонування джерела звуку, щоб він звучав природніше."</string>
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index d300a67..d96c619 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"سیکنڈری ڈسپلیز پر ڈیسک ٹاپ موڈ فورس کرنے کے لیے ریبوٹ درکار ہے۔"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"ابھی ریبوٹ کریں"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"بعد میں ریبوٹ کریں"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"اسپیشیئل آڈیو"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"ایسا لگتا ہے کہ آپ کی چاروں طرف سے عمیق آڈیو آ رہی ہے۔ صرف چند میڈیا کے ساتھ کام کرتی ہے۔"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"آڈیو کو مزید حقیقی بنائیں"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"آڈیو کی آواز کو مزید فطری بنانے کے لیے اس کی پوزیشن شفٹ کریں۔"</string>
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 67abfbc..9a60f37 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -5706,4 +5706,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Ikkilamchi displeylar majburan ish stoli rejimida ishlashi uchun qayta ishga tushirish zarur."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Hozir qayta ishga tushirish"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Keyinroq qayta ishga tushirish"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Qamrovli ovoz"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Keng qamrovli audio bilan tovushlar atrofingizda yangraydi. Faqat ayrim media bilan ishlaydi."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Audioni yanada real qilish"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Audio yanada tabiiy yangrashi uchun joylashuvini oʻzgartiring."</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index cb0ae55..e5f9095 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -5707,4 +5707,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Cần phải khởi động lại để buộc chạy chế độ máy tính trên màn hình phụ."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Khởi động lại ngay"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Khởi động lại sau"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Âm thanh không gian"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Mang lại trải nghiệm sống động như thể âm thanh ở xung quanh bạn. Chỉ hoạt động với một số nội dung nghe nhìn."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Tăng độ chân thực của âm thanh"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Di chuyển vị trí phát âm thanh để âm thanh nghe tự nhiên hơn."</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index a438fc7..497e35a 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -5705,4 +5705,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"您必须重新启动设备,才能在辅助屏幕上强制使用桌面模式。"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"立即重新启动"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"稍后重新启动"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"空间音频"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"沉浸式音频能带来身临其境的听觉体验。仅适用于部分媒体。"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"让音频更逼真"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"调整音频定位,让声音更自然。"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 4374aa2..c17af2b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -5708,4 +5708,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"您需要重新開機,才能在次要螢幕上強制執行桌面模式。"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"立即重新開機"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"稍後重新開機"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"情景音效"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"為您帶來仿如置身其中的音響體驗。此功能只支援部分媒體。"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"讓音效更真實"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"調整音效位置,讓聲音聽起來更自然。"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 0397145..477b6e7 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -5707,4 +5707,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"必須重新啟動才能在次要螢幕上強制執行桌面模式。"</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"立即重新啟動"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"稍後重新啟動"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"空間音效"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"聲音層次豐富,讓你有身歷其境的感覺。這項功能僅支援部分媒體。"</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"讓音效更真實"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"調整音效位置,讓聲音聽起來更自然。"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index bf89bf8..bc00cc9 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -5706,4 +5706,8 @@
     <string name="reboot_dialog_force_desktop_mode" msgid="2021839270403432948">"Ukuqalisa kabusha kuyadingeka ukuphoqelela imodi yedeskithophu kuzibonisi zesibili."</string>
     <string name="reboot_dialog_reboot_now" msgid="235616015988522355">"Qalisa manje"</string>
     <string name="reboot_dialog_reboot_later" msgid="4261717094186904568">"Qalisa ngokuhamba kwesikhathi"</string>
+    <string name="bluetooth_details_spatial_audio_title" msgid="6183752635162309599">"Umsindo wokulalelwayo"</string>
+    <string name="bluetooth_details_spatial_audio_summary" msgid="4125762902654875180">"Umsindo ogxilile kubonakala sengathi uvela ezindaweni ezikuzungezile. Isebenza ngemidiya ethile kuphela."</string>
+    <string name="bluetooth_details_head_tracking_title" msgid="8021583493584244700">"Yenza umsindo ube ngokoqobo kakhudlwana"</string>
+    <string name="bluetooth_details_head_tracking_summary" msgid="2093665685644696866">"Shintsha isimo somsindo ukuze uzwakale ungokwemvelo."</string>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 039997b..2234441 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -98,10 +98,10 @@
     <string name="font_size_make_larger_desc">Make larger</string>
 
     <!-- Auto rotate switchbar title. [CHAR_LIMIT=NONE] -->
-    <string name="auto_rotate_settings_primary_switch_title">Use Auto-rotate</string>
+    <string name="auto_rotate_settings_primary_switch_title">Use auto-rotate</string>
 
     <!-- Disclaimer for camera based rotate [CHAR_LIMIT=NONE] -->
-    <string name="smart_rotate_text_headline">Face Detection uses the front-facing camera to improve Auto-rotate accuracy. Images are never stored or sent to Google.</string>
+    <string name="smart_rotate_text_headline">Face Detection uses the front-facing camera to improve auto-rotate accuracy. Images are never stored or sent to Google.</string>
     <string name="font_size_preview_text_headline">Sample text</string>
     <string name="font_size_preview_text_title"
             translation_description="Title text in sample text used to illustrate how the currently selected font size will appear to the user. NOTE: Translate manually. No not adopt any copyrighted material for translation.">
@@ -2909,7 +2909,11 @@
     <!-- Sound & display settings screen, face-based rotation check box label [CHAR LIMIT=30] -->
     <string name="auto_rotate_option_face_based">On - Face-based</string>
     <!-- SmartAutoRotatePreferenceFragment settings screen, face-based rotation switch label [CHAR LIMIT=30] -->
-    <string name="auto_rotate_switch_face_based">Enable Face Detection</string>
+    <string name="auto_rotate_switch_face_based">Face Detection</string>
+    <!-- Preference summary to enable auto rotate[CHAR_LIMIT=NONE]-->
+    <string name="auto_rotate_screen_summary">Automatically adjust the screen orientation when you move your phone between portrait and landscape</string>
+    <!-- Accessibility description for auto rotate learn more link [CHAR LIMIT=NONE] -->
+    <string name="auto_rotate_link_a11y">Learn more about auto-rotate</string>
 
     <!-- Display settings screen, screen resolution settings title [CHAR LIMIT=30] -->
     <string name="screen_resolution_title">Screen resolution</string>
@@ -8553,6 +8557,24 @@
     <!-- Setting summary for controlling how caption text display in real time [CHAR LIMIT=NONE]-->
     <string name="live_caption_summary">Automatically caption media</string>
 
+    <!-- Output device type for the phone speaker that is available for spatializer effect. [CHAR LIMIT=NONE]-->
+    <string name="spatial_audio_speaker">Phone speaker</string>
+
+    <!-- Output device type for the wired headphones that is available for spatializer effect. [CHAR LIMIT=NONE]-->
+    <string name="spatial_audio_wired_headphones">Wired headphones</string>
+
+    <!-- Sound: Summary for the spatializer effect. [CHAR LIMIT=NONE]-->
+    <string name="spatial_audio_text">Spatial Audio creates immersive sound that seems like it’s coming from all around you. Only works with some media.</string>
+
+    <!-- Sound: Summary for the Spatial audio setting when it is off. [CHAR LIMIT=NONE]-->
+    <string name="spatial_summary_off">Off</string>
+
+    <!-- Sound: Summary for the Spatial audio setting when it is on with one output device enabled. [CHAR LIMIT=NONE]-->
+    <string name="spatial_summary_on_one">On / <xliff:g id="output device" example="Phone speaker">%1$s</xliff:g></string>
+
+    <!-- Sound: Summary for the Spatial audio setting when it is on with two output devices enabled. [CHAR LIMIT=NONE]-->
+    <string name="spatial_summary_on_two">On / <xliff:g id="output device" example="Phone speaker">%1$s</xliff:g> and <xliff:g id="output device" example="Wired headphones">%2$s</xliff:g></string>
+
     <!-- Sound: Summary for the Do not Disturb option that describes how many automatic rules (schedules) are enabled [CHAR LIMIT=NONE]-->
     <string name="zen_mode_settings_schedules_summary">
         {count, plural,
@@ -12394,6 +12416,9 @@
     <!-- Help URI, battery saver page [DO NOT TRANSLATE] -->
     <string name="help_url_battery_saver_settings" translatable="false"></string>
 
+    <!-- Help URI, auto rotate page [DO NOT TRANSLATE] -->
+    <string name="help_url_auto_rotate_settings" translatable="false"></string>
+
     <!-- Help URI, app usage page [DO NOT TRANSLATE] -->
     <string name="help_url_app_usage_settings" translatable="false"></string>
 
diff --git a/res/xml/app_locale_details.xml b/res/xml/app_locale_details.xml
index 40ca582..05e72ee 100644
--- a/res/xml/app_locale_details.xml
+++ b/res/xml/app_locale_details.xml
@@ -18,6 +18,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/app_locale_picker_title">
+
     <com.android.settingslib.widget.LayoutPreference
         android:key="app_locale_description"
         android:layout="@layout/app_locale_details_description"
@@ -26,19 +27,4 @@
         settings:allowDividerBelow="true"
         settings:searchable="false"/>
 
-    <PreferenceCategory
-        android:key="category_key_suggested_languages"
-        android:title="@string/suggested_app_locales_title" >
-
-        <com.android.settingslib.widget.RadioButtonPreference
-            android:key="system_default_locale"
-            android:title="@string/preference_of_system_locale_title"
-            android:order="-10000"/>
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="category_key_all_languages"
-        android:title="@string/all_supported_app_locales_title" />
-
 </PreferenceScreen>
diff --git a/res/xml/auto_rotate_settings.xml b/res/xml/auto_rotate_settings.xml
index 0c120d6..adfb377 100644
--- a/res/xml/auto_rotate_settings.xml
+++ b/res/xml/auto_rotate_settings.xml
@@ -17,9 +17,19 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:title="@string/accelerometer_title" >
 
+    <com.android.settingslib.widget.TopIntroPreference
+        android:title="@string/auto_rotate_screen_summary"
+        app:allowDividerAbove="false"/>
+
+    <com.android.settingslib.widget.MainSwitchPreference
+        android:key="auto_rotate_main_switch"
+        android:title="@string/auto_rotate_settings_primary_switch_title"
+        settings:controller="com.android.settings.display.AutoRotateSwitchBarController"/>
+
     <SwitchPreference
         android:key="auto_rotate_switch"
         android:title="@string/auto_rotate_settings_primary_switch_title"
@@ -48,8 +58,10 @@
         settings:controller="com.android.settings.display.SmartAutoRotateController" />
 
     <com.android.settingslib.widget.FooterPreference
-        android:icon="@drawable/ic_privacy_shield_24dp"
-        android:selectable="false"
-        settings:searchable="false" />
+        android:order="100"
+        android:key="auto_rotate_footer_preference"
+        android:title="@string/smart_rotate_text_headline"
+        android:selectable="true"
+        settings:searchable="false"/>
 
 </PreferenceScreen>
diff --git a/res/xml/double_tap_screen_settings.xml b/res/xml/double_tap_screen_settings.xml
index 1a277c3..f982331 100644
--- a/res/xml/double_tap_screen_settings.xml
+++ b/res/xml/double_tap_screen_settings.xml
@@ -20,18 +20,15 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:title="@string/ambient_display_title">
 
-    <com.android.settings.widget.VideoPreference
+    <com.android.settingslib.widget.IllustrationPreference
         android:key="gesture_double_tap_screen_video"
-        app:animation="@raw/gesture_ambient_tap"
-        app:preview="@drawable/gesture_ambient_tap"
-        app:controller="com.android.settings.widget.VideoPreferenceController" />
+        app:lottie_rawRes="@raw/lottie_tap_to_check_phone" />
 
     <SwitchPreference
         android:key="gesture_double_tap_screen"
         android:title="@string/ambient_display_title"
         android:summary="@string/ambient_display_summary"
         app:keywords="@string/keywords_gesture"
-        app:controller="com.android.settings.gestures.DoubleTapScreenPreferenceController"
-        app:allowDividerAbove="true" />
+        app:controller="com.android.settings.gestures.DoubleTapScreenPreferenceController" />
 
 </PreferenceScreen>
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index d79594c..f25b6ec 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -111,6 +111,15 @@
         settings:keywords="@string/sound_settings"/>
 
     <!-- Live Caption -110 and Now Playing -105-->
+
+    <!-- Spatial audio -->
+    <Preference
+        android:key="spatial_audio_summary"
+        android:title="@string/spatial_audio_title"
+        android:fragment="com.android.settings.notification.SpatialAudioSettings"
+        android:order="-107"
+        settings:controller="com.android.settings.notification.SpatialAudioParentPreferenceController"/>
+
     <Preference
         android:key="media_controls_summary"
         android:title="@string/media_controls_title"
@@ -154,13 +163,6 @@
         android:ringtoneType="alarm"
         android:order="-60"/>
 
-    <!-- Spatial audio -->
-    <SwitchPreference
-        android:key="spatial_audio"
-        android:title="@string/spatial_audio_title"
-        android:order="-55"
-        settings:controller="com.android.settings.notification.SpatialAudioPreferenceController"/>
-
     <!-- Dial pad tones -->
     <SwitchPreference
         android:key="dial_pad_tones"
diff --git a/res/xml/spatial_audio_settings.xml b/res/xml/spatial_audio_settings.xml
new file mode 100644
index 0000000..da33986
--- /dev/null
+++ b/res/xml/spatial_audio_settings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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/spatial_audio_title">
+
+    <com.android.settingslib.widget.TopIntroPreference
+        android:key="spatial_audio_top_intro"
+        android:title="@string/spatial_audio_text"
+        settings:searchable="false"/>
+
+    <SwitchPreference
+        android:key="spatial_audio"
+        android:title="@string/spatial_audio_speaker"
+        settings:controller="com.android.settings.notification.SpatialAudioPreferenceController"/>
+
+    <SwitchPreference
+        android:key="spatial_audio_wired_headphones"
+        android:title="@string/spatial_audio_wired_headphones"
+        settings:controller="com.android.settings.notification.SpatialAudioWiredHeadphonesController"/>
+
+</PreferenceScreen>
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 57d7d10..10a4771 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -108,8 +108,6 @@
     public static class InputMethodAndSubtypeEnablerActivity extends SettingsActivity { /* empty */ }
     public static class SpellCheckersSettingsActivity extends SettingsActivity { /* empty */ }
     public static class LocalePickerActivity extends SettingsActivity { /* empty */ }
-    /** Activity for the App locale details settings. */
-    public static class AppLocalePickerActivity extends SettingsActivity { /* empty */ }
     public static class LanguageAndInputSettingsActivity extends SettingsActivity { /* empty */ }
     public static class UserDictionarySettingsActivity extends SettingsActivity { /* empty */ }
     public static class DarkThemeSettingsActivity extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/applications/AppLocaleUtil.java b/src/com/android/settings/applications/AppLocaleUtil.java
index 7004377..5a667c0 100644
--- a/src/com/android/settings/applications/AppLocaleUtil.java
+++ b/src/com/android/settings/applications/AppLocaleUtil.java
@@ -42,9 +42,15 @@
             @NonNull Context context,
             @NonNull String packageName,
             @NonNull List<ResolveInfo> infos) {
-        return !isDisallowedPackage(context, packageName)
-                && !isSignedWithPlatformKey(context, packageName)
-                && hasLauncherEntry(packageName, infos);
+        boolean isDisallowedPackage = isDisallowedPackage(context, packageName);
+        boolean hasLauncherEntry = hasLauncherEntry(packageName, infos);
+        boolean isSignedWithPlatformKey = isSignedWithPlatformKey(context, packageName);
+        Log.i(TAG, "Can display preference - [" + packageName + "] :"
+                + " isDisallowedPackage : " + isDisallowedPackage
+                + " / isSignedWithPlatformKey : " + isSignedWithPlatformKey
+                + " / hasLauncherEntry : " + hasLauncherEntry);
+
+        return !isDisallowedPackage && !isSignedWithPlatformKey && hasLauncherEntry;
     }
 
     private static boolean isDisallowedPackage(Context context, String packageName) {
diff --git a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
index d50a67b..5f75b6b 100644
--- a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
+++ b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
@@ -22,73 +22,64 @@
 import android.app.LocaleManager;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
-import android.content.res.Resources;
 import android.os.Bundle;
 import android.os.LocaleList;
-import android.telephony.TelephonyManager;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import androidx.annotation.VisibleForTesting;
-import androidx.appcompat.app.AlertDialog;
 import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
 
 import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
 import com.android.settings.applications.AppInfoBase;
 import com.android.settings.widget.EntityHeaderController;
 import com.android.settingslib.applications.AppUtils;
 import com.android.settingslib.widget.LayoutPreference;
-import com.android.settingslib.widget.RadioButtonPreference;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
 import java.util.Locale;
 
 /**
- * A fragment to show the current app locale info and help the user to select the expected locale.
+ * TODO(b/223503670): Implement the unittest.
+ * A fragment to show the current app locale info.
  */
-public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreference.OnClickListener {
+public class AppLocaleDetails extends SettingsPreferenceFragment {
     private static final String TAG = "AppLocaleDetails";
 
-    private static final String CATEGORY_KEY_SUGGESTED_LANGUAGES =
-            "category_key_suggested_languages";
-    private static final String CATEGORY_KEY_ALL_LANGUAGES =
-            "category_key_all_languages";
     private static final String KEY_APP_DESCRIPTION = "app_locale_description";
-    @VisibleForTesting
-    static final String KEY_SYSTEM_DEFAULT_LOCALE = "system_default_locale";
 
     private boolean mCreated = false;
-    @VisibleForTesting
-    AppLocaleDetailsHelper mAppLocaleDetailsHelper;
-
-    private PreferenceGroup mGroupOfSuggestedLocales;
-    private PreferenceGroup mGroupOfSupportedLocales;
+    private String mPackageName;
     private LayoutPreference mPrefOfDescription;
-    private RadioButtonPreference mDefaultPreference;
+
+    /**
+     * Create a instance of AppLocaleDetails.
+     * @param packageName Indicates which application need to show the locale picker.
+     */
+    public static AppLocaleDetails newInstance(String packageName) {
+        AppLocaleDetails appLocaleDetails = new AppLocaleDetails();
+        Bundle bundle = new Bundle();
+        bundle.putString(AppInfoBase.ARG_PACKAGE_NAME, packageName);
+        appLocaleDetails.setArguments(bundle);
+        return appLocaleDetails;
+    }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.app_locale_details);
-        mAppLocaleDetailsHelper = new AppLocaleDetailsHelper(getContext(), mPackageName);
+        Bundle bundle = getArguments();
+        mPackageName = bundle.getString(AppInfoBase.ARG_PACKAGE_NAME, "");
 
-        mGroupOfSuggestedLocales =
-                getPreferenceScreen().findPreference(CATEGORY_KEY_SUGGESTED_LANGUAGES);
-        mGroupOfSupportedLocales =
-                getPreferenceScreen().findPreference(CATEGORY_KEY_ALL_LANGUAGES);
-        mPrefOfDescription = getPreferenceScreen().findPreference(KEY_APP_DESCRIPTION);
-
-        mDefaultPreference = (RadioButtonPreference) getPreferenceScreen()
-                .findPreference(KEY_SYSTEM_DEFAULT_LOCALE);
-        mDefaultPreference.setOnClickListener(this);
+        if (mPackageName.isEmpty()) {
+            Log.d(TAG, "No package name.");
+            finish();
+        }
     }
 
     // Override here so we don't have an empty screen
@@ -96,8 +87,8 @@
     public View onCreateView(LayoutInflater inflater,
             ViewGroup container,
             Bundle savedInstanceState) {
-        // if we don't have a package info, show a page saying this is unsupported
-        if (mPackageInfo == null) {
+        // if we don't have a package, show a page saying this is unsupported
+        if (mPackageName.isEmpty()) {
             return inflater.inflate(R.layout.manage_applications_apps_unsupported, null);
         }
         return super.onCreateView(inflater, container, savedInstanceState);
@@ -105,46 +96,19 @@
 
     @Override
     public void onResume() {
-        // Update Locales first, before refresh ui.
-        mAppLocaleDetailsHelper.handleAllLocalesData();
-        super.onResume();
-        mDefaultPreference.setSummary(Locale.getDefault().getDisplayName(Locale.getDefault()));
-    }
-
-    @Override
-    protected boolean refreshUi() {
         refreshUiInternal();
-        return true;
+        super.onResume();
     }
 
-    @VisibleForTesting
-    void refreshUiInternal() {
-        if (mAppLocaleDetailsHelper.getSupportedLocales().isEmpty()) {
+    private void refreshUiInternal() {
+        if (!hasAppSupportedLocales()) {
             Log.d(TAG, "No supported language.");
-            mGroupOfSuggestedLocales.setVisible(false);
-            mGroupOfSupportedLocales.setVisible(false);
             mPrefOfDescription.setVisible(true);
             TextView description = (TextView) mPrefOfDescription.findViewById(R.id.description);
             description.setText(getContext().getString(R.string.no_multiple_language_supported,
                     Locale.getDefault().getDisplayName(Locale.getDefault())));
             return;
         }
-        resetLocalePreferences();
-        Locale appLocale = AppLocaleDetailsHelper.getAppDefaultLocale(getContext(), mPackageName);
-        // Sets up default locale preference.
-        mGroupOfSuggestedLocales.addPreference(mDefaultPreference);
-        mDefaultPreference.setChecked(appLocale == null);
-        // Sets up suggested locales of per app.
-        setLanguagesPreference(mGroupOfSuggestedLocales,
-                mAppLocaleDetailsHelper.getSuggestedLocales(), appLocale);
-        // Sets up supported locales of per app.
-        setLanguagesPreference(mGroupOfSupportedLocales,
-                mAppLocaleDetailsHelper.getSupportedLocales(), appLocale);
-    }
-
-    private void resetLocalePreferences() {
-        mGroupOfSuggestedLocales.removeAll();
-        mGroupOfSupportedLocales.removeAll();
     }
 
     @Override
@@ -153,22 +117,6 @@
     }
 
     @Override
-    protected AlertDialog createDialog(int id, int errorCode) {
-        return null;
-    }
-
-    @Override
-    public void onRadioButtonClicked(RadioButtonPreference pref) {
-        String key = pref.getKey();
-        if (KEY_SYSTEM_DEFAULT_LOCALE.equals(key)) {
-            mAppLocaleDetailsHelper.setAppDefaultLocale(LocaleList.forLanguageTags(""));
-        } else {
-            mAppLocaleDetailsHelper.setAppDefaultLocale(key);
-        }
-        refreshUi();
-    }
-
-    @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         if (mCreated) {
@@ -176,32 +124,98 @@
             return;
         }
         mCreated = true;
-        if (mPackageInfo == null) {
+        if (mPackageName == null) {
             return;
         }
         // Creates a head icon button of app on this page.
         final Activity activity = getActivity();
+        ApplicationInfo applicationInfo =
+                getApplicationInfo(mPackageName, getContext().getUserId());
         final Preference pref = EntityHeaderController
                 .newInstance(activity, this, null /* header */)
                 .setRecyclerView(getListView(), getSettingsLifecycle())
-                .setIcon(Utils.getBadgedIcon(getContext(), mPackageInfo.applicationInfo))
-                .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
-                .setIsInstantApp(AppUtils.isInstant(mPackageInfo.applicationInfo))
+                .setIcon(Utils.getBadgedIcon(getContext(), applicationInfo))
+                .setLabel(applicationInfo.loadLabel(getContext().getPackageManager()))
+                .setIsInstantApp(AppUtils.isInstant(applicationInfo))
                 .setPackageName(mPackageName)
-                .setUid(mPackageInfo.applicationInfo.uid)
+                .setUid(applicationInfo.uid)
                 .setHasAppInfoLink(true)
                 .setButtonActions(ActionType.ACTION_NONE, ActionType.ACTION_NONE)
                 .done(activity, getPrefContext());
         getPreferenceScreen().addPreference(pref);
     }
 
+    private ApplicationInfo getApplicationInfo(String packageName, int userId) {
+        ApplicationInfo applicationInfo;
+        try {
+            applicationInfo = getContext().getPackageManager()
+                    .getApplicationInfoAsUser(packageName, /* flags= */ 0, userId);
+            return applicationInfo;
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.w(TAG, "Application info not found for: " + packageName);
+            return null;
+        }
+    }
+
+    private boolean hasAppSupportedLocales() {
+        LocaleList localeList = getPackageLocales();
+        return (localeList != null && localeList.size() > 0) || getAssetLocales().length > 0;
+    }
+
+    private String[] getAssetLocales() {
+        try {
+            PackageManager packageManager = getContext().getPackageManager();
+            String[] locales = packageManager.getResourcesForApplication(
+                    packageManager.getPackageInfo(mPackageName, PackageManager.MATCH_ALL)
+                            .applicationInfo).getAssets().getNonSystemLocales();
+            if (locales == null) {
+                Log.i(TAG, "[" + mPackageName + "] locales are null.");
+            }
+            if (locales.length <= 0) {
+                Log.i(TAG, "[" + mPackageName + "] locales length is 0.");
+                return new String[0];
+            }
+            String locale = locales[0];
+            Log.i(TAG, "First asset locale - [" + mPackageName + "] " + locale);
+            return locales;
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.w(TAG, "Can not found the package name : " + mPackageName + " / " + e);
+        }
+        return new String[0];
+    }
+
+    private LocaleList getPackageLocales() {
+        try {
+            LocaleConfig localeConfig =
+                    new LocaleConfig(getContext().createPackageContext(mPackageName, 0));
+            if (localeConfig.getStatus() == LocaleConfig.STATUS_SUCCESS) {
+                return localeConfig.getSupportedLocales();
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.w(TAG, "Can not found the package name : " + mPackageName + " / " + e);
+        }
+        return null;
+    }
+
+    /** Gets per app's default locale */
+    public static Locale getAppDefaultLocale(Context context, String packageName) {
+        LocaleManager localeManager = context.getSystemService(LocaleManager.class);
+        try {
+            LocaleList localeList = (localeManager == null)
+                    ? null : localeManager.getApplicationLocales(packageName);
+            return localeList == null ? null : localeList.get(0);
+        } catch (IllegalArgumentException e) {
+            Log.w(TAG, "package name : " + packageName + " is not correct. " + e);
+        }
+        return null;
+    }
+
     /**
      * TODO (b209962418) Do a performance test to low end device.
      * @return Return the summary to show the current app's language.
      */
     public static CharSequence getSummary(Context context, String packageName) {
-        Locale appLocale =
-                AppLocaleDetailsHelper.getAppDefaultLocale(context, packageName);
+        Locale appLocale = getAppDefaultLocale(context, packageName);
         if (appLocale == null) {
             Locale systemLocale = Locale.getDefault();
             return context.getString(R.string.preference_of_system_locale_summary,
@@ -210,217 +224,4 @@
             return appLocale.getDisplayName(appLocale);
         }
     }
-
-    private void setLanguagesPreference(PreferenceGroup group,
-            Collection<Locale> locales, Locale appLocale) {
-        if (locales == null) {
-            return;
-        }
-
-        for (Locale locale : locales) {
-            if (locale == null) {
-                continue;
-            }
-
-            RadioButtonPreference pref = new RadioButtonPreference(getContext());
-            pref.setTitle(locale.getDisplayName(locale));
-            pref.setKey(locale.toLanguageTag());
-            // Will never be checked if appLocale is null
-            // aka if there is no per-app locale
-            pref.setChecked(locale.equals(appLocale));
-            pref.setOnClickListener(this);
-            group.addPreference(pref);
-        }
-    }
-
-    @VisibleForTesting
-    static class AppLocaleDetailsHelper {
-        private String mPackageName;
-        private Context mContext;
-        private TelephonyManager mTelephonyManager;
-        private LocaleManager mLocaleManager;
-
-        private Collection<Locale> mProcessedSuggestedLocales = new ArrayList<>();
-        private Collection<Locale> mProcessedSupportedLocales = new ArrayList<>();
-
-        private Collection<Locale> mAppSupportedLocales = new ArrayList<>();
-
-        AppLocaleDetailsHelper(Context context, String packageName) {
-            mContext = context;
-            mPackageName = packageName;
-            mTelephonyManager = context.getSystemService(TelephonyManager.class);
-            mLocaleManager = context.getSystemService(LocaleManager.class);
-            mAppSupportedLocales = getAppSupportedLocales();
-        }
-
-        /** Handle suggested and supported locales for UI display. */
-        public void handleAllLocalesData() {
-            clearLocalesData();
-            handleSuggestedLocales();
-            handleSupportedLocales();
-        }
-
-        /** Gets suggested locales in the app. */
-        public Collection<Locale> getSuggestedLocales() {
-            return mProcessedSuggestedLocales;
-        }
-
-        /** Gets supported locales in the app. */
-        public Collection<Locale> getSupportedLocales() {
-            return mProcessedSupportedLocales;
-        }
-
-        @VisibleForTesting
-        void handleSuggestedLocales() {
-            Locale appLocale = getAppDefaultLocale(mContext, mPackageName);
-            // 1st locale in suggested languages group.
-            for (Locale supportedlocale : mAppSupportedLocales) {
-                if (compareLocale(supportedlocale, appLocale)) {
-                    mProcessedSuggestedLocales.add(appLocale);
-                    break;
-                }
-            }
-
-            // 2nd and 3rd locale in suggested languages group.
-            String simCountry = mTelephonyManager.getSimCountryIso().toUpperCase(Locale.US);
-            String networkCountry = mTelephonyManager.getNetworkCountryIso().toUpperCase(Locale.US);
-            mAppSupportedLocales.forEach(supportedlocale -> {
-                String localeCountry = supportedlocale.getCountry().toUpperCase(Locale.US);
-                if (!compareLocale(supportedlocale, appLocale)
-                        && isCountrySuggestedLocale(localeCountry, simCountry, networkCountry)) {
-                    mProcessedSuggestedLocales.add(supportedlocale);
-                }
-            });
-
-            // Other locales in suggested languages group.
-            Collection<Locale> supportedSystemLocales = new HashSet<>();
-            getCurrentSystemLocales().forEach(systemLocale -> {
-                mAppSupportedLocales.forEach(supportedLocale -> {
-                    if (compareLocale(systemLocale, supportedLocale)) {
-                        supportedSystemLocales.add(supportedLocale);
-                    }
-                });
-            });
-            supportedSystemLocales.removeAll(mProcessedSuggestedLocales);
-            mProcessedSuggestedLocales.addAll(supportedSystemLocales);
-        }
-
-        @VisibleForTesting
-        static boolean compareLocale(Locale source, Locale target) {
-            if (source == null && target == null) {
-                return true;
-            } else if (source != null && target != null) {
-                return LocaleList.matchesLanguageAndScript(source, target);
-            } else {
-                return false;
-            }
-        }
-
-        private static boolean isCountrySuggestedLocale(String localeCountry,
-                String simCountry,
-                String networkCountry) {
-            return ((!simCountry.isEmpty() && simCountry.equals(localeCountry))
-                    || (!networkCountry.isEmpty() && networkCountry.equals(localeCountry)));
-        }
-
-        @VisibleForTesting
-        void handleSupportedLocales() {
-            mProcessedSupportedLocales.addAll(mAppSupportedLocales);
-
-            if (mProcessedSuggestedLocales != null || !mProcessedSuggestedLocales.isEmpty()) {
-                mProcessedSuggestedLocales.retainAll(mProcessedSupportedLocales);
-                mProcessedSupportedLocales.removeAll(mProcessedSuggestedLocales);
-            }
-        }
-
-        private void clearLocalesData() {
-            mProcessedSuggestedLocales.clear();
-            mProcessedSupportedLocales.clear();
-        }
-
-        private Collection<Locale> getAppSupportedLocales() {
-            Collection<Locale> appSupportedLocales = new ArrayList<>();
-            LocaleList localeList = getPackageLocales();
-
-            if (localeList != null && localeList.size() > 0) {
-                for (int i = 0; i < localeList.size(); i++) {
-                    appSupportedLocales.add(localeList.get(i));
-                }
-            } else {
-                String[] languages = getAssetLocales();
-                for (String language : languages) {
-                    appSupportedLocales.add(Locale.forLanguageTag(language));
-                }
-            }
-            return appSupportedLocales;
-        }
-
-        /** Gets per app's default locale */
-        public static Locale getAppDefaultLocale(Context context, String packageName) {
-            LocaleManager localeManager = context.getSystemService(LocaleManager.class);
-            try {
-                LocaleList localeList = (localeManager == null)
-                        ? null : localeManager.getApplicationLocales(packageName);
-                return localeList == null ? null : localeList.get(0);
-            } catch (IllegalArgumentException e) {
-                Log.w(TAG, "package name : " + packageName + " is not correct. " + e);
-            }
-            return null;
-        }
-
-        /** Sets per app's default language to system. */
-        public void setAppDefaultLocale(String languageTag) {
-            if (languageTag.isEmpty()) {
-                Log.w(TAG, "[setAppDefaultLocale] No language tag.");
-                return;
-            }
-            setAppDefaultLocale(LocaleList.forLanguageTags(languageTag));
-        }
-
-        /** Sets per app's default language to system. */
-        public void setAppDefaultLocale(LocaleList localeList) {
-            if (mLocaleManager == null) {
-                Log.w(TAG, "LocaleManager is null, and cannot set the app locale up.");
-                return;
-            }
-            mLocaleManager.setApplicationLocales(mPackageName, localeList);
-        }
-
-        @VisibleForTesting
-        Collection<Locale> getCurrentSystemLocales() {
-            LocaleList localeList = Resources.getSystem().getConfiguration().getLocales();
-            Collection<Locale> systemLocales = new ArrayList<>();
-            for (int i = 0; i < localeList.size(); i++) {
-                systemLocales.add(localeList.get(i));
-            }
-            return systemLocales;
-        }
-
-        @VisibleForTesting
-        String[] getAssetLocales() {
-            try {
-                PackageManager packageManager = mContext.getPackageManager();
-                return packageManager.getResourcesForApplication(
-                        packageManager.getPackageInfo(mPackageName, PackageManager.MATCH_ALL)
-                                .applicationInfo).getAssets().getNonSystemLocales();
-            } catch (PackageManager.NameNotFoundException e) {
-                Log.w(TAG, "Can not found the package name : " + mPackageName + " / " + e);
-            }
-            return new String[0];
-        }
-
-        @VisibleForTesting
-        LocaleList getPackageLocales() {
-            try {
-                LocaleConfig localeConfig =
-                        new LocaleConfig(mContext.createPackageContext(mPackageName, 0));
-                if (localeConfig.getStatus() == LocaleConfig.STATUS_SUCCESS) {
-                    return localeConfig.getSupportedLocales();
-                }
-            } catch (PackageManager.NameNotFoundException e) {
-                Log.w(TAG, "Can not found the package name : " + mPackageName + " / " + e);
-            }
-            return null;
-        }
-    }
 }
diff --git a/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java b/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java
index eaa2ec0..fb15eae 100644
--- a/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppLocalePreferenceController.java
@@ -17,14 +17,20 @@
 package com.android.settings.applications.appinfo;
 
 import android.content.Context;
+import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.text.TextUtils;
 import android.util.FeatureFlagUtils;
+import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
 
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.applications.AppLocaleUtil;
+import com.android.settings.localepicker.AppLocalePickerActivity;
 
 import java.util.List;
 
@@ -59,6 +65,23 @@
         return AppLocaleDetails.getSummary(mContext, mParent.getAppEntry().info.packageName);
     }
 
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (TextUtils.equals(preference.getKey(), mPreferenceKey)) {
+            return false;
+        }
+
+        if (mParent != null) {
+            Intent intent = new Intent(mContext, AppLocalePickerActivity.class);
+            intent.setData(Uri.parse("package:" + mParent.getAppEntry().info.packageName));
+            mContext.startActivity(intent);
+            return true;
+        } else {
+            Log.d(TAG, "mParent is null");
+            return false;
+        }
+    }
+
     @VisibleForTesting
     boolean canDisplayLocaleUi() {
         return AppLocaleUtil
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index a6ce6fb..b8a0d22 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -120,6 +120,7 @@
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
 import com.android.settings.fuelgauge.HighPowerDetail;
+import com.android.settings.localepicker.AppLocalePickerActivity;
 import com.android.settings.notification.ConfigureNotificationSettings;
 import com.android.settings.notification.NotificationBackend;
 import com.android.settings.notification.app.AppNotificationSettings;
@@ -635,8 +636,9 @@
                         R.string.media_management_apps_title);
                 break;
             case LIST_TYPE_APPS_LOCALE:
-                startAppInfoFragment(AppLocaleDetails.class,
-                        R.string.app_locale_picker_title);
+                Intent intent = new Intent(getContext(), AppLocalePickerActivity.class);
+                intent.setData(Uri.parse("package:" + mCurrentPkgName));
+                startActivity(intent);
                 break;
             // TODO: Figure out if there is a way where we can spin up the profile's settings
             // process ahead of time, to avoid a long load of data when user clicks on a managed
diff --git a/src/com/android/settings/display/AutoRotateSwitchBarController.java b/src/com/android/settings/display/AutoRotateSwitchBarController.java
index 48dedfd..d76104a 100644
--- a/src/com/android/settings/display/AutoRotateSwitchBarController.java
+++ b/src/com/android/settings/display/AutoRotateSwitchBarController.java
@@ -18,86 +18,78 @@
 
 import android.app.settings.SettingsEnums;
 import android.content.Context;
-import android.widget.Switch;
 
 import com.android.internal.view.RotationPolicy;
+import com.android.settings.R;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.SettingsMainSwitchBar;
+import com.android.settings.widget.SettingsMainSwitchPreferenceController;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
-import com.android.settingslib.widget.OnMainSwitchChangeListener;
 
 /**
- * The switch controller for auto-rotate.
+ * The main switch controller for auto-rotate.
  */
-public class AutoRotateSwitchBarController implements OnMainSwitchChangeListener,
+public class AutoRotateSwitchBarController extends SettingsMainSwitchPreferenceController implements
         LifecycleObserver, OnStart, OnStop {
 
-    private final SettingsMainSwitchBar mSwitchBar;
-    private final Context mContext;
-    private boolean mValidListener;
     private final MetricsFeatureProvider mMetricsFeatureProvider;
+    private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
 
-    public AutoRotateSwitchBarController(Context context, SettingsMainSwitchBar switchBar,
-            Lifecycle lifecycle) {
-        mSwitchBar = switchBar;
-        mContext = context;
+    public AutoRotateSwitchBarController(Context context, String key) {
+        super(context, key);
         mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
-        if (lifecycle != null) {
-            lifecycle.addObserver(this);
-        }
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return RotationPolicy.isRotationLockToggleVisible(mContext)
+                && !DeviceStateAutoRotationHelper.isDeviceStateRotationEnabled(mContext)
+                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
     @Override
     public void onStart() {
-        if (!mValidListener) {
-            mSwitchBar.addOnSwitchChangeListener(this);
-            mValidListener = true;
+        if (mRotationPolicyListener == null) {
+            mRotationPolicyListener = new RotationPolicy.RotationPolicyListener() {
+                @Override
+                public void onChange() {
+                    if (mSwitchPreference != null) {
+                        updateState(mSwitchPreference);
+                    }
+                }
+            };
         }
-        onChange();
+        RotationPolicy.registerRotationPolicyListener(mContext,
+                mRotationPolicyListener);
     }
 
     @Override
     public void onStop() {
-        if (mValidListener) {
-            mSwitchBar.removeOnSwitchChangeListener(this);
-            mValidListener = false;
+        if (mRotationPolicyListener != null) {
+            RotationPolicy.unregisterRotationPolicyListener(mContext, mRotationPolicyListener);
         }
     }
 
-    /**
-     * Listens to the state change of the rotation primary switch.
-     */
     @Override
-    public void onSwitchChanged(Switch switchView, boolean isChecked) {
-        setRotationLock(isChecked);
+    public boolean isChecked() {
+        return !RotationPolicy.isRotationLocked(mContext);
     }
 
-
-    protected void onChange() {
-        final boolean isEnabled = !RotationPolicy.isRotationLocked(mContext);
-        if (isEnabled != mSwitchBar.isChecked()) {
-            // set listener to null so that that code below doesn't trigger onCheckedChanged()
-            if (mValidListener) {
-                mSwitchBar.removeOnSwitchChangeListener(this);
-            }
-            mSwitchBar.setChecked(isEnabled);
-            if (mValidListener) {
-                mSwitchBar.addOnSwitchChangeListener(this);
-            }
-        }
-    }
-
-    private boolean setRotationLock(boolean isChecked) {
+    @Override
+    public boolean setChecked(boolean isChecked) {
         final boolean isLocked = !isChecked;
         mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ROTATE_ROTATE_MASTER_TOGGLE,
-                isChecked);
+                isLocked);
         RotationPolicy.setRotationLock(mContext, isLocked);
         return true;
     }
 
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_display;
+    }
+
 }
 
diff --git a/src/com/android/settings/display/SmartAutoRotatePreferenceFragment.java b/src/com/android/settings/display/SmartAutoRotatePreferenceFragment.java
index 9fda03c..8a6120c 100644
--- a/src/com/android/settings/display/SmartAutoRotatePreferenceFragment.java
+++ b/src/com/android/settings/display/SmartAutoRotatePreferenceFragment.java
@@ -20,7 +20,7 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.os.Bundle;
-import android.text.Html;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -28,12 +28,11 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
-import com.android.internal.view.RotationPolicy;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.widget.SettingsMainSwitchBar;
+import com.android.settingslib.HelpUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.search.Indexable;
 import com.android.settingslib.search.SearchIndexable;
@@ -51,9 +50,11 @@
 
     private static final String TAG = "SmartAutoRotatePreferenceFragment";
 
-    private RotationPolicy.RotationPolicyListener mRotationPolicyListener;
-    private AutoRotateSwitchBarController mSwitchBarController;
-    @VisibleForTesting static final String AUTO_ROTATE_SWITCH_PREFERENCE_ID = "auto_rotate_switch";
+    @VisibleForTesting
+    static final String AUTO_ROTATE_MAIN_SWITCH_PREFERENCE_KEY = "auto_rotate_main_switch";
+    @VisibleForTesting
+    static final String AUTO_ROTATE_SWITCH_PREFERENCE_KEY = "auto_rotate_switch";
+    private static final String KEY_FOOTER_PREFERENCE = "auto_rotate_footer_preference";
 
     @Override
     protected int getPreferenceScreenResId() {
@@ -71,6 +72,13 @@
     }
 
     @Override
+    public void onStart() {
+        super.onStart();
+        setupFooter();
+    }
+
+
+    @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         return DeviceStateAutoRotationHelper.createPreferenceControllers(context);
     }
@@ -81,10 +89,8 @@
         final View view = super.onCreateView(inflater, container, savedInstanceState);
         final SettingsActivity activity = (SettingsActivity) getActivity();
         createHeader(activity);
-        final Preference footerPreference = findPreference(FooterPreference.KEY_FOOTER);
+        final Preference footerPreference = findPreference(KEY_FOOTER_PREFERENCE);
         if (footerPreference != null) {
-            footerPreference.setTitle(Html.fromHtml(getString(R.string.smart_rotate_text_headline),
-                    Html.FROM_HTML_MODE_COMPACT));
             footerPreference.setVisible(isRotationResolverServiceAvailable(activity));
         }
         return view;
@@ -95,39 +101,9 @@
         boolean deviceStateRotationEnabled =
                 DeviceStateAutoRotationHelper.isDeviceStateRotationEnabled(activity);
         if (isRotationResolverServiceAvailable(activity) && !deviceStateRotationEnabled) {
-            final SettingsMainSwitchBar switchBar = activity.getSwitchBar();
-            switchBar.setTitle(
-                    getContext().getString(R.string.auto_rotate_settings_primary_switch_title));
-            switchBar.show();
-            mSwitchBarController = new AutoRotateSwitchBarController(activity, switchBar,
-                    getSettingsLifecycle());
-            findPreference(AUTO_ROTATE_SWITCH_PREFERENCE_ID).setVisible(false);
-        }
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        if (mRotationPolicyListener == null) {
-            mRotationPolicyListener = new RotationPolicy.RotationPolicyListener() {
-                @Override
-                public void onChange() {
-                    if (mSwitchBarController != null) {
-                        mSwitchBarController.onChange();
-                    }
-                }
-            };
-        }
-        RotationPolicy.registerRotationPolicyListener(getPrefContext(),
-                mRotationPolicyListener);
-    }
-
-    @Override
-    public void onPause() {
-        super.onPause();
-        if (mRotationPolicyListener != null) {
-            RotationPolicy.unregisterRotationPolicyListener(getPrefContext(),
-                    mRotationPolicyListener);
+            findPreference(AUTO_ROTATE_SWITCH_PREFERENCE_KEY).setVisible(false);
+        } else {
+            findPreference(AUTO_ROTATE_MAIN_SWITCH_PREFERENCE_KEY).setVisible(false);
         }
     }
 
@@ -141,6 +117,35 @@
         return TAG;
     }
 
+    @Override
+    public int getHelpResource() {
+        return R.string.help_url_auto_rotate_settings;
+    }
+
+    // Updates the footer for this page.
+    @VisibleForTesting
+    void setupFooter() {
+        final String mHelpUri = getString(getHelpResource());
+        if (!TextUtils.isEmpty(mHelpUri)) {
+            addHelpLink();
+        }
+    }
+
+    // Changes the text to include a learn more link if the link is defined.
+    @VisibleForTesting
+    void addHelpLink() {
+        final FooterPreference pref = findPreference(KEY_FOOTER_PREFERENCE);
+        if (pref != null) {
+            pref.setSelectable(false);
+            pref.setLearnMoreAction(v -> {
+                startActivityForResult(HelpUtils.getHelpIntent(getContext(),
+                        getString(getHelpResource()),
+                        /*backupContext=*/ ""), /*requestCode=*/ 0);
+            });
+            pref.setLearnMoreContentDescription(getString(R.string.auto_rotate_link_a11y));
+        }
+    }
+
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider(R.xml.auto_rotate_settings) {
 
diff --git a/src/com/android/settings/localepicker/AppLocalePickerActivity.java b/src/com/android/settings/localepicker/AppLocalePickerActivity.java
new file mode 100644
index 0000000..80d3336
--- /dev/null
+++ b/src/com/android/settings/localepicker/AppLocalePickerActivity.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.localepicker;
+
+import android.app.FragmentTransaction;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.MenuItem;
+
+import com.android.internal.app.LocalePickerWithRegion;
+import com.android.internal.app.LocaleStore;
+import com.android.settings.R;
+import com.android.settings.applications.appinfo.AppLocaleDetails;
+import com.android.settings.core.SettingsBaseActivity;
+
+/**
+ * TODO(b/223503670): Add unit test for AppLocalePickerActivity.
+ * A activity to show the locale picker and information page.
+ */
+public class AppLocalePickerActivity extends SettingsBaseActivity
+        implements LocalePickerWithRegion.LocaleSelectedListener {
+    private static final String TAG = AppLocalePickerActivity.class.getSimpleName();
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        String packageName = getIntent().getData().getSchemeSpecificPart();
+        if (TextUtils.isEmpty(packageName)) {
+            Log.d(TAG, "There is no package name.");
+            finish();
+            return;
+        }
+
+        getActionBar().setDisplayHomeAsUpEnabled(true);
+        setContentView(R.layout.app_locale_picker);
+
+        // Create App locale info detail part.
+        AppLocaleDetails appLocaleDetails = AppLocaleDetails.newInstance(packageName);
+        getSupportFragmentManager()
+                .beginTransaction()
+                .replace(R.id.app_locale_detail, appLocaleDetails)
+                .commit();
+
+        // Create Locale picker part.
+        final LocalePickerWithRegion selector = LocalePickerWithRegion.createLanguagePicker(
+                this, AppLocalePickerActivity.this, false /* translate only */);
+        // LocalePickerWithRegion use android.app.ListFragment. Thus, it can not user
+        // getSupportFragmentManager() to add this into container.
+        getFragmentManager()
+                .beginTransaction()
+                .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+                .replace(R.id.app_locale_picker_with_region, selector)
+                .commit();
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            handleBackPressed();
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
+    public void onBackPressed() {
+        handleBackPressed();
+    }
+
+    private void handleBackPressed() {
+        if (getFragmentManager().getBackStackEntryCount() > 1) {
+            super.onBackPressed();
+        } else {
+            setResult(RESULT_CANCELED);
+            finish();
+        }
+    }
+
+    @Override
+    public void onLocaleSelected(LocaleStore.LocaleInfo locale) {
+        // TODO When locale is selected, this shall set per app language here.
+        finish();
+    }
+}
+
diff --git a/src/com/android/settings/notification/SpatialAudioParentPreferenceController.java b/src/com/android/settings/notification/SpatialAudioParentPreferenceController.java
new file mode 100644
index 0000000..52eea54
--- /dev/null
+++ b/src/com/android/settings/notification/SpatialAudioParentPreferenceController.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.Spatializer;
+import android.util.Log;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+
+/**
+ * Parent menu summary of the Spatial audio settings
+ */
+public class SpatialAudioParentPreferenceController extends BasePreferenceController {
+    private static final String TAG = "SpatialAudioSetting";
+    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+    private final Spatializer mSpatializer;
+    private SpatialAudioPreferenceController mSpatialAudioPreferenceController;
+    private SpatialAudioWiredHeadphonesController mSpatialAudioWiredHeadphonesController;
+
+    public SpatialAudioParentPreferenceController(Context context, String key) {
+        super(context, key);
+        AudioManager audioManager = context.getSystemService(AudioManager.class);
+        mSpatializer = audioManager.getSpatializer();
+        mSpatialAudioPreferenceController = new SpatialAudioPreferenceController(context);
+        mSpatialAudioWiredHeadphonesController = new SpatialAudioWiredHeadphonesController(context);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        int level = mSpatializer.getImmersiveAudioLevel();
+        if (DEBUG) {
+            Log.d(TAG, "spatialization level: " + level);
+        }
+        return level == Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE
+                ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
+    }
+
+    @Override
+    public CharSequence getSummary() {
+        boolean speakerOn = mSpatialAudioPreferenceController.isAvailable()
+                && mSpatialAudioWiredHeadphonesController.isChecked();
+        boolean wiredHeadphonesOn = mSpatialAudioWiredHeadphonesController.isAvailable()
+                && mSpatialAudioWiredHeadphonesController.isChecked();
+        if (speakerOn && wiredHeadphonesOn) {
+            return mContext.getString(R.string.spatial_summary_on_two,
+                    mContext.getString(R.string.spatial_audio_speaker),
+                    mContext.getString(R.string.spatial_audio_wired_headphones));
+        } else if (speakerOn) {
+            return mContext.getString(R.string.spatial_summary_on_one,
+                    mContext.getString(R.string.spatial_audio_speaker));
+        } else if (wiredHeadphonesOn) {
+            return mContext.getString(R.string.spatial_summary_on_one,
+                    mContext.getString(R.string.spatial_audio_wired_headphones));
+        } else {
+            return mContext.getString(R.string.spatial_summary_off);
+        }
+    }
+}
diff --git a/src/com/android/settings/notification/SpatialAudioPreferenceController.java b/src/com/android/settings/notification/SpatialAudioPreferenceController.java
index 7bca516..b9a0776 100644
--- a/src/com/android/settings/notification/SpatialAudioPreferenceController.java
+++ b/src/com/android/settings/notification/SpatialAudioPreferenceController.java
@@ -17,46 +17,61 @@
 package com.android.settings.notification;
 
 import android.content.Context;
+import android.media.AudioDeviceAttributes;
+import android.media.AudioDeviceInfo;
 import android.media.AudioManager;
 import android.media.Spatializer;
 
+import androidx.annotation.VisibleForTesting;
+
 import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
 
 /**
- * The controller of the Spatial audio setting in the SoundSettings.
+ * The controller of the Spatial audio setting for speaker in the SoundSettings.
  */
 public class SpatialAudioPreferenceController extends TogglePreferenceController {
 
     private static final String KEY_SPATIAL_AUDIO = "spatial_audio";
 
     private final Spatializer mSpatializer;
+    @VisibleForTesting
+    final AudioDeviceAttributes mSpeaker = new AudioDeviceAttributes(
+            AudioDeviceAttributes.ROLE_OUTPUT, AudioDeviceInfo.TYPE_BUILTIN_SPEAKER, ""
+    );
 
     public SpatialAudioPreferenceController(Context context) {
-        super(context, KEY_SPATIAL_AUDIO);
+        this(context, KEY_SPATIAL_AUDIO);
+    }
+
+    public SpatialAudioPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
         AudioManager audioManager = context.getSystemService(AudioManager.class);
         mSpatializer = audioManager.getSpatializer();
     }
 
     @Override
     public int getAvailabilityStatus() {
-        return mSpatializer.getImmersiveAudioLevel() == Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE
-                ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
+        return mSpatializer.isAvailableForDevice(mSpeaker) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
     @Override
     public boolean isChecked() {
-        return mSpatializer.isEnabled();
+        return mSpatializer.getCompatibleAudioDevices().contains(mSpeaker);
     }
 
     @Override
     public boolean setChecked(boolean isChecked) {
-        mSpatializer.setEnabled(isChecked);
+        if (isChecked) {
+            mSpatializer.addCompatibleAudioDevice(mSpeaker);
+        } else {
+            mSpatializer.removeCompatibleAudioDevice(mSpeaker);
+        }
         return isChecked == isChecked();
     }
 
     @Override
     public int getSliceHighlightMenuRes() {
-        return R.string.menu_key_notifications;
+        return R.string.menu_key_sound;
     }
 }
diff --git a/src/com/android/settings/notification/SpatialAudioSettings.java b/src/com/android/settings/notification/SpatialAudioSettings.java
new file mode 100644
index 0000000..eb68e87
--- /dev/null
+++ b/src/com/android/settings/notification/SpatialAudioSettings.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.search.SearchIndexable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Spatial audio settings located in the sound menu
+ */
+@SearchIndexable
+public class SpatialAudioSettings extends DashboardFragment {
+
+    private static final String TAG = "SpatialAudioSettings";
+
+    @Override
+    public int getMetricsCategory() {
+        return SettingsEnums.SETTINGS_SPATIAL_AUDIO;
+    }
+
+    @Override
+    protected int getPreferenceScreenResId() {
+        return R.xml.spatial_audio_settings;
+    }
+
+    @Override
+    protected String getLogTag() {
+        return TAG;
+    }
+
+    private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
+        final List<AbstractPreferenceController> controllers = new ArrayList<>();
+        controllers.add(new SpatialAudioPreferenceController(context));
+        controllers.add(new SpatialAudioWiredHeadphonesController(context));
+        return controllers;
+    }
+
+    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider(R.xml.spatial_audio_settings) {
+                @Override
+                public List<AbstractPreferenceController> createPreferenceControllers(
+                        Context context) {
+                    return buildPreferenceControllers(context);
+                }
+            };
+}
diff --git a/src/com/android/settings/notification/SpatialAudioWiredHeadphonesController.java b/src/com/android/settings/notification/SpatialAudioWiredHeadphonesController.java
new file mode 100644
index 0000000..cd723f9
--- /dev/null
+++ b/src/com/android/settings/notification/SpatialAudioWiredHeadphonesController.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.Context;
+import android.media.AudioDeviceAttributes;
+import android.media.AudioDeviceInfo;
+import android.media.AudioManager;
+import android.media.Spatializer;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settings.R;
+import com.android.settings.core.TogglePreferenceController;
+
+/**
+ * The controller of the Spatial audio setting for wired headphones in the SoundSettings.
+ */
+public class SpatialAudioWiredHeadphonesController extends TogglePreferenceController {
+
+    private static final String KEY_SPATIAL_AUDIO_WIRED_HEADPHONES =
+            "spatial_audio_wired_headphones";
+
+    private final Spatializer mSpatializer;
+    @VisibleForTesting
+    final AudioDeviceAttributes mWiredHeadphones = new AudioDeviceAttributes(
+            AudioDeviceAttributes.ROLE_OUTPUT, AudioDeviceInfo.TYPE_WIRED_HEADPHONES, ""
+    );
+
+    public SpatialAudioWiredHeadphonesController(Context context) {
+        this(context, KEY_SPATIAL_AUDIO_WIRED_HEADPHONES);
+    }
+
+    public SpatialAudioWiredHeadphonesController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+        AudioManager audioManager = context.getSystemService(AudioManager.class);
+        mSpatializer = audioManager.getSpatializer();
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return mSpatializer.isAvailableForDevice(mWiredHeadphones) ? AVAILABLE
+                : UNSUPPORTED_ON_DEVICE;
+    }
+
+    @Override
+    public boolean isChecked() {
+        return mSpatializer.getCompatibleAudioDevices().contains(mWiredHeadphones);
+    }
+
+    @Override
+    public boolean setChecked(boolean isChecked) {
+        if (isChecked) {
+            mSpatializer.addCompatibleAudioDevice(mWiredHeadphones);
+        } else {
+            mSpatializer.removeCompatibleAudioDevice(mWiredHeadphones);
+        }
+        return isChecked == isChecked();
+    }
+
+    @Override
+    public int getSliceHighlightMenuRes() {
+        return R.string.menu_key_sound;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
index 942fed6..e537419 100644
--- a/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/display/SmartAutoRotatePreferenceFragmentTest.java
@@ -16,7 +16,8 @@
 
 package com.android.settings.display;
 
-import static com.android.settings.display.SmartAutoRotatePreferenceFragment.AUTO_ROTATE_SWITCH_PREFERENCE_ID;
+import static com.android.settings.display.SmartAutoRotatePreferenceFragment.AUTO_ROTATE_MAIN_SWITCH_PREFERENCE_KEY;
+import static com.android.settings.display.SmartAutoRotatePreferenceFragment.AUTO_ROTATE_SWITCH_PREFERENCE_KEY;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -45,7 +46,6 @@
 import com.android.settings.testutils.ResolveInfoBuilder;
 import com.android.settings.testutils.shadow.ShadowDeviceStateRotationLockSettingsManager;
 import com.android.settings.testutils.shadow.ShadowRotationPolicy;
-import com.android.settings.widget.SettingsMainSwitchBar;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager;
 
@@ -71,8 +71,6 @@
 
     private SmartAutoRotatePreferenceFragment mFragment;
 
-    private SettingsMainSwitchBar mSwitchBar;
-
     @Mock
     private PackageManager mPackageManager;
 
@@ -87,6 +85,9 @@
     private Resources mResources;
     private Context mContext;
 
+    @Mock
+    private Preference mRotateMainSwitchPreference;
+
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
@@ -112,21 +113,21 @@
         when(mFragment.getContext()).thenReturn(mContext);
         doReturn(mView).when(mFragment).getView();
 
-        when(mFragment.findPreference(AUTO_ROTATE_SWITCH_PREFERENCE_ID)).thenReturn(
+        when(mFragment.findPreference(AUTO_ROTATE_SWITCH_PREFERENCE_KEY)).thenReturn(
                 mRotateSwitchPreference);
 
-        mSwitchBar = spy(new SettingsMainSwitchBar(mContext));
-        when(mActivity.getSwitchBar()).thenReturn(mSwitchBar);
-        doReturn(mSwitchBar).when(mView).findViewById(R.id.switch_bar);
-        ShadowDeviceStateRotationLockSettingsManager.setDeviceStateRotationLockEnabled(false);
+
+        when(mFragment.findPreference(AUTO_ROTATE_MAIN_SWITCH_PREFERENCE_KEY)).thenReturn(
+                mRotateMainSwitchPreference);
     }
 
 
     @Test
     public void createHeader_faceDetectionSupported_switchBarIsEnabled() {
+        ShadowDeviceStateRotationLockSettingsManager.setDeviceStateRotationLockEnabled(false);
         mFragment.createHeader(mActivity);
 
-        verify(mSwitchBar, times(1)).show();
+        verify(mRotateMainSwitchPreference, never()).setVisible(false);
         verify(mRotateSwitchPreference, times(1)).setVisible(false);
     }
 
@@ -137,7 +138,7 @@
 
         mFragment.createHeader(mActivity);
 
-        verify(mSwitchBar, never()).show();
+        verify(mRotateMainSwitchPreference, times(1)).setVisible(false);
         verify(mRotateSwitchPreference, never()).setVisible(false);
     }
 
@@ -147,7 +148,7 @@
 
         mFragment.createHeader(mActivity);
 
-        verify(mSwitchBar, never()).show();
+        verify(mRotateMainSwitchPreference, times(1)).setVisible(false);
         verify(mRotateSwitchPreference, never()).setVisible(false);
     }
 
@@ -176,6 +177,19 @@
                 DeviceStateAutoRotateSettingController.class);
     }
 
+    @Test
+    public void setupFooter_linkAddedWhenAppropriate() {
+        doReturn("").when(mFragment).getText(anyInt());
+        doReturn("").when(mFragment).getString(anyInt());
+        mFragment.setupFooter();
+        verify(mFragment, never()).addHelpLink();
+
+        doReturn("testString").when(mFragment).getText(anyInt());
+        doReturn("testString").when(mFragment).getString(anyInt());
+        mFragment.setupFooter();
+        verify(mFragment, times(1)).addHelpLink();
+    }
+
     private void enableDeviceStateSettableRotationStates(String[] settableStates,
             String[] settableStatesDescriptions) {
         when(mResources.getStringArray(
diff --git a/tests/robotests/src/com/android/settings/notification/SpatialAudioParentPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/SpatialAudioParentPreferenceControllerTest.java
new file mode 100644
index 0000000..9242cf0
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/SpatialAudioParentPreferenceControllerTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.Spatializer;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class SpatialAudioParentPreferenceControllerTest {
+
+    private static final String KEY = "spatial_audio_summary";
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock
+    private AudioManager mAudioManager;
+    @Mock
+    private Spatializer mSpatializer;
+
+    private SpatialAudioParentPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(RuntimeEnvironment.application);
+        when(mContext.getSystemService(AudioManager.class)).thenReturn(mAudioManager);
+        when(mAudioManager.getSpatializer()).thenReturn(mSpatializer);
+        mController = new SpatialAudioParentPreferenceController(mContext, KEY);
+    }
+
+    @Test
+    public void getAvailabilityStatus_levelNone_shouldReturnUnsupported() {
+        when(mSpatializer.getImmersiveAudioLevel()).thenReturn(
+                Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_levelMultiChannel_shouldReturnAvailable() {
+        when(mSpatializer.getImmersiveAudioLevel()).thenReturn(
+                Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/notification/SpatialAudioPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/SpatialAudioPreferenceControllerTest.java
index 66d18ec..e57b897 100644
--- a/tests/robotests/src/com/android/settings/notification/SpatialAudioPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/SpatialAudioPreferenceControllerTest.java
@@ -30,7 +30,6 @@
 import android.media.Spatializer;
 
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -39,7 +38,6 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
-@Ignore("b/200896161")
 @RunWith(RobolectricTestRunner.class)
 public class SpatialAudioPreferenceControllerTest {
 
@@ -56,36 +54,36 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mContext = spy(RuntimeEnvironment.application);
-        when((Object) mContext.getSystemService(AudioManager.class)).thenReturn(mAudioManager);
+        when(mContext.getSystemService(AudioManager.class)).thenReturn(mAudioManager);
         when(mAudioManager.getSpatializer()).thenReturn(mSpatializer);
         mController = new SpatialAudioPreferenceController(mContext);
     }
 
     @Test
-    public void getAvailabilityStatus_levelNone_shouldReturnUnsupported() {
-        when(mSpatializer.getImmersiveAudioLevel()).thenReturn(
-                Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE);
+    public void getAvailabilityStatus_unavailable_shouldReturnUnavailable() {
+        when(mSpatializer.isAvailableForDevice(mController.mSpeaker)).thenReturn(false);
+
         assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
     }
 
     @Test
-    public void getAvailabilityStatus_levelMultiChannel_shouldReturnAvailable() {
-        when(mSpatializer.getImmersiveAudioLevel()).thenReturn(
-                Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL);
+    public void getAvailabilityStatus_available_shouldReturnAvailable() {
+        when(mSpatializer.isAvailableForDevice(mController.mSpeaker)).thenReturn(true);
+
         assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
     }
 
     @Test
-    public void setChecked_withTrue_shouldEnableSpatializer() {
+    public void setChecked_withTrue_enablesDeviceSpatializer() {
         mController.setChecked(true);
 
-        verify(mSpatializer).setEnabled(true);
+        verify(mSpatializer).addCompatibleAudioDevice(mController.mSpeaker);
     }
 
     @Test
-    public void setChecked_withFalse_shouldDisableSpatializer() {
+    public void setChecked_withFalse_disablesDeviceSpatializer() {
         mController.setChecked(false);
 
-        verify(mSpatializer).setEnabled(false);
+        verify(mSpatializer).removeCompatibleAudioDevice(mController.mSpeaker);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/SpatialAudioWiredHeadphonesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/SpatialAudioWiredHeadphonesPreferenceControllerTest.java
new file mode 100644
index 0000000..29525e4
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/SpatialAudioWiredHeadphonesPreferenceControllerTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.Spatializer;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+@RunWith(RobolectricTestRunner.class)
+public class SpatialAudioWiredHeadphonesPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock
+    private AudioManager mAudioManager;
+    @Mock
+    private Spatializer mSpatializer;
+
+    private SpatialAudioWiredHeadphonesController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = spy(RuntimeEnvironment.application);
+        when(mContext.getSystemService(AudioManager.class)).thenReturn(mAudioManager);
+        when(mAudioManager.getSpatializer()).thenReturn(mSpatializer);
+        mController = new SpatialAudioWiredHeadphonesController(mContext);
+    }
+
+    @Test
+    public void getAvailabilityStatus_unavailable_shouldReturnUnavailable() {
+        when(mSpatializer.isAvailableForDevice(mController.mWiredHeadphones)).thenReturn(false);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+    }
+
+    @Test
+    public void getAvailabilityStatus_available_shouldReturnAvailable() {
+        when(mSpatializer.isAvailableForDevice(mController.mWiredHeadphones)).thenReturn(true);
+
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+    }
+
+    @Test
+    public void setChecked_withTrue_enablesDeviceSpatializer() {
+        mController.setChecked(true);
+
+        verify(mSpatializer).addCompatibleAudioDevice(mController.mWiredHeadphones);
+    }
+
+    @Test
+    public void setChecked_withFalse_disablesDeviceSpatializer() {
+        mController.setChecked(false);
+
+        verify(mSpatializer).removeCompatibleAudioDevice(mController.mWiredHeadphones);
+    }
+}
diff --git a/tests/unit/src/com/android/settings/applications/appinfo/AppLocaleDetailsTest.java b/tests/unit/src/com/android/settings/applications/appinfo/AppLocaleDetailsTest.java
deleted file mode 100644
index aa0daad..0000000
--- a/tests/unit/src/com/android/settings/applications/appinfo/AppLocaleDetailsTest.java
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.applications.appinfo;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.LocaleManager;
-import android.content.Context;
-import android.os.LocaleList;
-import android.os.Looper;
-import android.telephony.TelephonyManager;
-
-import androidx.test.annotation.UiThreadTest;
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import com.android.settingslib.widget.RadioButtonPreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-
-/**
- * Unittest for ApplocaleDetails
- * TODO Need to add a unittest for the UI preference component.
- */
-@RunWith(AndroidJUnit4.class)
-public class AppLocaleDetailsTest {
-    private static final String APP_PACKAGE_NAME = "app_package_name";
-
-    @Mock
-    private TelephonyManager mTelephonyManager;
-    @Mock
-    private LocaleManager mLocaleManager;
-
-    private Context mContext;
-    private Collection<Locale> mSystemLocales;
-    private LocaleList mAppLocale;
-    private String[] mAssetLocales;
-    private LocaleList mPackageLocales;
-
-    @Before
-    @UiThreadTest
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        if (Looper.myLooper() == null) {
-            Looper.prepare();
-        }
-        mContext = spy(ApplicationProvider.getApplicationContext());
-        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
-        when(mContext.getSystemService(LocaleManager.class)).thenReturn(mLocaleManager);
-
-        setupInitialLocales(
-                /* appLocale= */ "en-gb",
-                /* simCountry= */ "tw",
-                /* networkCountry= */ "jp",
-                /* systemLocales= */ "en-gb, ru, ja-jp, ne, zh-tw",
-                /* packageLocales= */ "pa, cn, zh-tw, en-gb, ja-jp",
-                /* assetLocales= */ new String[]{"en-gb", "ne", "ms", "pa", "zh-tw", "ja-jp"});
-    }
-
-    @Test
-    @UiThreadTest
-    public void onRadioButtonClicked_setCurrentLocaleToSystem() {
-        AppLocaleDetails appLocaleDetails = new AppLocaleDetails() {
-            @Override
-            void refreshUiInternal() {}
-        };
-        DummyAppLocaleDetailsHelper helper =
-                spy(new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME));
-        appLocaleDetails.mAppLocaleDetailsHelper = helper;
-        RadioButtonPreference pref = new RadioButtonPreference(mContext);
-        pref.setKey(AppLocaleDetails.KEY_SYSTEM_DEFAULT_LOCALE);
-
-        appLocaleDetails.onRadioButtonClicked(pref);
-
-        verify(helper).setAppDefaultLocale(LocaleList.forLanguageTags(""));
-    }
-
-    @Test
-    @UiThreadTest
-    public void onRadioButtonClicked_setCurrentLocaleForUserSelected() {
-        AppLocaleDetails appLocaleDetails = new AppLocaleDetails() {
-            @Override
-            void refreshUiInternal() {}
-        };
-        DummyAppLocaleDetailsHelper helper =
-                spy(new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME));
-        appLocaleDetails.mAppLocaleDetailsHelper = helper;
-        RadioButtonPreference pref = new RadioButtonPreference(mContext);
-        pref.setKey("en");
-
-        appLocaleDetails.onRadioButtonClicked(pref);
-
-        verify(helper).setAppDefaultLocale("en");
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_localeManagerIsNull_noCrash() {
-        when(mContext.getSystemService(LocaleManager.class)).thenReturn(null);
-
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_1stLocaleIsAppLocaleAndHasSimAndNetwork() {
-        Locale simCountryLocale = new Locale("zh", "TW");
-        Locale networkCountryLocale = new Locale("ja", "JP");
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        Locale locale = suggestedLocales.iterator().next();
-        assertTrue(locale.equals(mAppLocale.get(0)));
-        assertTrue(suggestedLocales.contains(simCountryLocale));
-        assertTrue(suggestedLocales.contains(networkCountryLocale));
-    }
-
-    @Test
-    @UiThreadTest
-    public void
-            handleAllLocalesData_noAppAndNoSupportedSimLocale_suggestedLocaleIsSupported() {
-        Locale testEnAssetLocale = new Locale("en", "GB");
-        Locale testJaAssetLocale = new Locale("ja", "JP");
-        setupInitialLocales(
-                /* appLocale= */ "",
-                /* simCountry= */ "tw",
-                /* networkCountry= */ "",
-                /* systemLocales= */ "en-gb, ru, ja-jp, ne, zh-tw",
-                /* packageLocales= */ "",
-                /* assetLocales= */ new String[]{"en-gb", "ne", "ms", "pa", "ja-jp"});
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        assertTrue(suggestedLocales.contains(testEnAssetLocale));
-        assertTrue(suggestedLocales.contains(testJaAssetLocale));
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_noAppButHasSupportedSimLocale_1stSuggestedLocaleIsSim() {
-        Locale simLocale = new Locale("zh", "tw");
-        setupInitialLocales(
-                /* appLocale= */ "",
-                /* simCountry= */ "tw",
-                /* networkCountry= */ "",
-                /* systemLocales= */ "en-gb, ru, ja-jp, ne, zh-tw",
-                /* packageLocales= */ "",
-                /* assetLocales= */ new String[]{"en-gb", "ne", "ms", "pa", "ja-jp", "zh-tw"});
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        Locale locale = suggestedLocales.iterator().next();
-        assertTrue(locale.equals(simLocale));
-    }
-
-    @Test
-    @UiThreadTest
-    public void
-            handleAllLocalesData_noAppButHasSupportedNetworkLocale_1stSuggestedLocaleIsNetwork() {
-        Locale networkLocale = new Locale("ja", "JP");
-        setupInitialLocales(
-                /* appLocale= */ "",
-                /* simCountry= */ "",
-                /* networkCountry= */ "jp",
-                /* systemLocales= */ "en-gb, ru, ja-jp, ne, zh-tw",
-                /* packageLocales= */ "",
-                /* assetLocales= */ new String[]{"en-gb", "ne", "ms", "pa", "ja-jp"});
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        Locale locale = suggestedLocales.iterator().next();
-        assertTrue(locale.equals(networkLocale));
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_noAppSimOrNetworkLocale_suggestedLocalesHasSystemLocale() {
-        setupInitialLocales(
-                /* appLocale= */ "",
-                /* simCountry= */ "",
-                /* networkCountry= */ "",
-                /* systemLocales= */ "en-gb, ru, ja-jp, ne, zh-tw",
-                /* packageLocales= */ "",
-                /* assetLocales= */ new String[]{"en-gb", "ne", "ms", "pa", "zh-tw", "ja-jp"});
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        assertTrue(suggestedLocales.contains(Locale.forLanguageTag("ne")));
-        // ru language is not present in the asset locales
-        assertFalse(suggestedLocales.contains(Locale.forLanguageTag("ru")));
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_noAppButHasSimAndNetworkLocale_1stLocaleIsSimLocale() {
-        Locale simCountryLocale = new Locale("zh", "TW");
-        setupInitialLocales(
-                /* appLocale= */ "",
-                /* simCountry= */ "tw",
-                /* networkCountry= */ "jp",
-                /* systemLocales= */ "en-gb, ru, ja-jp, ne, zh-tw",
-                /* packageLocales= */ "",
-                /* assetLocales= */ new String[]{"en-gb", "ne", "ms", "pa", "zh-tw", "ja-jp"});
-
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        Locale locale = suggestedLocales.iterator().next();
-        assertTrue(locale.equals(simCountryLocale));
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_noSupportedLocale_noSuggestedLocales() {
-        Locale networkCountryLocale = new Locale("en", "GB");
-        setupInitialLocales(
-                /* appLocale= */ "",
-                /* simCountry= */ "",
-                /* networkCountry= */ "gb",
-                /* systemLocales= */ "en, uk, jp, ne",
-                /* packageLocales= */ "",
-                /* assetLocales= */ new String[]{});
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        assertTrue(suggestedLocales.size() == 0);
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_hasPackageAndSystemLocales_1stLocaleIs1stOneInSystemLocales() {
-        setupInitialLocales(
-                /* appLocale= */ "",
-                /* simCountry= */ "",
-                /* networkCountry= */ "",
-                /* systemLocales= */ "en, uk, jp, ne",
-                /* packageLocales= */ "pa, cn, tw, en",
-                /* assetLocales= */ new String[]{});
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        Locale locale = suggestedLocales.iterator().next();
-        Locale systemLocale = mSystemLocales.iterator().next();
-        assertTrue(locale.equals(systemLocale));
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_sameLocaleButDifferentRegion_notShowDuplicatedLocale() {
-        setupInitialLocales(
-                /* appLocale= */ "",
-                /* simCountry= */ "",
-                /* networkCountry= */ "",
-                /* systemLocales= */ "en-us, en-gb, jp, ne",
-                /* packageLocales= */ "pa, cn, tw, en-us, en-gb",
-                /* assetLocales= */ new String[]{});
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-
-        Collection<Locale> suggestedLocales = helper.getSuggestedLocales();
-        assertFalse(hasDuplicatedResult(suggestedLocales));
-    }
-
-    private boolean hasDuplicatedResult(Collection<Locale> locales) {
-        Set<Locale> tempSet = new HashSet<>();
-        for (Locale locale : locales) {
-            if (!tempSet.add(locale)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_supportLocaleListIsNotEmpty() {
-        DummyAppLocaleDetailsHelper helper =
-                new DummyAppLocaleDetailsHelper(mContext, APP_PACKAGE_NAME);
-
-        helper.handleAllLocalesData();
-
-        assertFalse(helper.getSupportedLocales().isEmpty());
-    }
-
-    @Test
-    @UiThreadTest
-    public void handleAllLocalesData_compareLocale() {
-        //Use LocaleList.matchScore() to compare two locales.
-        assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("en-US"),
-                Locale.forLanguageTag("en-CA")));
-        assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-CN"),
-                Locale.forLanguageTag("zh")));
-        assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-CN"),
-                Locale.forLanguageTag("zh-Hans")));
-        assertTrue(DummyAppLocaleDetailsHelper.compareLocale(Locale.forLanguageTag("zh-TW"),
-                Locale.forLanguageTag("zh-Hant")));
-
-        //Use Locale.equals() to compare two locales.
-        assertFalse(Locale.forLanguageTag("en-US").equals(Locale.forLanguageTag("en-CA")));
-        assertFalse(Locale.forLanguageTag("zh-CN").equals(Locale.forLanguageTag("zh")));
-        assertFalse(Locale.forLanguageTag("zh-CN").equals(Locale.forLanguageTag("zh-Hans")));
-        assertFalse(Locale.forLanguageTag("zh-TW").equals(Locale.forLanguageTag("zh-Hant")));
-    }
-
-    /**
-     * Sets the initial Locale data
-     *
-     * @param appLocale      Application locale, it shall be a language tag.
-     *                       example: "en"
-     *
-     * @param simCountry     The ISO-3166-1 alpha-2 country code equivalent for the SIM
-     *                       provider's country code.
-     *                       example: "us"
-     *
-     * @param networkCountry The ISO-3166-1 alpha-2 country code equivalent of the MCC
-     *                       (Mobile Country Code) of the current registered operato
-     *                       or the cell nearby.
-     *                       example: "us"
-     *
-     * @param systemLocales  System locales, a locale list by a multiple language tags with comma.
-     *                       example: "en, uk, jp"
-     *
-     * @param packageLocales PackageManager locales, a locale list by a multiple language tags with
-     *                       comma.
-     *                       example: "en, uk, jp"
-     *
-     * @param assetLocales   Asset locales, a locale list by a multiple language tags with String
-     *                       array.
-     *                       example: new String[] {"en", "ne", "ms", "pa"}
-     */
-    private void setupInitialLocales(String appLocale,
-            String simCountry,
-            String networkCountry,
-            String systemLocales,
-            String packageLocales,
-            String[] assetLocales) {
-        mAppLocale = LocaleList.forLanguageTags(appLocale);
-        // forLanguageTags does not filter space to the input string. If there is any space included
-        // in string, this will make locale fail to generate.
-        systemLocales = systemLocales.replaceAll("\\s+", "");
-        LocaleList listOfSystemLocales = LocaleList.forLanguageTags(systemLocales);
-        mSystemLocales = new ArrayList<>();
-        for (int i = 0; i < listOfSystemLocales.size(); i++) {
-            mSystemLocales.add(listOfSystemLocales.get(i));
-        }
-        mAssetLocales = assetLocales;
-        packageLocales = packageLocales.replaceAll("\\s+", "");
-        mPackageLocales = LocaleList.forLanguageTags(packageLocales);
-        when(mTelephonyManager.getSimCountryIso()).thenReturn(simCountry);
-        when(mTelephonyManager.getNetworkCountryIso()).thenReturn(networkCountry);
-        when(mLocaleManager.getApplicationLocales(anyString())).thenReturn(mAppLocale);
-    }
-
-    public class DummyAppLocaleDetailsHelper
-            extends AppLocaleDetails.AppLocaleDetailsHelper {
-
-        DummyAppLocaleDetailsHelper(Context context, String packageName) {
-            super(context, packageName);
-        }
-
-        @Override
-        String[] getAssetLocales() {
-            return mAssetLocales;
-        }
-
-        @Override
-        Collection<Locale> getCurrentSystemLocales() {
-            return mSystemLocales;
-        }
-
-        @Override
-        LocaleList getPackageLocales() {
-            return mPackageLocales;
-        }
-    }
-}