diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 629579bb8af..c39922f03e5 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -3123,6 +3123,8 @@ Kom meer te wete by g.co/pixel/faceunlock."
"Stelselgebruik vir die afgelope 24 u."
"Stelselgebruik vir %s"
"Programgebruik vir %s"
+ "Stelselgebruik sedert battery laas volgelaai is tot %s"
+ "Appgebruik sedert battery laas volgelaai is tot %s"
"Total: minder as \'n min."
"Agtergrond: minder as \'n min."
"Totaal: %s"
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 5ce22544db7..7f5b17fb657 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock ላይ የበለጠ ይወቁ።"
"ላለፉት 24 ሰዓቶች የሥርዓት አጠቃቀም"
"የ%s የሥርዓት አጠቃቀም"
"የ%s የመተግበሪያ አጠቃቀም"
+ "ሙሉ ኃይል ከተሞላበት የመጨረሻ ጊዜ ጀምሮ እስከ %s ያለ የሥርዓት አጠቃቀም"
+ "ሙሉ ኃይል ከተሞላበት የመጨረሻው ጊዜ ጀምሮ እስከ %s ድረስ ያለ የመተግበሪያ አጠቃቀም"
"ጠቅላላ፦ ከአንድ ደቂቃ በታች"
"ዳራ፦ ከአንድ ደቂቃ በታች"
"ጠቅላላ፦ %s"
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 724f07634cf..4eeb3cbe425 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -3275,6 +3275,8 @@
"استخدام النظام خلال آخر 24 ساعة"
"استخدام النظام خلال %s"
"استخدام التطبيق خلال %s"
+ "استخدام النظام للبطارية منذ آخر شحن كامل حتى %s"
+ "استخدام التطبيق للبطارية منذ آخر شحن كامل حتى %s"
"مدة الاستخدام الإجمالي: أقل من دقيقة"
"مدة استخدام البطارية في الخلفية: أقل من دقيقة"
"مدة الاستخدام الإجمالي: %s"
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 49dc438e9f6..784c3c680f7 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlockত অধিক জানক।"
"যোৱা ২৪ ঘণ্টাত হোৱা ছিষ্টেমৰ ব্যৱহাৰ"
"%sৰ বাবে ছিষ্টেমৰ ব্যৱহাৰ"
"%sৰ বাবে এপৰ ব্যৱহাৰ"
+ "%sলৈ অন্তিমবাৰ সম্পূৰ্ণৰূপে চাৰ্জ হোৱাৰ পাছত ছিষ্টেমৰ ব্যৱহাৰ"
+ "%sলৈকে অন্তিমবাৰ সম্পূৰ্ণৰূপে চাৰ্জ হোৱাৰ পাছত এপৰ ব্যৱহাৰ"
"মুঠ: এক মিনিটতকৈ কম"
"নেপথ্য: এক মিনিটতকৈ কম"
"মুঠ: %s"
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 10edc3bd520..7ee81a69297 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -3123,6 +3123,8 @@
"Son 24 saat üçün sistem istifadəsi"
"%s üçün sistem istifadəsi"
"%s üçün tətbiq istifadəsi"
+ "Son tam şarjdan %s radələrinə qədər sistem istifadəsi"
+ "Son tam şarjdan %s radələrinə qədər tətbiq istifadəsi"
"Cəmi: bir dəqiqədən az"
"Arxa fon: bir dəqiqədən az"
"Cəmi: %s"
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 6bec7503855..c230c201171 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -3161,6 +3161,8 @@ Saznajte više na g.co/pixel/faceunlock."
"Potrošnja od strane sistema u poslednja 24 sata"
"Potrošnja od strane sistema za: %s"
"Potrošnja od strane aplikacija za: %s"
+ "Korišćenje sistema od poslednjeg potpunog punjenja do %s"
+ "Korišćenje aplikacija od poslednjeg potpunog punjenja do %s"
"Ukupno: manje od minut"
"Pozadina: manje od minut"
"Ukupno: %s"
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index c468a16c977..36b63374429 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -3199,6 +3199,8 @@
"Выкарыстанне сістэмай зараду за апошнія 24 гадз"
"Выкарыстанне сістэмай за %s"
"Выкарыстанне праграмай за %s"
+ "Выкарыстанне сістэмы з моманту апошняй поўнай зарадкі да %s"
+ "Выкарыстанне праграм з моманту апошняй поўнай зарадкі да %s"
"Усяго: менш адной хвіліны"
"У фонавым рэжыме: менш адной хвіліны"
"Усяго: %s"
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index e0d9f7a6699..620b014f2ae 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -3123,6 +3123,8 @@
"Използване от системата за последните 24 ч"
"Използване от системата за %s"
"Използване от приложенията за %s"
+ "Използване на системата от последното пълно зареждане до %s"
+ "Използване на приложенията от последното пълно зареждане до %s"
"Общо: По-малко от една минута"
"На заден план: По-малко от една минута"
"Общо: %s"
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 1aa82406baa..9450066c347 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock লিঙ্ক থেকে আরও জানুন।"
"গত ২৪ ঘন্টা ব্যাটারি সিস্টেম ব্যবহারের তথ্য"
"%s-এর জন্য সিস্টেমের ব্যবহার"
"%s-এর জন্য অ্যাপের ব্যবহার"
+ "শেষবার সম্পূর্ণ চার্জ হওয়া থেকে %s পর্যন্ত সিস্টেমের ব্যবহার"
+ "শেষবার সম্পূর্ণ চার্জ হওয়া থেকে %s পর্যন্ত অ্যাপের ব্যবহার"
"মোট: এক মিনিটের থেকে কম"
"ব্যাকগ্রাউন্ড: এক মিনিটের থেকে কম"
"মোট: %s"
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 21ca8d3c5a1..3cbf1a2d1c0 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -3161,6 +3161,8 @@ Saznajte više na g.co/pixel/faceunlock."
"Korištenje sistema u posljednja 24 h"
"Korištenje sistema za: %s"
"Korištenje aplikacije za: %s"
+ "Korištenje sistema od posljednjeg potpunog punjenja do dana %s"
+ "Korištenje aplikacija od posljednjeg potpunog punjenja do dana %s"
"Ukupno: manje od minute"
"Pozadina: manje od minute"
"Ukupno: %s"
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 28f14903855..ba2a9b06daa 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -3123,6 +3123,8 @@ Obtén més informació a g.co/pixel/faceunlock."
"Ús del sistema durant les 24 darreres hores"
"Ús del sistema entre %s"
"Ús d\'aplicacions entre %s"
+ "Ús del sistema des de la darrera càrrega completa fins a %s"
+ "Ús de les aplicacions des de la darrera càrrega completa fins a %s"
"Total: menys d\'un minut"
"En segon pla: menys d\'un minut"
"Total: %s"
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 5610e9e631f..05e65608769 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -3199,6 +3199,8 @@ Další informace: g.co/pixel/faceunlock."
"Využití baterie systémem za posledních 24 hodin"
"Využití baterie systémem: %s"
"Využití baterie aplikací: %s"
+ "Využití systémem od posledního nabití do %s"
+ "Využití aplikacemi od posledního nabití do %s"
"Celkem: méně než minuta"
"Na pozadí: méně než minuta"
"Celkem: %s"
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 39890e2d5b4..9f8550c6d8f 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -3123,6 +3123,8 @@ Få flere oplysninger på g.co/pixel/faceunlock."
"Systemforbrug for de seneste 24 timer"
"Systemforbrug for %s"
"Appforbrug for %s"
+ "Systemforbrug siden sidste fulde opladning %s"
+ "Appforbrug siden sidste fulde opladning %s"
"I alt: Under et minut"
"Baggrund: Under et minut"
"I alt: %s"
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 38d17b7272f..63e0d720bd7 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -3124,6 +3124,8 @@ Weitere Informationen findest du unter g.co/pixel/faceunlock"
"Systemnutzung während der letzten 24 Stunden"
"Systemnutzung im Zeitraum %s"
"App-Nutzung im Zeitraum %s"
+ "Systemnutzung von letzter vollständiger Aufladung bis %s"
+ "App-Nutzung von letzter vollständiger Aufladung bis %s"
"Gesamt: weniger als eine Minute"
"Hintergrund: weniger als eine Minute"
"Gesamt: %s"
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 273ed493f30..ad549b34e97 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -3123,6 +3123,8 @@
"Χρήση συστήματος για τις τελευταίες 24 ω."
"Χρήση συστήματος για %s"
"Χρήση εφαρμογής για %s"
+ "Χρήση συστήματος από την τελευταία πλήρη φόρτιση έως %s"
+ "Χρήση εφαρμογών από την τελευταία πλήρη φόρτιση έως %s"
"Σύνολο: λιγότερο από ένα λεπτό"
"Παρασκήνιο: λιγότερο από ένα λεπτό"
"Σύνολο: %s"
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 358f6ced94c..26781c50da1 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -3123,6 +3123,8 @@ Learn more at g.co/pixel/faceunlock."
"System usage for past 24 hours"
"System usage for %s"
"App usage for %s"
+ "System usage since last full charge to %s"
+ "App usage since last full charge to %s"
"Total: less than a min."
"Background: less than a min"
"Total: %s"
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 913ce2280ab..b5b268f024b 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -3123,6 +3123,8 @@ Learn more at g.co/pixel/faceunlock."
"System usage for past 24 hr"
"System usage for %s"
"App usage for %s"
+ "System usage since last full charge to %s"
+ "App usage since last full charge to %s"
"Total: less than a min"
"Background: less than a min"
"Total: %s"
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 69fbf1753c0..38084eeebe8 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -3123,6 +3123,8 @@ Learn more at g.co/pixel/faceunlock."
"System usage for past 24 hours"
"System usage for %s"
"App usage for %s"
+ "System usage since last full charge to %s"
+ "App usage since last full charge to %s"
"Total: less than a min."
"Background: less than a min"
"Total: %s"
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 2d738325332..9e2fb97ad9f 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -3123,6 +3123,8 @@ Learn more at g.co/pixel/faceunlock."
"System usage for past 24 hours"
"System usage for %s"
"App usage for %s"
+ "System usage since last full charge to %s"
+ "App usage since last full charge to %s"
"Total: less than a min."
"Background: less than a min"
"Total: %s"
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index c224fdba2f2..719f513d27e 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -3099,6 +3099,8 @@
"System usage for past 24 hr"
"System usage for %s"
"App usage for %s"
+ "System usage since last full charge to %s"
+ "App usage since last full charge to %s"
"Total: less than a min"
"Background: less than a min"
"Total: %s"
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index e35f21166eb..fb962569afd 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -3123,6 +3123,8 @@ Obtén más información en g.co/pixel/faceunlock."
"Uso del sistema en las últimas 24 h"
"Uso del sistema de %s"
"Uso de apps de %s"
+ "Uso del sistema desde la última carga completa hasta el %s"
+ "Uso de apps desde la última carga completa hasta el %s"
"Total: menos de un minuto"
"En segundo plano: menos de un minuto"
"Total: %s"
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 901361ba2a4..fd343e6802c 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -3123,6 +3123,8 @@ Para consultar más información, visita g.co/pixel/faceunlock."
"Uso del sistema durante las últimas 24 h"
"Uso del sistema de %s"
"Uso de aplicaciones de %s"
+ "Uso del sistema desde la última carga completa hasta las %s"
+ "Uso de la aplicación desde la última carga completa hasta las %s"
"Total: menos de 1 minuto"
"En segundo plano: menos de 1 minuto"
"Total: %s"
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index e8180f52d01..6d1389033be 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -3123,6 +3123,8 @@ Lisateave: g.co/pixel/faceunlock."
"Süsteemi kasutus viimase 24 h jooksul"
"Süsteemi kasutus: %s"
"Rakenduse kasutus: %s"
+ "Süsteemi kasutus pärast viimast täislaadimist %s"
+ "Rakenduse kasutus pärast viimast täislaadimist %s"
"Kokku: vähem kui minut"
"Taustal: vähem kui minut"
"Kokku: %s"
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 36b260e1033..f4fae8f0449 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -3123,6 +3123,8 @@ Lortu informazio gehiago g.co/pixel/faceunlock helbidean."
"Sistemak erabilitakoa azken 24 orduetan"
"Sistemak erabilitakoa: %s"
"Aplikazioek erabilitakoa: %s"
+ "Sistemaren erabilera gailua guztiz kargatuz geroztik (%s)"
+ "Aplikazioaren erabilera gailua guztiz kargatuz geroztik (%s)"
"Guztira: minutu bat baino gutxiago"
"Atzeko planoa: minutu bat baino gutxiago"
"Guztira: %s"
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 9ed220f14a2..494e9d80010 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -3123,6 +3123,8 @@
"استفاده از سیستم در ۲۴ ساعت گذشته"
"استفاده از سیستم برای %s"
"استفاده از برنامه برای %s"
+ "مصرف سیستم از آخرین شارژ کامل تا %s"
+ "مصرف برنامه از آخرین شارژ کامل تا %s"
"مجموع: کمتر از یک دقیقه"
"پسزمینه: کمتر از یک دقیقه"
"مجموع: %s"
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 3718e6615e4..ef0f501ed55 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -3123,6 +3123,8 @@ Lue lisää: g.co/pixel/faceunlock."
"Järjestelmän käyttö 24 viime tunnin sisällä"
"Järjestelmän käyttö: %s"
"Sovelluksen käyttö: %s"
+ "Järjestelmän käyttö edellisestä täydestä latauksesta klo %s asti"
+ "Sovellusten käyttö edellisestä täydestä latauksesta klo %s asti"
"Yhteensä: alle minuutti"
"Taustalla: alle minuutti"
"Yhteensä: %s"
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index b6d35bcd5de..76337e38e92 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -3123,6 +3123,8 @@ Apprenez-en plus à la page g.co/pixel/faceunlock."
"Utilisation par le système, dernières 24 h"
"Utilisation par le système : %s"
"Utilisation par l\'application : %s"
+ "Utilisation du système depuis la dernière recharge complète jusqu\'à %s"
+ "Utilisation des applications depuis la dernière recharge complète jusqu\'à %s"
"Total : moins d\'une minute"
"Arrière-plan : moins d\'une minute"
"Total : %s"
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 91c83189da6..a1eb8a3f725 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -3123,6 +3123,8 @@ En savoir plus : g.co/pixel/faceunlock."
"Utilisation par le système - Dernières 24 h"
"Utilisation par le système pour la période : %s"
"Utilisation par l\'appli pour la période : %s"
+ "Utilisation par le système depuis la dernière charge complète (%s)"
+ "Utilisation par l\'appli depuis la dernière charge complète (%s)"
"Total : moins d\'une min"
"Arrière-plan : moins d\'une min"
"Total : %s"
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 5933239f8a4..626cd0e4a27 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -3123,6 +3123,8 @@ Obtén máis información en g.co/pixel/faceunlock."
"Uso do sistema durante as últimas 24 horas"
"Uso do sistema durante %s"
"Uso das aplicacións durante %s"
+ "Uso por parte do sistema desde a última carga completa ata esta hora: %s"
+ "Uso por parte das aplicacións desde a última carga completa ata esta hora: %s"
"Total: menos dun minuto"
"En segundo plano: menos dun minuto"
"Total: %s"
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index fbf92928721..35b0ed68744 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock પર વધુ જાણો."
"છેલ્લા 24 કલાકમાં સિસ્ટમનો વપરાશ"
"%s માટે સિસ્ટમનો વપરાશ"
"%s માટે ઍપનો વપરાશ"
+ "છેલ્લે %s પર પૂર્ણ ચાર્જ કર્યા પછી સિસ્ટમ દ્વારા કરાયેલો વપરાશ"
+ "છેલ્લે %s પર પૂર્ણ ચાર્જ કર્યા પછી ઍપ દ્વારા કરાયેલો વપરાશ"
"કુલ: એક મિનિટ કરતાં ઓછો સમય"
"બૅકગ્રાઉન્ડ: એક મિનિટ કરતાં ઓછો સમય"
"કુલ: %s"
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 1b7dc66a4aa..ce676555630 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -3123,6 +3123,8 @@
"पिछले 24 घंटों में, सिस्टम ने कितनी बैटरी इस्तेमाल की"
"%s के बीच सिस्टम के इस्तेमाल की जानकारी"
"%s के बीच ऐप्लिकेशन के इस्तेमाल की जानकारी"
+ "पिछली बार पूरी तरह चार्ज होने से लेकर %s तक, सिस्टम के इस्तेमाल में खर्च हुई बैटरी"
+ "पिछली बार पूरी तरह चार्ज होने से लेकर %s तक, ऐप्लिकेशन के इस्तेमाल में खर्च हुई बैटरी"
"इस्तेमाल का कुल समय: एक मिनट से कम"
"बैकग्राउंड में इस्तेमाल होने का समय: एक मिनट से कम"
"इस्तेमाल का कुल समय: %s"
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 0c015fadb0d..1d0884082c4 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -3161,6 +3161,8 @@ Saznajte više na stranici g.co/pixel/faceunlock."
"Upotreba sustava u posljednja 24 sata"
"Upotreba sustava za %s"
"Upotreba aplikacije za %s"
+ "Upotreba sustava od posljednjeg potpunog punjenja do %s"
+ "Upotreba aplikacija od posljednjeg potpunog punjenja do %s"
"Ukupno: manje od minute"
"U pozadini: manje od minute"
"Ukupno: %s"
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index a2828600387..e120164f3b0 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -3123,6 +3123,8 @@ További információ: g.co/pixel/faceunlock."
"Rendszerhasználat – legutóbbi 24 óra"
"Rendszer használata: %s"
"Alkalmazás használata: %s"
+ "Rendszerhasználat az utolsó teljes feltöltés óta eddig: %s"
+ "Alkalmazáshasználat az utolsó teljes feltöltés óta eddig: %s"
"Összesen: kevesebb mint egy perc"
"Háttér: kevesebb mint egy perc"
"Összesen: %s"
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index b2765b624bd..981b5bdfc4a 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -3123,6 +3123,8 @@
"Համակարգի կողմից մարտկոցի օգտագործումը վերջին 24 ժամվա ընթացքում"
"Համակարգի կողմից մարտկոցի օգտագործումը (%s)"
"Հավելվածների կողմից մարտկոցի օգտագործումը (%s)"
+ "Համակարգի օգտագործումը վերջին լրիվ լիցքավորումից մինչև %s"
+ "Հավելվածի օգտագործումը վերջին լրիվ լիցքավորումից մինչև %s"
"Ընդամենը՝ մեկ րոպեից պակաս"
"Ֆոնային՝ մեկ րոպեից պակաս"
"Ընդամենը՝ %s"
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 0240e3c9b38..6a3a4c3018a 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -3123,6 +3123,8 @@ Pelajari lebih lanjut di g.co/pixel/faceunlock."
"Penggunaan sistem selama 24 jam terakhir"
"Penggunaan sistem untuk %s"
"Penggunaan aplikasi untuk %s"
+ "Penggunaan sistem sejak terakhir kali baterai terisi penuh sampai %s"
+ "Penggunaan aplikasi sejak terakhir kali baterai terisi penuh sampai %s"
"Total: kurang dari satu menit"
"Latar belakang: kurang dari satu menit"
"Total: %s"
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 19cf4db6ebb..9e77b568bdd 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -3123,6 +3123,8 @@ Nánar á g.co/pixel/faceunlock."
"Kerfisnotkun síðasta sólarhringinn"
"Notkun kerfis: %s"
"Notkun forrits: %s"
+ "Notkun kerfis frá síðustu fullu hleðslu til %s"
+ "Notkun forrita frá síðustu fullu hleðslu til %s"
"Alls: innan við mínúta"
"Í bakgrunni: innan við mínúta"
"Samtals: %s"
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index b882cb6c30c..74a9a855f16 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -3123,6 +3123,8 @@ Scopri di più all'indirizzo g.co/pixel/faceunlock."
"Utilizzo da parte del sistema nelle ultime 24 ore"
"Utilizzo da parte del sistema nell\'intervallo di tempo %s"
"Utilizzo da parte delle app nell\'intervallo di tempo %s"
+ "Utilizzo da parte del sistema dall\'ultima ricarica completa fino a %s"
+ "Utilizzo da parte delle app dall\'ultima ricarica completa fino a %s"
"Totale: meno di un minuto"
"In background: meno di un minuto"
"Totale: %s"
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index d8f6d0411e3..464b9871c6e 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -3161,6 +3161,8 @@
"צריכת הסוללה של המערכת ב-24 השעות האחרונות"
"צריכת הסוללה על ידי המערכת בשעות %s"
"צריכת הסוללה על ידי האפליקציה בשעות %s"
+ "צריכת הסוללה של המערכת מאז הטעינה המלאה האחרונה עד %s"
+ "צריכת הסוללה של האפליקציות מאז הטעינה המלאה האחרונה עד %s"
"סה\"כ: פחות מדקה"
"ברקע: פחות מדקה"
"סה\"כ: %s"
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 9d314e56247..884eeabdff3 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -3123,6 +3123,8 @@
"過去 24 時間のシステムのバッテリー使用量"
"%sのシステムのバッテリー使用量"
"%sのアプリのバッテリー使用量"
+ "前回のフル充電から %s までのシステムのバッテリー使用量"
+ "前回のフル充電から %s までのアプリのバッテリー使用量"
"合計: 1 分未満"
"バックグラウンド: 1 分未満"
"合計: %s"
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index bb6075c78f2..2030d4c18f9 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -3123,6 +3123,8 @@
"სისტემის გამოყენება ბოლო 24 საათის მანძილზე"
"სისტემის გამოყენება შემდეგისთვის: %s"
"აპის გამოყენება შემდეგისთვის: %s"
+ "სისტემის გამოყენების დეტალები ბოლო სრული დამუხტვის შემდეგ %s-მდე"
+ "აპის გამოყენების დეტალები ბოლო სრული დამუხტვის შემდეგ %s-მდე"
"სულ: წუთზე ნაკლები"
"ფონი: წუთზე ნაკლები"
"სულ: %s"
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 2e76427d96b..fb3ace1e035 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -3123,6 +3123,8 @@
"Жүйенің соңғы 24 сағатта батарея зарядын пайдалануы"
"Жүйенің %s пайдалануы"
"Қолданбаның %s пайдалануы"
+ "Соңғы толық зарядталған уақыттан (%s) бергі жүйенің пайдаланылуы"
+ "Соңғы толық зарядталған уақыттан (%s) бергі қолданбаның пайдаланылуы"
"Барлығы: бір минуттан аз"
"Фондық режимде: бір минуттан аз"
"Барлығы: %s"
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 317067702a3..ce91da8c9ad 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -3123,6 +3123,8 @@
"ការប្រើប្រាស់ប្រព័ន្ធក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ"
"ការប្រើប្រាស់ប្រព័ន្ធចន្លោះ %s"
"ការប្រើប្រាស់កម្មវិធីក្នុងរយៈពេល %s"
+ "ការប្រើប្រាស់ប្រព័ន្ធតាំងពីការសាកថ្មពេញលើកចុងក្រោយដល់ថ្ងៃ %s"
+ "ការប្រើប្រាស់កម្មវិធីតាំងពីសាកថ្មពេញលើកចុងក្រោយដល់ថ្ងៃ %s"
"សរុប៖ តិចជាងមួយនាទី"
"ផ្ទៃខាងក្រោយ៖ តិចជាងមួយនាទី"
"សរុប៖ %s"
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 1b33efddbca..29c6947de10 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock ನಲ್ಲಿ ಇನ್ನಷ್ಟು ತಿಳಿಯ
"ಕಳೆದ 24 ಗಂಟೆಗಳಲ್ಲಿನ ಸಿಸ್ಟಂ ಬಳಕೆ"
"%s ಗಾಗಿ ಸಿಸ್ಟಂ ಬಳಕೆ"
"%s ಗಾಗಿ ಆ್ಯಪ್ ಬಳಕೆ"
+ "ಕೊನೆಯ ಬಾರಿ ಪೂರ್ಣ ಚಾರ್ಜ್ ಮಾಡಿದಾಗಿನಿಂದ %s ವರೆಗಿನ ಸಿಸ್ಟಂ ಬಳಕೆ"
+ "ಕೊನೆಯ ಬಾರಿ ಪೂರ್ಣ ಚಾರ್ಜ್ ಮಾಡಿದಾಗಿನಿಂದ %s ವರೆಗಿನ ಆ್ಯಪ್ ಬಳಕೆ"
"ಒಟ್ಟು: ಒಂದು ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ"
"ಹಿನ್ನೆಲೆ: ಒಂದು ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ"
"ಒಟ್ಟು: %s"
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 17c838edf04..b9bbcf5c503 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock에서 자세히 알아보세요."
"지난 24시간 동안의 시스템 사용량"
"%s의 시스템 사용량"
"%s의 앱 사용량"
+ "마지막 충전 이후 %s까지의 시스템 사용량"
+ "마지막 충전 이후 %s까지의 앱 사용량"
"총 시간: 1분 미만"
"백그라운드: 1분 미만"
"총 시간: %s"
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 5ce1ba2c966..40615884a23 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -3123,6 +3123,8 @@
"Системанын акыркы 24 саатта колдонулушу"
"Системанын колдонулушу: %s"
"Колдонмонун иштетилиши: %s"
+ "Акыркы жолу толук кубатталгандан бери %s чейин системанын керектеши"
+ "Акыркы жолу толук кубатталгандан бери %s чейин колдонмолордун керектеши"
"Жалпысынан: бир мүнөткө жетпейт"
"Фондо колдонулушу: бир мүнөткө жетпейт"
"Жалпысынан: %s"
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index c4a580dd234..ce8a38a6f7e 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -3123,6 +3123,8 @@
"ການໃຊ້ລະບົບສຳລັບ 24 ຊມ ທີ່ຜ່ານມາ"
"ການໃຊ້ລະບົບສຳລັບ %s"
"ການໃຊ້ແອັບສຳລັບ %s"
+ "ການນຳໃຊ້ລະບົບນັບຕັ້ງແຕ່ສາກເຕັມຫຼ້າສຸດຈົນຮອດ %s"
+ "ການນຳໃຊ້ແອັບນັບຕັ້ງແຕ່ສາກເຕັມຫຼ້າສຸດຈົນຮອດ %s"
"ທັງໝົດ: ໜ້ອຍກວ່າໜຶ່ງນາທີ"
"ພື້ນຫຼັງ: ໜ້ອຍກວ່າໜຶ່ງນາທີ"
"ທັງໝົດ: %s"
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index c186744b6ce..54ddb1889f9 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -3199,6 +3199,8 @@ Sužinokite daugiau adresu g.co/pixel/faceunlock."
"Sistemos naudojimas per pastarąsias 24 val."
"Sistemos naudojimas: %s"
"Programos naudojimas: %s"
+ "Sistemos naudojimas po paskutinio visiško įkrovimo iki %s"
+ "Programų naudojimas po paskutinio visiško įkrovimo iki %s"
"Iš viso: mažiau nei minutė"
"Fonas: trumpiau nei minutė"
"Iš viso: %s"
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 6fb12506c07..c5867e05214 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -3161,6 +3161,8 @@ Uzziniet vairāk vietnē g.co/pixel/faceunlock."
"Sistēmas lietojums pēdējo 24 h laikā"
"Sistēmas izmantojums: %s"
"Lietotnes izmantojums: %s"
+ "Sistēmas izmantojums kopš pēdējās pilnās uzlādes līdz: %s"
+ "Lietotnes izmantojums kopš pēdējās pilnās uzlādes līdz: %s"
"Kopā: mazāk par minūti"
"Fonā: mazāk par minūti"
"Kopā: %s"
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 97e5c93067e..cd60b7d5697 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -3123,6 +3123,8 @@
"Користење на системот во минатите 24 часа"
"Користење на системот за %s"
"Користење на апликацијата за %s"
+ "Користење на системот од последното целосно полнење до %s"
+ "Користење на апликацијата од последното целосно полнење до %s"
"Вкупно: помалку од една минута"
"Заднина: помалку од една минута"
"Вкупно: %s"
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 6cbf1a65277..784062e6ee2 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock -ൽ കൂടുതലറിയുക."
"കഴിഞ്ഞ 24 മണിക്കൂറിലെ സിസ്റ്റം ഉപയോഗം"
"%s എന്നതിനുള്ള സിസ്റ്റം ഉപയോഗം"
"%s എന്നതിനുള്ള ആപ്പ് ഉപയോഗം"
+ "അവസാനം പൂർണ്ണമായി ചാർജ് ചെയ്തതിന് ശേഷം %s വരെയുള്ള സിസ്റ്റം ഉപയോഗം"
+ "അവസാനം പൂർണ്ണമായി ചാർജ് ചെയ്തതിന് ശേഷം %s വരെയുള്ള ആപ്പ് ഉപയോഗം"
"ആകെ: ഒരു മിനിറ്റിൽ താഴെ"
"പശ്ചാത്തലം: ഒരു മിനിറ്റിൽ താഴെ"
"ആകെ: %s"
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index e187b825694..afe13e4bb41 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -3123,6 +3123,8 @@ Tа g.co/pixel/faceunlock дээрээс нэмэлт мэдээлэл авна
"Өнгөрсөн 24 цагийн системийн ашиглалт"
"%s-н системийн ашиглалт"
"%s-н аппын ашиглалт"
+ "Сүүлд бүрэн цэнэглэснээс хойш %s хүртэлх системийн ашиглалт"
+ "Сүүлд бүрэн цэнэглэснээс хойш %s хүртэлх аппын ашиглалт"
"Нийт: нэг минутаас доош"
"Дэвсгэр: нэг минутаас доош"
"Нийт: %s"
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index a5cc05f51c0..6ca00f30416 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock येथे अधिक जाणून घ्या."
"मागील २४ तासांमधील सिस्टीमचा वापर"
"%s साठी सिस्टीमचा वापर"
"%s साठी ॲपचा वापर"
+ "शेवटचे पूर्ण चार्ज झाल्यापासून %s पर्यंतचा सिस्टीम वापर"
+ "शेवटचे पूर्ण चार्ज झाल्यापासून %s पर्यंतचा अॅप वापर"
"एकूण: एका मिनिटापेक्षा कमी"
"बॅकग्राउंड: एका मिनिटापेक्षा कमी"
"एकूण: %s"
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 4e808d93d5a..be8f1ec3f88 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -3123,6 +3123,8 @@ Ketahui lebih lanjut melalui g.co/pixel/faceunlock."
"Penggunaan sistem untuk tempoh 24 jam lalu"
"Penggunaan sistem untuk %s"
"Penggunaan apl untuk %s"
+ "Penggunaan sistem sejak cas penuh terakhir hingga %s"
+ "Penggunaan apl sejak cas penuh terakhir hingga %s"
"Jumlah: kurang dari seminit"
"Latar: kurang daripada seminit"
"Jumlah: %s"
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index f594d07ed59..b43b12c893a 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -3124,6 +3124,8 @@ g.co/pixel/faceunlock တွင် ပိုမိုလေ့လာပါ။"
"%s အတွက် စနစ်အသုံးပြုမှု"
"%s အတွက် အက်ပ်အသုံးပြုမှု"
"စုစုပေါင်း- တစ်မိနစ်ထက် နည်းသည်"
+ "နောက်ဆုံးအကြိမ် အားအပြည့်သွင်းပြီးချိန်မှစ၍ %s အထိ စနစ်အသုံးပြုမှု"
+ "နောက်ဆုံးအကြိမ် အားအပြည့်သွင်းပြီးချိန်မှစ၍ %s အထိ အက်ပ်အသုံးပြုမှု"
"နောက်ခံအချိန်- တစ်မိနစ်ထက် နည်းသည်"
"စုစုပေါင်း- %s"
"နောက်ခံအချိန်- %s"
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 4cf93b1dac5..5d6e9fcd6ef 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -3123,6 +3123,8 @@ Finn ut mer på g.co/pixel/faceunlock."
"Systembruk de siste 24 timene"
"Systembruk for %s"
"Appbruk for %s"
+ "Systembruk siden sist batteriet var fulladet, til %s"
+ "Appbruk siden sist batteriet var fulladet, til %s"
"Totalt: mindre enn ett minutt"
"Bakgrunn: mindre enn ett minutt"
"Totalt: %s"
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index cc38f2289b4..905306e390b 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock मा गई थप जान्नुहोस्।""विगत २४ घन्टामा सिस्टमले खपत गरेको ब्याट्री"
"%s मा सिस्टमले खपत गरेको ब्याट्री"
"%s मा एपले खपत गरेको ब्याट्री"
+ "पछिल्लो पटक पूरा चार्ज गरेदेखि %s सम्म सिस्टमले खपत गरेको ब्याट्री"
+ "पछिल्लो पटक पूरा चार्ज गरेदेखि %s सम्म एपहरूले खपत गरेको ब्याट्री"
"कुल समय: एक मिनेटभन्दा कम"
"ब्याकग्राउन्डमा चलाइएको समय: एक मिनेटभन्दा कम"
"कुल समय: %s"
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index cf3afaea24c..45aa94ee772 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -3123,6 +3123,8 @@ Bekijk meer informatie op g.co/pixel/faceunlock."
"Systeemgebruik voor afgelopen 24 uur"
"Systeemgebruik voor %s"
"App-gebruik voor %s"
+ "Systeemgebruik sinds de laatste keer volledig opladen tot %s"
+ "App-gebruik sinds de laatste keer volledig opladen tot %s"
"Totaal: minder dan een minuut"
"Achtergrond: minder dan een minuut"
"Totaal: %s"
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 274716c3722..8069dc512df 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlockରେ ଅଧିକ ଜାଣନ୍ତୁ।"
"ଗତ 24 ଘଣ୍ଟାର ସିଷ୍ଟମ୍ ବ୍ୟବହାର"
"%s ପାଇଁ ସିଷ୍ଟମ୍ ବ୍ୟବହାର"
"%s ପାଇଁ ଆପ୍ ବ୍ୟବହାର"
+ "ଗତ ଥର ସମ୍ପୂର୍ଣ୍ଣ ଚାର୍ଜ ହେବା ପରଠାରୁ %s ପର୍ଯ୍ୟନ୍ତ ସିଷ୍ଟମ ବ୍ୟବହାର"
+ "ଗତ ଥର ସମ୍ପୂର୍ଣ୍ଣ ଚାର୍ଜ ହେବା ପରଠାରୁ %s ପର୍ଯ୍ୟନ୍ତ ଆପ ବ୍ୟବହାର"
"ମୋଟ: ଏକ ମିନିଟରୁ କମ୍"
"ପୃଷ୍ଠପଟ: ଏକ ମିନିଟରୁ କମ"
"ମୋଟ: %s"
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 9ea413f1be4..75c09100940 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock 'ਤੇ ਹੋਰ ਜਾਣੋ।"
"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਦੌਰਾਨ ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ"
"%s ਦੌਰਾਨ ਸਿਸਟਮ ਦੀ ਵਰਤੋਂ"
"%s ਦੌਰਾਨ ਐਪ ਦੀ ਵਰਤੋਂ"
+ "ਪਿਛਲੀ ਵਾਰ ਪੂਰਾ ਚਾਰਜ ਕਰਨ ਤੋਂ ਲੈ ਕੇ %s ਤੱਕ ਸਿਸਟਮ ਵਰਤੋਂ"
+ "ਪਿਛਲੀ ਵਾਰ ਪੂਰਾ ਚਾਰਜ ਕਰਨ ਤੋਂ ਲੈ ਕੇ %s ਤੱਕ ਐਪ ਵਰਤੋਂ"
"ਕੁੱਲ: ਇੱਕ ਮਿੰਟ ਤੋਂ ਵੀ ਘੱਟ ਸਮਾਂ"
"ਬੈਕਗ੍ਰਾਊਂਡ: ਇੱਕ ਮਿੰਟ ਤੋਂ ਵੀ ਘੱਟ ਸਮਾਂ"
"ਕੁੱਲ: %s"
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index a3cd1a577ed..5542197701b 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -3201,6 +3201,8 @@ Więcej informacji znajdziesz na stronie g.co/pixel/faceunlock."
"Wykorzystanie przez aplikacje w godz. %s"
"Łącznie: niecała minuta"
"W tle: niecała minuta"
+ "Wykorzystanie przez system od ostatniego pełnego naładowania do: %s"
+ "Wykorzystanie przez aplikacje od ostatniego pełnego naładowania do: %s"
"Łącznie: %s"
"W tle: %s"
"Dane o wykorzystaniu baterii są przybliżone i nie są mierzone podczas ładowania telefonu"
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index 455b16fea63..5385889eb92 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -3123,6 +3123,8 @@ Saiba mais em g.co/pixel/faceunlock."
"Uso do sistema nas últimas 24h"
"Uso do sistema entre %s"
"Uso do app em %s"
+ "Uso do sistema desde a última carga completa %s"
+ "Uso do app desde a última carga completa %s"
"Total: menos de um minuto"
"Segundo plano: menos de um minuto"
"Total: %s"
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 161cf5f3b35..6cc9d3ba06f 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -3123,6 +3123,8 @@ Saiba mais em g.co/pixel/faceunlock."
"Utilização do sistema durante as últimas 24 h"
"Utilização do sistema durante %s"
"Utilização da app durante %s"
+ "Utilização do sistema desde o último carregamento completo a %s"
+ "Utilização de apps desde o último carregamento completo a %s"
"Total: menos de um min"
"Em segundo plano: menos de um min"
"Total: %s"
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 455b16fea63..5385889eb92 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -3123,6 +3123,8 @@ Saiba mais em g.co/pixel/faceunlock."
"Uso do sistema nas últimas 24h"
"Uso do sistema entre %s"
"Uso do app em %s"
+ "Uso do sistema desde a última carga completa %s"
+ "Uso do app desde a última carga completa %s"
"Total: menos de um minuto"
"Segundo plano: menos de um minuto"
"Total: %s"
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 1fe548d986d..d39af25eecb 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -3161,6 +3161,8 @@ Află mai multe la g.co/pixel/faceunlock."
"Utilizarea de către sistem în ultimele 24 h"
"Utilizarea de către sistem pentru %s"
"Utilizarea de către aplicații pentru %s"
+ "Utilizarea sistemului de la ultima încărcare completă la %s"
+ "Utilizarea aplicațiilor de la ultima încărcare completă la %s"
"Total: mai puțin de un minut"
"În fundal: mai puțin de un minut"
"Total: %s"
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 97d8d257d55..8e86484a0fa 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -3199,6 +3199,8 @@
"Расход системой за 24 часа"
"Использование системой в период %s"
"Использование приложениями в период %s"
+ "Расход системой с момента последней полной зарядки до %s"
+ "Расход приложениями с момента последней полной зарядки до %s"
"Всего: меньше минуты"
"В фоновом режиме: меньше минуты"
"Всего: %s"
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 9851c1e8f59..8a8b3791084 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlock හිදී තව දැන ගන්න."
"පසුගිය පැය 24 සඳහා පද්ධති භාවිතය"
"%s සඳහා පද්ධති භාවිතය"
"%s සඳහා යෙදුම් භාවිතය"
+ "%s වෙත අවසන් පූර්ණ ආරෝපණයේ සිට පද්ධති භාවිතය"
+ "%s වෙත අවසන් පූර්ණ ආරෝපණයේ සිට යෙදුම් භාවිතය"
"මුළු: මිනිත්තුවකට වඩා අඩුය"
"පසුබිම: මිනිත්තුවකට වඩා අඩුය"
"එකතුව: %s"
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 9c84ffa0a99..3a44b98fd56 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -3199,6 +3199,8 @@ Viac sa dozviete na g.co/pixel/faceunlock."
"Spotreba batérie systémom za posledných 24 h"
"Spotreba batérie systémom: %s"
"Spotreba batérie aplikáciou: %s"
+ "Využitie systému od posledného úplného nabitia do %s"
+ "Využitie aplikácie od posledného úplného nabitia do %s"
"Celkove: menej ako minúta"
"Na pozadí: menej ako minúta"
"Celkove: %s"
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index db4cf7d111a..7f093497ada 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -3199,6 +3199,8 @@ Preberite več o tem na g.co/pixel/faceunlock."
"Poraba sistema v zadnjih 24 urah"
"Poraba sistema za %s"
"Poraba aplikacij za %s"
+ "Poraba sistema od zadnje polne napolnjenosti baterije do: %s"
+ "Poraba aplikacij od zadnje polne napolnjenosti baterije do: %s"
"Skupno: manj kot minuta"
"V ozadju: manj kot minuta"
"Skupno: %s"
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 271cde89420..c0bd166c118 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -3123,6 +3123,8 @@ Mëso më shumë te g.co/pixel/faceunlock."
"Përdorimi i sistemit për 24 orët e fundit"
"Përdorimi i sistemit për: %s"
"Përdorimi i aplikacionit për: %s"
+ "Përdorimi i sistemit që nga karikimi i fundit i plotë deri në %s"
+ "Përdorimi i aplikacionit që nga karikimi i fundit i plotë deri në %s"
"Në total: më pak se një minutë"
"Në sfond: më pak se një minutë"
"Në total: %s"
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 9ad8861c829..6cbf832deac 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -3161,6 +3161,8 @@
"Потрошња од стране система у последња 24 сата"
"Потрошња од стране система за: %s"
"Потрошња од стране апликација за: %s"
+ "Коришћење система од последњег потпуног пуњења до %s"
+ "Коришћење апликација од последњег потпуног пуњења до %s"
"Укупно: мање од минут"
"Позадина: мање од минут"
"Укупно: %s"
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index e8a2ee425b3..3b23d49941e 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -3123,6 +3123,8 @@ Läs mer på g.co/pixel/faceunlock."
"Systemanvändning för de senaste 24 timmarna"
"Systemanvändning för %s"
"Appanvändning för %s"
+ "Systemanvändning sedan batteriet senast var fulladdat till %s"
+ "Appanvändning sedan batteriet senast var fulladdat till %s"
"Totalt: mindre än en minut"
"I bakgrunden: mindre än en minut"
"Totalt: %s"
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 84f827b68f3..c6949fbb670 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -3123,6 +3123,8 @@ Pata maelezo zaidi kwenye g.co/pixel/faceunlock."
"Matumizi ya mfumo katika saa 24 zilizopita"
"Matumizi ya mfumo kwa %s"
"Matumizi ya programu kwa %s"
+ "Matumizi ya mfumo tangu betri ilipojaa chaji mara ya mwisho hadi %s"
+ "Matumizi ya programu tangu betri ilipojaa chaji mara ya mwisho hadi %s"
"Jumla: chini ya dakika moja"
"Chinichini: chini ya dakika moja"
"Jumla: %s"
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 8418bf14f5b..44390141327 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -3123,6 +3123,8 @@
"கடந்த 24 மணிநேரத்திற்கான சிஸ்டம் உபயோகம்"
"%sக்கான சிஸ்டம் உபயோகம்"
"%sக்கான ஆப்ஸ் உபயோகம்"
+ "கடைசியாக முழுச் சார்ஜ் செய்யப்பட்டதிலிருந்து %s வரை சிஸ்டத்தின் உபயோகம்"
+ "கடைசியாக முழுச் சார்ஜ் செய்யப்பட்டதிலிருந்து %s வரை ஆப்ஸின் உபயோகம்"
"மொத்தம்: ஒரு நிமிடத்திற்கும் குறைவு"
"பின்னணி: ஒரு நிமிடத்திற்கும் குறைவு"
"மொத்தம்: %s"
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index d1572f2edfd..db128b644e6 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -3123,6 +3123,8 @@ g.co/pixel/faceunlockలో మరింత తెలుసుకోండి."<
"గత 24 గంటలకు సిస్టమ్ వినియోగం"
"%s కోసం సిస్టమ్ వినియోగం సమాచారం"
"%s కోసం యాప్ వినియోగ సమాచారం"
+ "చివరిసారి ఫుల్ ఛార్జింగ్ చేసినప్పటి నుండి %s వరకు సిస్టమ్ వినియోగం"
+ "చివరిసారి ఫుల్ ఛార్జింగ్ చేసినప్పటి నుండి %s వరకు యాప్ వినియోగం"
"మొత్తం సమయం: ఒక నిమిషం కన్నా తక్కువ"
"బ్యాక్గ్రౌండ్ సమయం: ఒక నిమిషం కన్నా తక్కువ"
"మొత్తం ఉపయోగం: %s"
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 99b9cb3132d..b7246ad339d 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -3123,6 +3123,8 @@
"การใช้งานระบบใน 24 ชม. ที่ผ่านมา"
"การใช้งานระบบเมื่อ %s"
"การใช้งานแอปเมื่อ %s"
+ "การใช้งานระบบนับตั้งแต่ชาร์จจนเต็มครั้งล่าสุดจนถึง %s"
+ "การใช้งานแอปนับตั้งแต่ชาร์จจนเต็มครั้งล่าสุดจนถึง %s"
"รวม: ไม่ถึง 1 นาที"
"การทำงานในเบื้องหลัง: ไม่ถึง 1 นาที"
"รวม: %s"
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 7380c0cceda..d082ddf2bde 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -3123,6 +3123,8 @@ Matuto pa sa g.co/pixel/faceunlock."
"Paggamit ng system sa huling 24 na oras"
"Paggamit ng system sa %s"
"Paggamit ng app sa %s"
+ "Paggamit ng system mula noong huling na-full charge hanggang %s"
+ "Paggamit ng app mula noong huling na-full charge hanggang %s"
"Kabuuan: wala pang isang minuto"
"Background: wala pang isang minuto"
"Kabuuan: %s"
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index d3516aafe90..b270d870b61 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -3123,6 +3123,8 @@ Daha fazla bilgiyi g.co/pixel/faceunlock adresinde bulabilirsiniz."
"Son 24 saatteki sistem kullanımı"
"%s için sistem kullanımı"
"%s için uygulama kullanımı"
+ "Son yapılan tam şarjdan bu yana (%s) sistem kullanımı"
+ "Son yapılan tam şarjdan bu yana (%s) uygulama kullanımı"
"Toplam: Bir dakikadan az"
"Arka planda: Bir dakikadan az"
"Toplam: %s"
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index ab7e116b1c0..0acfa9787d6 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -3199,6 +3199,8 @@
"Споживання системою за останні 24 години"
"Споживання на роботу системи (%s)"
"Споживання на роботу додатків (%s)"
+ "Використання системою від останнього повного заряджання до %s"
+ "Використання додатками від останнього повного заряджання до %s"
"Усього: менше ніж хвилина"
"У фоновому режимі: менше ніж хвилина"
"Усього: %s"
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 03b6e711c5b..8920c59e10e 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -3123,6 +3123,8 @@
"گزشتہ 24 گھنٹے میں سسٹم کا استعمال"
"%s کے لیے سسٹم کا استعمال"
"%s کے لیے ایپ کا استعمال"
+ "پچھلی بار مکمل چارج کرنے کے بعد سے %s تک سسٹم کا استعمال"
+ "پچھلی بار مکمل چارج کرنے کے بعد سے %s تک ایپ کا استعمال"
"کُل: ایک منٹ سے کم"
"پس منظر: ایک منٹ سے کم"
"کُل: %s"
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 5e6a9351c20..c9ba60a58d9 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -3123,6 +3123,8 @@ Batafsil: g.co/pixel/faceunlock."
"Oxirgi 24 soat ichida tizimdan foydalanish"
"Tizimdan foydalanish: %s"
"Ilovalardan foydalanish: %s"
+ "Toʻliq quvvatlanganidan %s gacha tizimning quvvat sarfi"
+ "Toʻliq quvvatlanganidan %s gacha ilovalarning quvvat sarfi"
"Jami: bir daqiqadan kam"
"Orqa fon rejimida: bir daqiqadan kam"
"Jami: %s"
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 684167185b6..5c82a6f531e 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -3123,6 +3123,8 @@ Tìm hiểu thêm tại g.co/pixel/faceunlock."
"Mức sử dụng pin của hệ thống trong 24 giờ qua"
"Mức sử dụng pin của hệ thống từ %s"
"Mức sử dụng pin của ứng dụng từ %s"
+ "Mức sử dụng pin của hệ thống kể từ lần sạc đầy gần đây nhất đến %s"
+ "Mức sử dụng pin của ứng dụng kể từ lần sạc đầy gần đây nhất đến %s"
"Tổng: chưa đến 1 phút"
"Ở chế độ nền: chưa đến 1 phút"
"Tổng: %s"
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index c93357f0106..32e4916d6ee 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -3123,6 +3123,8 @@
"过去 24 小时内的系统耗电量"
"%s的系统耗电量"
"%s的应用耗电量"
+ "自上次充满电到%s的系统耗电量"
+ "自上次充满电到%s的应用耗电量"
"总计:不到 1 分钟"
"后台:不到 1 分钟"
"总计:%s"
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 2d5062e5f4e..12b223310dd 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -3124,6 +3124,8 @@
"系統在過去 24 小時的電量"
"%s的系統電池用量"
"%s的應用程式電池用量"
+ "上次充滿電後至%s 的系統使用情況"
+ "上次充滿電後至%s 的應用程式使用情況"
"總計:不足 1 分鐘"
"背景:不足 1 分鐘"
"總計:%s"
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 37da8e29c35..74f1cfb4f6d 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -3123,6 +3123,8 @@
"系統在過去 24 小時的電池用量"
"%s的系統電池用量"
"%s的應用程式電池用量"
+ "上次充飽電後至%s 的系統耗電量"
+ "上次充飽電後至%s 的應用程式耗電量"
"總計:不到 1 分鐘"
"背景:不到 1 分鐘"
"總計:%s"
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index b52499e03dc..fdb2279b650 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -3124,6 +3124,8 @@ Funda kabanzi ku-g.co/pixel/faceunlock."
"Ukusetshenziswa kwesistimu emahoreni angama-24 adlule"
"Ukusetshenziswa kwesistimu nge-%s"
"Ukusetshenziswa kwe-app nge-%s"
+ "Ukusetshenziswa kwesistimu ukusukela ekushajeni okugcwele ukuya ku-%s"
+ "Ukusetshenziswa kwe-app ukusukela ekushajeni okugcwele ukuya ku-%s"
"Ingqikithi: ngaphansi komzuzu"
"Ingemuva: ngaphansi komzuzu"
"Inani: %s"
diff --git a/res/values/config.xml b/res/values/config.xml
index aa086ca21bb..9973811c801 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -491,6 +491,15 @@
content://com.google.android.gms.nearby.fastpair/device_status_list_item
+
+
+
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 68779c8418e..c2d48b533aa 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7027,6 +7027,10 @@ Learn more at g.co/pixel/faceunlock."
System usage for %s
App usage for %s
+
+ System usage since last full charge to %s
+
+ App usage since last full charge to %s
Total: less than a min
diff --git a/res/xml/bluetooth_device_details_fragment.xml b/res/xml/bluetooth_device_details_fragment.xml
index 0528973d676..40217158004 100644
--- a/res/xml/bluetooth_device_details_fragment.xml
+++ b/res/xml/bluetooth_device_details_fragment.xml
@@ -58,11 +58,9 @@
settings:controller="com.android.settings.slices.SlicePreferenceController"
settings:allowDividerAbove="true"/>
-
+
@@ -91,4 +89,4 @@
settings:searchable="false"
settings:controller="com.android.settings.bluetooth.BluetoothDetailsMacAddressController"/>
-
\ No newline at end of file
+
diff --git a/src/com/android/settings/bluetooth/BlockingPrefWithSliceController.java b/src/com/android/settings/bluetooth/BlockingPrefWithSliceController.java
new file mode 100644
index 00000000000..b443047d7e8
--- /dev/null
+++ b/src/com/android/settings/bluetooth/BlockingPrefWithSliceController.java
@@ -0,0 +1,305 @@
+/*
+ * 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.settings.bluetooth;
+
+import static android.app.slice.Slice.HINT_PERMISSION_REQUEST;
+import static android.app.slice.Slice.HINT_TITLE;
+import static android.app.slice.SliceItem.FORMAT_ACTION;
+import static android.app.slice.SliceItem.FORMAT_IMAGE;
+import static android.app.slice.SliceItem.FORMAT_SLICE;
+import static android.app.slice.SliceItem.FORMAT_TEXT;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.core.graphics.drawable.IconCompat;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.Observer;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+import androidx.slice.Slice;
+import androidx.slice.SliceItem;
+import androidx.slice.builders.ListBuilder;
+import androidx.slice.builders.SliceAction;
+import androidx.slice.widget.SliceLiveData;
+
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settingslib.core.lifecycle.LifecycleObserver;
+import com.android.settingslib.core.lifecycle.events.OnStart;
+import com.android.settingslib.core.lifecycle.events.OnStop;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * The blocking preference with slice controller will make whole page invisible for a certain time
+ * until {@link Slice} is fully loaded.
+ */
+public class BlockingPrefWithSliceController extends BasePreferenceController implements
+ LifecycleObserver, OnStart, OnStop, Observer, BasePreferenceController.UiBlocker{
+ private static final String TAG = "BlockingPrefWithSliceController";
+
+ private static final String PREFIX_KEY = "slice_preference_item_";
+
+ @VisibleForTesting
+ LiveData mLiveData;
+ private Uri mUri;
+ @VisibleForTesting
+ PreferenceCategory mPreferenceCategory;
+ private List mCurrentPreferencesList = new ArrayList<>();
+ @VisibleForTesting
+ String mSliceIntentAction = "";
+ @VisibleForTesting
+ String mSlicePendingIntentAction = "";
+ @VisibleForTesting
+ String mExtraIntent = "";
+ @VisibleForTesting
+ String mExtraPendingIntent = "";
+
+ public BlockingPrefWithSliceController(Context context, String preferenceKey) {
+ super(context, preferenceKey);
+ }
+
+ @Override
+ public void displayPreference(PreferenceScreen screen) {
+ super.displayPreference(screen);
+ mPreferenceCategory = screen.findPreference(getPreferenceKey());
+ mSliceIntentAction = mContext.getResources().getString(
+ R.string.config_bt_slice_intent_action);
+ mSlicePendingIntentAction = mContext.getResources().getString(
+ R.string.config_bt_slice_pending_intent_action);
+ mExtraIntent = mContext.getResources().getString(R.string.config_bt_slice_extra_intent);
+ mExtraPendingIntent = mContext.getResources().getString(
+ R.string.config_bt_slice_extra_pending_intent);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return mUri != null ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ }
+
+ public void setSliceUri(Uri uri) {
+ mUri = uri;
+ mLiveData = SliceLiveData.fromUri(mContext, mUri, (int type, Throwable source) -> {
+ Log.w(TAG, "Slice may be null. uri = " + uri + ", error = " + type);
+ });
+
+ //TODO(b/120803703): figure out why we need to remove observer first
+ mLiveData.removeObserver(this);
+ }
+
+ @Override
+ public void onStart() {
+ if (mLiveData != null) {
+ mLiveData.observeForever(this);
+ }
+ }
+
+ @Override
+ public void onStop() {
+ if (mLiveData != null) {
+ mLiveData.removeObserver(this);
+ }
+ }
+
+ @Override
+ public void onChanged(Slice slice) {
+ updatePreferenceFromSlice(slice);
+ if (mUiBlockListener != null) {
+ mUiBlockListener.onBlockerWorkFinished(this);
+ }
+ }
+
+ @VisibleForTesting
+ void updatePreferenceFromSlice(Slice slice) {
+ if (TextUtils.isEmpty(mSliceIntentAction)
+ || TextUtils.isEmpty(mExtraIntent)
+ || TextUtils.isEmpty(mSlicePendingIntentAction)
+ || TextUtils.isEmpty(mExtraPendingIntent)) {
+ Log.d(TAG, "No configs");
+ return;
+ }
+ if (slice == null || slice.hasHint(HINT_PERMISSION_REQUEST)) {
+ Log.d(TAG, "Current slice: " + slice);
+ removePreferenceListFromPreferenceCategory();
+ return;
+ }
+ updatePreferenceListAndPreferenceCategory(parseSliceToPreferenceList(slice));
+ }
+
+ private List parseSliceToPreferenceList(Slice slice) {
+ List preferenceItemsList = new ArrayList<>();
+ List items = slice.getItems();
+ int orderLevel = 0;
+ for (SliceItem sliceItem : items) {
+ // Parse the slice
+ if (sliceItem.getFormat().equals(FORMAT_SLICE)) {
+ Optional title = extractTitleFromSlice(sliceItem.getSlice());
+ Optional subtitle = extractSubtitleFromSlice(sliceItem.getSlice());
+ Optional action = extractActionFromSlice(sliceItem.getSlice());
+ // Create preference
+ Optional preferenceItem = createPreferenceItem(title, subtitle, action,
+ orderLevel);
+ if (preferenceItem.isPresent()) {
+ orderLevel++;
+ preferenceItemsList.add(preferenceItem.get());
+ }
+ }
+ }
+ return preferenceItemsList;
+ }
+
+ private Optional createPreferenceItem(Optional title,
+ Optional subtitle, Optional sliceAction, int orderLevel) {
+ Log.d(TAG, "Title: " + title.orElse("no title")
+ + ", Subtitle: " + subtitle.orElse("no Subtitle")
+ + ", Action: " + sliceAction.orElse(null));
+ if (!title.isPresent()) {
+ return Optional.empty();
+ }
+ String key = PREFIX_KEY + title.get();
+ Preference preference = mPreferenceCategory.findPreference(key);
+ if (preference == null) {
+ preference = new Preference(mContext);
+ preference.setKey(key);
+ mPreferenceCategory.addPreference(preference);
+ }
+ preference.setTitle(title.get());
+ preference.setOrder(orderLevel);
+ if (subtitle.isPresent()) {
+ preference.setSummary(subtitle.get());
+ }
+ if (sliceAction.isPresent()) {
+ // To support the settings' 2 panel feature, here can't use the slice's
+ // PendingIntent.send(). Since the PendingIntent.send() always take NEW_TASK flag.
+ // Therefore, transfer the slice's PendingIntent to Intent and start it
+ // without NEW_TASK.
+ preference.setIcon(sliceAction.get().getIcon().loadDrawable(mContext));
+ Intent intentFromSliceAction = sliceAction.get().getAction().getIntent();
+ Intent expectedActivityIntent = null;
+ Log.d(TAG, "SliceAction: intent's Action:" + intentFromSliceAction.getAction());
+ if (intentFromSliceAction.getAction().equals(mSliceIntentAction)) {
+ expectedActivityIntent = intentFromSliceAction
+ .getParcelableExtra(mExtraIntent, Intent.class);
+ } else if (intentFromSliceAction.getAction().equals(
+ mSlicePendingIntentAction)) {
+ PendingIntent pendingIntent = intentFromSliceAction
+ .getParcelableExtra(mExtraPendingIntent, PendingIntent.class);
+ expectedActivityIntent =
+ pendingIntent != null ? pendingIntent.getIntent() : null;
+ } else {
+ expectedActivityIntent = intentFromSliceAction;
+ }
+ if (expectedActivityIntent != null) {
+ Log.d(TAG, "setIntent: ActivityIntent" + expectedActivityIntent);
+ // Since UI needs to support the Settings' 2 panel feature, the intent can't use the
+ // FLAG_ACTIVITY_NEW_TASK. The above intent may have the FLAG_ACTIVITY_NEW_TASK
+ // flag, so removes it before startActivity(preference.setIntent).
+ expectedActivityIntent.removeFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ preference.setIntent(expectedActivityIntent);
+ } else {
+ Log.d(TAG, "setIntent: Intent is null");
+ }
+ }
+
+ return Optional.of(preference);
+ }
+
+ private void removePreferenceListFromPreferenceCategory() {
+ mCurrentPreferencesList.stream()
+ .forEach(p -> mPreferenceCategory.removePreference(p));
+ mCurrentPreferencesList.clear();
+ }
+
+ private void updatePreferenceListAndPreferenceCategory(List newPreferenceList) {
+ List removedItemList = new ArrayList<>(mCurrentPreferencesList);
+ for (Preference item : mCurrentPreferencesList) {
+ if (newPreferenceList.stream().anyMatch(p -> item.compareTo(p) == 0)) {
+ removedItemList.remove(item);
+ }
+ }
+ removedItemList.stream()
+ .forEach(p -> mPreferenceCategory.removePreference(p));
+ mCurrentPreferencesList = newPreferenceList;
+ }
+
+ private Optional extractTitleFromSlice(Slice slice) {
+ return extractTextFromSlice(slice, HINT_TITLE);
+ }
+
+ private Optional extractSubtitleFromSlice(Slice slice) {
+ // For subtitle items, there isn't a hint available.
+ return extractTextFromSlice(slice, /* hint= */ null);
+ }
+
+ private Optional extractTextFromSlice(Slice slice, @Nullable String hint) {
+ for (SliceItem item : slice.getItems()) {
+ if (item.getFormat().equals(FORMAT_TEXT)
+ && ((TextUtils.isEmpty(hint) && item.getHints().isEmpty())
+ || (!TextUtils.isEmpty(hint) && item.hasHint(hint)))) {
+ return Optional.ofNullable(item.getText());
+ }
+ }
+ return Optional.empty();
+ }
+
+ private Optional extractActionFromSlice(Slice slice) {
+ for (SliceItem item : slice.getItems()) {
+ if (item.getFormat().equals(FORMAT_SLICE)) {
+ if (item.hasHint(HINT_TITLE)) {
+ Optional result = extractActionFromSlice(item.getSlice());
+ if (result.isPresent()) {
+ return result;
+ }
+ }
+ continue;
+ }
+
+ if (item.getFormat().equals(FORMAT_ACTION)) {
+ Optional icon = extractIconFromSlice(item.getSlice());
+ Optional title = extractTitleFromSlice(item.getSlice());
+ if (icon.isPresent()) {
+ return Optional.of(
+ SliceAction.create(
+ item.getAction(),
+ icon.get(),
+ ListBuilder.ICON_IMAGE,
+ title.orElse(/* other= */ "")));
+ }
+ }
+ }
+ return Optional.empty();
+ }
+
+ private Optional extractIconFromSlice(Slice slice) {
+ for (SliceItem item : slice.getItems()) {
+ if (item.getFormat().equals(FORMAT_IMAGE)) {
+ return Optional.of(item.getIcon());
+ }
+ }
+ return Optional.empty();
+ }
+}
diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
index fa15b5ca336..562ffec17a0 100644
--- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
@@ -42,7 +42,6 @@
import com.android.settings.core.SettingsUIDeviceConfig;
import com.android.settings.dashboard.RestrictedDashboardFragment;
import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.slices.BlockingSlicePrefController;
import com.android.settings.slices.SlicePreferenceController;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -133,7 +132,7 @@ public void onAttach(Context context) {
final boolean sliceEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
SettingsUIDeviceConfig.BT_SLICE_SETTINGS_ENABLED, true);
- use(BlockingSlicePrefController.class).setSliceUri(sliceEnabled
+ use(BlockingPrefWithSliceController.class).setSliceUri(sliceEnabled
? featureProvider.getBluetoothDeviceSettingsUri(mCachedDevice.getDevice())
: null);
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
index 56da0f47932..7ce8b3af2cc 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
@@ -593,8 +593,19 @@ private void requestAccessibilityFocusForCategoryTitle(View view) {
private String getSlotInformation(boolean isApp, String slotInformation) {
// TODO: Updates the right slot information from daily and hourly chart selection.
- // Null means we show all information without a specific time slot.
- if (slotInformation == null) {
+ if (mDailyViewModel != null && mHourlyViewModels != null && isAllSelected()) {
+ int lastDailyChartIndex = mDailyViewModel.size() - 2;
+ int lastHourlyChartIndex = mHourlyViewModels.get(lastDailyChartIndex).size() - 1;
+ String lastSlotInformation = getSlotInformation(
+ lastDailyChartIndex, lastHourlyChartIndex, /*isDayTextOnly=*/ false);
+ return isApp
+ ? mPrefContext.getString(
+ R.string.battery_app_usage_since_last_full_charge_to,
+ lastSlotInformation)
+ : mPrefContext.getString(
+ R.string.battery_system_usage_since_last_full_charge_to,
+ lastSlotInformation);
+ } else if (slotInformation == null) {
return isApp
? mPrefContext.getString(R.string.battery_app_usage)
: mPrefContext.getString(R.string.battery_system_usage);
@@ -614,14 +625,19 @@ String getSlotInformation() {
if (isAllSelected()) {
return null;
}
+ return getSlotInformation(mDailyChartIndex, mHourlyChartIndex,
+ /*isDayTextOnly=*/ mHourlyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL);
+ }
- final String selectedDayText = mDailyViewModel.getFullText(mDailyChartIndex);
- if (mHourlyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL) {
+ private String getSlotInformation(
+ int dailyChartIndex, int hourlyChartIndex, boolean isDayTextOnly) {
+ final String selectedDayText = mDailyViewModel.getFullText(dailyChartIndex);
+ if (isDayTextOnly) {
return selectedDayText;
}
- final String selectedHourText = mHourlyViewModels.get(mDailyChartIndex).getFullText(
- mHourlyChartIndex);
+ final String selectedHourText = mHourlyViewModels.get(dailyChartIndex).getFullText(
+ hourlyChartIndex);
if (isBatteryLevelDataInOneDay()) {
return selectedHourText;
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
index 9fbcb1688db..10b957bc0aa 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
@@ -571,12 +571,43 @@ public void onExpand_expandedIsFalse_removeSystemEntriesFromPreferenceGroup() {
}
@Test
- public void refreshCategoryTitle_setLastFullChargeIntoBothTitleTextView() {
+ public void refreshCategoryTitle_singleDayData_setLastFullChargeIntoBothTitleTextView() {
mBatteryChartPreferenceController = createController();
mBatteryChartPreferenceController.mAppListPrefGroup =
spy(new PreferenceCategory(mContext));
mBatteryChartPreferenceController.mExpandDividerPreference =
spy(new ExpandDividerPreference(mContext));
+ mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(6));
+ // Simulates select all condition.
+ mBatteryChartPreferenceController.mDailyChartIndex =
+ BatteryChartViewModel.SELECTED_INDEX_ALL;
+ mBatteryChartPreferenceController.mHourlyChartIndex =
+ BatteryChartViewModel.SELECTED_INDEX_ALL;
+
+ mBatteryChartPreferenceController.refreshCategoryTitle();
+
+ ArgumentCaptor captor = ArgumentCaptor.forClass(String.class);
+ // Verifies the title in the preference group.
+ verify(mBatteryChartPreferenceController.mAppListPrefGroup)
+ .setTitle(captor.capture());
+ assertThat(captor.getValue())
+ .isEqualTo("App usage since last full charge to 12 PM");
+ // Verifies the title in the expandable divider.
+ captor = ArgumentCaptor.forClass(String.class);
+ verify(mBatteryChartPreferenceController.mExpandDividerPreference)
+ .setTitle(captor.capture());
+ assertThat(captor.getValue())
+ .isEqualTo("System usage since last full charge to 12 PM");
+ }
+
+ @Test
+ public void refreshCategoryTitle_multiDaysData_setLastFullChargeIntoBothTitleTextView() {
+ mBatteryChartPreferenceController = createController();
+ mBatteryChartPreferenceController.mAppListPrefGroup =
+ spy(new PreferenceCategory(mContext));
+ mBatteryChartPreferenceController.mExpandDividerPreference =
+ spy(new ExpandDividerPreference(mContext));
+ mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(60));
// Simulates select all condition.
mBatteryChartPreferenceController.mDailyChartIndex =
BatteryChartViewModel.SELECTED_INDEX_ALL;
@@ -590,13 +621,13 @@ public void refreshCategoryTitle_setLastFullChargeIntoBothTitleTextView() {
verify(mBatteryChartPreferenceController.mAppListPrefGroup)
.setTitle(captor.capture());
assertThat(captor.getValue())
- .isEqualTo("App usage since last full charge");
+ .isEqualTo("App usage since last full charge to Monday 6 PM");
// Verifies the title in the expandable divider.
captor = ArgumentCaptor.forClass(String.class);
verify(mBatteryChartPreferenceController.mExpandDividerPreference)
.setTitle(captor.capture());
assertThat(captor.getValue())
- .isEqualTo("System usage since last full charge");
+ .isEqualTo("System usage since last full charge to Monday 6 PM");
}
@Test
diff --git a/tests/unit/src/com/android/settings/bluetooth/BlockingPrefWithSliceControllerTest.java b/tests/unit/src/com/android/settings/bluetooth/BlockingPrefWithSliceControllerTest.java
new file mode 100644
index 00000000000..65b6977116d
--- /dev/null
+++ b/tests/unit/src/com/android/settings/bluetooth/BlockingPrefWithSliceControllerTest.java
@@ -0,0 +1,160 @@
+/*
+ * 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.settings.bluetooth;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.ContentResolver;
+import android.content.Intent;
+import android.net.Uri;
+
+import androidx.core.graphics.drawable.IconCompat;
+import androidx.lifecycle.LiveData;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.slice.Slice;
+import androidx.slice.SliceViewManager;
+import androidx.slice.builders.ListBuilder;
+import androidx.slice.builders.ListBuilder.RowBuilder;
+import androidx.slice.builders.SliceAction;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.bluetooth.BlockingPrefWithSliceController;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+
+public class BlockingPrefWithSliceControllerTest {
+ private static final String KEY = "bt_device_slice_category";
+ private static final String TEST_URI_AUTHORITY = "com.android.authority.test";
+ private static final String TEST_EXTRA_INTENT = "EXTRA_INTENT";
+ private static final String TEST_EXTRA_PENDING_INTENT = "EXTRA_PENDING_INTENT";
+ private static final String TEST_INTENT_ACTION = "test";
+ private static final String TEST_PENDING_INTENT_ACTION = "test";
+ private static final String TEST_SLICE_TITLE = "Test Title";
+ private static final String TEST_SLICE_SUBTITLE = "Test Subtitle";
+ private static final String FAKE_ACTION = "fake_action";
+
+ @Rule
+ public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+
+ @Mock
+ private LiveData mLiveData;
+ @Mock
+ private PreferenceCategory mPreferenceCategory;
+
+ private Context mContext;
+ private BlockingPrefWithSliceController mController;
+ private Uri mUri;
+
+ @Before
+ public void setUp() {
+ mContext = spy(ApplicationProvider.getApplicationContext());
+ mController = spy(new BlockingPrefWithSliceController(mContext, KEY));
+ mController.mLiveData = mLiveData;
+ mController.mExtraIntent = TEST_EXTRA_INTENT;
+ mController.mExtraPendingIntent = TEST_EXTRA_PENDING_INTENT;
+ mController.mSliceIntentAction = TEST_INTENT_ACTION;
+ mController.mSlicePendingIntentAction = TEST_PENDING_INTENT_ACTION;
+ mController.mPreferenceCategory = mPreferenceCategory;
+ mUri = Uri.EMPTY;
+ }
+
+ @Test
+ public void isAvailable_uriNull_returnFalse() {
+ assertThat(mController.isAvailable()).isFalse();
+ }
+
+ @Test
+ @UiThreadTest
+ public void isAvailable_uriNotNull_returnTrue() {
+ mController.setSliceUri(mUri);
+
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
+ @Test
+ public void onStart_registerObserver() {
+ mController.onStart();
+
+ verify(mLiveData).observeForever(mController);
+ }
+
+ @Test
+ public void onStop_unregisterObserver() {
+ mController.onStop();
+
+ verify(mLiveData).removeObserver(mController);
+ }
+
+ @Test
+ public void onChanged_nullSlice_updateSlice() {
+ mController.onChanged(null);
+
+ verify(mController).updatePreferenceFromSlice(null);
+ }
+
+ @Test
+ public void onChanged_testSlice_updateSlice() {
+ mController.onChanged(buildTestSlice());
+
+ verify(mController.mPreferenceCategory).addPreference(any());
+ }
+
+ private Slice buildTestSlice() {
+ Uri uri =
+ new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(TEST_URI_AUTHORITY)
+ .build();
+ SliceViewManager.getInstance(mContext).pinSlice(uri);
+ ListBuilder listBuilder = new ListBuilder(mContext, uri, ListBuilder.INFINITY);
+ IconCompat icon = mock(IconCompat.class);
+ listBuilder.addRow(
+ new RowBuilder()
+ .setTitleItem(icon, ListBuilder.ICON_IMAGE)
+ .setTitle(TEST_SLICE_TITLE)
+ .setSubtitle(TEST_SLICE_SUBTITLE)
+ .setPrimaryAction(
+ SliceAction.create(
+ PendingIntent.getActivity(
+ mContext,
+ /*requestCode= */ 0,
+ new Intent(FAKE_ACTION),
+ PendingIntent.FLAG_UPDATE_CURRENT
+ | PendingIntent.FLAG_IMMUTABLE),
+ icon,
+ ListBuilder.ICON_IMAGE,
+ "")));
+ return listBuilder.build();
+ }
+}