diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-08 00:20:13 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-12-08 00:20:13 +0000 |
commit | 4a4879a3380f3d677f25a6db49fddbd0e5b96c25 (patch) | |
tree | 3a101509e268f3d7b406aa196e5bf3f4534f2607 | |
parent | 736160d2197bf6ba9647282fda2ee6266252d803 (diff) | |
parent | 98319d5eabab616a10f44d0df60a2ef0b6d46279 (diff) | |
download | Launcher-4a4879a3380f3d677f25a6db49fddbd0e5b96c25.tar.gz |
Snap for 11192287 from 98319d5eabab616a10f44d0df60a2ef0b6d46279 to 24Q1-release
Change-Id: Id1f865370648d0bc919fac8ed9ed48ed3a4ae0b4
86 files changed, 534 insertions, 289 deletions
diff --git a/app/res/values-af/strings.xml b/app/res/values-af/strings.xml index 8c185b36..026c73cd 100644 --- a/app/res/values-af/strings.xml +++ b/app/res/values-af/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Geen onlangse items nie"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Vee alles uit"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"App is nie beskikbaar nie"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Kalmmodus"</string> </resources> diff --git a/app/res/values-am/strings.xml b/app/res/values-am/strings.xml index 9475d26a..6b1b6c18 100644 --- a/app/res/values-am/strings.xml +++ b/app/res/values-am/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"ምንም የቅርብ ጊዜ ንጥሎች የሉም"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"ሁሉንም አጽዳ"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"መተግበሪያ አይገኝም"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"የእርጋታ ሁነታ"</string> </resources> diff --git a/app/res/values-ar/strings.xml b/app/res/values-ar/strings.xml index 13d71283..345de0d7 100644 --- a/app/res/values-ar/strings.xml +++ b/app/res/values-ar/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"ما مِن عناصر تم استخدامها مؤخرًا"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"محو الكل"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"التطبيق غير متاح."</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"وضع الهدوء"</string> </resources> diff --git a/app/res/values-as/strings.xml b/app/res/values-as/strings.xml index c752fbdf..23500ec7 100644 --- a/app/res/values-as/strings.xml +++ b/app/res/values-as/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"কোনো শেহতীয়া বস্তু নাই"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"আটাইবোৰ মচক"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"এপ্টো উপলব্ধ নহয়"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"শান্ত ম’ড"</string> </resources> diff --git a/app/res/values-az/strings.xml b/app/res/values-az/strings.xml index 1f894653..130ebd6f 100644 --- a/app/res/values-az/strings.xml +++ b/app/res/values-az/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Son element yoxdur"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Hamısını silin"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Tətbiq əlçatan deyil"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Sakit rejim"</string> </resources> diff --git a/app/res/values-b+sr+Latn/strings.xml b/app/res/values-b+sr+Latn/strings.xml index 7f7dc1c3..20611121 100644 --- a/app/res/values-b+sr+Latn/strings.xml +++ b/app/res/values-b+sr+Latn/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nema nedavnih stavki"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Obriši sve"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacija nije dostupna"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Režim opuštanja"</string> </resources> diff --git a/app/res/values-be/strings.xml b/app/res/values-be/strings.xml index b430ec4b..2e6f4dad 100644 --- a/app/res/values-be/strings.xml +++ b/app/res/values-be/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Няма нядаўніх элементаў"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Ачысціць усё"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Праграма недаступная"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Рэжым спакою"</string> </resources> diff --git a/app/res/values-bg/strings.xml b/app/res/values-bg/strings.xml index 8cb53bab..8425793d 100644 --- a/app/res/values-bg/strings.xml +++ b/app/res/values-bg/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Няма скорошни елементи"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Изчистване на всичко"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Приложението не е налично"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Режим на покой"</string> </resources> diff --git a/app/res/values-bn/strings.xml b/app/res/values-bn/strings.xml index 535fb032..d9b579ca 100644 --- a/app/res/values-bn/strings.xml +++ b/app/res/values-bn/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"কোনও সাম্প্রতিক আইটেম নেই"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"সব মুছে দিন"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"অ্যাপ উপলভ্য নেই"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"\'কাম\' মোড"</string> </resources> diff --git a/app/res/values-bs/strings.xml b/app/res/values-bs/strings.xml index 385eaa26..23c696f4 100644 --- a/app/res/values-bs/strings.xml +++ b/app/res/values-bs/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nema nedavnih stavki"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Obriši sve"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacija nije dostupna"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Način rada za opuštanje"</string> </resources> diff --git a/app/res/values-ca/strings.xml b/app/res/values-ca/strings.xml index 7b702154..e2d8eec9 100644 --- a/app/res/values-ca/strings.xml +++ b/app/res/values-ca/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"No hi ha cap element recent"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Esborra-ho tot"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"L\'aplicació no està disponible"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Mode de calma"</string> </resources> diff --git a/app/res/values-cs/strings.xml b/app/res/values-cs/strings.xml index d94ce1cb..8fd05bd6 100644 --- a/app/res/values-cs/strings.xml +++ b/app/res/values-cs/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Žádné nedávné položky"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Vymazat vše"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikace není k dispozici"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Klidný režim"</string> </resources> diff --git a/app/res/values-da/strings.xml b/app/res/values-da/strings.xml index ee2a03fc..f17d3fa9 100644 --- a/app/res/values-da/strings.xml +++ b/app/res/values-da/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Ingen nye elementer"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Ryd alt"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Appen er ikke tilgængelig"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Beroligende tilstand"</string> </resources> diff --git a/app/res/values-de/strings.xml b/app/res/values-de/strings.xml index fe506f3d..ef60b012 100644 --- a/app/res/values-de/strings.xml +++ b/app/res/values-de/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Keine kürzlich verwendeten Elemente"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Alles löschen"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"App nicht verfügbar"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Ruhemodus"</string> </resources> diff --git a/app/res/values-el/strings.xml b/app/res/values-el/strings.xml index 31e20c01..9c9bf066 100644 --- a/app/res/values-el/strings.xml +++ b/app/res/values-el/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Δεν υπάρχουν πρόσφατα στοιχεία"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Διαγραφή όλων"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Η εφαρμογή δεν είναι διαθέσιμη"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Λειτουργία ηρεμίας"</string> </resources> diff --git a/app/res/values-en-rAU/strings.xml b/app/res/values-en-rAU/strings.xml index 3ede0e48..9c42c4d2 100644 --- a/app/res/values-en-rAU/strings.xml +++ b/app/res/values-en-rAU/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"No recent items"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Clear all"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"App isn\'t available"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Calm mode"</string> </resources> diff --git a/app/res/values-en-rGB/strings.xml b/app/res/values-en-rGB/strings.xml index 3ede0e48..9c42c4d2 100644 --- a/app/res/values-en-rGB/strings.xml +++ b/app/res/values-en-rGB/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"No recent items"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Clear all"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"App isn\'t available"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Calm mode"</string> </resources> diff --git a/app/res/values-en-rIN/strings.xml b/app/res/values-en-rIN/strings.xml index 3ede0e48..9c42c4d2 100644 --- a/app/res/values-en-rIN/strings.xml +++ b/app/res/values-en-rIN/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"No recent items"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Clear all"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"App isn\'t available"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Calm mode"</string> </resources> diff --git a/app/res/values-es-rUS/strings.xml b/app/res/values-es-rUS/strings.xml index ead728c3..bc3a90dd 100644 --- a/app/res/values-es-rUS/strings.xml +++ b/app/res/values-es-rUS/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"No hay elementos recientes"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Borrar todo"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"La app no está disponible"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modo calma"</string> </resources> diff --git a/app/res/values-es/strings.xml b/app/res/values-es/strings.xml index b1a7c879..961c95b9 100644 --- a/app/res/values-es/strings.xml +++ b/app/res/values-es/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"No hay elementos recientes"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Borrar todo"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"La aplicación no está disponible"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modo Calma"</string> </resources> diff --git a/app/res/values-et/strings.xml b/app/res/values-et/strings.xml index 2f9fb9d7..db6e3e66 100644 --- a/app/res/values-et/strings.xml +++ b/app/res/values-et/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Hiljutisi üksusi pole"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Kustuta kõik"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Rakendus ei ole saadaval"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Lõõgastusrežiim"</string> </resources> diff --git a/app/res/values-eu/strings.xml b/app/res/values-eu/strings.xml index 4454253e..c53b647b 100644 --- a/app/res/values-eu/strings.xml +++ b/app/res/values-eu/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Ez dago azkenaldiko elementurik"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Garbitu guztia"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Ez dago erabilgarri aplikazioa"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modu lasaia"</string> </resources> diff --git a/app/res/values-fa/strings.xml b/app/res/values-fa/strings.xml index 20a43702..c4ceec83 100644 --- a/app/res/values-fa/strings.xml +++ b/app/res/values-fa/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"مورد جدیدی وجود ندارد"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"پاک کردن همه"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"برنامه دردسترس نیست"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"حالت آرام"</string> </resources> diff --git a/app/res/values-fi/strings.xml b/app/res/values-fi/strings.xml index 5eb8045f..8d31ddc0 100644 --- a/app/res/values-fi/strings.xml +++ b/app/res/values-fi/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Ei viimeaikaisia kohteita"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Tyhjennä kaikki"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Sovellus ei ole käytettävissä"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Rauhallinen tila"</string> </resources> diff --git a/app/res/values-fr/strings.xml b/app/res/values-fr/strings.xml index fd74e0f5..8573c016 100644 --- a/app/res/values-fr/strings.xml +++ b/app/res/values-fr/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Aucun élément récent"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Tout effacer"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Appli indisponible"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Mode calme"</string> </resources> diff --git a/app/res/values-gl/strings.xml b/app/res/values-gl/strings.xml index 31fbc7b3..b5815696 100644 --- a/app/res/values-gl/strings.xml +++ b/app/res/values-gl/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Non hai ningún elemento recente"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Borrar todo"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"A aplicación non está dispoñible"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modo de calma"</string> </resources> diff --git a/app/res/values-gu/strings.xml b/app/res/values-gu/strings.xml index cf3665ec..ff9c5b71 100644 --- a/app/res/values-gu/strings.xml +++ b/app/res/values-gu/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"તાજેતરની કોઈ આઇટમ નથી"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"બધું સાફ કરો"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ઍપ ઉપલબ્ધ નથી"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"શાંત મોડ"</string> </resources> diff --git a/app/res/values-hi/strings.xml b/app/res/values-hi/strings.xml index c7e95947..bbc3ee22 100644 --- a/app/res/values-hi/strings.xml +++ b/app/res/values-hi/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"हाल ही का कोई आइटम मौजूद नहीं है"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"सभी मिटाएं"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ऐप्लिकेशन उपलब्ध नहीं है"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"काम (शांत) मोड"</string> </resources> diff --git a/app/res/values-hr/strings.xml b/app/res/values-hr/strings.xml index 144c983f..1c33dff4 100644 --- a/app/res/values-hr/strings.xml +++ b/app/res/values-hr/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nema nedavnih stavki"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Izbriši sve"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacija nije dostupna"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Način opuštanja"</string> </resources> diff --git a/app/res/values-hu/strings.xml b/app/res/values-hu/strings.xml index c5bd0cf8..4c08fa71 100644 --- a/app/res/values-hu/strings.xml +++ b/app/res/values-hu/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nincsenek mostanában használt elemek"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Összes törlése"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Az alkalmazás nem áll rendelkezésre"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Nyugalom mód"</string> </resources> diff --git a/app/res/values-hy/strings.xml b/app/res/values-hy/strings.xml index 1c84bfe5..906fb6bf 100644 --- a/app/res/values-hy/strings.xml +++ b/app/res/values-hy/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Նոր տարրեր չկան"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Ջնջել բոլորը"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Հավելվածը հասանելի չէ"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Հանգստի ռեժիմ"</string> </resources> diff --git a/app/res/values-in/strings.xml b/app/res/values-in/strings.xml index 1824ff61..ab9c4913 100644 --- a/app/res/values-in/strings.xml +++ b/app/res/values-in/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Tidak ada item baru"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Hapus Semua"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikasi tidak tersedia"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Mode tenang"</string> </resources> diff --git a/app/res/values-is/strings.xml b/app/res/values-is/strings.xml index d982f539..3362bd4a 100644 --- a/app/res/values-is/strings.xml +++ b/app/res/values-is/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Engin nýleg atriði"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Hreinsa allt"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Forritið er ekki í boði"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Róleg stilling"</string> </resources> diff --git a/app/res/values-it/strings.xml b/app/res/values-it/strings.xml index dcc9e2c2..15b98905 100644 --- a/app/res/values-it/strings.xml +++ b/app/res/values-it/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nessun elemento recente"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Cancella tutto"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"App non disponibile"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modalità Calma"</string> </resources> diff --git a/app/res/values-iw/strings.xml b/app/res/values-iw/strings.xml index fb31d16a..050d1870 100644 --- a/app/res/values-iw/strings.xml +++ b/app/res/values-iw/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"אין פריטים מהזמן האחרון"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"ניקוי הכול"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"האפליקציה לא זמינה"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"מצב רגיעה"</string> </resources> diff --git a/app/res/values-ja/strings.xml b/app/res/values-ja/strings.xml index a9c6d983..ce968b5e 100644 --- a/app/res/values-ja/strings.xml +++ b/app/res/values-ja/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"最近のアイテムはありません"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"すべて消去"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"このアプリは使用できません"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Calm モード"</string> </resources> diff --git a/app/res/values-ka/strings.xml b/app/res/values-ka/strings.xml index b2679caa..9920b173 100644 --- a/app/res/values-ka/strings.xml +++ b/app/res/values-ka/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"ბოლოდროინდელი ერთეულები არ არის"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"ყველას გასუფთავება"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"აპი მიუწვდომელია"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"წყნარი რეჟიმი"</string> </resources> diff --git a/app/res/values-kk/strings.xml b/app/res/values-kk/strings.xml index 623ada89..fe1b8d98 100644 --- a/app/res/values-kk/strings.xml +++ b/app/res/values-kk/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Cоңғы қосылған элемент жоқ."</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Барлығын өшіру"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Қолданба қолжетімді емес."</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Тыныштық режимі"</string> </resources> diff --git a/app/res/values-km/strings.xml b/app/res/values-km/strings.xml index 33405aac..0ca0780d 100644 --- a/app/res/values-km/strings.xml +++ b/app/res/values-km/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"មិនមានធាតុថ្មីៗទេ"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"សម្អាតទាំងអស់"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"មិនមានកម្មវិធី"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"មុខងារស្ងាត់"</string> </resources> diff --git a/app/res/values-kn/strings.xml b/app/res/values-kn/strings.xml index f1ab3b0c..2d42f2fd 100644 --- a/app/res/values-kn/strings.xml +++ b/app/res/values-kn/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಐಟಂಗಳಿಲ್ಲ"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"ಎಲ್ಲವನ್ನೂ ಅಳಿಸಿ"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ಆ್ಯಪ್ ಲಭ್ಯವಿಲ್ಲ"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"ಶಾಂತ ಮೋಡ್"</string> </resources> diff --git a/app/res/values-ko/strings.xml b/app/res/values-ko/strings.xml index 4b74b38c..b85a2628 100644 --- a/app/res/values-ko/strings.xml +++ b/app/res/values-ko/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"최근 항목이 없습니다."</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"모두 지우기"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"앱을 사용할 수 없음"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"고요 모드"</string> </resources> diff --git a/app/res/values-ky/strings.xml b/app/res/values-ky/strings.xml index 6699e67b..5ff6cb17 100644 --- a/app/res/values-ky/strings.xml +++ b/app/res/values-ky/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Жакында колдонулган нерселер жок"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Баарын тазалоо"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Колдонмо жеткиликтүү эмес"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Тынчтык режими"</string> </resources> diff --git a/app/res/values-lo/strings.xml b/app/res/values-lo/strings.xml index 4141a8cc..6cd80499 100644 --- a/app/res/values-lo/strings.xml +++ b/app/res/values-lo/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"ບໍ່ມີລາຍການຫຼ້າສຸດ"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"ລຶບລ້າງທັງໝົດ"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ແອັບບໍ່ພ້ອມໃຫ້ນຳໃຊ້"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"ໂໝດສະຫງົບ"</string> </resources> diff --git a/app/res/values-lt/strings.xml b/app/res/values-lt/strings.xml index 7aeb2806..1c0d051d 100644 --- a/app/res/values-lt/strings.xml +++ b/app/res/values-lt/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nėra jokių naujausių elementų"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Išvalyti viską"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Programa nepasiekiama"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Ramybės režimas"</string> </resources> diff --git a/app/res/values-lv/strings.xml b/app/res/values-lv/strings.xml index b30a68c7..4d8b5393 100644 --- a/app/res/values-lv/strings.xml +++ b/app/res/values-lv/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nav nesenu vienumu"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Notīrīt visu"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Lietotne nav pieejama"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Miera režīms"</string> </resources> diff --git a/app/res/values-mk/strings.xml b/app/res/values-mk/strings.xml index 1dced8cf..a7f5d5cb 100644 --- a/app/res/values-mk/strings.xml +++ b/app/res/values-mk/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Нема неодамнешни ставки"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Избриши ги сите"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Апликацијата не е достапна"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Режим на мирување"</string> </resources> diff --git a/app/res/values-ml/strings.xml b/app/res/values-ml/strings.xml index 3ebb2e2d..c65d5bbe 100644 --- a/app/res/values-ml/strings.xml +++ b/app/res/values-ml/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"സമീപകാല ഇനങ്ങൾ ഒന്നുമില്ല"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"എല്ലാം മായ്ക്കുക"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ആപ്പ് ലഭ്യമല്ല"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"\'ശാന്തം\' മോഡ്"</string> </resources> diff --git a/app/res/values-mn/strings.xml b/app/res/values-mn/strings.xml index 7936f091..7a0ec373 100644 --- a/app/res/values-mn/strings.xml +++ b/app/res/values-mn/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Ямар ч саяхны зүйл байхгүй"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Бүгдийг арилгах"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Апп боломжгүй байна"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Тайван горим"</string> </resources> diff --git a/app/res/values-mr/strings.xml b/app/res/values-mr/strings.xml index 5df4722b..dc2bce32 100644 --- a/app/res/values-mr/strings.xml +++ b/app/res/values-mr/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"कोणतेही अलीकडील आयटम नाहीत"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"सर्व साफ करा"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"अॅप उपलब्ध नाही"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"शांत मोड"</string> </resources> diff --git a/app/res/values-ms/strings.xml b/app/res/values-ms/strings.xml index 9215b1f1..fe432622 100644 --- a/app/res/values-ms/strings.xml +++ b/app/res/values-ms/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Tiada item terbaharu"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Kosongkan Semua"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Apl tidak tersedia"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Mod Calm"</string> </resources> diff --git a/app/res/values-my/strings.xml b/app/res/values-my/strings.xml index 7521f0bd..57b50051 100644 --- a/app/res/values-my/strings.xml +++ b/app/res/values-my/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"မကြာသေးမီက သုံးထားသည်များ မရှိပါ"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"အားလုံးရှင်းရန်"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"အက်ပ် မရနိုင်ပါ"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"အငြိမ်မုဒ်"</string> </resources> diff --git a/app/res/values-nb/strings.xml b/app/res/values-nb/strings.xml index 4de002dd..e9f4b4a5 100644 --- a/app/res/values-nb/strings.xml +++ b/app/res/values-nb/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Ingen nylige elementer"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Fjern alt"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Appen er ikke tilgjengelig"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Roligmodus"</string> </resources> diff --git a/app/res/values-ne/strings.xml b/app/res/values-ne/strings.xml index 6ad49803..40539714 100644 --- a/app/res/values-ne/strings.xml +++ b/app/res/values-ne/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"हालसालैको कुनै पनि सामग्री छैन"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"सबै सामग्री मेटाउनुहोस्"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"एप उपलब्ध छैन"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"शान्त मोड"</string> </resources> diff --git a/app/res/values-nl/strings.xml b/app/res/values-nl/strings.xml index bc8f9e63..86a9cdbb 100644 --- a/app/res/values-nl/strings.xml +++ b/app/res/values-nl/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Geen recente items"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Alles wissen"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"App is niet beschikbaar"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Kalme modus"</string> </resources> diff --git a/app/res/values-or/strings.xml b/app/res/values-or/strings.xml index 5c9638ec..410bac80 100644 --- a/app/res/values-or/strings.xml +++ b/app/res/values-or/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"କୌଣସି ସାମ୍ପ୍ରତିକ ଆଇଟମ ନାହିଁ"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"ସବୁ ଖାଲି କରନ୍ତୁ"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ଆପ ଉପଲବ୍ଧ ନାହିଁ"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"ଶାନ୍ତ ମୋଡ"</string> </resources> diff --git a/app/res/values-pa/strings.xml b/app/res/values-pa/strings.xml index e522f211..1e52c852 100644 --- a/app/res/values-pa/strings.xml +++ b/app/res/values-pa/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"ਕੋਈ ਹਾਲੀਆ ਆਈਟਮ ਨਹੀਂ"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"ਸਭ ਕਲੀਅਰ ਕਰੋ"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"ਸ਼ਾਂਤ ਮੋਡ"</string> </resources> diff --git a/app/res/values-pl/strings.xml b/app/res/values-pl/strings.xml index 02fb6e07..3fbe11a6 100644 --- a/app/res/values-pl/strings.xml +++ b/app/res/values-pl/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Brak ostatnich elementów"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Wyczyść wszystko"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacja jest niedostępna"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Tryb cichy"</string> </resources> diff --git a/app/res/values-pt-rPT/strings.xml b/app/res/values-pt-rPT/strings.xml index 86326b7c..ff491a22 100644 --- a/app/res/values-pt-rPT/strings.xml +++ b/app/res/values-pt-rPT/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nenhum item recente"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Limpar tudo"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"A app não está disponível"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modo Calm"</string> </resources> diff --git a/app/res/values-pt/strings.xml b/app/res/values-pt/strings.xml index 189f97d8..daa7dd97 100644 --- a/app/res/values-pt/strings.xml +++ b/app/res/values-pt/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nenhum item recente"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Limpar tudo"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"O app não está disponível"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modo foco"</string> </resources> diff --git a/app/res/values-ro/strings.xml b/app/res/values-ro/strings.xml index 46b9d9f0..5d46cd87 100644 --- a/app/res/values-ro/strings.xml +++ b/app/res/values-ro/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Niciun element recent"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Șterge tot"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplicația nu este disponibilă"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modul Calm"</string> </resources> diff --git a/app/res/values-ru/strings.xml b/app/res/values-ru/strings.xml index 3370ef08..33dc160a 100644 --- a/app/res/values-ru/strings.xml +++ b/app/res/values-ru/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Нет недавних объектов"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Очистить"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Приложение недоступно"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Режим покоя"</string> </resources> diff --git a/app/res/values-si/strings.xml b/app/res/values-si/strings.xml index c76f8db1..c18a55cb 100644 --- a/app/res/values-si/strings.xml +++ b/app/res/values-si/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"මෑත අයිතම නැත"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"සියල්ල හිස් කරන්න"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"යෙදුම නොතිබේ"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"සන්සුන් ප්රකාරය"</string> </resources> diff --git a/app/res/values-sk/strings.xml b/app/res/values-sk/strings.xml index bc4e278f..46f65489 100644 --- a/app/res/values-sk/strings.xml +++ b/app/res/values-sk/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Žiadne nedávne položky"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Vymazať všetko"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikácia nie je k dispozícii"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Pokojný režim"</string> </resources> diff --git a/app/res/values-sl/strings.xml b/app/res/values-sl/strings.xml index 272784cf..9a408fc1 100644 --- a/app/res/values-sl/strings.xml +++ b/app/res/values-sl/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Ni nedavnih elementov"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Izbriši vse"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacija ni na voljo"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Umirjeni način"</string> </resources> diff --git a/app/res/values-sq/strings.xml b/app/res/values-sq/strings.xml index 5bb1c565..3d7d39b5 100644 --- a/app/res/values-sq/strings.xml +++ b/app/res/values-sq/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Nuk ka asnjë artikull të fundit"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Pastro të gjitha"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacioni nuk ofrohet"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Modaliteti i qetësisë"</string> </resources> diff --git a/app/res/values-sr/strings.xml b/app/res/values-sr/strings.xml index b6c2b791..3a3ae8f1 100644 --- a/app/res/values-sr/strings.xml +++ b/app/res/values-sr/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Нема недавних ставки"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Обриши све"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Апликација није доступна"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Режим опуштања"</string> </resources> diff --git a/app/res/values-sv/strings.xml b/app/res/values-sv/strings.xml index 8be8889c..af06154b 100644 --- a/app/res/values-sv/strings.xml +++ b/app/res/values-sv/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Listan är tom"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Rensa allt"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Appen är inte tillgänglig"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Lugnt läge"</string> </resources> diff --git a/app/res/values-sw/strings.xml b/app/res/values-sw/strings.xml index 3a2ee2ba..9e71a9d3 100644 --- a/app/res/values-sw/strings.xml +++ b/app/res/values-sw/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Hakuna vipengee vya hivi karibuni"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Futa Zote"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Programu haipatikani"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Hali ya utulivu"</string> </resources> diff --git a/app/res/values-ta/strings.xml b/app/res/values-ta/strings.xml index 92bd8a7e..fb294154 100644 --- a/app/res/values-ta/strings.xml +++ b/app/res/values-ta/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"சமீபத்தியவை இல்லை"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"அனைத்தையும் அழி"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ஆப்ஸ் கிடைக்கவில்லை"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"அமைதிப் பயன்முறை"</string> </resources> diff --git a/app/res/values-te/strings.xml b/app/res/values-te/strings.xml index f98c31ed..887b13f7 100644 --- a/app/res/values-te/strings.xml +++ b/app/res/values-te/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"ఇటీవలి ఐటెమ్లు ఏవీ లేవు"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"అన్నీ తీసివేయండి"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"యాప్ అందుబాటులో లేదు"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"క్లెయిమ్ మోడ్"</string> </resources> diff --git a/app/res/values-th/strings.xml b/app/res/values-th/strings.xml index 95d91e40..f84e327b 100644 --- a/app/res/values-th/strings.xml +++ b/app/res/values-th/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"ไม่มีรายการล่าสุด"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"ล้างทั้งหมด"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"แอปไม่พร้อมใช้งาน"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"โหมด Calm"</string> </resources> diff --git a/app/res/values-tl/strings.xml b/app/res/values-tl/strings.xml index e9f03d70..3c76a8bf 100644 --- a/app/res/values-tl/strings.xml +++ b/app/res/values-tl/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Walang kamakailang item"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"I-clear Lahat"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Hindi available ang app"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Calm mode"</string> </resources> diff --git a/app/res/values-tr/strings.xml b/app/res/values-tr/strings.xml index 4d5479d2..eecca891 100644 --- a/app/res/values-tr/strings.xml +++ b/app/res/values-tr/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Yeni öğe yok"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Tümünü Temizle"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Uygulama kullanılamıyor"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Sakin mod"</string> </resources> diff --git a/app/res/values-uk/strings.xml b/app/res/values-uk/strings.xml index f05ffc5a..1aa273eb 100644 --- a/app/res/values-uk/strings.xml +++ b/app/res/values-uk/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Немає нещодавніх об’єктів"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Очистити все"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Додаток недоступний"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Спокійний режим"</string> </resources> diff --git a/app/res/values-ur/strings.xml b/app/res/values-ur/strings.xml index bd254826..230dc649 100644 --- a/app/res/values-ur/strings.xml +++ b/app/res/values-ur/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"کوئی حالیہ آئٹم نہیں"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"تمام صاف کریں"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"ایپ دستیاب نہیں ہے"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"پُرسکون وضع"</string> </resources> diff --git a/app/res/values-uz/strings.xml b/app/res/values-uz/strings.xml index e629f4a4..97bc0cc1 100644 --- a/app/res/values-uz/strings.xml +++ b/app/res/values-uz/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Yaqinda ishlatilgan ilovalar yoʻq"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Hammasini yopish"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"Ilova mavjud emas"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Dam olish rejimi"</string> </resources> diff --git a/app/res/values-zh-rCN/strings.xml b/app/res/values-zh-rCN/strings.xml index 93b4dbbc..1992d3b4 100644 --- a/app/res/values-zh-rCN/strings.xml +++ b/app/res/values-zh-rCN/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"没有最近用过的项目"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"全部清除"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"应用无法打开"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"平静模式"</string> </resources> diff --git a/app/res/values-zh-rHK/strings.xml b/app/res/values-zh-rHK/strings.xml index 01837ff6..031c0afd 100644 --- a/app/res/values-zh-rHK/strings.xml +++ b/app/res/values-zh-rHK/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"沒有最近項目"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"全部清除"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"目前無法使用這個應用程式"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"平靜模式"</string> </resources> diff --git a/app/res/values-zh-rTW/strings.xml b/app/res/values-zh-rTW/strings.xml index 810bd573..128f7393 100644 --- a/app/res/values-zh-rTW/strings.xml +++ b/app/res/values-zh-rTW/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"沒有最近使用的項目"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"全部清除"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"應用程式目前無法使用"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"平靜模式"</string> </resources> diff --git a/app/res/values-zu/strings.xml b/app/res/values-zu/strings.xml index dda65d63..7abc29f5 100644 --- a/app/res/values-zu/strings.xml +++ b/app/res/values-zu/strings.xml @@ -34,6 +34,5 @@ <string name="recents_empty_state_text" msgid="8228569970506899117">"Azikho izinto zakamuva"</string> <string name="recents_clear_all_text" msgid="3594272268167720553">"Sula Konke"</string> <string name="failure_opening_recent_task_message" msgid="963567570097465902">"I-app ayitholakali"</string> - <!-- no translation found for calm_mode_title (4364804976931157567) --> - <skip /> + <string name="calm_mode_title" msgid="4364804976931157567">"Imodi ezolile"</string> </resources> diff --git a/app/src/com/android/car/carlauncher/CarLauncher.java b/app/src/com/android/car/carlauncher/CarLauncher.java index 05a90dbd..c686584d 100644 --- a/app/src/com/android/car/carlauncher/CarLauncher.java +++ b/app/src/com/android/car/carlauncher/CarLauncher.java @@ -20,23 +20,17 @@ import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.car.settings.CarSettings.Secure.KEY_USER_TOS_ACCEPTED; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY; +import static com.android.car.carlauncher.CarLauncherViewModel.CarLauncherViewModelFactory; + import android.app.ActivityManager; import android.app.ActivityOptions; import android.app.TaskStackListener; import android.car.Car; -import android.car.app.CarActivityManager; -import android.car.app.CarTaskViewController; -import android.car.app.CarTaskViewControllerCallback; -import android.car.app.ControlledRemoteCarTaskView; -import android.car.app.ControlledRemoteCarTaskViewCallback; -import android.car.app.ControlledRemoteCarTaskViewConfig; import android.car.user.CarUserManager; import android.content.ComponentName; import android.content.Intent; import android.content.res.Configuration; import android.database.ContentObserver; -import android.graphics.Color; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.UserManager; @@ -46,7 +40,6 @@ import android.view.Display; import android.view.ViewGroup; import android.view.WindowManager; -import androidx.annotation.NonNull; import androidx.collection.ArraySet; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentTransaction; @@ -76,15 +69,13 @@ import java.util.Set; */ public class CarLauncher extends FragmentActivity { public static final String TAG = "CarLauncher"; - private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); - private static boolean sAutoRestartOnCrash = false; + public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private ActivityManager mActivityManager; private TaskViewManager mTaskViewManager; private Car mCar; private CarTaskView mTaskView; - private ControlledRemoteCarTaskView mRemoteCarTaskView; private int mCarLauncherTaskId = INVALID_TASK_ID; private Set<HomeCardModule> mHomeCardModules; @@ -93,6 +84,7 @@ public class CarLauncher extends FragmentActivity { private boolean mUseSmallCanvasOptimizedMap; private boolean mUseRemoteCarTaskView; private ViewGroup mMapsCard; + private CarLauncherViewModel mCarLauncherViewModel; @VisibleForTesting ContentObserver mTosContentObserver; @@ -212,93 +204,17 @@ public class CarLauncher extends FragmentActivity { } private void setupRemoteCarTaskView(ViewGroup parent) { - long createCarStartTime = System.nanoTime(); - mCar = Car.createCar(this); - if (DEBUG) { - long createCarEndTime = System.nanoTime(); - Log.d(TAG, "Initialization of the CarApi took " - + (createCarEndTime - createCarStartTime) - + " nanoseconds"); - } - CarActivityManager carAM = mCar.getCarManager(CarActivityManager.class); + mCarLauncherViewModel = new ViewModelProvider(this, + new CarLauncherViewModelFactory(this, getMapsIntent())) + .get(CarLauncherViewModel.class); - if (Build.IS_USER) { - sAutoRestartOnCrash = true; - } - - carAM.getCarTaskViewController( - this, - getMainExecutor(), - new CarTaskViewControllerCallback() { - @Override - public void onConnected( - CarTaskViewController carTaskViewController) { - carTaskViewController.createControlledRemoteCarTaskView( - new ControlledRemoteCarTaskViewConfig.Builder() - .setActivityIntent(getMapsIntent()) - .setShouldAutoRestartOnTaskRemoval(sAutoRestartOnCrash) - .build(), - getMainExecutor(), - new ControlledRemoteCarTaskViewCallback() { - @Override - public void onTaskViewCreated( - ControlledRemoteCarTaskView taskView) { - mRemoteCarTaskView = taskView; - parent.addView(taskView); - } - - @Override - public void onTaskViewInitialized() { - maybeLogReady(); - } - - @Override - public void onTaskViewReleased() { - mRemoteCarTaskView = null; - parent.removeAllViews(); - } - - @Override - public void onTaskAppeared( - @NonNull ActivityManager.RunningTaskInfo taskInfo) { - if (DEBUG) { - Log.d(TAG, "MapsTaskView: onTaskAppeared: taskId=" - + taskInfo.taskId + " at " - + System.currentTimeMillis() + " milliseconds"); - } - if (!sAutoRestartOnCrash) { - mRemoteCarTaskView.setBackgroundColor( - Color.TRANSPARENT); - } - } - - @Override - public void onTaskVanished( - @NonNull ActivityManager.RunningTaskInfo taskInfo) { - if (DEBUG) { - Log.d(TAG, "MapsTaskView: onTaskVanished: taskId=" - + taskInfo.taskId + " at " - + System.currentTimeMillis() + " milliseconds"); - } - if (!sAutoRestartOnCrash) { - // RemoteCarTaskView color is set to red to indicate - // that nothing is wrong with the task view but maps - // in the task view has crashed. More details in - // b/247156851. - mRemoteCarTaskView.setBackgroundColor(Color.RED); - } - } - }); - } + getLifecycle().addObserver(mCarLauncherViewModel); - @Override - public void onDisconnected( - CarTaskViewController carTaskViewController) { - Log.d(TAG, "onDisconnected"); - mRemoteCarTaskView = null; - parent.removeAllViews(); - } - }); + mCarLauncherViewModel.getRemoteCarTaskView().observe(this, taskView -> { + if (taskView != null && taskView.getParent() == null) { + parent.addView(taskView); + } + }); } private void setUpTaskView(ViewGroup parent) { @@ -361,25 +277,22 @@ public class CarLauncher extends FragmentActivity { release(); } - private boolean isTaskViewInitialized() { - return (mTaskView != null && mTaskView.isInitialized()) - || (mRemoteCarTaskView != null && mRemoteCarTaskView.isInitialized()); - } - private int getTaskViewTaskId() { if (mTaskView != null) { return mTaskView.getTaskId(); } - if (mRemoteCarTaskView != null) { - return mRemoteCarTaskView.getTaskInfo() == null - ? INVALID_TASK_ID : mRemoteCarTaskView.getTaskInfo().taskId; + if (mCarLauncherViewModel != null) { + return mCarLauncherViewModel.getRemoteCarTaskViewTaskId(); } return INVALID_TASK_ID; } private void release() { mTaskView = null; - mRemoteCarTaskView = null; + // When using a ViewModel for the RemoteCarTaskViews, the task view can still be attached + // to the mMapsCard due to which the CarLauncher activity does not get garbage collected + // during activity recreation. + mMapsCard = null; if (mCar != null) { mCar.disconnect(); mCar = null; @@ -424,7 +337,7 @@ public class CarLauncher extends FragmentActivity { /** Logs that the Activity is ready. Used for startup time diagnostics. */ private void maybeLogReady() { boolean isResumed = isResumed(); - boolean taskViewInitialized = isTaskViewInitialized(); + boolean taskViewInitialized = mTaskView != null && mTaskView.isInitialized(); if (DEBUG) { Log.d(TAG, "maybeLogReady(" + getUserId() + "): mapsReady=" + taskViewInitialized + ", started=" + isResumed + ", alreadyLogged: " diff --git a/app/src/com/android/car/carlauncher/CarLauncherViewModel.java b/app/src/com/android/car/carlauncher/CarLauncherViewModel.java new file mode 100644 index 00000000..3bafbd57 --- /dev/null +++ b/app/src/com/android/car/carlauncher/CarLauncherViewModel.java @@ -0,0 +1,214 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.car.carlauncher; + +import static android.app.ActivityTaskManager.INVALID_TASK_ID; +import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; + +import static java.util.Objects.requireNonNull; + +import android.annotation.NonNull; +import android.annotation.SuppressLint; +import android.annotation.UiContext; +import android.app.ActivityManager; +import android.car.Car; +import android.car.app.CarActivityManager; +import android.car.app.CarTaskViewController; +import android.car.app.CarTaskViewControllerCallback; +import android.car.app.CarTaskViewControllerHostLifecycle; +import android.car.app.ControlledRemoteCarTaskView; +import android.car.app.ControlledRemoteCarTaskViewCallback; +import android.car.app.ControlledRemoteCarTaskViewConfig; +import android.car.app.RemoteCarTaskView; +import android.content.Context; +import android.content.Intent; +import android.graphics.Color; +import android.os.Build; +import android.util.Log; + +import androidx.lifecycle.DefaultLifecycleObserver; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + +/** + * A car launcher view model to manage the lifecycle of {@link RemoteCarTaskView}. + */ +public final class CarLauncherViewModel extends ViewModel implements DefaultLifecycleObserver { + private static final String TAG = CarLauncher.TAG; + private static final boolean DEBUG = CarLauncher.DEBUG; + private static final boolean sAutoRestartOnCrash = Build.IS_USER; + + private final CarActivityManager mCarActivityManager; + private final Car mCar; + private final CarTaskViewControllerHostLifecycle mHostLifecycle; + @SuppressLint("StaticFieldLeak") // We're not leaking this context as it is the window context. + private final Context mWindowContext; + private final Intent mMapsIntent; + private final MutableLiveData<RemoteCarTaskView> mRemoteCarTaskView; + + public CarLauncherViewModel(@UiContext Context context, @NonNull Intent mapsIntent) { + mWindowContext = context.createWindowContext(TYPE_APPLICATION_STARTING, /* options */ null); + mMapsIntent = mapsIntent; + mCar = Car.createCar(mWindowContext); + mCarActivityManager = mCar.getCarManager(CarActivityManager.class); + mHostLifecycle = new CarTaskViewControllerHostLifecycle(); + mRemoteCarTaskView = new MutableLiveData<>(null); + ControlledRemoteCarTaskViewCallback controlledRemoteCarTaskViewCallback = + new ControlledRemoteCarTaskViewCallbackImpl(mRemoteCarTaskView); + + CarTaskViewControllerCallback carTaskViewControllerCallback = + new CarTaskViewControllerCallbackImpl(controlledRemoteCarTaskViewCallback); + + mCarActivityManager.getCarTaskViewController(mWindowContext, mHostLifecycle, + mWindowContext.getMainExecutor(), carTaskViewControllerCallback); + } + + LiveData<RemoteCarTaskView> getRemoteCarTaskView() { + return mRemoteCarTaskView; + } + + /** + * Returns remote car task view task Id. + */ + public int getRemoteCarTaskViewTaskId() { + if (mRemoteCarTaskView != null && mRemoteCarTaskView.getValue() != null + && mRemoteCarTaskView.getValue().getTaskInfo() != null) { + return mRemoteCarTaskView.getValue().getTaskInfo().taskId; + } + return INVALID_TASK_ID; + } + + /** + * Shows remote car task view when activity is resumed. + */ + @Override + public void onResume(@NonNull LifecycleOwner owner) { + DefaultLifecycleObserver.super.onResume(owner); + mHostLifecycle.hostAppeared(); + } + + @Override + public void onStop(@NonNull LifecycleOwner owner) { + DefaultLifecycleObserver.super.onStop(owner); + mHostLifecycle.hostDisappeared(); + } + + @Override + protected void onCleared() { + if (mRemoteCarTaskView != null) { + mRemoteCarTaskView.setValue(null); + } + if (mCar != null) { + mCar.disconnect(); + } + mHostLifecycle.hostDestroyed(); + super.onCleared(); + } + + private static final class ControlledRemoteCarTaskViewCallbackImpl implements + ControlledRemoteCarTaskViewCallback { + private final MutableLiveData<RemoteCarTaskView> mRemoteCarTaskView; + + private ControlledRemoteCarTaskViewCallbackImpl( + MutableLiveData<RemoteCarTaskView> remoteCarTaskView) { + mRemoteCarTaskView = remoteCarTaskView; + } + + @Override + public void onTaskViewCreated(@NonNull ControlledRemoteCarTaskView taskView) { + mRemoteCarTaskView.setValue(taskView); + } + + @Override + public void onTaskViewInitialized() { + if (DEBUG) { + Log.d(TAG, "MapsTaskView: onTaskViewInitialized"); + } + } + + @Override + public void onTaskAppeared(@NonNull ActivityManager.RunningTaskInfo taskInfo) { + if (DEBUG) { + Log.d(TAG, "MapsTaskView: onTaskAppeared: taskId=" + taskInfo.taskId); + } + if (!sAutoRestartOnCrash) { + mRemoteCarTaskView.getValue().setBackgroundColor(Color.TRANSPARENT); + } + } + + @Override + public void onTaskVanished(@NonNull ActivityManager.RunningTaskInfo taskInfo) { + if (DEBUG) { + Log.d(TAG, "MapsTaskView: onTaskVanished: taskId=" + taskInfo.taskId); + } + if (!sAutoRestartOnCrash) { + // RemoteCarTaskView color is set to red to indicate + // that nothing is wrong with the task view but maps + // in the task view has crashed. More details in + // b/247156851. + mRemoteCarTaskView.getValue().setBackgroundColor(Color.RED); + } + } + } + + private final class CarTaskViewControllerCallbackImpl implements CarTaskViewControllerCallback { + private final ControlledRemoteCarTaskViewCallback mControlledRemoteCarTaskViewCallback; + + private CarTaskViewControllerCallbackImpl( + ControlledRemoteCarTaskViewCallback controlledRemoteCarTaskViewCallback) { + mControlledRemoteCarTaskViewCallback = controlledRemoteCarTaskViewCallback; + } + + @Override + public void onConnected(@NonNull CarTaskViewController carTaskViewController) { + carTaskViewController.createControlledRemoteCarTaskView( + new ControlledRemoteCarTaskViewConfig.Builder() + .setActivityIntent(mMapsIntent) + .setShouldAutoRestartOnTaskRemoval(sAutoRestartOnCrash) + .build(), + mWindowContext.getMainExecutor(), + mControlledRemoteCarTaskViewCallback); + } + + @Override + public void onDisconnected(@NonNull CarTaskViewController carTaskViewController) { + if (DEBUG) { + Log.d(TAG, "onDisconnected"); + } + mRemoteCarTaskView.setValue(null); + } + } + + static final class CarLauncherViewModelFactory implements ViewModelProvider.Factory { + private final Context mContext; + private final Intent mMapsIntent; + + CarLauncherViewModelFactory(@UiContext Context context, @NonNull Intent mapsIntent) { + mMapsIntent = requireNonNull(mapsIntent); + mContext = requireNonNull(context); + } + + @NonNull + @Override + public <T extends ViewModel> T create(Class<T> modelClass) { + return modelClass.cast(new CarLauncherViewModel(mContext, mMapsIntent)); + } + } +} diff --git a/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelFactoryTest.java b/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelFactoryTest.java new file mode 100644 index 00000000..722a3edb --- /dev/null +++ b/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelFactoryTest.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.car.carlauncher; + +import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; + +import static com.android.car.carlauncher.CarLauncherViewModel.CarLauncherViewModelFactory; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; + +import android.car.test.mocks.AbstractExtendedMockitoTestCase; +import android.content.Context; +import android.content.Intent; +import android.view.WindowManager; + +import androidx.test.ext.junit.rules.ActivityScenarioRule; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import com.android.car.carlauncher.TaskViewManagerTest.TestActivity; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; + +@RunWith(AndroidJUnit4.class) +public class CarLauncherViewModelFactoryTest extends AbstractExtendedMockitoTestCase { + @Rule + public final ActivityScenarioRule<TestActivity> mActivityRule = + new ActivityScenarioRule<>(TestActivity.class); + + @Mock + private Context mContext; + @Mock + private Intent mIntent; + + private CarLauncherViewModelFactory mCarLauncherViewModelFactory; + private TestActivity mActivity; + + @Before + public void setUp() { + mActivityRule.getScenario().onActivity(activity -> mActivity = activity); + Context windowContext = mActivity + .createWindowContext(TYPE_APPLICATION_STARTING, /* options */ null); + when(mContext.createWindowContext(eq(WindowManager.LayoutParams.TYPE_APPLICATION_STARTING), + any())).thenReturn(windowContext); + mCarLauncherViewModelFactory = new CarLauncherViewModelFactory(mContext, mIntent); + } + + @After + public void tearDown() throws InterruptedException { + mCarLauncherViewModelFactory = null; + mActivityRule.getScenario().close(); + mActivity.finishCompletely(); + } + + @Test + public void testCreate_instanceNotNull() { + CarLauncherViewModel carLauncherViewModel = + mCarLauncherViewModelFactory.create(CarLauncherViewModel.class); + assertThat(carLauncherViewModel).isNotNull(); + } +} diff --git a/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelTest.java b/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelTest.java new file mode 100644 index 00000000..087d5a11 --- /dev/null +++ b/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelTest.java @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.car.carlauncher; + +import static com.google.common.truth.Truth.assertThat; + +import android.app.Instrumentation; +import android.car.app.RemoteCarTaskView; +import android.car.test.mocks.AbstractExtendedMockitoTestCase; +import android.content.Context; +import android.content.Intent; + +import androidx.core.app.ActivityCompat; +import androidx.test.ext.junit.rules.ActivityScenarioRule; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; + +import com.android.car.carlauncher.TaskViewManagerTest.TestActivity; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; + +@RunWith(AndroidJUnit4.class) +public final class CarLauncherViewModelTest extends AbstractExtendedMockitoTestCase { + private final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation(); + private final Context mContext = mInstrumentation.getContext(); + + @Rule + public final ActivityScenarioRule<TestActivity> mActivityRule = + new ActivityScenarioRule<>(TestActivity.class); + + @Mock + private Intent mIntent; + + private RemoteCarTaskView mRemoteCarTaskView; + private TestActivity mActivity; + + + @Before + public void setUp() { + mActivityRule.getScenario().onActivity(activity -> mActivity = activity); + } + + @After + public void tearDown() throws InterruptedException { + mActivityRule.getScenario().close(); + mActivity.finishCompletely(); + mRemoteCarTaskView = null; + } + + @Test + public void testOnConfigChange_sameRemoteCarTaskView() { + // Arrange + createCarLauncherViewModel(); + RemoteCarTaskView oldRemoteCarTaskView = mRemoteCarTaskView; + + // Act + triggerActivityRecreation(); + + // Assert + assertThat(oldRemoteCarTaskView).isSameInstanceAs(mRemoteCarTaskView); + } + + @Test + public void testViewModelOnCleared_clearsRemoteCarTaskView() { + // Arrange + CarLauncherViewModel carLauncherViewModel = createCarLauncherViewModel(); + + // Act + runOnMain(carLauncherViewModel::onCleared); + mInstrumentation.waitForIdleSync(); + + // Assert + assertThat(mRemoteCarTaskView).isNull(); + } + + private CarLauncherViewModel createCarLauncherViewModel() { + CarLauncherViewModel carLauncherViewModel = new CarLauncherViewModel(mActivity, mIntent); + runOnMain(() -> carLauncherViewModel.getRemoteCarTaskView().observeForever( + remoteCarTaskView -> mRemoteCarTaskView = remoteCarTaskView)); + mInstrumentation.waitForIdleSync(); + return carLauncherViewModel; + } + + private void triggerActivityRecreation() { + // Causes activity recreation with a new instance resulting in the same flow as + // activity being recreated due to a configuration change. + runOnMain(() -> ActivityCompat.recreate(mActivity)); + mInstrumentation.waitForIdleSync(); + } + + private void runOnMain(Runnable runnable) { + mContext.getMainExecutor().execute(runnable); + } +} diff --git a/docklib-util/res/values-en-rXC/strings.xml b/docklib-util/res/values-en-rXC/strings.xml deleted file mode 100644 index b8409adb..00000000 --- a/docklib-util/res/values-en-rXC/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ Copyright (C) 2023 The Android Open Source Project - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="broadcast_sender_permission_label" msgid="5796194170732286003">"Dock broadcast sender"</string> - <string name="broadcast_sender_permission_desc" msgid="8345272264908051930">"Permission required for package to broadcast events to the Dock."</string> -</resources> diff --git a/docklib/res/values-en-rXC/strings.xml b/docklib/res/values-en-rXC/strings.xml new file mode 100644 index 00000000..a48b2a25 --- /dev/null +++ b/docklib/res/values-en-rXC/strings.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ Copyright (C) 2023 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="broadcast_sender_permission_label" msgid="5269973644784898827">"Dock broadcast sender"</string> + <string name="broadcast_sender_permission_desc" msgid="5052882219053515363">"Permission required for package to broadcast events to the Dock."</string> + <string name="broadcast_receiver_permission_label" msgid="6015991948761587466">"Dock broadcast receiver"</string> + <string name="broadcast_receiver_permission_desc" msgid="1623002370607914795">"Permission required for package listen to broadcast events for the Dock."</string> +</resources> |